diff --git a/bcs-common/common/task/builder.go b/bcs-common/common/task/builder.go new file mode 100644 index 0000000000..5266514802 --- /dev/null +++ b/bcs-common/common/task/builder.go @@ -0,0 +1,44 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package task + +import ( + "fmt" + + "github.com/Tencent/bk-bcs/bcs-common/common/task/types" +) + +// NewByTaskBuilder init task from builder +func NewByTaskBuilder(builder types.TaskBuilder, opts ...types.TaskOption) (*types.Task, error) { + // 声明step + steps, err := builder.Steps() + if err != nil { + return nil, err + } + + if len(steps) == 0 { + return nil, fmt.Errorf("task steps empty") + } + + task := types.NewTask(builder.TaskInfo(), opts...) + task.Steps = steps + task.CurrentStep = steps[0].GetName() + + // 自定义extraJson等 + newTask, err := builder.BuildTask(*task) + if err != nil { + return nil, err + } + + return &newTask, nil +} diff --git a/bcs-common/common/task/example/call_back.go b/bcs-common/common/task/example/call_back.go index 905c65b4f0..b510d54ac3 100644 --- a/bcs-common/common/task/example/call_back.go +++ b/bcs-common/common/task/example/call_back.go @@ -16,7 +16,7 @@ package main import ( "fmt" - "github.com/Tencent/bk-bcs/bcs-common/common/task/types" + istep "github.com/Tencent/bk-bcs/bcs-common/common/task/steps/iface" ) const ( @@ -25,17 +25,16 @@ const ( type callBack struct{} -// GetName 回调方法名称 -func (c *callBack) GetName() string { - return callBackName -} - // Callback 回调方法,根据任务成功状态更新实体对象状态 -func (c *callBack) Callback(isSuccess bool, task *types.Task) { - if isSuccess { +func (cb *callBack) Callback(c *istep.Context, cbErr error) { + if cbErr != nil { fmt.Println("success") return } fmt.Println("failure") } + +func init() { + istep.RegisterCallback(istep.CallbackName(callBackName), &callBack{}) +} diff --git a/bcs-common/common/task/example/example_task.go b/bcs-common/common/task/example/example_task.go index bef62d02d7..692b627a16 100644 --- a/bcs-common/common/task/example/example_task.go +++ b/bcs-common/common/task/example/example_task.go @@ -26,9 +26,9 @@ import ( var ( // ExampleTask task - ExampleTask istep.TaskName = "测试任务" + ExampleTask types.TaskName = "测试任务" // TestTask task for test - TestTask istep.TaskType = "TestTask" + TestTask types.TaskType = "TestTask" ) // NewExampleTask build example task @@ -79,7 +79,7 @@ func (st *Example) Steps() []*types.Step { } // BuildTask build task -func (st *Example) BuildTask(info *types.TaskInfo, opts ...types.TaskOption) (*types.Task, error) { +func (st *Example) BuildTask(info types.TaskInfo, opts ...types.TaskOption) (*types.Task, error) { t := types.NewTask(info, opts...) if len(st.Steps()) == 0 { return nil, fmt.Errorf("task steps empty") diff --git a/bcs-common/common/task/example/hello_step.go b/bcs-common/common/task/example/hello_step.go index 0541550c3d..9681e5404b 100644 --- a/bcs-common/common/task/example/hello_step.go +++ b/bcs-common/common/task/example/hello_step.go @@ -14,7 +14,6 @@ package main import ( - "context" "fmt" istep "github.com/Tencent/bk-bcs/bcs-common/common/task/steps/iface" @@ -44,15 +43,15 @@ func (s HelloStep) GetName() string { return method } -// DoWork for worker exec task -func (s HelloStep) DoWork(ctx context.Context, step *istep.Work) error { - fmt.Printf("%s %s %s\n", step.GetTaskID(), step.GetTaskType(), step.GetTaskName()) +// Execute for worker exec task +func (s HelloStep) Execute(c *istep.Context) error { + fmt.Printf("%s %s %s\n", c.GetTaskID(), c.GetTaskType(), c.GetTaskName()) return nil } // BuildStep build step func (s HelloStep) BuildStep(kvs []istep.KeyValue, opts ...types.StepOption) *types.Step { - step := types.NewStep(s.GetName(), s.Alias(), opts...) + step := types.NewStep(s.GetName(), method, opts...) // build step paras for _, v := range kvs { diff --git a/bcs-common/common/task/example/main.go b/bcs-common/common/task/example/main.go index 82f7348a50..3e982acb8d 100644 --- a/bcs-common/common/task/example/main.go +++ b/bcs-common/common/task/example/main.go @@ -55,9 +55,6 @@ var ( // nolint func main() { pwd := os.Getenv("MONGO_PASSWORD") - if pwd == "" { - pwd = "12345" - } mongoOpts := &bcsmongo.Options{ Hosts: mongoHosts, @@ -124,8 +121,6 @@ func main() { Lock: lock, Store: store, } - // register step worker && callback - config.CallBacks = registerCallbacks() // init task manager err = btm.Init(config) @@ -144,14 +139,14 @@ func main() { // build tak && run sum := NewExampleTask("3", "5") - info := &types.TaskInfo{ + info := types.TaskInfo{ TaskIndex: "example", TaskType: "example-test", TaskName: "example", Creator: "bcs", } sumTask, err := sum.BuildTask(info, types.WithTaskMaxExecutionSeconds(0), - types.WithTaskCallBackFunc(callBackName)) + types.WithTaskCallback(callBackName)) if err != nil { fmt.Println(err) return @@ -173,8 +168,8 @@ func main() { } // nolint -func registerSteps() []istep.StepWorkerInterface { - steps := make([]istep.StepWorkerInterface, 0) +func registerSteps() []istep.StepExecutor { + steps := make([]istep.StepExecutor, 0) sum := NewSumStep() steps = append(steps, sum) @@ -184,10 +179,3 @@ func registerSteps() []istep.StepWorkerInterface { return steps } - -func registerCallbacks() []istep.CallbackInterface { - callbacks := make([]istep.CallbackInterface, 0) - callbacks = append(callbacks, &callBack{}) - - return callbacks -} diff --git a/bcs-common/common/task/example/sum_step.go b/bcs-common/common/task/example/sum_step.go index 9704701477..69551c285b 100644 --- a/bcs-common/common/task/example/sum_step.go +++ b/bcs-common/common/task/example/sum_step.go @@ -14,7 +14,6 @@ package main import ( - "context" "fmt" "strconv" @@ -51,25 +50,25 @@ func (s SumStep) GetName() string { return sumMethod } -// DoWork for worker exec task -func (s SumStep) DoWork(ctx context.Context, step *istep.Work) error { - a, _ := step.GetParam(sumA.String()) - b, _ := step.GetParam(sumB.String()) +// Execute for worker exec task +func (s SumStep) Execute(c *istep.Context) error { + a, _ := c.GetParam(sumA.String()) + b, _ := c.GetParam(sumB.String()) a1, _ := strconv.Atoi(a) b1, _ := strconv.Atoi(b) - c := a1 + b1 - _ = step.AddCommonParams(sumC.String(), fmt.Sprintf("%v", c)) + c1 := a1 + b1 + _ = c.AddCommonParam(sumC.String(), fmt.Sprintf("%v", c1)) - fmt.Printf("%s %s %s sumC: %v\n", step.GetTaskID(), step.GetTaskType(), step.GetName(), c) + fmt.Printf("%s %s %s sumC: %v\n", c.GetTaskID(), c.GetTaskType(), c.GetName(), c) return nil } // BuildStep build step func (s SumStep) BuildStep(kvs []istep.KeyValue, opts ...types.StepOption) *types.Step { - step := types.NewStep(s.GetName(), s.Alias(), opts...) + step := types.NewStep(s.GetName(), sumMethod, opts...) // build step paras for _, v := range kvs { diff --git a/bcs-common/common/task/manager.go b/bcs-common/common/task/manager.go index 04caa0a5b8..dda5781b2f 100644 --- a/bcs-common/common/task/manager.go +++ b/bcs-common/common/task/manager.go @@ -24,8 +24,8 @@ import ( ibroker "github.com/RichardKnop/machinery/v2/brokers/iface" "github.com/RichardKnop/machinery/v2/config" ilock "github.com/RichardKnop/machinery/v2/locks/iface" + "github.com/RichardKnop/machinery/v2/log" "github.com/RichardKnop/machinery/v2/tasks" - "github.com/Tencent/bk-bcs/bcs-common/common/blog" istep "github.com/Tencent/bk-bcs/bcs-common/common/task/steps/iface" istore "github.com/Tencent/bk-bcs/bcs-common/common/task/stores/iface" @@ -46,11 +46,11 @@ type TaskManager struct { // nolint server *machinery.Server worker *machinery.Worker - workerNum int - stepWorkers map[string]istep.StepWorkerInterface - callBackFuncs map[string]istep.CallbackInterface - cfg *ManagerConfig - store istore.Store + workerNum int + stepExecutors map[istep.StepName]istep.StepExecutor + callbackExecutors map[istep.CallbackName]istep.CallbackExecutor + cfg *ManagerConfig + store istore.Store ctx context.Context cancel context.CancelFunc @@ -59,7 +59,6 @@ type TaskManager struct { // nolint // ManagerConfig options for manager type ManagerConfig struct { ModuleName string - CallBacks []istep.CallbackInterface WorkerNum int Broker ibroker.Broker Backend ibackend.Backend @@ -73,12 +72,12 @@ func NewTaskManager() *TaskManager { ctx, cancel := context.WithCancel(context.Background()) m := &TaskManager{ - ctx: ctx, - cancel: cancel, - lock: &sync.Mutex{}, - workerNum: DefaultWorkerConcurrency, - stepWorkers: istep.GetRegisters(), // get all step workers - cfg: &ManagerConfig{}, + ctx: ctx, + cancel: cancel, + lock: &sync.Mutex{}, + workerNum: DefaultWorkerConcurrency, + stepExecutors: istep.GetRegisters(), // get all step workers + cfg: &ManagerConfig{}, } return m } @@ -99,27 +98,17 @@ func (m *TaskManager) Init(cfg *ManagerConfig) error { m.cfg = cfg m.store = cfg.Store - if m.stepWorkers == nil { - m.stepWorkers = make(map[string]istep.StepWorkerInterface) + if m.stepExecutors == nil { + m.stepExecutors = make(map[istep.StepName]istep.StepExecutor) } - if m.callBackFuncs == nil { - m.callBackFuncs = make(map[string]istep.CallbackInterface) - } + m.callbackExecutors = istep.GetCallbackRegisters() m.moduleName = cfg.ModuleName if cfg.WorkerNum != 0 { m.workerNum = cfg.WorkerNum } - // save callbacks and check duplicate - for _, c := range cfg.CallBacks { - if _, ok := m.callBackFuncs[c.GetName()]; ok { - return fmt.Errorf("callback func [%s] already exists", c.GetName()) - } - m.callBackFuncs[c.GetName()] = c - } - if err := m.initGlobalStorage(); err != nil { return err } @@ -165,13 +154,13 @@ func (m *TaskManager) initWorker(workerNum int) error { m.worker = m.server.NewWorker("", workerNum) preTaskHandler := func(signature *tasks.Signature) { - blog.Infof("start task handler for: %s", signature.Name) + log.INFO.Printf("start task[%s] handler for: %s", signature.UUID, signature.Name) } postTaskHandler := func(signature *tasks.Signature) { - blog.Infof("end task handler for: %s", signature.Name) + log.INFO.Printf("end task[%s] handler for: %s", signature.UUID, signature.Name) } errorHandler := func(err error) { - blog.Infof("task error handler: %s", err) + log.INFO.Printf("task error handler: %s", err) } m.worker.SetPreTaskHandler(preTaskHandler) @@ -197,12 +186,6 @@ func (m *TaskManager) UpdateTask(ctx context.Context, task *types.Task) error { return GetGlobalStorage().UpdateTask(ctx, task) } -// PatchTaskInfo update task info -// ! warning: modify task status will cause task status not consistent -func (m *TaskManager) PatchTaskInfo(ctx context.Context, taskID string, patchs map[string]interface{}) error { - return GetGlobalStorage().PatchTask(ctx, taskID, patchs) -} - // RetryAll reset status to running and dispatch all tasks func (m *TaskManager) RetryAll(task *types.Task) error { task.SetStatus(types.TaskStatusRunning) @@ -227,6 +210,10 @@ func (m *TaskManager) RetryAt(task *types.Task, stepName string) error { // Dispatch dispatch task func (m *TaskManager) Dispatch(task *types.Task) error { + if err := task.Validate(); err != nil { + return err + } + if err := GetGlobalStorage().CreateTask(context.Background(), task); err != nil { return err } @@ -246,18 +233,22 @@ func (m *TaskManager) transTaskToSignature(task *types.Task, stepNameBegin strin // build signature from step signature := &tasks.Signature{ UUID: fmt.Sprintf("%s-%s", task.TaskID, step.Name), - Name: step.Name, + Name: step.Executor, + ETA: step.ETA, // two parameters: taskID, stepName Args: []tasks.Arg{ { + Name: "task_id", Type: "string", Value: task.GetTaskID(), }, { + Name: "step_name", Type: "string", Value: step.Name, }, }, + IgnoreWhenTaskNotRegistered: true, } @@ -277,129 +268,123 @@ func (m *TaskManager) dispatchAt(task *types.Task, stepNameBegin string) error { // sending to workers chain, err := tasks.NewChain(signatures...) if err != nil { - blog.Errorf("taskManager[%s] DispatchChainTask NewChain failed: %v", task.GetTaskID(), err) + log.ERROR.Printf("taskManager[%s] DispatchChainTask NewChain failed: %v", task.GetTaskID(), err) return err } // send chain to machinery & ctx for tracing - asyncResult, err := m.server.SendChainWithContext(context.Background(), chain) + _, err = m.server.SendChainWithContext(context.Background(), chain) if err != nil { return fmt.Errorf("send chain to machinery failed: %s", err.Error()) } - // get results - go func(t *types.Task, _ *tasks.Chain) { - // check async results - for retry := 3; retry > 0; retry-- { - results, err := asyncResult.Get(time.Second * 5) - if err != nil { - fmt.Printf("tracing task %s result failed, %s. retry %d\n", t.GetTaskID(), err.Error(), retry) - continue - } - // check results - blog.Infof("tracing task %s result %s", t.GetTaskID(), tasks.HumanReadableResults(results)) - } - }(task, chain) - return nil } // registerStepWorkers build machinery workers for all step worker func (m *TaskManager) registerStepWorkers() error { allTasks := make(map[string]interface{}, 0) - for stepName := range m.stepWorkers { - if _, ok := allTasks[stepName]; ok { - return fmt.Errorf("task %s already exists", stepName) + for stepName := range m.stepExecutors { + name := string(stepName) + if _, ok := allTasks[name]; ok { + return fmt.Errorf("task %s already exists", name) } - allTasks[stepName] = m.doWork + allTasks[name] = m.doWork } err := m.server.RegisterTasks(allTasks) return err } // doWork machinery 通用处理函数 -func (m *TaskManager) doWork(taskID string, stepName string) error { +func (m *TaskManager) doWork(taskID string, stepName string) error { // nolint defer RecoverPrintStack(fmt.Sprintf("%s-%s", taskID, stepName)) - stepWorker, ok := m.stepWorkers[stepName] - if !ok { - return fmt.Errorf("step worker %s not found", stepName) - } + log.INFO.Printf("start to execute task[%s] stepName[%s]", taskID, stepName) - blog.Infof("start to execute task[%s] stepName[%s]", taskID, stepName) - - start := time.Now() - state, step, err := getTaskStateAndCurrentStep(taskID, stepName, m.callBackFuncs) + state, err := m.getTaskState(taskID, stepName) if err != nil { - blog.Errorf("task[%s] stepName[%s] getTaskStateAndCurrentStep failed: %v", + log.ERROR.Printf("task[%s] stepName[%s] getTaskState failed: %v", taskID, stepName, err) return err } + // step executed success - if step == nil { - blog.Infof("task[%s] stepName[%s] already exec successful && skip", + if state.step == nil { + log.INFO.Printf("task[%s] stepName[%s] already exec successful && skip", taskID, stepName, err) return nil } + step := state.step + stepExecutor, ok := m.stepExecutors[istep.StepName(step.Executor)] + if !ok { + log.ERROR.Printf("task[%s] stepName[%s] executor[%s] not found", taskID, stepName, state.step.Executor) + return fmt.Errorf("step executor[%s] not found", step.Executor) + } + + start := time.Now() // step timeout stepCtx, stepCancel := GetTimeOutCtx(m.ctx, step.MaxExecutionSeconds) defer stepCancel() // task timeout - t, _ := state.task.GetStartTime() + t := state.task.GetStartTime() taskCtx, taskCancel := GetDeadlineCtx(m.ctx, &t, state.task.MaxExecutionSeconds) defer taskCancel() tmpCh := make(chan error, 1) go func() { // call step worker - work := istep.NewWork(state.GetTask(), step) - tmpCh <- stepWorker.DoWork(stepCtx, work) + execCtx := istep.NewContext(stepCtx, GetGlobalStorage(), state.GetTask(), step) + tmpCh <- stepExecutor.Execute(execCtx) }() select { - case errLocal := <-tmpCh: - blog.Infof("task %s step %s errLocal: %v", taskID, stepName, errLocal) + case retErr := <-tmpCh: + log.INFO.Printf("task %s step %s errLocal: %v", taskID, stepName, retErr) // update task & step status - if errLocal != nil { - if err := state.updateStepFailure(start, step.GetName(), errLocal, false); err != nil { - blog.Infof("task %s update step %s to failure failed: %s", - taskID, step.GetName(), errLocal.Error()) - } - } else { - if err := state.updateStepSuccess(start, step.GetName()); err != nil { - blog.Infof("task %s update step %s to success failed: %s", - taskID, step.GetName(), err.Error()) - } + if retErr == nil { + state.updateStepSuccess(start) + return nil } + state.updateStepFailure(start, retErr, false) - if errLocal != nil && !step.GetSkipOnFailed() { - return errLocal + if step.GetSkipOnFailed() { + return nil } - return nil + if step.GetRetryCount() < step.MaxRetries { + retryIn := time.Second * time.Duration(retryNext(int(step.GetRetryCount()))) + log.INFO.Printf("retry task %s step %s, retried=%d, maxRetries=%d, retryIn=%s", + taskID, step.GetName(), step.GetRetryCount(), step.MaxRetries, retryIn) + return tasks.NewErrRetryTaskLater(retErr.Error(), retryIn) + } + + return retErr case <-stepCtx.Done(): retErr := fmt.Errorf("task %s step %s timeout", taskID, step.GetName()) - errLocal := state.updateStepFailure(start, step.GetName(), retErr, false) - if errLocal != nil { - blog.Infof("update step %s to failure failed: %s", step.GetName(), errLocal.Error()) + state.updateStepFailure(start, retErr, false) + + if step.GetSkipOnFailed() { + return nil } - if !step.GetSkipOnFailed() { - return retErr + + if step.GetRetryCount() < step.MaxRetries { + retryIn := time.Second * time.Duration(retryNext(int(step.GetRetryCount()))) + log.INFO.Printf("retry task %s step %s, retried=%d, maxRetries=%d, retryIn=%s", + taskID, step.GetName(), step.GetRetryCount(), step.MaxRetries, retryIn) + return tasks.NewErrRetryTaskLater("some error", retryIn) } - return nil + + return retErr case <-taskCtx.Done(): // task timeOut retErr := fmt.Errorf("task %s exec timeout", taskID) - errLocal := state.updateStepFailure(start, step.GetName(), retErr, true) - if errLocal != nil { - blog.Errorf("update step %s to failure failed: %s", step.GetName(), errLocal.Error()) - } - + state.updateStepFailure(start, retErr, true) + // 整个任务结束 return retErr } } diff --git a/bcs-common/common/task/manager_test.go b/bcs-common/common/task/manager_test.go index 1bb719a96e..ae1f510f82 100644 --- a/bcs-common/common/task/manager_test.go +++ b/bcs-common/common/task/manager_test.go @@ -36,21 +36,21 @@ func TestDoWork(t *testing.T) { // istep.Register("sum", istep.StepWorkerFunc(hellostep.Sum)) mgr := TaskManager{ - ctx: context.Background(), - store: mem.New(), - stepWorkers: istep.GetRegisters(), + ctx: context.Background(), + store: mem.New(), + stepExecutors: istep.GetRegisters(), } mgr.initGlobalStorage() - info := &types.TaskInfo{ + info := types.TaskInfo{ TaskType: "example-test", TaskName: "example", Creator: "bcs", } steps := []*types.Step{ - types.NewStep("hello", "test"), - types.NewStep("sum", "test1").AddParam(hellostep.SumA.String(), "1").AddParam(hellostep.SumB.String(), "2"), + types.NewStep("test", "hello"), + types.NewStep("test1", "sum").AddParam(hellostep.SumA.String(), "1").AddParam(hellostep.SumB.String(), "2"), } task := types.NewTask(info) @@ -60,7 +60,7 @@ func TestDoWork(t *testing.T) { for _, s := range steps { err := mgr.doWork(task.TaskID, s.Name) - assert.ErrorIs(t, err, types.ErrNotImplemented) + assert.NoError(t, err) } } @@ -73,7 +73,7 @@ func TestDoWorkWithMySQL(t *testing.T) { istep.Register("hello", hellostep.NewHello()) // 使用函数注册 - istep.Register("sum", istep.StepWorkerFunc(hellostep.Sum)) + istep.Register("sum", istep.StepExecutorFunc(hellostep.Sum)) store, err := mysqlstore.New(os.Getenv("MYSQL_DSN")) require.NoError(t, err) @@ -82,21 +82,21 @@ func TestDoWorkWithMySQL(t *testing.T) { require.NoError(t, store.EnsureTable(ctx)) mgr := TaskManager{ - ctx: context.Background(), - store: store, - stepWorkers: istep.GetRegisters(), + ctx: context.Background(), + store: store, + stepExecutors: istep.GetRegisters(), } mgr.initGlobalStorage() - info := &types.TaskInfo{ + info := types.TaskInfo{ TaskType: "example-test", TaskName: "example", Creator: "bcs", } steps := []*types.Step{ - types.NewStep("hello", "test"), - types.NewStep("sum", "test1").AddParam(hellostep.SumA.String(), "1").AddParam(hellostep.SumB.String(), "2"), + types.NewStep("test", "hello"), + types.NewStep("test1", "sum").AddParam(hellostep.SumA.String(), "1").AddParam(hellostep.SumB.String(), "2"), } task := types.NewTask(info) diff --git a/bcs-common/common/task/state.go b/bcs-common/common/task/state.go index 791d21ecc7..7ef5b9fbb7 100644 --- a/bcs-common/common/task/state.go +++ b/bcs-common/common/task/state.go @@ -18,18 +18,17 @@ import ( "fmt" "time" - "github.com/Tencent/bk-bcs/bcs-common/common/blog" + "github.com/RichardKnop/machinery/v2/log" istep "github.com/Tencent/bk-bcs/bcs-common/common/task/steps/iface" "github.com/Tencent/bk-bcs/bcs-common/common/task/types" ) // getTaskStateAndCurrentStep get task state and current step -func getTaskStateAndCurrentStep(taskId, stepName string, - callBackFuncs map[string]istep.CallbackInterface) (*State, *types.Step, error) { +func (m *TaskManager) getTaskState(taskId, stepName string) (*State, error) { task, err := GetGlobalStorage().GetTask(context.Background(), taskId) if err != nil { - return nil, nil, fmt.Errorf("get task %s information failed, %s", taskId, err.Error()) + return nil, fmt.Errorf("get task %s information failed, %s", taskId, err.Error()) } if task.CommonParams == nil { @@ -38,42 +37,46 @@ func getTaskStateAndCurrentStep(taskId, stepName string, state := NewState(task, stepName) if state.isTaskTerminated() { - return nil, nil, fmt.Errorf("task %s is terminated, step %s skip", taskId, stepName) + return nil, fmt.Errorf("task %s is terminated, step %s skip", taskId, stepName) } step, err := state.isReadyToStep(stepName) if err != nil { - return nil, nil, fmt.Errorf("task %s step %s is not ready, %w", taskId, stepName, err) + return nil, fmt.Errorf("task %s step %s is not ready, %w", taskId, stepName, err) } if step == nil { // step successful and skip - blog.Infof("task %s step %s already execute successful", taskId, stepName) - return state, nil, nil + log.INFO.Printf("task %s step %s already execute successful", taskId, stepName) + return state, nil } + state.step = step // inject call back func - if state.task.GetCallback() != "" && len(callBackFuncs) > 0 { - if callback, ok := callBackFuncs[state.task.GetCallback()]; ok { - state.callBack = callback.Callback + if state.task.GetCallback() != "" && len(m.callbackExecutors) > 0 { + name := istep.CallbackName(state.task.GetCallback()) + if cbExecutor, ok := m.callbackExecutors[name]; ok { + state.cbExecutor = cbExecutor + } else { + log.WARNING.Println("task %s callback %s not registered, just ignore", taskId, name) } } - return state, step, nil + return state, nil } // State is a struct for task state type State struct { - task *types.Task - currentStep string - - callBack func(isSuccess bool, task *types.Task) + task *types.Task + step *types.Step + stepName string + cbExecutor istep.CallbackExecutor } // NewState return state relative to task -func NewState(task *types.Task, currentStep string) *State { +func NewState(task *types.Task, stepName string) *State { return &State{ - task: task, - currentStep: currentStep, + task: task, + stepName: stepName, } } @@ -89,8 +92,12 @@ func (s *State) isTaskTerminated() bool { // isReadyToStep check if step is ready to step func (s *State) isReadyToStep(stepName string) (*types.Step, error) { + nowTime := time.Now() + switch s.task.GetStatus() { - case types.TaskStatusRunning, types.TaskStatusInit: + case types.TaskStatusInit: + s.task.SetStartTime(nowTime) + case types.TaskStatusRunning: case types.TaskStatusForceTerminate: return nil, fmt.Errorf("task %s state for terminate", s.task.GetTaskID()) default: @@ -103,171 +110,179 @@ func (s *State) isReadyToStep(stepName string) (*types.Step, error) { return nil, fmt.Errorf("step %s is not exist", stepName) } - // return nil & nil means step had been executed - if curStep.GetStatus() == types.TaskStatusSuccess { + // return nil & nil means step had been executed + if curStep.IsCompleted() { // step is success, skip return nil, nil } + defer func() { + // update Task in storage + if err := GetGlobalStorage().UpdateTask(context.Background(), s.task); err != nil { + log.ERROR.Printf("task %s update step %s failed: %s", s.task.TaskID, curStep.GetName(), err.Error()) + } + }() + // not first time to execute current step if curStep.GetStatus() == types.TaskStatusFailure { curStep.AddRetryCount(1) } - nowTime := time.Now() curStep = curStep.SetStartTime(nowTime). SetStatus(types.TaskStatusRunning). SetMessage("step ready to run"). SetLastUpdate(nowTime) - s.task.SetCurrentStep(stepName).SetStatus(types.TaskStatusRunning) - - // update Task in storage - if err := GetGlobalStorage().UpdateTask(context.Background(), s.task); err != nil { - return nil, err - } + s.task.SetCurrentStep(stepName).SetStatus(types.TaskStatusRunning).SetMessage("task running") return curStep, nil - } // updateStepSuccess update step status to success -func (s *State) updateStepSuccess(start time.Time, stepName string) error { - step, ok := s.task.GetStep(stepName) - if !ok { - return fmt.Errorf("step %s is not exist", stepName) - } +func (s *State) updateStepSuccess(start time.Time) { endTime := time.Now() - step.SetStartTime(start). - SetEndTime(endTime). + defer func() { + // update Task in storage + if err := GetGlobalStorage().UpdateTask(context.Background(), s.task); err != nil { + log.ERROR.Printf("task %s update step %s to success failed: %s", s.task.TaskID, s.step.GetName(), err.Error()) + } + }() + + s.step.SetEndTime(endTime). SetExecutionTime(start, endTime). SetStatus(types.TaskStatusSuccess). - SetMessage(fmt.Sprintf("step %s running successfully", step.Name)). + SetMessage(fmt.Sprintf("step %s running successfully", s.step.Name)). SetLastUpdate(endTime) + taskStartTime := s.task.GetStartTime() s.task.SetStatus(types.TaskStatusRunning). - SetMessage(fmt.Sprintf("step %s running successfully", step.Name)). + SetExecutionTime(taskStartTime, endTime). + SetMessage(fmt.Sprintf("step %s running successfully", s.step.Name)). SetLastUpdate(endTime) // last step - if s.isLastStep(stepName) { - taskStartTime, err := s.task.GetStartTime() - if err != nil { - return fmt.Errorf(fmt.Sprintf("get task %s start time error", s.task.GetTaskID())) - } + if s.isLastStep() { s.task.SetEndTime(endTime). - SetExecutionTime(taskStartTime, endTime). SetStatus(types.TaskStatusSuccess). SetMessage("task finished successfully") - // callback - if s.callBack != nil { - s.callBack(true, s.task) + // callback + if s.cbExecutor != nil { + c := istep.NewContext(context.Background(), GetGlobalStorage(), s.task, s.step) + s.cbExecutor.Callback(c, nil) } } - - // update Task in storage - if err := GetGlobalStorage().UpdateTask(context.Background(), s.task); err != nil { - return fmt.Errorf("update task %s status error", s.task.GetTaskID()) - } - - return nil } // updateStepFailure update step status to failure -func (s *State) updateStepFailure(start time.Time, name string, stepErr error, taskTimeOut bool) error { - step, ok := s.task.GetStep(name) - if !ok { - return fmt.Errorf("step %s is not exist", name) - } +func (s *State) updateStepFailure(start time.Time, stepErr error, taskTimeOut bool) { + defer func() { + // update Task in storage + if err := GetGlobalStorage().UpdateTask(context.Background(), s.task); err != nil { + log.ERROR.Printf("task %s update step %s to failure failed: %s", s.task.TaskID, s.step.GetName(), err.Error()) + } + }() + endTime := time.Now() - step.SetStartTime(start). - SetEndTime(endTime). + stepMsg := fmt.Sprintf("running failed, err=%s", stepErr) + if s.step.MaxRetries > 0 { + stepMsg = fmt.Sprintf("running failed, err=%s, retried=%d", stepErr, s.step.GetRetryCount()) + } + s.step.SetEndTime(endTime). SetExecutionTime(start, endTime). SetStatus(types.TaskStatusFailure). - SetMessage(fmt.Sprintf("running failed, %s", stepErr.Error())). + SetMessage(stepMsg). + SetLastUpdate(endTime) + + taskStartTime := s.task.GetStartTime() + s.task.SetExecutionTime(taskStartTime, endTime). SetLastUpdate(endTime) - // if step SkipOnFailed, update task status to running - if !taskTimeOut && step.GetSkipOnFailed() { - // skip, set task running or success - s.task.SetStatus(types.TaskStatusRunning). - SetMessage(fmt.Sprintf("step %s running failed", step.Name)). - SetLastUpdate(endTime) - - // last step failed and skipOnFailed is true, update task status to success - if s.isLastStep(name) { - // last step - taskStartTime, err := s.task.GetStartTime() - if err != nil { - return fmt.Errorf(fmt.Sprintf("get task %s start time error", s.task.GetTaskID())) - } - s.task.SetStatus(types.TaskStatusSuccess). - SetMessage("task finished successfully"). - SetLastUpdate(endTime). - SetEndTime(endTime). - SetExecutionTime(taskStartTime, endTime) + // 任务超时, 整体结束 + if taskTimeOut { + s.task.SetStatus(types.TaskStatusTimeout).SetMessage("task timeout") - // callback - if s.callBack != nil { - s.callBack(true, s.task) - } + // callback + if s.cbExecutor != nil { + c := istep.NewContext(context.Background(), GetGlobalStorage(), s.task, s.step) + s.cbExecutor.Callback(c, stepErr) } - } else { - // not skip, set task failed - s.task.SetStatus(types.TaskStatusFailure). - SetMessage(fmt.Sprintf("step %s running failed", step.Name)). - SetLastUpdate(endTime). - SetEndTime(endTime). - SetExecutionTime(start, endTime) - - if taskTimeOut { - s.task.SetStatus(types.TaskStatusTimeout).SetMessage("task timeout") + return + } + + // last step failed and skipOnFailed is true, update task status to success + if s.isLastStep() { + if s.step.GetSkipOnFailed() { + s.task.SetStatus(types.TaskStatusSuccess).SetMessage("task finished successfully") + } else { + s.task.SetStatus(types.TaskStatusFailure).SetMessage(fmt.Sprintf("step %s running failed", s.step.Name)) } // callback - if s.callBack != nil { - s.callBack(false, s.task) + if s.cbExecutor != nil { + c := istep.NewContext(context.Background(), GetGlobalStorage(), s.task, s.step) + s.cbExecutor.Callback(c, stepErr) } + return } - // update Task in storage - if err := GetGlobalStorage().UpdateTask(context.Background(), s.task); err != nil { - return fmt.Errorf("update task %s status error", s.task.GetTaskID()) + // 忽略错误 + if s.step.GetSkipOnFailed() { + msg := fmt.Sprintf("step %s running failed, with skip on failed", s.step.Name) + s.task.SetStatus(types.TaskStatusRunning).SetMessage(msg) + return } - return nil + // 重试流程中 + if s.step.MaxRetries > 0 { + msg := fmt.Sprintf("step %s running failed, with retried=%d, maxRetries=%d", + s.step.Name, s.step.GetRetryCount(), s.step.MaxRetries) + + if s.step.GetRetryCount() < s.step.MaxRetries { + s.task.SetStatus(types.TaskStatusRunning).SetMessage(msg) + } else { + // 重试次数用完 + s.task.SetStatus(types.TaskStatusFailure).SetMessage(msg) + } + } } -func (s *State) isLastStep(stepName string) bool { +func (s *State) isLastStep() bool { count := len(s.task.Steps) // 没有step默认返回false if count == 0 { return false } - return stepName == s.task.Steps[count-1].Name + + // 非最后一步 + if s.step.GetName() != s.task.Steps[count-1].Name { + return false + } + + // 最后一步还需要看重试次数 + return s.step.IsCompleted() } -// GetCommonParams get common params by key -func (s *State) GetCommonParams(key string) (string, bool) { - return s.task.GetCommonParams(key) +// GetCommonParam get common params by key +func (s *State) GetCommonParam(key string) (string, bool) { + return s.task.GetCommonParam(key) } -// AddCommonParams add common params -func (s *State) AddCommonParams(key, value string) *State { - s.task.AddCommonParams(key, value) +// AddCommonParam add common params +func (s *State) AddCommonParam(key, value string) *State { + s.task.AddCommonParam(key, value) return s } -// GetExtraParams get extra params by obj -func (s *State) GetExtraParams(obj interface{}) error { - return s.task.GetExtra(obj) +// GetCommonPayload get extra params by obj +func (s *State) GetCommonPayload(obj interface{}) error { + return s.task.GetCommonPayload(obj) } -// SetExtraAll set extra params by obj -func (s *State) SetExtraAll(obj interface{}) error { - return s.task.SetExtraAll(obj) +// SetCommonPayload set extra params by obj +func (s *State) SetCommonPayload(obj interface{}) error { + return s.task.SetCommonPayload(obj) } // GetStepParam get step params by key @@ -285,11 +300,6 @@ func (s *State) GetTask() *types.Task { return s.task } -// GetCurrentStep get current step -func (s *State) GetCurrentStep() (*types.Step, bool) { - return s.task.GetStep(s.currentStep) -} - // GetStep get step by stepName func (s *State) GetStep(stepName string) (*types.Step, bool) { return s.task.GetStep(stepName) diff --git a/bcs-common/common/task/steps/bksops/bksops.go b/bcs-common/common/task/steps/bksops/bksops.go index 3e19fabeca..9b945da17f 100644 --- a/bcs-common/common/task/steps/bksops/bksops.go +++ b/bcs-common/common/task/steps/bksops/bksops.go @@ -12,3 +12,33 @@ // Package bksops defines the step implemented. package bksops + +import ( + istep "github.com/Tencent/bk-bcs/bcs-common/common/task/steps/iface" +) + +type sops struct { + bkAppCode string + bkAppSecret string +} + +func newSops(bkAppCode, bkAppSecret string) *sops { + return &sops{bkAppCode, bkAppSecret} +} + +func (s *sops) Execute(c *istep.Context) error { + return nil +} + +// 注意, Step名称不能修改 +const ( + // BKSopsStep ... + BKSopsStep istep.StepName = "BK_SOPS" +) + +// Register ... +func Register(bkAppCode, bkAppSecret string) { + s := newSops(bkAppCode, bkAppSecret) + + istep.Register(BKSopsStep, istep.StepExecutor(s)) +} diff --git a/bcs-common/common/task/steps/hello/callback.go b/bcs-common/common/task/steps/hello/callback.go new file mode 100644 index 0000000000..d5dc1ea698 --- /dev/null +++ b/bcs-common/common/task/steps/hello/callback.go @@ -0,0 +1,36 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package hello defines the hello step. +package hello + +import ( + "fmt" + + istep "github.com/Tencent/bk-bcs/bcs-common/common/task/steps/iface" +) + +// Callback ... +func Callback(c *istep.Context, err error) { + if err != nil { + fmt.Println(err) + } +} + +type callback struct { +} + +func (cb *callback) Callback(c *istep.Context, err error) { + if err != nil { + fmt.Println(err) + } +} diff --git a/bcs-common/common/task/steps/hello/hello.go b/bcs-common/common/task/steps/hello/hello.go index 2629d5b3ee..c20e297558 100644 --- a/bcs-common/common/task/steps/hello/hello.go +++ b/bcs-common/common/task/steps/hello/hello.go @@ -14,10 +14,8 @@ package hello import ( - "context" "fmt" - "github.com/Tencent/bk-bcs/bcs-common/common/task/steps/iface" istep "github.com/Tencent/bk-bcs/bcs-common/common/task/steps/iface" ) @@ -25,15 +23,15 @@ import ( type hello struct{} // NewHello ... -func NewHello() iface.StepWorkerInterface { +func NewHello() istep.StepExecutor { return &hello{} } // DoWork for worker exec task -func (s *hello) DoWork(ctx context.Context, work *istep.Work) error { +func (s *hello) Execute(c *istep.Context) error { fmt.Println("Hello") // time.Sleep(30 * time.Second) - if err := work.AddCommonParams("name", "hello"); err != nil { + if err := c.AddCommonParam("name", "hello"); err != nil { return err } return nil @@ -44,5 +42,11 @@ func init() { istep.Register("hello", NewHello()) // 使用函数注册 - istep.Register("sum", istep.StepWorkerFunc(Sum)) + istep.Register("sum", istep.StepExecutorFunc(Sum)) + + // 回调使用结构体注册 + istep.RegisterCallback("callback_fun", &callback{}) + + // 回调使用函数注册 + istep.RegisterCallback("callback", istep.CallbackExecutorFunc(Callback)) } diff --git a/bcs-common/common/task/steps/hello/sum.go b/bcs-common/common/task/steps/hello/sum.go index fed21900db..2f316385e1 100644 --- a/bcs-common/common/task/steps/hello/sum.go +++ b/bcs-common/common/task/steps/hello/sum.go @@ -13,7 +13,6 @@ package hello import ( - "context" "fmt" "strconv" @@ -30,15 +29,15 @@ var ( ) // Sum ... -func Sum(ctx context.Context, step *istep.Work) error { +func Sum(c *istep.Context) error { // time.Sleep(30 * time.Second) - a, ok := step.GetParam(SumA.String()) + a, ok := c.GetParam(SumA.String()) if !ok { return fmt.Errorf("%w: param=%s", istep.ErrParamNotFound, SumA.String()) } - b, ok := step.GetParam(SumB.String()) + b, ok := c.GetParam(SumB.String()) if !ok { return fmt.Errorf("%w: param=%s", istep.ErrParamNotFound, SumB.String()) } @@ -53,9 +52,9 @@ func Sum(ctx context.Context, step *istep.Work) error { return err } - c := a1 + b1 - _ = step.AddCommonParams(SumC.String(), fmt.Sprintf("%v", c)) + c1 := a1 + b1 + _ = c.AddCommonParam(SumC.String(), fmt.Sprintf("%v", c1)) - fmt.Printf("%s %s %s sumC: %v\n", step.GetTaskID(), step.GetTaskType(), step.GetName(), c) + fmt.Printf("%s %s %s sumC: %v\n", c.GetTaskID(), c.GetTaskType(), c.GetName(), c) return nil } diff --git a/bcs-common/common/task/steps/iface/context.go b/bcs-common/common/task/steps/iface/context.go new file mode 100644 index 0000000000..dc5cb2cd71 --- /dev/null +++ b/bcs-common/common/task/steps/iface/context.go @@ -0,0 +1,144 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package iface + +import ( + "context" + + istore "github.com/Tencent/bk-bcs/bcs-common/common/task/stores/iface" + "github.com/Tencent/bk-bcs/bcs-common/common/task/types" +) + +// Context 当前执行的任务 +type Context struct { + ctx context.Context + store istore.Store + task *types.Task + currentStep *types.Step +} + +// NewContext ... +func NewContext(ctx context.Context, store istore.Store, task *types.Task, currentStep *types.Step) *Context { + return &Context{ + ctx: ctx, + store: store, + task: task, + currentStep: currentStep, + } +} + +// Context returns the step's context +func (t *Context) Context() context.Context { + return t.ctx +} + +// GetTaskID get task id +func (t *Context) GetTaskID() string { + return t.task.GetTaskID() +} + +// GetTaskName get task name +func (t *Context) GetTaskName() string { + return t.task.GetTaskID() +} + +// GetTaskType get task type +func (t *Context) GetTaskType() string { + return t.task.GetTaskType() +} + +// GetTaskIndex get task index +func (t *Context) GetTaskIndex() string { + return t.task.GetTaskIndex() +} + +// GetTaskStatus get task status +func (t *Context) GetTaskStatus() string { + return t.task.GetStatus() +} + +// GetCommonParam get current task param +func (t *Context) GetCommonParam(key string) (string, bool) { + return t.task.GetCommonParam(key) +} + +// AddCommonParam add task common params +func (t *Context) AddCommonParam(k, v string) error { + _ = t.task.AddCommonParam(k, v) + return nil +} + +// GetCommonPayload get task extra json +func (t *Context) GetCommonPayload(obj interface{}) error { + return t.task.GetCommonPayload(obj) +} + +// SetCommonPayload set task extra json +func (t *Context) SetCommonPayload(obj interface{}) error { + if err := t.task.SetCommonPayload(obj); err != nil { + return err + } + + return t.store.UpdateTask(t.ctx, t.task) +} + +// GetName get current step name +func (t *Context) GetName() string { + return t.currentStep.GetName() +} + +// GetStatus get current step status +func (t *Context) GetStatus() string { + return t.currentStep.GetStatus() +} + +// GetRetryCount get current step retrycount +func (t *Context) GetRetryCount() uint32 { + return t.currentStep.GetRetryCount() +} + +// GetParam get current step param +func (t *Context) GetParam(key string) (string, bool) { + return t.currentStep.GetParam(key) +} + +// AddParam set step param by key,value +func (t *Context) AddParam(key string, value string) error { + _ = t.currentStep.AddParam(key, value) + return t.store.UpdateTask(t.ctx, t.task) +} + +// GetParams return all step params +func (t *Context) GetParams() map[string]string { + return t.currentStep.GetParams() +} + +// SetParams return all step params +func (t *Context) SetParams(params map[string]string) error { + t.currentStep.SetParams(params) + return t.store.UpdateTask(t.ctx, t.task) +} + +// GetPayload return unmarshal step extras +func (t *Context) GetPayload(obj interface{}) error { + return t.currentStep.GetPayload(obj) +} + +// SetPayload set step extras by json string +func (t *Context) SetPayload(obj interface{}) error { + if err := t.currentStep.SetPayload(obj); err != nil { + return err + } + + return t.store.UpdateTask(t.ctx, t.task) +} diff --git a/bcs-common/common/task/steps/iface/interfaces.go b/bcs-common/common/task/steps/iface/interfaces.go index 5917cf776c..fc31dabf99 100644 --- a/bcs-common/common/task/steps/iface/interfaces.go +++ b/bcs-common/common/task/steps/iface/interfaces.go @@ -14,10 +14,7 @@ package iface import ( - "context" "errors" - - "github.com/Tencent/bk-bcs/bcs-common/common/task/types" ) var ( @@ -25,42 +22,36 @@ var ( ErrParamNotFound = errors.New("param not found") ) -// StepWorkerInterface that client must implement -type StepWorkerInterface interface { - DoWork(context.Context, *Work) error +// StepExecutor that client must implement +type StepExecutor interface { + Execute(*Context) error } -// The StepWorkerFunc type is an adapter to allow the use of -// ordinary functions as a Handler. If f is a function -// with the appropriate signature, HandlerFunc(f) is a -// Handler that calls f. -type StepWorkerFunc func(context.Context, *Work) error +// The StepExecutorFunc type is an adapter to allow the use of +// ordinary functions as a Executor. If f is a function +// with the appropriate signature, StepExecutorFunc(f) is a +// Executor that calls f. +type StepExecutorFunc func(*Context) error -// DoWork calls f(ctx, w) -func (f StepWorkerFunc) DoWork(ctx context.Context, w *Work) error { - return f(ctx, w) +// Execute calls f(c) +func (f StepExecutorFunc) Execute(c *Context) error { + return f(c) } -// CallbackInterface that client must implement -type CallbackInterface interface { - GetName() string - Callback(isSuccess bool, task *types.Task) +// CallbackExecutor that callback client must implement +type CallbackExecutor interface { + Callback(*Context, error) } -// TaskBuilder build task -type TaskBuilder interface { // nolint - Name() string - Type() string - BuildTask(info types.TaskInfo, opts ...types.TaskOption) (*types.Task, error) - Steps(defineSteps []StepBuilder) []*types.Step -} +// The CallbackExecutorFunc type is an adapter to allow the use of +// ordinary functions as a Executor. If f is a function +// with the appropriate signature, CallbackExecutorFunc(f) is a +// Executor that calls f. +type CallbackExecutorFunc func(*Context, error) -// StepBuilder build step -type StepBuilder interface { - Alias() string - GetName() string - BuildStep(kvs []KeyValue, opts ...types.StepOption) *types.Step - DoWork(task *types.Task) error +// Callback calls f(c, cbErr) +func (f CallbackExecutorFunc) Callback(c *Context, cbErr error) { + f(c, cbErr) } // KeyValue key-value paras @@ -76,69 +67,3 @@ type ParamKey string func (pk ParamKey) String() string { return string(pk) } - -// TaskType taskType -type TaskType string // nolint - -// String toString -func (tt TaskType) String() string { - return string(tt) -} - -// TaskName xxx -type TaskName string // nolint - -// String xxx -func (tn TaskName) String() string { - return string(tn) -} - -// Work 当前执行的任务 -type Work struct { - task *types.Task - currentStep *types.Step -} - -// NewWork ... -func NewWork(t *types.Task, currentStep *types.Step) *Work { - return &Work{ - task: t, - currentStep: currentStep, - } -} - -// GetTaskID get task id -func (t *Work) GetTaskID() string { - return t.task.GetTaskID() -} - -// GetTaskName get task name -func (t *Work) GetTaskName() string { - return t.task.GetTaskID() -} - -// GetTaskType get task type -func (t *Work) GetTaskType() string { - return t.task.GetTaskType() -} - -// AddCommonParams add task common params -func (t *Work) AddCommonParams(k, v string) error { - _ = t.task.AddCommonParams(k, v) - return nil -} - -// GetName get current step name -func (t *Work) GetName() string { - return t.currentStep.GetName() -} - -// GetParam get current step param -func (t *Work) GetParam(key string) (string, bool) { - return t.currentStep.GetParam(key) -} - -// GetStatus get current step status -func (t *Work) GetStatus() string { - return t.currentStep.GetStatus() -} diff --git a/bcs-common/common/task/steps/iface/register.go b/bcs-common/common/task/steps/iface/register.go index d02e25ffb3..8f7aefc96a 100644 --- a/bcs-common/common/task/steps/iface/register.go +++ b/bcs-common/common/task/steps/iface/register.go @@ -16,15 +16,32 @@ import ( "sync" ) +// StepName 步骤名称, 通过这个查找Executor, 必须全局唯一 +type StepName string + +// String ... +func (s StepName) String() string { + return string(s) +} + +// CallbackName 步骤名称, 通过这个查找callback Executor, 必须全局唯一 +type CallbackName string + +// String ... +func (cb CallbackName) String() string { + return string(cb) +} + var ( - stepMu sync.RWMutex - steps = make(map[string]StepWorkerInterface) + stepMu sync.RWMutex + steps = make(map[StepName]StepExecutor) + callBacks = make(map[CallbackName]CallbackExecutor) ) -// Register makes a StepWorkerInterface available by the provided name. -// If Register is called twice with the same name or if StepWorkerInterface is nil, +// Register makes a StepExecutor available by the provided name. +// If Register is called twice with the same name or if StepExecutor is nil, // it panics. -func Register(name string, step StepWorkerInterface) { +func Register(name StepName, step StepExecutor) { stepMu.Lock() defer stepMu.Unlock() @@ -33,16 +50,40 @@ func Register(name string, step StepWorkerInterface) { } if _, dup := steps[name]; dup { - panic("task: Register step twice for work " + name) + panic("task: Register step twice for executor " + name) } steps[name] = step } // GetRegisters get all steps instance -func GetRegisters() map[string]StepWorkerInterface { +func GetRegisters() map[StepName]StepExecutor { stepMu.Lock() defer stepMu.Unlock() return steps } + +// RegisterCallback ... +func RegisterCallback(name CallbackName, cb CallbackExecutor) { + stepMu.Lock() + defer stepMu.Unlock() + + if cb == nil { + panic("task: Register callback is nil") + } + + if _, dup := callBacks[name]; dup { + panic("task: Register callback twice for executor " + name) + } + + callBacks[name] = cb +} + +// GetCallbackRegisters get all steps instance +func GetCallbackRegisters() map[CallbackName]CallbackExecutor { + stepMu.Lock() + defer stepMu.Unlock() + + return callBacks +} diff --git a/bcs-common/common/task/stores/iface/interfaces.go b/bcs-common/common/task/stores/iface/interfaces.go index 03f60d2ef9..69ba351699 100644 --- a/bcs-common/common/task/stores/iface/interfaces.go +++ b/bcs-common/common/task/stores/iface/interfaces.go @@ -64,17 +64,19 @@ type UpdateStepOption struct { LastUpdate time.Time `json:"lastUpdate"` } +// PatchOption 主要实时更新params, payload信息 +type PatchOption struct { + Task *types.Task + CurrentStep *types.Step +} + // Store model for TaskManager type Store interface { EnsureTable(ctx context.Context, dst ...any) error CreateTask(ctx context.Context, task *types.Task) error ListTask(ctx context.Context, opt *ListOption) ([]types.Task, error) GetTask(ctx context.Context, taskID string) (*types.Task, error) - // UpdateTask(ctx context.Context, taskID string, opt *UpdateOption) error DeleteTask(ctx context.Context, taskID string) error - // GetStep(ctx context.Context, taskID string, stepName string) (*types.Step, error) - // UpdateStep(ctx context.Context, taskID string, stepName string, opt *UpdateStepOption) error UpdateTask(ctx context.Context, task *types.Task) error - PatchTask(ctx context.Context, taskID string, patchs map[string]interface{}) error - // WriteStepOutput(ctx context.Context, taskId string, name string, output map[string]string) error + // PatchTask(ctx context.Context, opt *PatchOption) error // Patcask 更新params/payload信息 } diff --git a/bcs-common/common/task/stores/mem/mem.go b/bcs-common/common/task/stores/mem/mem.go index 6ab789d378..0443df56d8 100644 --- a/bcs-common/common/task/stores/mem/mem.go +++ b/bcs-common/common/task/stores/mem/mem.go @@ -71,6 +71,6 @@ func (s *memStore) GetTask(ctx context.Context, taskID string) (*types.Task, err return nil, fmt.Errorf("not found") } -func (s *memStore) PatchTask(ctx context.Context, taskID string, patchs map[string]interface{}) error { +func (s *memStore) PatchTask(ctx context.Context, opt *iface.PatchOption) error { return types.ErrNotImplemented } diff --git a/bcs-common/common/task/stores/mongo/task.go b/bcs-common/common/task/stores/mongo/task.go index be804ddf17..47bcc0951d 100644 --- a/bcs-common/common/task/stores/mongo/task.go +++ b/bcs-common/common/task/stores/mongo/task.go @@ -122,15 +122,16 @@ func (m *ModelTask) UpdateTask(ctx context.Context, task *types.Task) error { } // PatchTask update task partially -func (m *ModelTask) PatchTask(ctx context.Context, taskID string, patchs map[string]interface{}) error { - if err := m.EnsureTable(ctx); err != nil { - return err - } - cond := operator.NewLeafCondition(operator.Eq, operator.M{ - TableUniqueKey: taskID, - }) - //! we patch fields that need to be updated - return m.db.Table(m.tableName).Upsert(ctx, cond, operator.M{"$set": patchs}) +func (m *ModelTask) PatchTask(ctx context.Context, opt *iface.PatchOption) error { + return types.ErrNotImplemented + // if err := m.EnsureTable(ctx); err != nil { + // return err + // } + // cond := operator.NewLeafCondition(operator.Eq, operator.M{ + // TableUniqueKey: taskID, + // }) + // //! we patch fields that need to be updated + // return m.db.Table(m.tableName).Upsert(ctx, cond, operator.M{"$set": patchs}) } // DeleteTask delete task diff --git a/bcs-common/common/task/stores/mysql/helper.go b/bcs-common/common/task/stores/mysql/helper.go index 1d1a83689c..0cc6e64183 100644 --- a/bcs-common/common/task/stores/mysql/helper.go +++ b/bcs-common/common/task/stores/mysql/helper.go @@ -23,11 +23,14 @@ func getStepRecords(t *types.Task) []*StepRecords { TaskID: t.TaskID, Name: step.Name, Alias: step.Alias, - Extras: step.Extras, + Executor: step.Executor, + Payload: step.Payload, Status: step.Status, Message: step.Message, SkipOnFailed: step.SkipOnFailed, + ETA: step.ETA, RetryCount: step.RetryCount, + MaxRetries: step.MaxRetries, Params: step.Params, Start: step.Start, End: step.End, @@ -48,12 +51,14 @@ func getTaskRecord(t *types.Task) *TaskRecords { record := &TaskRecords{ TaskID: t.TaskID, TaskType: t.TaskType, + TaskIndex: t.TaskIndex, + TaskIndexType: t.TaskIndexType, TaskName: t.TaskName, CurrentStep: t.CurrentStep, StepSequence: stepSequence, - CallBackFuncName: t.CallBackFuncName, + CallbackName: t.CallbackName, CommonParams: t.CommonParams, - ExtraJson: t.ExtraJson, + CommonPayload: t.CommonPayload, Status: t.Status, Message: t.Message, ForceTerminate: t.ForceTerminate, @@ -71,11 +76,13 @@ func toTask(task *TaskRecords, steps []*StepRecords) *types.Task { t := &types.Task{ TaskID: task.TaskID, TaskType: task.TaskType, + TaskIndex: task.TaskIndex, + TaskIndexType: task.TaskIndexType, TaskName: task.TaskName, CurrentStep: task.CurrentStep, - CallBackFuncName: task.CallBackFuncName, + CallbackName: task.CallbackName, CommonParams: task.CommonParams, - ExtraJson: task.ExtraJson, + CommonPayload: task.CommonPayload, Status: task.Status, Message: task.Message, ForceTerminate: task.ForceTerminate, @@ -99,6 +106,7 @@ func getUpdateTaskRecord(t *types.Task) *TaskRecords { record := &TaskRecords{ CurrentStep: t.CurrentStep, CommonParams: t.CommonParams, + CommonPayload: t.CommonPayload, Status: t.Status, Message: t.Message, Start: t.Start, @@ -111,15 +119,14 @@ func getUpdateTaskRecord(t *types.Task) *TaskRecords { func getUpdateStepRecord(t *types.Step) *StepRecords { record := &StepRecords{ - Params: t.Params, - Extras: t.Extras, - Status: t.Status, - Message: t.Message, - Start: t.Start, - End: t.End, - ExecutionTime: t.ExecutionTime, - RetryCount: t.RetryCount, - MaxExecutionSeconds: t.MaxExecutionSeconds, + Params: t.Params, + Payload: t.Payload, + Status: t.Status, + Message: t.Message, + Start: t.Start, + End: t.End, + ExecutionTime: t.ExecutionTime, + RetryCount: t.RetryCount, } return record } diff --git a/bcs-common/common/task/stores/mysql/mysql.go b/bcs-common/common/task/stores/mysql/mysql.go index a26236f7a8..0bca926bec 100644 --- a/bcs-common/common/task/stores/mysql/mysql.go +++ b/bcs-common/common/task/stores/mysql/mysql.go @@ -149,6 +149,6 @@ func (s *mysqlStore) GetTask(ctx context.Context, taskID string) (*types.Task, e return toTask(&taskRecord, stepRecords), nil } -func (s *mysqlStore) PatchTask(ctx context.Context, taskID string, patchs map[string]interface{}) error { - return nil +func (s *mysqlStore) PatchTask(ctx context.Context, opt *iface.PatchOption) error { + return types.ErrNotImplemented } diff --git a/bcs-common/common/task/stores/mysql/table.go b/bcs-common/common/task/stores/mysql/table.go index 962172b197..e851a5def3 100644 --- a/bcs-common/common/task/stores/mysql/table.go +++ b/bcs-common/common/task/stores/mysql/table.go @@ -32,19 +32,21 @@ type TaskRecords struct { gorm.Model TaskID string `json:"taskID" gorm:"type:varchar(255);uniqueIndex:idx_task_id"` // 唯一索引 TaskType string `json:"taskType" gorm:"type:varchar(255)"` + TaskIndex string `json:"TaskIndex" gorm:"type:varchar(255)"` + TaskIndexType string `json:"TaskIndexType" gorm:"type:varchar(255)"` TaskName string `json:"taskName" gorm:"type:varchar(255)"` CurrentStep string `json:"currentStep" gorm:"type:varchar(255)"` StepSequence []string `json:"stepSequence" gorm:"type:text;serializer:json"` - CallBackFuncName string `json:"callBackFuncName" gorm:"type:varchar(255)"` + CallbackName string `json:"callbackName" gorm:"type:varchar(255)"` CommonParams map[string]string `json:"commonParams" gorm:"type:text;serializer:json"` - ExtraJson string `json:"extraJson" gorm:"type:text"` + CommonPayload []byte `json:"commonPayload" gorm:"type:text"` Status string `json:"status" gorm:"type:varchar(255)"` Message string `json:"message" gorm:"type:text"` ForceTerminate bool `json:"forceTerminate"` - Start time.Time `json:"start"` - End time.Time `json:"end"` ExecutionTime uint32 `json:"executionTime"` MaxExecutionSeconds uint32 `json:"maxExecutionSeconds"` + Start time.Time `json:"start"` + End time.Time `json:"end"` Creator string `json:"creator" gorm:"type:varchar(255)"` Updater string `json:"updater" gorm:"type:varchar(255)"` } @@ -60,16 +62,19 @@ type StepRecords struct { TaskID string `json:"taskID" gorm:"type:varchar(255);index:idx_task_id"` // 索引 Name string `json:"name" gorm:"type:varchar(255)"` Alias string `json:"alias" gorm:"type:varchar(255)"` + Executor string `json:"executor" gorm:"type:varchar(255)"` Params map[string]string `json:"input" gorm:"type:text;serializer:json"` - Extras string `json:"extras" gorm:"type:text"` + Payload []byte `json:"payload" gorm:"type:text"` Status string `json:"status" gorm:"type:varchar(255)"` Message string `json:"message" gorm:"type:varchar(255)"` + ETA *time.Time `json:"eta"` SkipOnFailed bool `json:"skipOnFailed"` RetryCount uint32 `json:"retryCount"` - Start time.Time `json:"start"` - End time.Time `json:"end"` + MaxRetries uint32 `json:"maxRetries"` ExecutionTime uint32 `json:"executionTime"` MaxExecutionSeconds uint32 `json:"maxExecutionSeconds"` + Start time.Time `json:"start"` + End time.Time `json:"end"` } // TableName .. @@ -82,16 +87,18 @@ func (t *StepRecords) ToStep() *types.Step { return &types.Step{ Name: t.Name, Alias: t.Alias, + Executor: t.Executor, Params: t.Params, - Extras: t.Extras, + Payload: t.Payload, Status: t.Status, Message: t.Message, SkipOnFailed: t.SkipOnFailed, RetryCount: t.RetryCount, - Start: t.Start, - End: t.End, + MaxRetries: t.MaxRetries, ExecutionTime: t.ExecutionTime, MaxExecutionSeconds: t.MaxExecutionSeconds, + Start: t.Start, + End: t.End, LastUpdate: t.UpdatedAt, } } diff --git a/bcs-common/common/task/types/step.go b/bcs-common/common/task/types/step.go index 2f2f0727aa..b309719656 100644 --- a/bcs-common/common/task/types/step.go +++ b/bcs-common/common/task/types/step.go @@ -20,7 +20,7 @@ import ( // StepOptions xxx type StepOptions struct { - Retry uint32 + MaxRetries uint32 SkipFailed bool MaxExecutionSeconds uint32 } @@ -28,10 +28,10 @@ type StepOptions struct { // StepOption xxx type StepOption func(opt *StepOptions) -// WithStepRetry xxx -func WithStepRetry(retry uint32) StepOption { +// WithMaxRetries xxx +func WithMaxRetries(count uint32) StepOption { return func(opt *StepOptions) { - opt.Retry = retry + opt.MaxRetries = count } } @@ -50,22 +50,22 @@ func WithMaxExecutionSeconds(execSecs uint32) StepOption { } // NewStep return a new step by default params -func NewStep(name string, alias string, opts ...StepOption) *Step { - defaultOptions := &StepOptions{Retry: 0} +func NewStep(name string, executor string, opts ...StepOption) *Step { + defaultOptions := &StepOptions{MaxRetries: 0} for _, opt := range opts { opt(defaultOptions) } return &Step{ Name: name, - Alias: alias, + Executor: executor, Params: map[string]string{}, - Extras: DefaultJsonExtrasContent, + Payload: DefaultPayloadContent, Status: TaskStatusNotStarted, Message: "", + RetryCount: 0, SkipOnFailed: defaultOptions.SkipFailed, - RetryCount: defaultOptions.Retry, - Start: time.Now(), + MaxRetries: defaultOptions.MaxRetries, MaxExecutionSeconds: defaultOptions.MaxExecutionSeconds, } } @@ -75,12 +75,6 @@ func (s *Step) GetName() string { return s.Name } -// SetName set task method -func (s *Step) SetName(name string) *Step { - s.Name = name - return s -} - // GetAlias return task alias func (s *Step) GetAlias() string { return s.Alias @@ -109,16 +103,16 @@ func (s *Step) AddParam(key, value string) *Step { return s } -// GetParamsAll return all step params -func (s *Step) GetParamsAll() map[string]string { +// GetParams return all step params +func (s *Step) GetParams() map[string]string { if s.Params == nil { s.Params = make(map[string]string, 0) } return s.Params } -// SetParamMulti set step params by map -func (s *Step) SetParamMulti(params map[string]string) { +// SetParams set step params by map +func (s *Step) SetParams(params map[string]string) { if s.Params == nil { s.Params = make(map[string]string, 0) } @@ -133,21 +127,21 @@ func (s *Step) SetNewParams(params map[string]string) *Step { return s } -// GetExtras return unmarshal step extras -func (s *Step) GetExtras(obj interface{}) error { - if s.Extras == "" { - s.Extras = DefaultJsonExtrasContent +// GetPayload return unmarshal step extras +func (s *Step) GetPayload(obj interface{}) error { + if len(s.Payload) == 0 { + s.Payload = DefaultPayloadContent } - return json.Unmarshal([]byte(s.Extras), obj) + return json.Unmarshal(s.Payload, obj) } -// SetExtrasAll set step extras by json string -func (s *Step) SetExtrasAll(obj interface{}) error { +// SetPayload set step extras by json string +func (s *Step) SetPayload(obj interface{}) error { result, err := json.Marshal(obj) if err != nil { return err } - s.Extras = string(result) + s.Payload = result return nil } @@ -156,6 +150,25 @@ func (s *Step) GetStatus() string { return s.Status } +// IsCompleted return step completed or not +func (s *Step) IsCompleted() bool { + // 已经完成 + if s.Status == TaskStatusSuccess { + return true + } + + // 失败需要看重试次数 + if s.Status == TaskStatusFailure { + // 还有重试次数 + if s.MaxRetries > 0 && s.RetryCount < s.MaxRetries { + return false + } + return true + } + + return false +} + // SetStatus set status func (s *Step) SetStatus(stat string) *Step { s.Status = stat @@ -164,9 +177,6 @@ func (s *Step) SetStatus(stat string) *Step { // GetMessage get step message func (s *Step) GetMessage() string { - if s.Message == "" { - return "" - } return s.Message } @@ -187,6 +197,12 @@ func (s *Step) SetSkipOnFailed(skipOnFailed bool) *Step { return s } +// SetMaxTries set step max retry count +func (s *Step) SetMaxTries(count uint32) *Step { + s.MaxRetries = count + return s +} + // GetRetryCount get step retry count func (s *Step) GetRetryCount() uint32 { return s.RetryCount @@ -198,9 +214,31 @@ func (s *Step) AddRetryCount(count uint32) *Step { return s } +// SetCountdown step eta with countdown(seconds) +func (s *Step) SetCountdown(c int) *Step { + // 默认就是立即执行, 0值忽略 + if c <= 0 { + return s + } + + t := time.Now().Add(time.Duration(c) * time.Second) + s.ETA = &t + return s +} + +// SetETA step estimated time of arrival +func (s *Step) SetETA(t time.Time) *Step { + if t.Before(time.Now()) { + return s + } + + s.ETA = &t + return s +} + // GetStartTime get start time -func (s *Step) GetStartTime() (time.Time, error) { - return s.Start, nil +func (s *Step) GetStartTime() time.Time { + return s.Start } // SetStartTime update start time @@ -210,8 +248,8 @@ func (s *Step) SetStartTime(t time.Time) *Step { } // GetEndTime get end time -func (s *Step) GetEndTime() (time.Time, error) { - return s.End, nil +func (s *Step) GetEndTime() time.Time { + return s.End } // SetEndTime set end time @@ -223,7 +261,7 @@ func (s *Step) SetEndTime(t time.Time) *Step { // GetExecutionTime set execution time func (s *Step) GetExecutionTime() time.Duration { - return time.Duration(s.ExecutionTime) + return time.Duration(s.ExecutionTime) * time.Millisecond } // SetExecutionTime set execution time @@ -232,20 +270,20 @@ func (s *Step) SetExecutionTime(start time.Time, end time.Time) *Step { return s } -// GetMaxExecutionSeconds get max execution seconds -func (s *Step) GetMaxExecutionSeconds() time.Duration { +// GetMaxExecution get max execution seconds +func (s *Step) GetMaxExecution() time.Duration { return time.Duration(s.MaxExecutionSeconds) * time.Second } -// SetMaxExecutionSeconds set max execution seconds -func (s *Step) SetMaxExecutionSeconds(maxExecutionSeconds time.Duration) *Step { - s.MaxExecutionSeconds = uint32(maxExecutionSeconds.Seconds()) +// SetMaxExecution set max execution seconds +func (s *Step) SetMaxExecution(duration time.Duration) *Step { + s.MaxExecutionSeconds = uint32(duration.Seconds()) return s } // GetLastUpdate get last update time -func (s *Step) GetLastUpdate() (time.Time, error) { - return s.LastUpdate, nil +func (s *Step) GetLastUpdate() time.Time { + return s.LastUpdate } // SetLastUpdate set last update time diff --git a/bcs-common/common/task/types/task.go b/bcs-common/common/task/types/task.go index ca6734fc8d..50c31fa953 100644 --- a/bcs-common/common/task/types/task.go +++ b/bcs-common/common/task/types/task.go @@ -21,19 +21,26 @@ import ( "github.com/google/uuid" ) +// TaskBuilder ... +type TaskBuilder interface { // nolint + TaskInfo() TaskInfo + Steps() ([]*Step, error) // Steps init step and define StepSequence + BuildTask(t Task) (Task, error) +} + // TaskOptions xxx type TaskOptions struct { - CallBackFuncName string + CallbackName string MaxExecutionSeconds uint32 } // TaskOption xxx type TaskOption func(opt *TaskOptions) -// WithTaskCallBackFunc xxx -func WithTaskCallBackFunc(callBackName string) TaskOption { +// WithTaskCallback xxx +func WithTaskCallback(callbackName string) TaskOption { return func(opt *TaskOptions) { - opt.CallBackFuncName = callBackName + opt.CallbackName = callbackName } } @@ -46,16 +53,16 @@ func WithTaskMaxExecutionSeconds(timeout uint32) TaskOption { // TaskInfo task basic info definition type TaskInfo struct { - // TaskIndex for resource index - TaskIndex string - TaskType string - TaskName string - Creator string + TaskType string + TaskName string + TaskIndex string // TaskIndex for resource index + TaskIndexType string + Creator string } // NewTask create new task by default -func NewTask(o *TaskInfo, opts ...TaskOption) *Task { - defaultOptions := &TaskOptions{CallBackFuncName: "", MaxExecutionSeconds: 0} +func NewTask(o TaskInfo, opts ...TaskOption) *Task { + defaultOptions := &TaskOptions{CallbackName: "", MaxExecutionSeconds: 0} for _, opt := range opts { opt(defaultOptions) } @@ -65,16 +72,17 @@ func NewTask(o *TaskInfo, opts ...TaskOption) *Task { TaskID: uuid.NewString(), TaskType: o.TaskType, TaskName: o.TaskName, + TaskIndex: o.TaskIndex, + TaskIndexType: o.TaskIndexType, Status: TaskStatusInit, ForceTerminate: false, - Start: now, Steps: make([]*Step, 0), Creator: o.Creator, Updater: o.Creator, LastUpdate: now, CommonParams: make(map[string]string, 0), - ExtraJson: DefaultJsonExtrasContent, - CallBackFuncName: defaultOptions.CallBackFuncName, + CommonPayload: DefaultPayloadContent, + CallbackName: defaultOptions.CallbackName, Message: DefaultTaskMessage, MaxExecutionSeconds: defaultOptions.MaxExecutionSeconds, } @@ -95,6 +103,11 @@ func (t *Task) GetTaskName() string { return t.TaskName } +// GetTaskIndex get task index +func (t *Task) GetTaskIndex() string { + return t.TaskIndex +} + // GetStep get step by name func (t *Task) GetStep(stepName string) (*Step, bool) { for _, step := range t.Steps { @@ -108,15 +121,15 @@ func (t *Task) GetStep(stepName string) (*Step, bool) { // AddStep add step to task func (t *Task) AddStep(step *Step) *Task { if step == nil { - return t + t.Steps = make([]*Step, 0) } t.Steps = append(t.Steps, step) return t } -// GetCommonParams get common params -func (t *Task) GetCommonParams(key string) (string, bool) { +// GetCommonParam get common params +func (t *Task) GetCommonParam(key string) (string, bool) { if t.CommonParams == nil { t.CommonParams = make(map[string]string, 0) return "", false @@ -127,8 +140,8 @@ func (t *Task) GetCommonParams(key string) (string, bool) { return "", false } -// AddCommonParams add common params -func (t *Task) AddCommonParams(k, v string) *Task { +// AddCommonParam add common params +func (t *Task) AddCommonParam(k, v string) *Task { if t.CommonParams == nil { t.CommonParams = make(map[string]string, 0) } @@ -138,30 +151,30 @@ func (t *Task) AddCommonParams(k, v string) *Task { // GetCallback set callback function name func (t *Task) GetCallback() string { - return t.CallBackFuncName + return t.CallbackName } // SetCallback set callback function name -func (t *Task) SetCallback(callBackFuncName string) *Task { - t.CallBackFuncName = callBackFuncName +func (t *Task) SetCallback(callBackName string) *Task { + t.CallbackName = callBackName return t } -// GetExtra get extra json -func (t *Task) GetExtra(obj interface{}) error { - if t.ExtraJson == "" { - t.ExtraJson = DefaultJsonExtrasContent +// GetCommonPayload get extra json +func (t *Task) GetCommonPayload(obj interface{}) error { + if len(t.CommonPayload) == 0 { + t.CommonPayload = DefaultPayloadContent } - return json.Unmarshal([]byte(t.ExtraJson), obj) + return json.Unmarshal(t.CommonPayload, obj) } -// SetExtraAll set extra json -func (t *Task) SetExtraAll(obj interface{}) error { +// SetCommonPayload set extra json +func (t *Task) SetCommonPayload(obj interface{}) error { result, err := json.Marshal(obj) if err != nil { return err } - t.ExtraJson = string(result) + t.CommonPayload = result return nil } @@ -199,8 +212,8 @@ func (t *Task) SetForceTerminate(f bool) *Task { } // GetStartTime get start time -func (t *Task) GetStartTime() (time.Time, error) { - return t.Start, nil +func (t *Task) GetStartTime() time.Time { + return t.Start } // SetStartTime set start time @@ -210,8 +223,8 @@ func (t *Task) SetStartTime(time time.Time) *Task { } // GetEndTime get end time -func (t *Task) GetEndTime() (time.Time, error) { - return t.End, nil +func (t *Task) GetEndTime() time.Time { + return t.End } // SetEndTime set end time @@ -227,18 +240,18 @@ func (t *Task) GetExecutionTime() time.Duration { // SetExecutionTime set execution time func (t *Task) SetExecutionTime(start time.Time, end time.Time) *Task { - t.ExecutionTime = uint32(end.Sub(start).Seconds()) + t.ExecutionTime = uint32(end.Sub(start).Milliseconds()) return t } -// GetMaxExecutionSeconds get max execution seconds -func (t *Task) GetMaxExecutionSeconds() time.Duration { +// GetMaxExecution get max execution seconds +func (t *Task) GetMaxExecution() time.Duration { return time.Duration(t.MaxExecutionSeconds) * time.Second } -// SetMaxExecutionSeconds set max execution seconds -func (t *Task) SetMaxExecutionSeconds(maxExecutionSeconds time.Duration) *Task { - t.MaxExecutionSeconds = uint32(maxExecutionSeconds.Seconds()) +// SetMaxExecution set max execution seconds +func (t *Task) SetMaxExecution(duration time.Duration) *Task { + t.MaxExecutionSeconds = uint32(duration.Seconds()) return t } @@ -317,3 +330,32 @@ func (t *Task) AddStepParamsBatch(stepName string, params map[string]string) err } return nil } + +// Validate 校验 task +func (t *Task) Validate() error { + if t.TaskName == "" { + return fmt.Errorf("task name is required") + } + + if len(t.Steps) == 0 { + return fmt.Errorf("task steps empty") + } + + uniq := map[string]struct{}{} + for _, s := range t.Steps { + if s.Name == "" { + return fmt.Errorf("step name is required") + } + + if s.Executor == "" { + return fmt.Errorf("step executor is required") + } + + if _, ok := uniq[s.Name]; ok { + return fmt.Errorf("step name %s is not unique", s.Name) + } + uniq[s.Name] = struct{}{} + } + + return nil +} diff --git a/bcs-common/common/task/types/type.go b/bcs-common/common/task/types/type.go index 1372ae37dc..75ad19fa22 100644 --- a/bcs-common/common/task/types/type.go +++ b/bcs-common/common/task/types/type.go @@ -21,8 +21,7 @@ import ( const ( // TaskTimeFormat task time format, e.g. 2006-01-02T15:04:05Z07:00 TaskTimeFormat = time.RFC3339 - // DefaultJsonExtrasContent default json extras content - DefaultJsonExtrasContent = "{}" + // DefaultMaxExecuteTimeSeconds default max execute time for 1 hour DefaultMaxExecuteTimeSeconds = 3600 // DefaultTaskMessage default message @@ -47,6 +46,8 @@ const ( ) var ( + // DefaultPayloadContent default json extras content + DefaultPayloadContent = []byte("{}") // ErrNotImplemented not implemented error ErrNotImplemented = errors.New("not implemented") ) @@ -60,34 +61,53 @@ type Task struct { TaskName string `json:"taskName"` CurrentStep string `json:"currentStep"` Steps []*Step `json:"steps"` - CallBackFuncName string `json:"callBackFuncName"` + CallbackName string `json:"callbackName"` CommonParams map[string]string `json:"commonParams"` - ExtraJson string `json:"extraJson"` + CommonPayload []byte `json:"commonPayload"` Status string `json:"status"` Message string `json:"message"` ForceTerminate bool `json:"forceTerminate"` - Start time.Time `json:"start"` - End time.Time `json:"end"` ExecutionTime uint32 `json:"executionTime"` MaxExecutionSeconds uint32 `json:"maxExecutionSeconds"` Creator string `json:"creator"` - LastUpdate time.Time `json:"lastUpdate"` Updater string `json:"updater"` + Start time.Time `json:"start"` + End time.Time `json:"end"` + LastUpdate time.Time `json:"lastUpdate"` } // Step step definition type Step struct { Name string `json:"name"` Alias string `json:"alias"` + Executor string `json:"executor"` Params map[string]string `json:"params"` - Extras string `json:"extras"` + Payload []byte `json:"payload"` Status string `json:"status"` Message string `json:"message"` + ETA *time.Time `json:"eta"` // 延迟执行时间(Estimated Time of Arrival) SkipOnFailed bool `json:"skipOnFailed"` RetryCount uint32 `json:"retryCount"` - Start time.Time `json:"start"` - End time.Time `json:"end"` + MaxRetries uint32 `json:"maxRetries"` ExecutionTime uint32 `json:"executionTime"` MaxExecutionSeconds uint32 `json:"maxExecutionSeconds"` + Start time.Time `json:"start"` + End time.Time `json:"end"` LastUpdate time.Time `json:"lastUpdate"` } + +// TaskType taskType +type TaskType string // nolint + +// String toString +func (tt TaskType) String() string { + return string(tt) +} + +// TaskName xxx +type TaskName string // nolint + +// String xxx +func (tn TaskName) String() string { + return string(tn) +} diff --git a/bcs-common/common/task/utils.go b/bcs-common/common/task/utils.go index fc69d46474..d0c86f06c8 100644 --- a/bcs-common/common/task/utils.go +++ b/bcs-common/common/task/utils.go @@ -19,13 +19,14 @@ import ( "runtime/debug" "time" - "github.com/Tencent/bk-bcs/bcs-common/common/blog" + "github.com/RichardKnop/machinery/v2/log" + "github.com/RichardKnop/machinery/v2/retry" ) // RecoverPrintStack capture panic and print stack func RecoverPrintStack(proc string) { if r := recover(); r != nil { - blog.Errorf("[%s][recover] panic: %v, stack %v\n", proc, r, string(debug.Stack())) + log.ERROR.Printf("[%s][recover] panic: %v, stack %v\n", proc, r, string(debug.Stack())) return } } @@ -89,7 +90,7 @@ func LoopDoFunc(ctx context.Context, do func() error, ops ...LoopOption) error { case <-tick.C: case <-ctx.Done(): if errors.Is(ctx.Err(), context.Canceled) { - blog.Errorf("LoopDoFunc is canceled") + log.ERROR.Printf("LoopDoFunc is canceled") } return ctx.Err() } @@ -102,3 +103,12 @@ func LoopDoFunc(ctx context.Context, do func() error, ops ...LoopOption) error { } } } + +// retryNext 计算重试时间, 基于Fibonacci +func retryNext(count int) int { + start := 1 + for i := 0; i < count; i++ { + start = retry.FibonacciNext(start) + } + return start +} diff --git a/bcs-common/common/task/utils_test.go b/bcs-common/common/task/utils_test.go new file mode 100644 index 0000000000..edc4726b4f --- /dev/null +++ b/bcs-common/common/task/utils_test.go @@ -0,0 +1,35 @@ +package task + +import ( + "fmt" + "testing" +) + +func TestRetryIn(t *testing.T) { + tests := []struct { + count int + expected int + }{ + {-1, 1}, + {0, 1}, + {1, 2}, + {2, 3}, + {3, 5}, + {4, 8}, + {5, 13}, + {6, 21}, + {7, 34}, + {8, 55}, + {9, 89}, + {10, 144}, + } + + for _, tt := range tests { + t.Run(fmt.Sprintf("count=%d", tt.count), func(t *testing.T) { + result := retryNext(tt.count) + if result != tt.expected { + t.Errorf("retryNext(%d) = %d; want %d", tt.count, result, tt.expected) + } + }) + } +} diff --git a/bcs-common/pkg/esb/cmdbv3/cmdb.go b/bcs-common/pkg/esb/cmdbv3/cmdb.go index 3673e4e566..c0bb5532af 100644 --- a/bcs-common/pkg/esb/cmdbv3/cmdb.go +++ b/bcs-common/pkg/esb/cmdbv3/cmdb.go @@ -46,6 +46,8 @@ type ClientInterface interface { ESBGetBizInternalModule(usename string, bizID int64, bkSupplierAccount string) (*ESBGetBizInternalModuleResult, error) ESBListBizHosts(username string, req *ESBListBizHostsRequest) (*ESBListBizHostsResult, error) ESBListBizHostsTopo(username string, req *ESBListBizHostsTopoRequest) (*ESBListBizHostsTopoResult, error) + // ESBSearchModule 查询模块 + ESBSearchModule(username string, req *ESBSearchModuleRequest) (*ESBSearchModuleResult, error) } // NewClientInterface create client interface diff --git a/bcs-common/pkg/esb/cmdbv3/esb.go b/bcs-common/pkg/esb/cmdbv3/esb.go index 15dc89e515..fc9df456b1 100644 --- a/bcs-common/pkg/esb/cmdbv3/esb.go +++ b/bcs-common/pkg/esb/cmdbv3/esb.go @@ -265,3 +265,46 @@ func (c *Client) ESBListBizHostsTopo( } return result, nil } + +// ESBSearchModule search module +func (c *Client) ESBSearchModule(username string, req *ESBSearchModuleRequest) (*ESBSearchModuleResult, error) { + + if req == nil { + return nil, fmt.Errorf("ESBSearchModule req is empty") + } + + request := map[string]interface{}{ + "bk_username": username, + } + if req.BkBizID != 0 { + request["bk_biz_id"] = req.BkBizID + } + if req.BkSetID != 0 { + request["bk_set_id"] = req.BkSetID + } + if req.Fields != nil { + request["fields"] = req.Fields + } + if req.Condition != nil { + request["condition"] = req.Condition + } + if req.Page != nil { + request["page"] = req.Page + } + + common.MergeMap(request, c.baseReq) + result := new(ESBSearchModuleResult) + err := c.client.Post(). + WithEndpoints([]string{c.host}). + WithBasePath("/api/c/compapi/v2/cc/"). + SubPathf("search_module"). + WithHeaders(c.defaultHeader). + Body(request). + Do(). + Into(result) + if err != nil { + return nil, err + } + + return result, nil +} diff --git a/bcs-common/pkg/esb/cmdbv3/esbtypes.go b/bcs-common/pkg/esb/cmdbv3/esbtypes.go index 491bda60de..d949e3ede9 100644 --- a/bcs-common/pkg/esb/cmdbv3/esbtypes.go +++ b/bcs-common/pkg/esb/cmdbv3/esbtypes.go @@ -332,3 +332,32 @@ type ESBListBizHostsTopoResult struct { ESBBaseResp `json:",inline"` Data *ListBizHostsTopoData `json:"data"` } + +// ESBSearchModuleRequest request for search module +type ESBSearchModuleRequest struct { + Page *BasePage `json:"page"` + BkSupplierAccount string `json:"bk_supplier_account"` + BkBizID int64 `json:"bk_biz_id"` + BkSetID int64 `json:"bk_set_id"` + Fields []string `json:"fields,omitempty"` + Condition map[string]interface{} `json:"condition"` +} + +// ESBSearchModuleResponse response for search module +type ESBSearchModuleResult struct { + ESBBaseResp `json:",inline"` + Data *ESBSearchModuleData `json:"data"` +} + +// ESBSearchModuleData for search module data +type ESBSearchModuleData struct { + Count int64 `json:"count"` + Info []ESBSearchModuleInfo `json:"info,omitempty"` +} + +// ESBSearchModuleInfo for search module info +type ESBSearchModuleInfo struct { + BkModuleName string `json:"bk_module_name"` + BkSetID int64 `json:"bk_set_id"` + Default int64 `json:"default"` +} diff --git a/bcs-ops/env/offline-manifest.yaml b/bcs-ops/env/offline-manifest.yaml index 7ba07a363d..9b0fd13041 100644 --- a/bcs-ops/env/offline-manifest.yaml +++ b/bcs-ops/env/offline-manifest.yaml @@ -7,7 +7,7 @@ bcs-ops: containerd: "1.6.21" runc: "1.1.8" docker: "19.03.9" - jq: "1.6" + jq: "1.7.1" yq: "4.30.6" images: @@ -39,7 +39,7 @@ bcs-ops: containerd: "1.6.21" runc: "1.1.8" docker: "19.03.9" - jq: "1.6" + jq: "1.7.1" yq: "4.30.6" images: @@ -69,7 +69,7 @@ bcs-ops: crictl: "1.24.2" containerd: "1.6.21" runc: "1.1.8" - jq: "1.6" + jq: "1.7.1" yq: "4.30.6" images: @@ -100,7 +100,7 @@ bcs-ops: crictl: "1.24.2" containerd: "1.6.21" runc: "1.1.8" - jq: "1.6" + jq: "1.7.1" yq: "4.30.6" images: @@ -130,7 +130,7 @@ bcs-ops: crictl: "1.24.2" containerd: "1.6.21" runc: "1.1.8" - jq: "1.6" + jq: "1.7.1" yq: "4.30.6" images: diff --git a/bcs-ops/functions/utils.sh b/bcs-ops/functions/utils.sh index 50241b5afa..644d1deecd 100644 --- a/bcs-ops/functions/utils.sh +++ b/bcs-ops/functions/utils.sh @@ -183,3 +183,24 @@ utils::check_op() { fi return 0 } + +####################################### +# check if operate_project function exists +# Arguments: +# $1: Operate action +# $2: Project name +# Return: +# "$1_$2" function exists return 0, else exit 1 +# function +####################################### + +utils::get_arch() { + ARCH=$(uname -m) + if [[ "${ARCH}" == "x86_64" ]];then + ARCH="amd64" + elif [[ "${ARCH}" == "aarch64" ]];then + ARCH="arm64" + else + utils::log "FATAL" "unknown arch ${ARCH}" + fi +} diff --git a/bcs-ops/install_master.sh b/bcs-ops/install_master.sh index 99dde86dff..e0524c5c9c 100755 --- a/bcs-ops/install_master.sh +++ b/bcs-ops/install_master.sh @@ -42,10 +42,10 @@ safe_source() { } # try init host then check host -"${ROOT_DIR}"/system/init_host.sh -i all -"${ROOT_DIR}"/system/check_host.sh -c all safe_source "${ROOT_DIR}/functions/utils.sh" safe_source "${ROOT_DIR}/functions/k8s.sh" +"${ROOT_DIR}"/system/init_host.sh -i all +"${ROOT_DIR}"/system/check_host.sh -c all "${ROOT_DIR}"/system/config_envfile.sh -c init "${ROOT_DIR}"/system/config_system.sh -c dns sysctl diff --git a/bcs-ops/install_node.sh b/bcs-ops/install_node.sh index c93eb5587e..2dfe2c9c75 100755 --- a/bcs-ops/install_node.sh +++ b/bcs-ops/install_node.sh @@ -101,9 +101,9 @@ init_bap_rule() { k8s::restart_kubelet } -"${ROOT_DIR}"/system/check_host.sh -c all safe_source "${ROOT_DIR}/functions/utils.sh" safe_source "${ROOT_DIR}/functions/k8s.sh" +"${ROOT_DIR}"/system/check_host.sh -c all "${ROOT_DIR}"/system/config_envfile.sh -c init "${ROOT_DIR}"/system/config_system.sh -c dns sysctl diff --git a/bcs-ops/k8s/install_containerd b/bcs-ops/k8s/install_containerd index 14fca548cc..2da61857f9 100755 --- a/bcs-ops/k8s/install_containerd +++ b/bcs-ops/k8s/install_containerd @@ -235,7 +235,7 @@ main() { if [[ -n ${BCS_OFFLINE:-} ]]; then find "${ROOT_DIR}"/version-"${K8S_VER}"/images -name '*.tar' -type f -print0 \ - | xargs -0 -I {} ctr -n k8s.io image import {} + | xargs -0 -I {} ctr -n k8s.io image import --all-platforms {} fi # function testing diff --git a/bcs-ops/offline_package.sh b/bcs-ops/offline_package.sh index 37a1691939..2cc05ce4f2 100755 --- a/bcs-ops/offline_package.sh +++ b/bcs-ops/offline_package.sh @@ -2,10 +2,31 @@ set -euo pipefail -CACHE_DIR=${CACHE_DIR:-"./bcs-ops-offline"} +CACHE_DIR=${CACHE_DIR:-"/tmp/bcs-ops-offline"} VERSION= CACHE_DIR_BIN="${CACHE_DIR}/bin-tools" CACHE_DIR_IMG="${CACHE_DIR}/images" +CACHE_DIR_CHART="${CACHE_DIR}/charts" +CACHE_DIR_RPM="${CACHE_DIR}/rpm" + +USER=$(base64 -d <<<"$USER") +TOKEN=$(base64 -d <<<"$TOKEN") + +upload_mirrors() { + local path filename url + path=$1 + filename=$2 + url="https://mirrors.tencent.com/repository/generic\ +/bcs-ops/bcs-ops-offline/${path}/" + local curl_cmd=(curl --request PUT -u "${USER}:${TOKEN}" + --url "${url}" --upload-file "${filename}") + echo "${curl_cmd[@]}" + if ! "${curl_cmd[@]}"; then + echo "[FATAL]: fail upload ${filename} to ${url}, Please check permission" + return 1 + fi + return 0 +} safe_curl() { local url save_file @@ -37,7 +58,7 @@ download_k8s() { return 0 fi - url="https://dl.k8s.io/v${version}/bin/linux/amd64" + url="https://dl.k8s.io/v${version}/bin/linux/${arch}" cache_dir="${CACHE_DIR_BIN}/${name}-${version}" mkdir -pv "${cache_dir}/bin" "${cache_dir}/systemd" @@ -73,7 +94,7 @@ download_cni-plugins() { fi url="https://github.com/containernetworking/plugins/releases/download\ -/v${version}/cni-plugins-linux-amd64-v${version}.tgz" +/v${version}/cni-plugins-linux-${arch}-v${version}.tgz" cache_dir="${CACHE_DIR_BIN}/${name}-${version}" mkdir -pv "${cache_dir}/bin" @@ -104,7 +125,7 @@ download_crictl() { fi url="https://github.com/kubernetes-sigs/cri-tools/releases/download\ -/v${version}/crictl-v${version}-linux-amd64.tar.gz" +/v${version}/crictl-v${version}-linux-${arch}.tar.gz" cache_dir="${CACHE_DIR_BIN}/${name}-${version}" mkdir -pv "${cache_dir}/bin" @@ -133,8 +154,14 @@ download_docker() { return 0 fi - url="https://download.docker.com/linux/static/stable/\ -x86_64/docker-${version}.tgz" + if [[ ${arch} == "amd64" ]];then + url="https://download.docker.com/linux/static/stable/x86_64/docker-${version}.tgz" + elif [[ ${arch} == "arm64" ]];then + url="https://download.docker.com/linux/static/stable/aarch64/docker-${version}.tgz" + else + echo "[FATAL]: unknown arch ${arch}" + exit 1 + fi cache_dir="${CACHE_DIR_BIN}/${name}-${version}" mkdir -pv "${cache_dir}/bin" @@ -174,7 +201,7 @@ download_containerd() { fi url="https://github.com/containerd/containerd/releases/download/\ -v${version}/containerd-${version}-linux-amd64.tar.gz" +v${version}/containerd-${version}-linux-${arch}.tar.gz" cache_dir="${CACHE_DIR_BIN}/${name}-${version}" @@ -187,7 +214,7 @@ v${version}/containerd-${version}-linux-amd64.tar.gz" fi mkdir -pv "${cache_dir}/systemd" - url="https://raw.githubusercontent.com/containerd/containerd/v${version}/containerd.service" + url="https://raw.githubusercontent.com/containerd/containerd/v1.6.20/containerd.service" url="https://raw.githubusercontent.com/containerd/containerd\ /v${version}/containerd.service" safe_curl "${url}" "${cache_dir}/systemd/containerd.service" @@ -212,7 +239,7 @@ download_runc() { fi url="https://github.com/opencontainers/runc/releases/\ -download/v${version}/runc.amd64" +download/v${version}/runc.${arch}" cache_dir="${CACHE_DIR_BIN}/${name}-${version}" mkdir -pv "${cache_dir}/bin" @@ -231,8 +258,9 @@ download_yq() { [[ -n ${version} ]] || echo "$name missing version" tar_name="${CACHE_DIR_BIN}/${name}-${version}.xz" - url="https://bkopen-1252002024.file.myqcloud.com/ce7/tools/yq-${version}.xz" - safe_curl "$url" "${tar_name}" + url="https://github.com/mikefarah/yq/releases/download/v${version}/yq_linux_${arch}.tar.gz" + safe_curl "$url" "yq_linux_${arch}tar.gz" + tar -xf yq_linux_${arch}tar.gz -O | xz > ${tar_name} cp -v "$tar_name" "${CACHE_DIR}/version-${VERSION}/bin-tools/" } @@ -243,29 +271,80 @@ download_jq() { [[ -n ${version} ]] || echo "$name missing version" tar_name="${CACHE_DIR_BIN}/${name}-${version}.xz" - url="https://bkopen-1252002024.file.myqcloud.com/ce7/tools/jq-${version}.xz" - safe_curl "$url" "${tar_name}" + url="https://github.com/jqlang/jq/releases/download/jq-${version}/jq-linux-${arch}" + safe_curl "$url" "jq-linux-${arch}" + tar -cJf "${tar_name}" "jq-linux-${arch}" cp -v "$tar_name" "${CACHE_DIR}/version-${VERSION}/bin-tools/" } +download_rpm() { + local rpm_name url rpm_file rpm + IFS=' ' read -ra rpm <<<"$@" + mkdir -pv "${CACHE_DIR_RPM}" + for rpm_name in "${rpm[@]}"; do + rpm_file="${CACHE_DIR_RPM}/${rpm_name}" + if [[ -f $rpm_file ]]; then + echo "[INFO]:${rpm_file} exist, skip download" + cp -v "$rpm_file" "${CACHE_DIR}/version-${VERSION}/rpm/" + break + fi + + url="https://mirrors.tencent.com/repository/generic/\ +bcs-ops/bcs-ops-offline/rpm/${rpm_name}" + safe_curl "$url" "$rpm_file" || exit 1 + done <<<"$1" +} + +download_charts() { + local charts chart_name url chart_file + IFS=' ' read -ra charts <<<"$@" + mkdir -pv "${CACHE_DIR_CHART}" + for chart_name in "${charts[@]}"; do + chart_file="${CACHE_DIR_CHART}/${chart_name}" + if [[ -f $chart_file ]]; then + echo "[INFO]:${chart_file} exist, skip download" + cp -v "$chart_file" "${CACHE_DIR}/version-${VERSION}/charts/" + continue + fi + + url="https://mirrors.tencent.com/repository/generic\ +/bcs-ops/bcs-ops-offline/charts/${chart_name}" + safe_curl "$url" "$chart_file" || exit 1 + done +} + download_img() { local imgs img img_name img_tag img_tar + + repo=$1 + shift IFS=' ' read -ra imgs <<<"$@" mkdir -pv "${CACHE_DIR_IMG}" for img in "${imgs[@]}"; do + if [[ "${repo}" != "null" ]];then + rel_img=${img//hub.bktencent.com/$repo} + else + rel_img=${img} + fi img_name=${img##*/} img_tag=${img_name##*:} img_name=${img_name%%:*} img_tar="${CACHE_DIR_IMG}/${img_name}-${img_tag}.tar" - if [[ -f "${img_tar}" ]]; then - echo "[INFO]:${img} exist, skip pull" - cp -v "$img_tar" "${CACHE_DIR}/version-${VERSION}/images/" - continue - fi - echo "[INFO]: trying to pull ${img}" - if skopeo inspect --raw "docker://${img}" >/dev/null; then - if skopeo copy "docker://${img}" "docker-archive:${img_tar}:${img}" >/dev/null; then - cp -v "$img_tar" "${CACHE_DIR}/version-${VERSION}/images/" +# if [[ -f "${img_tar}" ]]; then +# echo "[INFO]:${img} exist, skip pull" +# cp -v "$img_tar" "${CACHE_DIR}/version-${VERSION}/images/" +# continue +# fi + echo "[INFO]: trying to docker pull --platform ${arch} ${rel_img}" + if docker manifest inspect "${rel_img}" >/dev/null; then +# if skopeo inspect --raw "docker://${img}" >/dev/null; then + if docker pull --platform linux/${arch} ${rel_img} >/dev/null;then + echo docker tag ${rel_img} ${img} + docker tag ${rel_img} ${img} >/dev/null + echo docker save ${img} -o ${img_tar} + docker save ${img} -o ${img_tar} >/dev/null +# if skopeo copy --arch ${arch} "docker://${rel_img}" "docker-archive:${img_tar}:${img}" >/dev/null; then + mv -v "$img_tar" "${CACHE_DIR}/version-${VERSION}/images/" else echo "[FATAL]: fail to pull ${img}" rm -rf "$img_tar" @@ -279,42 +358,58 @@ download_img() { } unMarshall_mainfest() { - local manifest_file ver ver_num version projects images + local manifest_file ver_num version projects images charts rpms manifest_file=$1 - ver=$2 + repo=$2 ver_num=$(yq e '.bcs-ops | length' "$manifest_file") local i=0 while ((i < ver_num)); do IFS=',' read -ra projects <<<"$(yq -o csv e '.bcs-ops[0] | keys' "$manifest_file")" VERSION=$(yq e ".bcs-ops[$i].version" "$manifest_file") - if [[ "$VERSION" == "$ver" ]] || [[ -z $ver ]]; then - for project in "${projects[@]}"; do - case $project in - "version") - echo "version: $VERSION" - ;; - "bin-tools") - mkdir -pv "${CACHE_DIR}/version-${VERSION}/bin-tools" - yq e ".bcs-ops[$i].bin-tools" "$manifest_file" \ - | while IFS=': ' read -r p v; do "download_$p" "${v//\"/}"; done - ;; - "images") - mkdir -pv "${CACHE_DIR}/version-${VERSION}/images" - IFS=',' read -ra images <<<"$(yq -o csv e ".bcs-ops[$i].images" "$manifest_file")" - download_img "${images[@]}" - ;; - *) - echo "unknow key $project" - ;; - esac - done - tar cvzf "${CACHE_DIR}/bcs-ops-offline-${VERSION}.tgz" -C "${CACHE_DIR}" "version-${VERSION}/" - else - echo "skip pacakge $VERSION" - fi + for project in "${projects[@]}"; do + case $project in + "version") + echo "version: $VERSION" + ;; + "bin-tools") + mkdir -pv "${CACHE_DIR}/version-${VERSION}/bin-tools" + yq e ".bcs-ops[$i].bin-tools" "$manifest_file" | while IFS=': ' read -r p v; do "download_$p" "${v//\"/}"; done + ;; + "images") + mkdir -pv "${CACHE_DIR}/version-${VERSION}/images" + IFS=',' read -ra images <<<"$(yq -o csv e ".bcs-ops[$i].images" "$manifest_file")" + + download_img "${repo}" "${images[@]}" + ;; + "charts") + mkdir -pv "${CACHE_DIR}/version-${VERSION}/charts" + IFS=',' read -ra charts <<<"$(yq -o csv e ".bcs-ops[$i].charts" "$manifest_file")" + download_charts "${charts[@]}" + ;; + "rpm") + mkdir -pv "${CACHE_DIR}/version-${VERSION}/rpm" + IFS=',' read -ra rpms <<<"$(yq -o csv e ".bcs-ops[$i].rpm" "$manifest_file")" + download_rpm "${rpms[@]}" + ;; + *) + echo "unknow key $project" + ;; + esac + done + tar cvzf "${CACHE_DIR}/bcs-ops-offline-${VERSION}-${arch}.tgz" -C "${CACHE_DIR}" "version-${VERSION}/" + upload_mirrors "version" "${CACHE_DIR}/bcs-ops-offline-${VERSION}-${arch}.tgz" ((i += 1)) done } -unMarshall_mainfest "$1" "${2:-}" +if [[ $# -eq 1 ]] || [[ -z "$2" ]]; then + repo="null" +else + repo=$2 +fi + +export arch=arm64 +unMarshall_mainfest "$1" "$repo" +export arch=amd64 +unMarshall_mainfest "$1" "$repo" \ No newline at end of file diff --git a/bcs-ops/tools/install_jq b/bcs-ops/tools/install_jq index f4e14edb7c..5183cfd654 100755 --- a/bcs-ops/tools/install_jq +++ b/bcs-ops/tools/install_jq @@ -36,7 +36,7 @@ _curl_jq() { name="jq" ver=$(awk '/version: \"'"${K8S_VER}"'\"/{f=1;next} f && /'"${name}"':/{gsub("\"","",$2);print $2;exit}' "${ROOT_DIR}"/env/offline-manifest.yaml) - file="${name}-${ver}.xz" + file="${name}-${ver}-${ARCH}.xz" url=${REPO_URL:-}/${file} if curl -sSfL "${url}" -o "${bin_path}/${file}" -m "360"; then utils::log "INFO" "Downloaded ${url}" @@ -65,6 +65,8 @@ main() { jq_ver=$(awk '/jq/{gsub("\"","",$2);print $2;exit}' \ "${ROOT_DIR}"/env/offline-manifest.yaml) + utils::get_arch + if ! command -v jq >/dev/null; then if [[ -n ${BCS_OFFLINE:-} ]]; then _offline_jq diff --git a/bcs-ops/tools/install_yq b/bcs-ops/tools/install_yq index 70a5223a69..d978606fdf 100755 --- a/bcs-ops/tools/install_yq +++ b/bcs-ops/tools/install_yq @@ -36,7 +36,7 @@ _curl_yq() { name="yq" ver=$(awk '/version: \"'"${K8S_VER}"'\"/{f=1;next} f && /'"${name}"':/{gsub("\"","",$2);print $2;exit}' "${ROOT_DIR}"/env/offline-manifest.yaml) - file="${name}-${ver}.xz" + file="${name}-${ver}-${ARCH}.xz" url=${REPO_URL:-}/${file} if curl -sSfL "${url}" -o "${bin_path}/${file}" -m "360"; then utils::log "INFO" "Downloaded ${url}" @@ -65,6 +65,8 @@ main() { yq_ver=$(awk '/yq/{gsub("\"","",$2);print $2;exit}' \ "${ROOT_DIR}"/env/offline-manifest.yaml) + utils::get_arch + if ! command -v yq >/dev/null; then if [[ -n ${BCS_OFFLINE:-} ]]; then _offline_yq diff --git a/bcs-runtime/bcs-k8s/bcs-component/bcs-egress/.golangci.yml b/bcs-runtime/bcs-k8s/bcs-component/bcs-egress/.golangci.yml deleted file mode 100644 index 8e1e0f2867..0000000000 --- a/bcs-runtime/bcs-k8s/bcs-component/bcs-egress/.golangci.yml +++ /dev/null @@ -1,121 +0,0 @@ -run: - timeout: 10m - skip-dirs: - - bcs-services/bcs-upgrader - - bcs-services/bcs-service-prometheus - - bcs-network - - bcs-runtime/bcs-mesos - - bcs-runtime/bcs-k8s/bcs-component/bcs-cc-agent - - bcs-runtime/bcs-k8s/bcs-component/bcs-cpuset-device - - .*/third_party/* - skip-files: - - .*\.docs\.go$ - - .*\.gen\.go$ - - .*\.pb\.go$ - - .*\.pb.gw\.go$ - - .*\.pb.micro\.go$ - - .*\.pb.validate\.go$ - - .*\_test\.go$ -issues: - max-issues-per-linter: 0 - max-same-issues: 0 - exclude-use-default: false -linters: - disable-all: true - enable: - - errcheck - - gosimple - - govet - - ineffassign - - staticcheck - - unused - - funlen - - gci - - goconst - - gocritic - - gocyclo - - gofmt - - goheader - - goimports - - gosec - - lll - - misspell - - nakedret - - revive - - unconvert - - unparam -linters-settings: - errcheck: - exclude-functions: - - (*os.File).Close - - (io.Closer).Close - - (net/http.ResponseWriter).Write - - github.com/go-chi/render.Render - - io.Copy - - os.RemoveAll - lll: - line-length: 120 - funlen: - lines: 90 - statements: -1 - gocyclo: - min-complexity: 30 - govet: - check-shadowing: true - goimports: - local-prefixes: bcs-egress - gci: - sections: - - standard - - default - - prefix(bcs-egress) - gocritic: - settings: - ifElseChain: - minThreshold: 3 - gosec: - includes: - - G201 - - G202 - - G101 - - G401 - - G402 - - G403 - - G404 - - G504 - goheader: - values: - regexp: - YEAR: 20\d\d - template: |- - * Tencent is pleased to support the open source community by making Blueking Container Service available. - * Copyright (C) {{ YEAR }} THL A29 Limited, a Tencent company. All rights reserved. - * Licensed under the MIT License (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * http://opensource.org/licenses/MIT - * Unless required by applicable law or agreed to in writing, software distributed under - * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific language governing permissions and - * limitations under the License. - misspell: - locale: US - revive: - confidence: 0 - rules: - - name: blank-imports - - name: context-as-argument - - name: context-keys-type - - name: dot-imports - - name: early-return - - name: error-naming - - name: error-return - - name: error-strings - - name: errorf - - name: exported - - name: increment-decrement - - name: indent-error-flow - - name: package-comments - - name: range - - name: receiver-naming - - name: time-naming - - name: var-declaration diff --git a/bcs-scenarios/bcs-gitops-analysis/pkg/ccv3/handler.go b/bcs-scenarios/bcs-gitops-analysis/pkg/ccv3/handler.go index ecfbbae4c5..ffaa1e5c0a 100644 --- a/bcs-scenarios/bcs-gitops-analysis/pkg/ccv3/handler.go +++ b/bcs-scenarios/bcs-gitops-analysis/pkg/ccv3/handler.go @@ -51,7 +51,6 @@ type queryRule struct { } type searchBusinessRequest struct { - appInfo `json:",inline"` Fields []string `json:"fields"` BizPropertyFilter *bizPropertyFilter `json:"biz_property_filter,omitempty"` } @@ -74,11 +73,6 @@ type searchBusinessResponseData struct { // SearchBusiness search businesses with bk_biz_ids func (h *handler) SearchBusiness(bkBizIds []int64) ([]CCBusiness, error) { req := &searchBusinessRequest{ - appInfo: appInfo{ - AppCode: h.op.Auth.AppCode, - AppSecret: h.op.Auth.AppSecret, - Operator: "admin", - }, Fields: []string{"bk_biz_id", "bk_biz_name", "bk_biz_maintainer"}, } if len(bkBizIds) != 0 { @@ -98,7 +92,6 @@ func (h *handler) SearchBusiness(bkBizIds []int64) ([]CCBusiness, error) { return nil, errors.Wrapf(err, "CC search business query failed") } resp := new(searchBusinessResponse) - fmt.Println(string(respBytes)) if err := json.Unmarshal(respBytes, resp); err != nil { return nil, errors.Wrapf(err, "CC search business unmarshal failed") } @@ -111,6 +104,10 @@ func (h *handler) SearchBusiness(bkBizIds []int64) ([]CCBusiness, error) { return nil, nil } +var ( + bkAuthFormat = `{"bk_app_code": "%s", "bk_app_secret": "%s", "bk_token": "%s"}` +) + func (h *handler) query(request interface{}, uri string) (resp []byte, err error) { data, err := json.Marshal(request) if err != nil { @@ -123,6 +120,8 @@ func (h *handler) query(request interface{}, uri string) (resp []byte, err error } httpRequest.Header.Set("Content-Type", "application/json") httpRequest.Header.Set("Accept", "application/json") + httpRequest.Header.Set("X-Bkapi-Authorization", fmt.Sprintf(bkAuthFormat, h.op.Auth.AppCode, + h.op.Auth.AppSecret, "admin")) c := &http.Client{ Timeout: time.Second * 20, } diff --git a/bcs-scenarios/bcs-gitops-cli/cmd/argocd/argocd.go b/bcs-scenarios/bcs-gitops-cli/cmd/argocd/argocd.go index 47cce18bf3..2724a567d6 100644 --- a/bcs-scenarios/bcs-gitops-cli/cmd/argocd/argocd.go +++ b/bcs-scenarios/bcs-gitops-cli/cmd/argocd/argocd.go @@ -37,6 +37,12 @@ func NewArgoCmd() *cobra.Command { item.AddCommand(applicationDryRun()) item.AddCommand(applicationDiff()) item.AddCommand(applicationHistory()) + for _, c := range item.Commands() { + if c.Name() != "sync" { + continue + } + changeApplicationSync(c) + } } if item.Use == "appset" { item.AddCommand(appsetGenerate()) diff --git a/bcs-scenarios/bcs-gitops-cli/cmd/argocd/sync.go b/bcs-scenarios/bcs-gitops-cli/cmd/argocd/sync.go new file mode 100644 index 0000000000..dd44b1c92b --- /dev/null +++ b/bcs-scenarios/bcs-gitops-cli/cmd/argocd/sync.go @@ -0,0 +1,197 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package argocd + +import ( + "fmt" + "io" + "io/fs" + "os" + "path/filepath" + "regexp" + "strings" + "time" + + "github.com/fatih/color" + "github.com/pkg/errors" + "github.com/spf13/cobra" + + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-cli/internal/secretutils" + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-cli/pkg/utils" +) + +var ( + secretStore *secretutils.Handler +) + +func changeApplicationSync(c *cobra.Command) { + originalFunc := c.Run + c.Run = func(cmd *cobra.Command, args []string) { + local, err := c.Flags().GetString("local") + // directly use original function if not use local for sync + if err != nil || local == "" { + originalFunc(cmd, args) + return + } + // directly use original function if not use vault-secret + if !checkUseVaultSecret(local) { + originalFunc(cmd, args) + return + } + // build target dir + localSplit := strings.Split(local, "/") + targetDir := fmt.Sprintf(".gitops_synclocal_%s_%d", localSplit[len(localSplit)-1], time.Now().UnixMilli()) + color.Yellow(">>> copying dir '%s' to '%s'", local, targetDir) + copyDir(local, targetDir) + color.Yellow(">>> copy dir success") + color.Yellow(">>> rendering vault-secret") + secretStore = secretutils.NewHandler() + renderSecret(targetDir) + color.Yellow(">>> render vault-secret success") + color.Yellow(fmt.Sprintf(">>> override param 'local' to '%s'", targetDir)) + c.Flags().Set("local", targetDir) + originalFunc(cmd, args) + } +} + +func renderSecret(dir string) { + secrets := make(map[string]string) + _ = filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if d == nil { + return nil + } + if d.IsDir() { + return nil + } + bs, err := os.ReadFile(path) + // not care + if err != nil { + return nil + } + if !regx.Match(bs) { + return nil + } + result := string(bs) + matches := regx.FindAllString(result, -1) + for _, match := range matches { + if v, ok := secrets[match]; ok { + result = strings.ReplaceAll(result, match, v) + continue + } + secretValue, err := secretStore.GetSecret(match) + if err != nil { + utils.ExitError(fmt.Sprintf("get secret '%s' failed: %s", match, err.Error())) + } + result = strings.ReplaceAll(result, match, secretValue) + color.Green(fmt.Sprintf(" rendering '%s' with '%s'", path, match)) + } + file, err := os.Create(path) + if err != nil { + utils.ExitError(fmt.Sprintf("create file '%s' failed: %s", path, err.Error())) + } + defer file.Close() + if _, err = io.WriteString(file, result); err != nil { + utils.ExitError(fmt.Sprintf("write file '%s' failed: %s", path, err.Error())) + } + if err = file.Sync(); err != nil { + utils.ExitError(fmt.Sprintf("sync file '%s' failed: %s", path, err.Error())) + } + return nil + }) +} + +func copyDir(source, target string) { + if err := os.MkdirAll(target, 0655); err != nil { + utils.ExitError(fmt.Sprintf("mkdir '%s' failed", target)) + } + err := filepath.Walk(source, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + relPath, err := filepath.Rel(source, path) + if err != nil { + return err + } + dstPath := filepath.Join(target, relPath) + if info.IsDir() { + err = os.MkdirAll(dstPath, info.Mode()) + if err != nil { + return err + } + } else { + err = copyFile(path, dstPath) + if err != nil { + return err + } + } + + return nil + }) + if err != nil { + utils.ExitError(fmt.Sprintf("copy dir '%s' to '%s' failed: %s", source, target, err.Error())) + } +} + +func copyFile(src, dst string) error { + srcFile, err := os.Open(src) + if err != nil { + return err + } + defer srcFile.Close() + + dstFile, err := os.Create(dst) + if err != nil { + return err + } + defer dstFile.Close() + + _, err = io.Copy(dstFile, srcFile) + if err != nil { + return err + } + + return nil +} + +var ( + regx = regexp.MustCompile(`]+>`) +) + +func checkUseVaultSecret(dir string) bool { + var result bool + _ = filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if d == nil { + return nil + } + if d.IsDir() { + return nil + } + bs, err := os.ReadFile(path) + // not care + if err != nil { + return nil + } + if !regx.Match(bs) { + return nil + } + result = true + return errors.Errorf("finish") + }) + return result +} diff --git a/bcs-scenarios/bcs-gitops-cli/internal/secretutils/secret.go b/bcs-scenarios/bcs-gitops-cli/internal/secretutils/secret.go new file mode 100644 index 0000000000..10e554951e --- /dev/null +++ b/bcs-scenarios/bcs-gitops-cli/internal/secretutils/secret.go @@ -0,0 +1,129 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package secretutils + +import ( + "encoding/json" + "fmt" + "net/http" + "regexp" + "sync" + + "github.com/pkg/errors" + "golang.org/x/net/context" + + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-cli/pkg/httputils" + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-cli/pkg/utils" +) + +// Handler defines the handler for secret +type Handler struct { + sync.Mutex + store map[string]map[string]map[string]string +} + +// NewHandler create the secret handler instance +func NewHandler() *Handler { + return &Handler{ + store: make(map[string]map[string]map[string]string), + } +} + +var ( + keyRegex = regexp.MustCompile(``) +) + +// GetSecret get secret with key +func (h *Handler) GetSecret(key string) (string, error) { + matches := keyRegex.FindStringSubmatch(key) + if len(matches) != 4 { + return "", errors.Errorf("invalid secret key: %s", key) + } + proj := matches[1] + secret := matches[2] + secretKey := matches[3] + result := h.loadSecret(proj, secret, secretKey) + if result != "" { + return result, nil + } + secretData, err := h.getSecretFromManager(proj, secret) + if err != nil { + return "", errors.Wrapf(err, "get secret '%s/%s' from manager failed", proj, secret) + } + h.saveSecret(proj, secret, secretData) + return secretData[secretKey], nil +} + +var ( + metadataUrl = "/api/v1/secrets/%s/%s/metadata" + secretUrl = "/api/v1/secrets/%s/%s?version=%d" +) + +type metadataResp struct { + Data struct { + CurrentVersion int `json:"CurrentVersion"` + } `json:"data"` +} + +type secretResp struct { + Data map[string]string `json:"data"` +} + +func (h *Handler) getSecretFromManager(proj, secret string) (map[string]string, error) { + metadataBody := httputils.DoRequest(context.Background(), &httputils.HTTPRequest{ + Path: fmt.Sprintf(metadataUrl, proj, secret), + Method: http.MethodGet, + }) + mr := new(metadataResp) + if err := json.Unmarshal(metadataBody, mr); err != nil { + utils.ExitError(fmt.Sprintf("get secret '%s/%s' metdata failed: %s'", proj, secret, err.Error())) + } + secretBody := httputils.DoRequest(context.Background(), &httputils.HTTPRequest{ + Path: fmt.Sprintf(secretUrl, proj, secret, mr.Data.CurrentVersion), + Method: http.MethodGet, + }) + sr := new(secretResp) + if err := json.Unmarshal(secretBody, sr); err != nil { + utils.ExitError(fmt.Sprintf("get secret '%s/%s/%d' result failed: %s'", proj, secret, + mr.Data.CurrentVersion, err.Error())) + } + return sr.Data, nil +} + +func (h *Handler) loadSecret(proj, secret, secretKey string) string { + h.Lock() + defer h.Unlock() + v1, ok := h.store[proj] + if !ok { + return "" + } + v2, ok := v1[secret] + if !ok { + return "" + } + v3, ok := v2[secretKey] + if !ok { + return "" + } + return v3 +} + +func (h *Handler) saveSecret(proj, secret string, secretData map[string]string) { + h.Lock() + defer h.Unlock() + _, ok := h.store[proj] + if !ok { + h.store[proj] = make(map[string]map[string]string) + } + h.store[proj][secret] = secretData +} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/application.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/application.go index 1fc9648cc5..10c9a09f91 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/application.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/application.go @@ -14,17 +14,25 @@ package argocd import ( "bytes" + "context" "encoding/json" "fmt" "io" "net/http" "strconv" "strings" + "time" "github.com/Tencent/bk-bcs/bcs-common/common/blog" bcsapi "github.com/Tencent/bk-bcs/bcs-common/pkg/bcsapiv4" appclient "github.com/argoproj/argo-cd/v2/pkg/apiclient/application" "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/config" + "github.com/go-git/go-git/v5/plumbing/transport" + githttp "github.com/go-git/go-git/v5/plumbing/transport/http" + "github.com/go-git/go-git/v5/plumbing/transport/ssh" + "github.com/go-git/go-git/v5/storage/memory" "github.com/gorilla/mux" "github.com/pkg/errors" @@ -34,6 +42,7 @@ import ( "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/resources" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/store" + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/store/secretstore" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/utils" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/utils/jsonq" ) @@ -46,6 +55,7 @@ type AppPlugin struct { middleware mw.MiddlewareInterface permitChecker permitcheck.PermissionInterface bcsStorage bcsapi.Storage + secretStore secretstore.SecretInterface } // all argocd application URL: @@ -117,6 +127,8 @@ func (plugin *AppPlugin) Init() error { Handler(plugin.middleware.HttpWrapper(plugin.applicationParameters)) appRouter.Path("/workload_replicas_zero").Methods("PUT"). Handler(plugin.middleware.HttpWrapper(plugin.applicationWorkloadReplicasZero)) + appRouter.Path("/sync_refresh").Methods("GET"). + Handler(plugin.middleware.HttpWrapper(plugin.syncRefresh)) appRouter.PathPrefix("").Methods("PUT", "POST", "DELETE", "PATCH"). Handler(plugin.middleware.HttpWrapper(plugin.applicationEditHandler)) @@ -598,3 +610,156 @@ func (plugin *AppPlugin) applicationWorkloadReplicasZero(r *http.Request) (*http } return r, mw.ReturnJSONResponse("ok") } + +func (plugin *AppPlugin) syncRefresh(r *http.Request) (*http.Request, *mw.HttpResponse) { + appName := mux.Vars(r)["name"] + if appName == "" { + return r, mw.ReturnErrorResponse(http.StatusBadRequest, + fmt.Errorf("request application name cannot be empty")) + } + argoApp, statusCode, err := plugin.permitChecker.CheckApplicationPermission(r.Context(), appName, + permitcheck.AppViewRSAction) + if err != nil { + return r, mw.ReturnErrorResponse(statusCode, err) + } + r = plugin.setApplicationAudit(r, argoApp.Spec.Project, appName, ctxutils.ApplicationRefresh, ctxutils.EmptyData) + + timeCtx, cancel := context.WithTimeout(r.Context(), 30*time.Second) + defer cancel() + // refresh application + argoAppClient := plugin.storage.GetAppClient() + refreshType := string(v1alpha1.RefreshTypeNormal) + if _, err = argoAppClient.Get(timeCtx, &appclient.ApplicationQuery{ + Name: &appName, + Refresh: &refreshType, + }); err != nil { + return r, mw.ReturnErrorResponse(http.StatusInternalServerError, errors.Wrapf(err, + "refresh application '%s' failed", appName)) + } + // get remote repo last-commit-id + lastCommitIDs, err := plugin.getApplicationLastCommitIDs(timeCtx, argoApp) + if err != nil { + return r, mw.ReturnErrorResponse(http.StatusInternalServerError, errors.Wrapf(err, + "get application's source.repo last commit-id failed")) + } + blog.Infof("RequestID[%s] got the last-commit-ids: %v", ctxutils.RequestID(timeCtx), lastCommitIDs) + // ticker for check application got the latest commit-id + ticker := time.NewTicker(1 * time.Second) + defer ticker.Stop() + for { + select { + case <-ticker.C: + argoApp, err = plugin.storage.GetApplication(timeCtx, appName) + if err != nil { + return r, mw.ReturnErrorResponse(http.StatusInternalServerError, err) + } + if !argoApp.Spec.HasMultipleSources() { + if len(lastCommitIDs) != 1 { + return r, mw.ReturnErrorResponse(http.StatusBadRequest, errors.Errorf( + "application with single resource got not '1' last-commit-ids '%v'", lastCommitIDs)) + } + if argoApp.Status.Sync.Revision != lastCommitIDs[0] { + continue + } + return r, mw.ReturnJSONResponse(argoApp) + } + revisions := argoApp.Status.Sync.Revisions + if len(lastCommitIDs) != len(revisions) { + return r, mw.ReturnErrorResponse(http.StatusBadRequest, errors.Errorf( + "application with multi-resources got last-commit-ids '%v', not same with reivions '%v'", + lastCommitIDs, revisions)) + } + allMatch := true + for i := range lastCommitIDs { + if lastCommitIDs[i] != revisions[i] { + allMatch = false + } + } + if allMatch { + return r, mw.ReturnJSONResponse(argoApp) + } + case <-timeCtx.Done(): + return r, mw.ReturnErrorResponse(http.StatusBadRequest, errors.Errorf("sync-refresh timeout")) + } + } +} + +func (plugin *AppPlugin) getApplicationLastCommitIDs(ctx context.Context, argoApp *v1alpha1.Application) ([]string, + error) { + lastCommitIDs := make([]string, 0) + if !argoApp.Spec.HasMultipleSources() { + repoURL := argoApp.Spec.Source.RepoURL + revision := argoApp.Spec.Source.TargetRevision + commitID, err := plugin.getRepoLastCommitID(ctx, repoURL, revision) + if err != nil { + return nil, err + } + lastCommitIDs = append(lastCommitIDs, commitID) + return lastCommitIDs, nil + } + for i := range argoApp.Spec.Sources { + source := argoApp.Spec.Sources[i] + repoURL := source.RepoURL + revision := source.TargetRevision + commitID, err := plugin.getRepoLastCommitID(ctx, repoURL, revision) + if err != nil { + return nil, err + } + lastCommitIDs = append(lastCommitIDs, commitID) + } + return lastCommitIDs, nil +} + +func (plugin *AppPlugin) getRepoLastCommitID(ctx context.Context, repoUrl, targetRevision string) (string, error) { + repoAuth, err := plugin.buildRepoAuth(ctx, repoUrl) + if err != nil { + return "", err + } + memStore := memory.NewStorage() + remoteRepo := git.NewRemote(memStore, &config.RemoteConfig{ + Name: repoUrl, + URLs: []string{repoUrl}, + }) + refs, err := remoteRepo.List(&git.ListOptions{ + Auth: repoAuth, + }) + if err != nil { + return "", errors.Wrapf(err, "git repo '%s' fetch refs failed", repoUrl) + } + var lastCommitID string + for _, ref := range refs { + if ref.Name().Short() == targetRevision { + lastCommitID = ref.Hash().String() + } + } + if lastCommitID == "" { + return "", errors.Errorf("get repo '%s' not found target revision '%s'", repoUrl, targetRevision) + } + return lastCommitID, nil +} + +func (plugin *AppPlugin) buildRepoAuth(ctx context.Context, repoUrl string) (transport.AuthMethod, error) { + argoDB := plugin.storage.GetArgoDB() + argoRepo, err := argoDB.GetRepository(ctx, repoUrl) + if err != nil { + return nil, errors.Wrapf(err, "get repository '%s' from argo db failed", repoUrl) + } + if argoRepo == nil { + return nil, errors.Errorf("repository '%s' not found", repoUrl) + } + if argoRepo.Username != "" && argoRepo.Password != "" { + return &githttp.BasicAuth{ + Username: argoRepo.Username, + Password: argoRepo.Password, + }, nil + } + if argoRepo.SSHPrivateKey != "" { + var publicKeys *ssh.PublicKeys + publicKeys, err = ssh.NewPublicKeys("git", []byte(argoRepo.SSHPrivateKey), "") + if err != nil { + return nil, errors.Wrapf(err, "create public keys failed") + } + return publicKeys, nil + } + return nil, errors.Errorf("not https/ssh authentication") +} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/application_dryrun.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/application_dryrun.go index d6830f7f2c..cb5ccbcf4d 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/application_dryrun.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/application_dryrun.go @@ -153,8 +153,8 @@ func (plugin *AppPlugin) handleApplicationDryRun(ctx context.Context, req *Appli } // nolint -func (plugin *AppPlugin) checkApplicationDryRunRequest(ctx context.Context, - req *ApplicationDryRunRequest) (*v1alpha1.Application, error) { +func (plugin *AppPlugin) checkApplicationDryRunRequest(ctx context.Context, req *ApplicationDryRunRequest) ( + *v1alpha1.Application, error) { argoApplication := new(v1alpha1.Application) if req.ApplicationName != "" { var err error @@ -214,7 +214,7 @@ func (plugin *AppPlugin) applicationManifests(ctx context.Context, application * return nil, errors.Errorf("application manifests response length is 0") } manifestResponse := resp[0] - manifestMap, err := decodeManifest(application, manifestResponse) + manifestMap, err := plugin.decodeManifest(ctx, application, manifestResponse) if err != nil { return nil, errors.Wrapf(err, "decode application manifest failed") } @@ -222,8 +222,13 @@ func (plugin *AppPlugin) applicationManifests(ctx context.Context, application * return manifestMap, nil } -func decodeManifest(application *v1alpha1.Application, +func (plugin *AppPlugin) decodeManifest(ctx context.Context, application *v1alpha1.Application, resp *apiclient.ManifestResponse) (map[string]*unstructured.Unstructured, error) { + newManifests, err := plugin.secretStore.DecryptManifest(ctx, application.Spec.Project, resp.Manifests) + if err != nil { + return nil, errors.Wrapf(err, "decrypt application manifest failed") + } + resp.Manifests = newManifests result := make(map[string]*unstructured.Unstructured) decode := serializer.NewCodecFactory(runtime.NewScheme()).UniversalDeserializer().Decode for i := range resp.Manifests { diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/argocd.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/argocd.go index 47c04915c6..2b69dc7790 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/argocd.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/argocd.go @@ -32,6 +32,7 @@ import ( mw "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/store" + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/store/secretstore" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/store/terraformstore" ) @@ -123,6 +124,7 @@ func (ops *ArgocdProxy) initArgoPathHandler() error { middleware: middleware, permitChecker: permitChecker, bcsStorage: bcsStorage, + secretStore: secretstore.NewSecretStore(options.GlobalOptions().SecretServer), } appsetPlugin := &ApplicationSetPlugin{ storage: store.GlobalStore(), diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/grpc.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/grpc.go index 611dd75796..286bc5df49 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/grpc.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/grpc.go @@ -233,7 +233,11 @@ func (plugin *GrpcPlugin) handleRepoAccess(r *http.Request) (*http.Request, *mw. } _, statusCode, err := plugin.permitChecker.CheckRepoPermission(r.Context(), repoAccess.Repo, permitcheck.RepoViewRSAction) - if statusCode != http.StatusOK { + if err != nil { + // fix repo not create yet + if strings.Contains(err.Error(), "not found") { + return r, mw.ReturnArgoReverse() + } return r, mw.ReturnGRPCErrorResponse(statusCode, errors.Wrapf(err, "check project '%s' edit permission failed", repoAccess.Project)) } diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils/audit.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils/audit.go index 52f3dbc189..c12186b86d 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils/audit.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils/audit.go @@ -71,6 +71,8 @@ const ( ApplicationCreate AuditAction = "ApplicationCreate" // ApplicationUpdate defines the app update action ApplicationUpdate AuditAction = "ApplicationUpdate" + // ApplicationRefresh refresh the application + ApplicationRefresh AuditAction = "ApplicationRefresh" // ApplicationSync defines the app sync action ApplicationSync AuditAction = "ApplicationSync" // ApplicationRollback defines the app rollback action diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/middleware.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/middleware.go index 80501f1426..93a3b74a9c 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/middleware.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/middleware.go @@ -69,7 +69,8 @@ func (p *httpWrapper) ServeHTTP(rw http.ResponseWriter, r *http.Request) { } defer func() { cost := time.Since(start) - blog.Infof("RequestID[%s] handle request '%s' cost time: %v", requestID, r.URL.Path, cost) + blog.Infof("RequestID[%s] handle request '%s' for user '%s' cost time: %v", requestID, r.URL.Path, + ctxutils.User(ctx).GetUser(), cost) // ignore metric proxy if strings.Contains(r.URL.Path, "/api/metric") || strings.Contains(r.URL.Path, "/api/v1/analysis") { diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/ctx.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/ctx.go new file mode 100644 index 0000000000..a3b270013f --- /dev/null +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/ctx.go @@ -0,0 +1,95 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package permitcheck + +import ( + "context" + "net/http" + + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/pkg/errors" + + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/internal/dao" + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils" +) + +type permitContext struct { + context.Context + projName string + projID string + projPermits map[RSAction]bool + argoProj *v1alpha1.AppProject + userName string +} + +func contextGetProjID(ctx context.Context) string { + v, ok := ctx.(*permitContext) + if !ok { + return "" + } + return v.projID +} + +func contextGetProjName(ctx context.Context) string { + v, ok := ctx.(*permitContext) + if !ok { + return "" + } + return v.projName +} + +func contextGetProjPermits(ctx context.Context) map[RSAction]bool { + v, ok := ctx.(*permitContext) + if !ok { + return make(map[RSAction]bool) + } + return v.projPermits +} + +func (c *checker) createPermitContext(ctx context.Context, project string) (*permitContext, int, error) { + // directly return if ever created + v, ok := ctx.(*permitContext) + if ok && v.projName == project { + return v, http.StatusOK, nil + } + // insert operate user if check project permission + user := ctxutils.User(ctx) + go c.db.UpdateActivityUserWithName(&dao.ActivityUserItem{ + Project: project, User: user.GetUser(), + }) + + argoProj, projID, statusCode, err := c.getProjectWithID(ctx, project) + if err != nil { + return nil, statusCode, err + } + result, err := c.getBCSMultiProjectPermission(ctx, []string{projID}, []RSAction{ProjectViewRSAction, + ProjectEditRSAction, ProjectDeleteRSAction}) + if err != nil { + return nil, http.StatusInternalServerError, errors.Wrapf(err, "get project '%s' permission failed", + project) + } + projPermits, ok := result[projID] + if !ok || len(projPermits) == 0 { + return nil, http.StatusBadRequest, errors.Errorf("get project '%s' permission for user '%s "+ + "not have result'", project, user.GetUser()) + } + pctx := &permitContext{ + Context: ctx, + projName: project, + projID: projID, + argoProj: argoProj, + projPermits: projPermits, + userName: user.GetUser(), + } + return pctx, http.StatusOK, nil +} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit.go index dbb9befe00..4e016644d0 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit.go @@ -15,31 +15,19 @@ package permitcheck import ( "context" - "fmt" "net/http" - "strings" - "time" - "github.com/Tencent/bk-bcs/bcs-common/common/blog" "github.com/Tencent/bk-bcs/bcs-common/pkg/auth/iam" iamcluster "github.com/Tencent/bk-bcs/bcs-services/pkg/bcs-auth-v4/cluster" iamnamespace "github.com/Tencent/bk-bcs/bcs-services/pkg/bcs-auth-v4/namespace" iamproject "github.com/Tencent/bk-bcs/bcs-services/pkg/bcs-auth-v4/project" - authutils "github.com/Tencent/bk-bcs/bcs-services/pkg/bcs-auth/utils" - appclient "github.com/argoproj/argo-cd/v2/pkg/apiclient/application" - appsetpkg "github.com/argoproj/argo-cd/v2/pkg/apiclient/applicationset" "github.com/argoproj/argo-cd/v2/pkg/apiclient/cluster" - argocluster "github.com/argoproj/argo-cd/v2/pkg/apiclient/cluster" "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" - "github.com/pkg/errors" "k8s.io/utils/strings/slices" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/cmd/manager/options" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/internal/dao" - "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/common" - "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/store" - "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/utils" ) // RSAction defines the action of resource @@ -99,10 +87,10 @@ type UpdatePermissionRequest struct { // PermissionInterface defines the interface of permission type PermissionInterface interface { - CheckProjectPermission(ctx context.Context, project string, action RSAction) (*v1alpha1.AppProject, int, error) GetProjectMultiPermission(ctx context.Context, projectIDs []string, actions []RSAction) ( map[string]map[RSAction]bool, error) + CheckProjectPermission(ctx context.Context, project string, action RSAction) (*v1alpha1.AppProject, int, error) CheckClusterPermission(ctx context.Context, query *cluster.ClusterQuery, action RSAction) (*v1alpha1.Cluster, int, error) CheckRepoPermission(ctx context.Context, repo string, action RSAction) (*v1alpha1.Repository, int, error) @@ -112,9 +100,6 @@ type PermissionInterface interface { CheckAppSetPermission(ctx context.Context, appSet string, action RSAction) (*v1alpha1.ApplicationSet, int, error) CheckAppSetCreate(ctx context.Context, appSet *v1alpha1.ApplicationSet) ([]*v1alpha1.Application, int, error) - CheckBCSPermissions(req *http.Request) (bool, int, error) - CheckBCSClusterPermission(ctx context.Context, user, clusterID string, action iam.ActionID) (int, error) - UpdatePermissions(ctx context.Context, project string, resourceType RSType, req *UpdatePermissionRequest) (int, error) UserAllPermissions(ctx context.Context, project string) ([]*UserResourcePermission, int, error) @@ -122,16 +107,21 @@ type PermissionInterface interface { rsNames []string) ([]interface{}, *UserResourcePermission, int, error) QueryResourceUsers(ctx context.Context, project string, rsType RSType, resources []string) (map[string]*ResourceUserPermission, int, error) + + // out-of-tree functions + + CheckBCSPermissions(req *http.Request) (bool, int, error) + CheckBCSClusterPermission(ctx context.Context, user, clusterID string, action iam.ActionID) (int, error) } type checker struct { - projectPermission *iamproject.BCSProjectPerm - clusterPermission *iamcluster.BCSClusterPerm - namespacePermission *iamnamespace.BCSNamespacePerm - option *options.Options store store.Store db dao.Interface + + projectPermission *iamproject.BCSProjectPerm + clusterPermission *iamcluster.BCSClusterPerm + namespacePermission *iamnamespace.BCSNamespacePerm } // NewPermitChecker create permit checker instance @@ -150,757 +140,3 @@ func NewPermitChecker() PermissionInterface { func (c *checker) isAdminUser(user string) bool { return slices.Contains(c.option.AdminUsers, user) } - -// CheckProjectPermission check permission for project -func (c *checker) CheckProjectPermission(ctx context.Context, project string, action RSAction) ( - *v1alpha1.AppProject, int, error) { - result, statusCode, err := c.checkSingleResourcePermission(ctx, project, ProjectRSType, project, action) - if err != nil { - return nil, statusCode, err - } - return result.(*v1alpha1.AppProject), http.StatusOK, nil -} - -// GetProjectMultiPermission get multi projects permission -func (c *checker) GetProjectMultiPermission(ctx context.Context, projectIDs []string, - actions []RSAction) (map[string]map[RSAction]bool, error) { - return c.getBCSMultiProjectPermission(ctx, projectIDs, actions) -} - -// CheckClusterPermission check cluster permission -func (c *checker) CheckClusterPermission(ctx context.Context, query *cluster.ClusterQuery, action RSAction) ( - *v1alpha1.Cluster, int, error) { - argoCluster, err := c.store.GetCluster(ctx, query) - if err != nil { - return nil, http.StatusInternalServerError, errors.Wrapf(err, "get cluster from storage failure") - } - if argoCluster == nil { - return nil, http.StatusBadRequest, errors.Errorf("cluster '%v' not found", query) - } - var statusCode int - _, statusCode, err = c.checkSingleResourcePermission(ctx, argoCluster.Project, ClusterRSType, - argoCluster.Name, action) - if err != nil { - return nil, statusCode, err - } - return argoCluster, http.StatusOK, nil -} - -// CheckRepoPermission check repo permission -func (c *checker) CheckRepoPermission(ctx context.Context, repo string, action RSAction) (*v1alpha1.Repository, - int, error) { - argoRepo, err := c.store.GetRepository(ctx, repo) - if err != nil { - return nil, http.StatusInternalServerError, errors.Wrapf(err, "get repository from storage failed") - } - if argoRepo == nil { - return nil, http.StatusBadRequest, errors.Errorf("repository '%s' not found", repo) - } - var statusCode int - _, statusCode, err = c.checkSingleResourcePermission(ctx, argoRepo.Project, RepoRSType, repo, action) - if err != nil { - return nil, statusCode, err - } - return argoRepo, http.StatusOK, nil -} - -// CheckRepoCreate check repo create -func (c *checker) CheckRepoCreate(ctx context.Context, repo *v1alpha1.Repository) (int, error) { - _, projectID, statusCode, err := c.getProjectWithID(ctx, repo.Project) - if err != nil { - return statusCode, errors.Wrapf(err, "get proejct failed") - } - permits, err := c.getBCSMultiProjectPermission(ctx, []string{projectID}, []RSAction{ProjectViewRSAction}) - if err != nil { - return statusCode, errors.Wrapf(err, "get project permission failed") - } - if v := permits[projectID]; v == nil || !v[ProjectViewRSAction] { - return http.StatusForbidden, errors.Errorf("user '%s' not have '%s/%s' permission", - ctxutils.User(ctx).GetUser(), repo.Project, ProjectViewRSAction) - } - return http.StatusOK, nil -} - -// QueryResourceUsers 获取某些资源对应的具备权限的用户信息 -// NOTE: 此接口仅针对存储在数据库中的权限 -func (c *checker) QueryResourceUsers(ctx context.Context, project string, rsType RSType, resources []string) ( - map[string]*ResourceUserPermission, int, error) { - _, statusCode, err := c.CheckProjectPermission(ctx, project, ProjectViewRSAction) - if err != nil { - return nil, statusCode, errors.Wrapf(err, "check permission for project '%s' failed", project) - } - permissions, err := c.db.ListResourceUsers(project, string(rsType), resources) - if err != nil { - return nil, http.StatusInternalServerError, errors.Wrapf(err, "list reosurce's users failed") - } - resourceMap := make(map[string][]*dao.UserPermission) - for _, permit := range permissions { - resourceMap[permit.ResourceName] = append(resourceMap[permit.ResourceName], permit) - } - result := make(map[string]*ResourceUserPermission) - for rsName, permits := range resourceMap { - rpr := &ResourceUserPermission{ - ResourceType: rsType, - ResourceName: rsName, - UserPerms: make(map[string]map[string]bool), - } - for _, permit := range permits { - if _, ok := rpr.UserPerms[permit.User]; ok { - rpr.UserPerms[permit.User][permit.ResourceAction] = true - } else { - rpr.UserPerms[permit.User] = map[string]bool{ - permit.ResourceAction: true, - } - } - } - result[rsName] = rpr - } - return result, http.StatusOK, nil -} - -// UserAllPermissions return all user permission -func (c *checker) UserAllPermissions(ctx context.Context, project string) ([]*UserResourcePermission, int, error) { - argoProject, projectID, statusCode, err := c.getProjectWithID(ctx, project) - if err != nil { - return nil, statusCode, err - } - allPermits, err := c.GetProjectMultiPermission(ctx, []string{projectID}, []RSAction{ - ProjectViewRSAction, ProjectEditRSAction, ProjectDeleteRSAction, - }) - if err != nil { - return nil, http.StatusInternalServerError, errors.Wrapf(err, "get project permission failed") - } - if v := allPermits[projectID]; v == nil || !v[ProjectViewRSAction] { - return nil, http.StatusBadRequest, errors.Errorf("user '%s' not have project_view "+ - "permission for project '%s'", ctxutils.User(ctx).GetUser(), project) - } - - permitType := []RSType{ProjectRSType, ClusterRSType, RepoRSType, AppRSType, AppSetRSType} - permits := make([]*UserResourcePermission, 0) - for _, pt := range permitType { - var permit *UserResourcePermission - _, permit, statusCode, err = c.queryUserPermissionSingleType(ctx, argoProject, pt, nil, allPermits[projectID]) - if err != nil { - return nil, statusCode, errors.Wrapf(err, "query permission for type '%s' failed", pt) - } - permits = append(permits, permit) - } - return permits, http.StatusOK, nil -} - -func (c *checker) checkSingleResourcePermission(ctx context.Context, project string, resourceType RSType, - resource string, action RSAction) (interface{}, int, error) { - resources, permit, statusCode, err := c.QueryUserPermissions(ctx, project, - resourceType, []string{resource}) - if err != nil { - return nil, statusCode, errors.Wrapf(err, "query '%s/%s/%s' permission failed", resourceType, resource, - action) - } - if _, ok := permit.ResourcePerms[resource]; !ok { - return nil, http.StatusBadRequest, errors.Errorf("user '%s' not have permission for resource '%s'", - ctxutils.User(ctx).GetUser(), resource) - } - if !permit.ResourcePerms[resource][action] { - return nil, http.StatusForbidden, errors.Errorf("user '%s' not have '%s' permission for resource '%s/%s'", - ctxutils.User(ctx).GetUser(), action, string(resourceType), resource) - } - if len(resources) != 1 { - return nil, http.StatusInternalServerError, errors.Errorf("not get project when query permission") - } - return resources[0], http.StatusOK, nil -} - -// QueryUserPermissions 获取用户对应的资源的权限信息 -func (c *checker) QueryUserPermissions(ctx context.Context, project string, rsType RSType, rsNames []string) ( - []interface{}, *UserResourcePermission, int, error) { - // insert operate user if check project permission - user := ctxutils.User(ctx) - go c.db.UpdateActivityUserWithName(&dao.ActivityUserItem{ - Project: project, User: user.GetUser(), - }) - - argoProject, projectID, statusCode, err := c.getProjectWithID(ctx, project) - if err != nil { - return nil, nil, statusCode, err - } - projPermits, err := c.GetProjectMultiPermission(ctx, []string{projectID}, []RSAction{ - ProjectViewRSAction, ProjectEditRSAction, ProjectDeleteRSAction, - }) - if err != nil { - return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "get project permission failed") - } - if v := projPermits[projectID]; v == nil || !v[ProjectViewRSAction] { - return nil, nil, statusCode, errors.Errorf("user '%s' not have project_view permission for project", - user.GetUser()) - } - return c.queryUserPermissionSingleType(ctx, argoProject, rsType, rsNames, projPermits[projectID]) -} - -// queryUserPermissionSingleType query the user permission with single resource type -func (c *checker) queryUserPermissionSingleType(ctx context.Context, argoProject *v1alpha1.AppProject, rsType RSType, - rsNames []string, projPermits map[RSAction]bool) ([]interface{}, *UserResourcePermission, int, error) { - start := time.Now() - defer blog.Infof("RequestID[%s] query permission for project '%s' with resource '%s/%v' cost time: %v", - ctxutils.RequestID(ctx), argoProject.Name, rsType, rsNames, time.Since(start)) - var result *UserResourcePermission - var resources []interface{} - var statusCode int - var err error - switch rsType { - case ProjectRSType: - resources, result, statusCode = c.queryUserResourceForProject(argoProject, projPermits) - case ClusterRSType: - resources, result, statusCode, err = c.queryUserResourceForCluster(ctx, argoProject, projPermits, rsNames) - case RepoRSType: - resources, result, statusCode, err = c.queryUserResourceForRepo(ctx, argoProject, projPermits, rsNames) - case AppRSType: - resources, result, statusCode, err = c.queryUserResourceForApp(ctx, argoProject, rsNames) - case AppSetRSType: - resources, result, statusCode, err = c.queryUserResourceForAppSets(ctx, projPermits, argoProject, rsNames) - default: - return nil, nil, http.StatusBadRequest, errors.Errorf("unknown resource type '%s'", rsType) - } - if err != nil { - return nil, nil, statusCode, errors.Wrapf(err, "query user reosurces failed") - } - return resources, result, http.StatusOK, nil -} - -// queryUserResourceForProject query project permission -func (c *checker) queryUserResourceForProject(argoProj *v1alpha1.AppProject, - projPermits map[RSAction]bool) ([]interface{}, *UserResourcePermission, int) { - result := &UserResourcePermission{ - ResourceType: ProjectRSType, - ActionPerms: projPermits, - ResourcePerms: map[string]map[RSAction]bool{ - argoProj.Name: projPermits, - }, - } - resources := []interface{}{argoProj} - return resources, result, http.StatusOK -} - -// queryUserResourceForCluster query cluster permission -func (c *checker) queryUserResourceForCluster(ctx context.Context, argoProj *v1alpha1.AppProject, - projPermits map[RSAction]bool, rsNames []string) ([]interface{}, *UserResourcePermission, int, error) { - var clusterList *v1alpha1.ClusterList - var err error - if len(rsNames) == 1 { - var argoCluster *v1alpha1.Cluster - argoCluster, err = c.store.GetCluster(ctx, &cluster.ClusterQuery{ - Name: rsNames[0], - }) - if err != nil { - return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "list clusters failed") - } - if argoCluster == nil { - return nil, nil, http.StatusBadRequest, errors.Errorf("cluster '%s' not found", rsNames[0]) - } - if argoCluster.Project != argoProj.Name { - return nil, nil, http.StatusBadRequest, errors.Errorf("cluster '%s' not belongs to '%s'", - rsNames[0], argoProj.Name) - } - clusterList = &v1alpha1.ClusterList{ - Items: []v1alpha1.Cluster{*argoCluster}, - } - } else { - clusterList, err = c.store.ListClustersByProject(ctx, common.GetBCSProjectID(argoProj.Annotations)) - if err != nil { - return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "list clusters failed") - } - } - - result := &UserResourcePermission{ - ResourceType: ClusterRSType, - ActionPerms: map[RSAction]bool{ - ClusterViewRSAction: projPermits[ProjectViewRSAction], - }, - ResourcePerms: make(map[string]map[RSAction]bool), - } - resources := make([]interface{}, 0) - for _, cls := range clusterList.Items { - if len(rsNames) != 0 && !slices.Contains(rsNames, cls.Name) { - continue - } - result.ResourcePerms[cls.Name] = map[RSAction]bool{ - ClusterViewRSAction: projPermits[ProjectViewRSAction], - } - resources = append(resources, &cls) - } - return resources, result, http.StatusOK, nil -} - -// queryUserResourceForRepo query repo permission -func (c *checker) queryUserResourceForRepo(ctx context.Context, argoProj *v1alpha1.AppProject, - projPermits map[RSAction]bool, rsNames []string) ([]interface{}, *UserResourcePermission, int, error) { - var repoList *v1alpha1.RepositoryList - var err error - if len(rsNames) == 1 { - var argoRepo *v1alpha1.Repository - argoRepo, err = c.store.GetRepository(ctx, rsNames[0]) - if err != nil { - return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "list repositories failed") - } - if argoRepo == nil { - return nil, nil, http.StatusBadRequest, errors.Errorf("repository '%s' not found", rsNames[0]) - } - if argoRepo.Project != argoProj.Name { - return nil, nil, http.StatusBadRequest, errors.Errorf("repository '%s' not belongs to '%s'", - rsNames[0], argoProj.Name) - } - repoList = &v1alpha1.RepositoryList{Items: []*v1alpha1.Repository{argoRepo}} - } else { - repoList, err = c.store.ListRepository(ctx, []string{argoProj.Name}) - if err != nil { - return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "list repositories failed") - } - } - - result := &UserResourcePermission{ - ResourceType: RepoRSType, - ActionPerms: map[RSAction]bool{ - RepoViewRSAction: projPermits[ProjectViewRSAction], - RepoCreateRSAction: projPermits[ProjectViewRSAction], - RepoUpdateRSAction: projPermits[ProjectViewRSAction], - RepoDeleteRSAction: projPermits[ProjectEditRSAction], - }, - ResourcePerms: make(map[string]map[RSAction]bool), - } - resources := make([]interface{}, 0) - for _, repo := range repoList.Items { - if len(rsNames) != 0 && !slices.Contains(rsNames, repo.Repo) { - continue - } - result.ResourcePerms[repo.Repo] = map[RSAction]bool{ - RepoViewRSAction: projPermits[ProjectViewRSAction], - RepoCreateRSAction: projPermits[ProjectViewRSAction], - RepoUpdateRSAction: projPermits[ProjectViewRSAction], - RepoDeleteRSAction: projPermits[ProjectEditRSAction], - } - resources = append(resources, repo) - } - return resources, result, http.StatusOK, nil -} - -// buildClusterNSForQueryByApp build cluster namespace for query by application -func (c *checker) buildClusterNSForQueryByApp(ctx context.Context, project string, resources []string) ( - map[string]map[string]struct{}, map[string]string, []*v1alpha1.Application, error) { - appList, err := c.store.ListApplications(ctx, &appclient.ApplicationQuery{ - Projects: []string{project}, - }) - if err != nil { - return nil, nil, nil, errors.Wrapf(err, "query applications failed") - } - argoApps := make([]*v1alpha1.Application, 0) - for i := range appList.Items { - argoApp := appList.Items[i] - if len(resources) != 0 && !slices.Contains(resources, argoApp.Name) { - continue - } - argoApps = append(argoApps, &argoApp) - } - clusterServerNSMap := make(map[string]map[string]struct{}) - for _, argoApp := range argoApps { - clsServer := argoApp.Spec.Destination.Server - ns := argoApp.Spec.Destination.Namespace - _, ok := clusterServerNSMap[clsServer] - if ok { - clusterServerNSMap[clsServer][ns] = struct{}{} - } else { - clusterServerNSMap[clsServer] = map[string]struct{}{ns: {}} - } - } - clusterServerNameMap := make(map[string]string) - for clsServer := range clusterServerNSMap { - var argoCluster *v1alpha1.Cluster - argoCluster, err = c.store.GetCluster(ctx, &argocluster.ClusterQuery{ - Server: clsServer, - }) - if err != nil { - return nil, nil, nil, errors.Wrapf(err, "get cluster '%s' failed", clsServer) - } - if argoCluster == nil { - continue - } - clusterServerNameMap[clsServer] = argoCluster.Name - } - clusterNSMap := make(map[string]map[string]struct{}) - for clsServer, nsMap := range clusterServerNSMap { - clsName := clusterServerNameMap[clsServer] - clusterNSMap[clsName] = nsMap - } - return clusterNSMap, clusterServerNameMap, argoApps, nil -} - -// buildClusterNSForQueryByNamespace build query cluster namespace for query by namespace -func (c *checker) buildClusterNSForQueryByNamespace(resources []string) map[string]map[string]struct{} { - clusterNsMap := make(map[string]map[string]struct{}) - for _, res := range resources { - t := strings.Split(res, ":") - if len(t) != 2 { - continue - } - cls := t[0] - ns := t[1] - if _, ok := clusterNsMap[cls]; ok { - clusterNsMap[cls][ns] = struct{}{} - } else { - clusterNsMap[cls] = map[string]struct{}{ns: {}} - } - } - return clusterNsMap -} - -// queryUserResourceForApp query application permission -func (c *checker) queryUserResourceForApp(ctx context.Context, argoProj *v1alpha1.AppProject, rsNames []string) ( - []interface{}, *UserResourcePermission, int, error) { - var clusterNamespaceMap map[string]map[string]struct{} - var clusterServerNameMap map[string]string - var argoApps []*v1alpha1.Application - // 如果请求的第一条数据是"集群ID:命名空间"格式,则认为是获取 AppCreate 权限 - queriedByNamespace := false - if len(rsNames) != 0 && strings.HasPrefix(rsNames[0], "BCS-K8S-") && - len(strings.Split(rsNames[0], ":")) == 2 { - queriedByNamespace = true - clusterNamespaceMap = c.buildClusterNSForQueryByNamespace(rsNames) - } else { - var err error - clusterNamespaceMap, clusterServerNameMap, argoApps, err = c.buildClusterNSForQueryByApp(ctx, - argoProj.Name, rsNames) - if err != nil { - return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "build cluster namespace failed") - } - } - permits, err := c.getBCSNamespaceScopedPermission(ctx, common.GetBCSProjectID(argoProj.Annotations), - clusterNamespaceMap) - if err != nil { - return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "auth center failed") - } - - result := &UserResourcePermission{ - ResourceType: AppRSType, - ActionPerms: map[RSAction]bool{AppViewRSAction: true, AppCreateRSAction: true, - AppUpdateRSAction: true, AppDeleteRSAction: true}, - ResourcePerms: make(map[string]map[RSAction]bool), - } - resources := make([]interface{}, 0) - if queriedByNamespace { - for cls, nsMap := range clusterNamespaceMap { - for ns := range nsMap { - rsName := cls + ":" + ns - nsPermit, ok := permits[authutils.CalcIAMNsID(cls, ns)] - if !ok { - result.ResourcePerms[rsName] = map[RSAction]bool{ - AppCreateRSAction: false, AppUpdateRSAction: false, AppDeleteRSAction: false, - } - continue - } - result.ResourcePerms[rsName] = map[RSAction]bool{ - AppViewRSAction: true, - AppCreateRSAction: nsPermit[string(iamnamespace.NameSpaceScopedCreate)], - AppUpdateRSAction: nsPermit[string(iamnamespace.NameSpaceScopedUpdate)], - AppDeleteRSAction: nsPermit[string(iamnamespace.NameSpaceScopedDelete)], - } - resources = append(resources, rsNames) - } - } - return resources, result, http.StatusOK, nil - } - - for _, argoApp := range argoApps { - clsServer := argoApp.Spec.Destination.Server - ns := argoApp.Spec.Destination.Namespace - cls := clusterServerNameMap[clsServer] - nsPermit, ok := permits[authutils.CalcIAMNsID(cls, ns)] - if !ok { - result.ResourcePerms[argoApp.Name] = map[RSAction]bool{ - AppCreateRSAction: false, AppUpdateRSAction: false, AppDeleteRSAction: false, - } - continue - } - result.ResourcePerms[argoApp.Name] = map[RSAction]bool{ - AppViewRSAction: true, - AppCreateRSAction: nsPermit[string(iamnamespace.NameSpaceScopedCreate)], - AppUpdateRSAction: nsPermit[string(iamnamespace.NameSpaceScopedUpdate)], - AppDeleteRSAction: nsPermit[string(iamnamespace.NameSpaceScopedDelete)], - } - resources = append(resources, argoApp) - } - return resources, result, http.StatusOK, nil -} - -// queryUserResourceForAppSets query appset permission -func (c *checker) queryUserResourceForAppSets(ctx context.Context, projPermits map[RSAction]bool, - argoProj *v1alpha1.AppProject, rsNames []string) ([]interface{}, *UserResourcePermission, int, error) { - result := &UserResourcePermission{ - ResourceType: AppSetRSType, - ActionPerms: map[RSAction]bool{ - AppSetViewRSAction: projPermits[ProjectViewRSAction], - AppSetCreateRSAction: projPermits[ProjectEditRSAction], - }, - ResourcePerms: make(map[string]map[RSAction]bool), - } - result.ActionPerms[AppSetUpdateRSAction] = projPermits[ProjectEditRSAction] - result.ActionPerms[AppSetDeleteRSAction] = projPermits[ProjectEditRSAction] - - // 获取所有的 appset - appSetList, err := c.store.ListApplicationSets(ctx, &appsetpkg.ApplicationSetListQuery{ - Projects: []string{argoProj.Name}, - }) - if err != nil { - return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, - "list applicationsets for project failed") - } - resources := make([]interface{}, 0) - for i := range appSetList.Items { - item := &appSetList.Items[i] - if len(rsNames) != 0 && !slices.Contains(rsNames, item.Name) { - continue - } - result.ResourcePerms[item.Name] = map[RSAction]bool{ - AppSetViewRSAction: true, - AppSetDeleteRSAction: projPermits[ProjectEditRSAction], - // NOTE: 暂时维持 ProjectEdit 权限 - AppSetUpdateRSAction: projPermits[ProjectEditRSAction], - } - resources = append(resources, item) - } - - // 如果数据库中具备权限,则将 Update 权限设置为 true - user := ctxutils.User(ctx) - permissions, err := c.db.ListUserPermissions(user.GetUser(), argoProj.Name, string(AppSetRSType)) - if err != nil { - return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "list user's resources failed") - } - if len(permissions) != 0 { - result.ActionPerms[AppSetUpdateRSAction] = true - } - for _, permit := range permissions { - if _, ok := result.ResourcePerms[permit.ResourceName]; ok { - result.ResourcePerms[permit.ResourceName][AppSetUpdateRSAction] = true - } - } - return resources, result, http.StatusOK, nil -} - -// UpdatePermissions 更新用户权限 -func (c *checker) UpdatePermissions(ctx context.Context, project string, resourceType RSType, - req *UpdatePermissionRequest) (int, error) { - switch resourceType { - case AppSetRSType: - return c.updateAppSetPermissions(ctx, project, req) - default: - return http.StatusBadRequest, fmt.Errorf("not handler for resourceType=%s", resourceType) - } -} - -// updateAppSetPermissions update the appset permissions -func (c *checker) updateAppSetPermissions(ctx context.Context, project string, - req *UpdatePermissionRequest) (int, error) { - for i := range req.ResourceActions { - action := req.ResourceActions[i] - if action != string(AppSetUpdateRSAction) { - return http.StatusBadRequest, fmt.Errorf("not allowed action '%s'", action) - } - } - argoProject, statusCode, err := c.CheckProjectPermission(ctx, project, ProjectViewRSAction) - if err != nil { - return statusCode, errors.Wrapf(err, "check permission for project '%s' failed", project) - } - clusterCreate, err := c.getBCSClusterCreatePermission(ctx, common.GetBCSProjectID(argoProject.Annotations)) - if err != nil { - return http.StatusInternalServerError, errors.Wrapf(err, "check cluster_create permission failed") - } - if !clusterCreate { - return http.StatusForbidden, errors.Errorf("user '%s' not have cluster_create permission", - ctxutils.User(ctx).GetUser()) - } - - appSets := c.store.AllApplicationSets() - appSetMap := make(map[string]*v1alpha1.ApplicationSet) - for _, appSet := range appSets { - appSetMap[appSet.Name] = appSet - } - notFoundAppSet := make([]string, 0) - resultAppSets := make([]*v1alpha1.ApplicationSet, 0) - // 校验请求的 resource_name - for i := range req.ResourceNames { - rsName := req.ResourceNames[i] - tmp, ok := appSetMap[rsName] - if !ok { - notFoundAppSet = append(notFoundAppSet, rsName) - continue - } - resultAppSets = append(resultAppSets, tmp) - if tmpProj := tmp.Spec.Template.Spec.Project; tmpProj != project { - return http.StatusBadRequest, fmt.Errorf("appset '%s' project '%s' not same as '%s'", - rsName, tmpProj, project) - } - } - if len(notFoundAppSet) != 0 { - return http.StatusBadRequest, fmt.Errorf("appset '%v' not found", notFoundAppSet) - } - - // 添加权限 - errs := make([]string, 0) - for _, appSet := range resultAppSets { - for _, action := range req.ResourceActions { - err = c.db.UpdateResourcePermissions(project, string(AppSetRSType), appSet.Name, action, req.Users) - if err == nil { - blog.Infof("RequestID[%s] update resource '%s/%s' permissions success", ctxutils.RequestID(ctx), - string(AppSetRSType), appSet.Name) - continue - } - - errMsg := fmt.Sprintf("update resource '%s/%s' permissions failed", string(AppSetRSType), appSet.Name) - errs = append(errs, errMsg) - blog.Errorf("RequestID[%s] update permission failed: %s", ctxutils.RequestID(ctx), errMsg) - } - } - if len(errs) != 0 { - return http.StatusInternalServerError, fmt.Errorf("create permission with multiple error: %v", errs) - } - return http.StatusOK, nil -} - -// getBCSMultiProjectPermission get mutli-projects permission -func (c *checker) getBCSMultiProjectPermission(ctx context.Context, projectIDs []string, - actions []RSAction) (map[string]map[RSAction]bool, error) { - user := ctxutils.User(ctx) - if c.isAdminUser(user.GetUser()) { - result := make(map[string]map[RSAction]bool) - for _, projectID := range projectIDs { - result[projectID] = map[RSAction]bool{ - ProjectViewRSAction: true, ProjectEditRSAction: true, ProjectDeleteRSAction: true, - } - } - return result, nil - } - - bcsActions := make([]string, 0) - for _, action := range actions { - switch action { - case ProjectViewRSAction: - bcsActions = append(bcsActions, string(iam.ProjectView)) - case ProjectEditRSAction: - bcsActions = append(bcsActions, string(iam.ProjectEdit)) - case ProjectDeleteRSAction: - bcsActions = append(bcsActions, string(iam.ProjectDelete)) - } - } - var permits map[string]map[string]bool - var err error - for i := 0; i < 5; i++ { - permits, err = c.projectPermission.GetMultiProjectMultiActionPerm(user.GetUser(), projectIDs, bcsActions) - if err == nil { - break - } - if !utils.NeedRetry(err) { - break - } - } - if err != nil { - return nil, errors.Wrapf(err, "get project permission failed") - } - - newResult := make(map[string]map[RSAction]bool) - for projID, projPermits := range permits { - newResult[projID] = make(map[RSAction]bool) - for act, perm := range projPermits { - switch act { - case string(iam.ProjectView): - newResult[projID][ProjectViewRSAction] = perm - case string(iam.ProjectEdit): - newResult[projID][ProjectEditRSAction] = perm - case string(iam.ProjectDelete): - newResult[projID][ProjectDeleteRSAction] = perm - } - } - } - return newResult, nil -} - -// getBCSClusterCreatePermission get bcs cluster creat permission -func (c *checker) getBCSClusterCreatePermission(ctx context.Context, projectID string) (bool, error) { - user := ctxutils.User(ctx) - if c.isAdminUser(user.GetUser()) { - return true, nil - } - var err error - for i := 0; i < 5; i++ { - var permit bool - permit, _, _, err = c.clusterPermission.CanCreateCluster(user.GetUser(), projectID) - if err == nil { - return permit, nil - } - if !utils.NeedRetry(err) { - break - } - } - return false, errors.Wrapf(err, "get cluster create permission failed") -} - -// getBCSNamespaceScopedPermission get bcs namespace scoped permission -func (c *checker) getBCSNamespaceScopedPermission(ctx context.Context, projectID string, - clusterNS map[string]map[string]struct{}) (map[string]map[string]bool, error) { - user := ctxutils.User(ctx) - if c.isAdminUser(user.GetUser()) { - result := make(map[string]map[string]bool) - for cls, nsMap := range clusterNS { - for ns := range nsMap { - result[authutils.CalcIAMNsID(cls, ns)] = map[string]bool{ - string(iamnamespace.NameSpaceScopedCreate): true, string(iamnamespace.NameSpaceScopedDelete): true, - string(iamnamespace.NameSpaceScopedUpdate): true, - } - } - } - return result, nil - } - projNsData := make([]iamnamespace.ProjectNamespaceData, 0) - for cls, nsMap := range clusterNS { - for ns := range nsMap { - projNsData = append(projNsData, iamnamespace.ProjectNamespaceData{ - Project: projectID, - Cluster: cls, - Namespace: ns, - }) - } - } - - var err error - for i := 0; i < 5; i++ { - var permits map[string]map[string]bool - permits, err = c.namespacePermission.GetMultiNamespaceMultiActionPerm(user.GetUser(), projNsData, []string{ - string(iamnamespace.NameSpaceScopedCreate), string(iamnamespace.NameSpaceScopedDelete), - string(iamnamespace.NameSpaceScopedUpdate), - }) - if err == nil { - return permits, nil - } - if !utils.NeedRetry(err) { - break - } - } - return nil, errors.Wrapf(err, "get nameespace scoped permission failed") -} - -// getProjectWithID get project with id -func (c *checker) getProjectWithID(ctx context.Context, projectName string) (*v1alpha1.AppProject, string, int, error) { - if projectName == "" { - return nil, "", http.StatusBadRequest, errors.Errorf("project name cannot be empty") - } - // get project info and validate projectPermission - argoProject, err := c.store.GetProject(ctx, projectName) - if err != nil { - return nil, "", http.StatusInternalServerError, errors.Wrapf(err, "get project from storage failure") - } - if argoProject == nil { - return nil, "", http.StatusBadRequest, errors.Errorf("project '%s' not found", projectName) - } - projectID := common.GetBCSProjectID(argoProject.Annotations) - if projectID == "" { - return nil, "", http.StatusForbidden, - errors.Errorf("project '%s' got id failed, not under control", projectName) - } - return argoProject, projectID, http.StatusOK, nil -} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_app.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_app.go index 9b02679d40..15affde2fd 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_app.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_app.go @@ -14,56 +14,189 @@ package permitcheck import ( "context" - "fmt" "net/http" "strings" - "github.com/Tencent/bk-bcs/bcs-common/common/blog" + iamnamespace "github.com/Tencent/bk-bcs/bcs-services/pkg/bcs-auth-v4/namespace" + authutils "github.com/Tencent/bk-bcs/bcs-services/pkg/bcs-auth/utils" + appclient "github.com/argoproj/argo-cd/v2/pkg/apiclient/application" + argocluster "github.com/argoproj/argo-cd/v2/pkg/apiclient/cluster" clusterclient "github.com/argoproj/argo-cd/v2/pkg/apiclient/cluster" "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" "github.com/pkg/errors" - "k8s.io/utils/strings/slices" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/common" "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils" ) -// checkRepositoryBelongProject check repo belong to project -func (c *checker) checkRepositoryBelongProject(ctx context.Context, repoUrl, project string) (bool, error) { - repo, err := c.store.GetRepository(ctx, repoUrl) +// CheckApplicationPermission check application permission +func (c *checker) CheckApplicationPermission(ctx context.Context, app string, action RSAction) ( + *v1alpha1.Application, int, error) { + objs, permits, statusCode, err := c.getMultiApplicationMultiActionPermission(ctx, "", []string{app}) if err != nil { - return false, errors.Wrapf(err, "get repo '%s' failed", repoUrl) + return nil, statusCode, errors.Wrapf(err, "get application '%s' permission failed", app) + } + pm, ok := permits.ResourcePerms[app] + if !ok { + return nil, http.StatusBadRequest, errors.Errorf("application '%s' not exist", app) } - if repo == nil { - return false, fmt.Errorf("repo '%s' not found", repoUrl) + if !pm[action] { + return nil, http.StatusForbidden, errors.Errorf("user '%s' not have app permission '%s/%s'", + ctxutils.User(ctx).GetUser(), action, app) } - // pass if repository's project equal to public projects - if slices.Contains(c.option.PublicProjects, repo.Project) { - return true, nil + if len(objs) != 1 { + return nil, http.StatusBadRequest, errors.Errorf("query app '%s' got '%d' apps", app, len(objs)) } + return objs[0].(*v1alpha1.Application), http.StatusOK, nil +} - if repo.Project != project { - return false, nil +func (c *checker) filterApplications(ctx context.Context, project string, apps []string) ([]interface{}, + map[string][]*v1alpha1.Application, int, error) { + resultApps := make([]interface{}, 0, len(apps)) + projApps := make(map[string][]*v1alpha1.Application) + if project != "" && len(apps) == 0 { + appList, err := c.store.ListApplications(ctx, &appclient.ApplicationQuery{ + Projects: []string{project}, + }) + if err != nil { + return nil, nil, http.StatusInternalServerError, err + } + for i := range appList.Items { + argoApp := appList.Items[i] + resultApps = append(resultApps, &argoApp) + projApps[project] = append(projApps[project], &argoApp) + } } - return true, nil + for i := range apps { + app := apps[i] + argoApp, err := c.store.GetApplication(ctx, app) + if err != nil { + return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "get application failed") + } + if argoApp == nil { + return nil, nil, http.StatusBadRequest, errors.Errorf("application '%s' not found", app) + } + proj := argoApp.Spec.Project + _, ok := projApps[proj] + if ok { + projApps[proj] = append(projApps[proj], argoApp) + } else { + projApps[proj] = []*v1alpha1.Application{argoApp} + } + resultApps = append(resultApps, argoApp) + } + return resultApps, projApps, http.StatusOK, nil } -// CheckApplicationPermission check application permission -func (c *checker) CheckApplicationPermission(ctx context.Context, app string, action RSAction) ( - *v1alpha1.Application, int, error) { - argoApp, err := c.store.GetApplication(ctx, app) +func (c *checker) getMultiApplicationMultiActionPermission(ctx context.Context, project string, apps []string) ( + []interface{}, *UserResourcePermission, int, error) { + resultApps, projApps, statusCode, err := c.filterApplications(ctx, project, apps) if err != nil { - return nil, http.StatusInternalServerError, errors.Wrapf(err, "get application from storage failed") + return nil, nil, statusCode, err } - if argoApp == nil { - return nil, http.StatusBadRequest, errors.Errorf("application '%s' not found", app) + result := &UserResourcePermission{ + ResourceType: AppRSType, + ResourcePerms: make(map[string]map[RSAction]bool), + ActionPerms: map[RSAction]bool{AppViewRSAction: true, AppCreateRSAction: true, AppUpdateRSAction: true, + AppDeleteRSAction: true}, } - var statusCode int - _, statusCode, err = c.checkSingleResourcePermission(ctx, argoApp.Spec.Project, AppRSType, app, action) - if err != nil { - return nil, statusCode, err + if len(resultApps) == 0 { + return resultApps, result, http.StatusOK, nil } - return argoApp, http.StatusOK, nil + + canView := false + canCreate := false + canUpdate := false + canDelete := false + for proj, argoApps := range projApps { + ctx, statusCode, err = c.createPermitContext(ctx, proj) + if err != nil { + return nil, nil, statusCode, err + } + clusterNamespaceMap, clusterServerNameMap, err := c.buildClusterNamespaceMap(ctx, argoApps) + if err != nil { + return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, + "build cluster namespace map failed") + } + permits, err := c.getBCSNamespaceScopedPermission(ctx, contextGetProjID(ctx), clusterNamespaceMap) + if err != nil { + return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, + "auth center failed for project '%s'", contextGetProjName(ctx)) + } + + for _, argoApp := range argoApps { + clsServer := argoApp.Spec.Destination.Server + clsName := clusterServerNameMap[clsServer] + ns := argoApp.Spec.Destination.Namespace + nsPermits, ok := permits[authutils.CalcIAMNsID(clsName, ns)] + if !ok { + result.ResourcePerms[argoApp.Name] = map[RSAction]bool{ + AppCreateRSAction: false, AppUpdateRSAction: false, AppDeleteRSAction: false, + } + continue + } + appPermits := map[RSAction]bool{ + AppViewRSAction: contextGetProjPermits(ctx)[ProjectViewRSAction], + AppCreateRSAction: nsPermits[string(iamnamespace.NameSpaceScopedCreate)], + AppUpdateRSAction: nsPermits[string(iamnamespace.NameSpaceScopedUpdate)], + AppDeleteRSAction: nsPermits[string(iamnamespace.NameSpaceScopedDelete)], + } + result.ResourcePerms[argoApp.Name] = appPermits + if appPermits[AppViewRSAction] { + canView = true + } + if appPermits[AppCreateRSAction] { + canCreate = true + } + if appPermits[AppUpdateRSAction] { + canUpdate = true + } + if appPermits[AppDeleteRSAction] { + canDelete = true + } + } + } + result.ActionPerms = map[RSAction]bool{ + AppViewRSAction: canView, + AppCreateRSAction: canCreate, + AppUpdateRSAction: canUpdate, + AppDeleteRSAction: canDelete, + } + return resultApps, result, http.StatusOK, nil +} + +func (c *checker) buildClusterNamespaceMap(ctx context.Context, argoApps []*v1alpha1.Application) ( + map[string]map[string]struct{}, map[string]string, error) { + clusterServerNSMap := make(map[string]map[string]struct{}) + for _, argoApp := range argoApps { + clsServer := argoApp.Spec.Destination.Server + ns := argoApp.Spec.Destination.Namespace + _, ok := clusterServerNSMap[clsServer] + if ok { + clusterServerNSMap[clsServer][ns] = struct{}{} + } else { + clusterServerNSMap[clsServer] = map[string]struct{}{ns: {}} + } + } + clusterServerNameMap := make(map[string]string) + for clsServer := range clusterServerNSMap { + argoCluster, err := c.store.GetCluster(ctx, &argocluster.ClusterQuery{ + Server: clsServer, + }) + if err != nil { + return nil, nil, errors.Wrapf(err, "get cluster '%s' failed", clsServer) + } + if argoCluster == nil { + continue + } + clusterServerNameMap[clsServer] = argoCluster.Name + } + clusterNSMap := make(map[string]map[string]struct{}) + for clsServer, nsMap := range clusterServerNSMap { + clsName := clusterServerNameMap[clsServer] + clusterNSMap[clsName] = nsMap + } + return clusterNSMap, clusterServerNameMap, nil } // CheckApplicationCreate check application create permission @@ -73,33 +206,26 @@ func (c *checker) CheckApplicationCreate(ctx context.Context, app *v1alpha1.Appl return http.StatusBadRequest, errors.Errorf("project information lost") } // 校验仓库是否归属于项目下 + var repoUrls []string if app.Spec.HasMultipleSources() { for i := range app.Spec.Sources { - appSource := app.Spec.Sources[i] - repoUrl := appSource.RepoURL - repoBelong, err := c.checkRepositoryBelongProject(ctx, repoUrl, projectName) - if err != nil { - return http.StatusBadRequest, - errors.Wrapf(err, "check multi-source repository '%s' permission failed", repoUrl) - } - if !repoBelong { - return http.StatusForbidden, - errors.Errorf("check multi-source repo '%s' not belong to project '%s'", repoUrl, projectName) - } - blog.Infof("RequestID[%s] check multi-source repo '%s' success", ctxutils.RequestID(ctx), repoUrl) + repoUrls = append(repoUrls, app.Spec.Sources[i].RepoURL) } - } else if app.Spec.Source != nil { - repoUrl := app.Spec.Source.RepoURL + } else { + repoUrls = append(repoUrls, app.Spec.Source.RepoURL) + } + for i := range repoUrls { + repoUrl := repoUrls[i] repoBelong, err := c.checkRepositoryBelongProject(ctx, repoUrl, projectName) if err != nil { - return http.StatusBadRequest, errors.Wrapf(err, "check repository permission failed") + return http.StatusBadRequest, err } if !repoBelong { - return http.StatusForbidden, errors.Errorf("repo '%s' not belong to project '%s'", + return http.StatusBadRequest, errors.Errorf("repo '%s' not belong to project '%s'", repoUrl, projectName) } - blog.Infof("RequestID[%s] check source repo '%s' success", ctxutils.RequestID(ctx), repoUrl) } + // 校验集群是否存在 clusterQuery := clusterclient.ClusterQuery{ Server: app.Spec.Destination.Server, @@ -110,20 +236,37 @@ func (c *checker) CheckApplicationCreate(ctx context.Context, app *v1alpha1.Appl return http.StatusInternalServerError, errors.Wrapf(err, "get cluster '%v' failed", clusterQuery) } if argoCluster == nil { - return http.StatusBadRequest, fmt.Errorf("cluster '%v' not found", clusterQuery) + return http.StatusBadRequest, errors.Errorf("cluster '%v' not found", clusterQuery) } if argoCluster.Project != app.Spec.Project { - return http.StatusBadRequest, fmt.Errorf("cluster '%v' not belong to project '%s'", + return http.StatusBadRequest, errors.Errorf("cluster '%v' not belong to project '%s'", clusterQuery, app.Spec.Project) } // 校验用户是否具备创建权限 + clusterName := argoCluster.Name + clusterNamespace := app.Spec.Destination.Namespace var statusCode int - _, statusCode, err = c.checkSingleResourcePermission(ctx, app.Spec.Project, AppRSType, argoCluster.Name+":"+ - app.Spec.Destination.Namespace, AppCreateRSAction) + ctx, statusCode, err = c.createPermitContext(ctx, app.Spec.Project) if err != nil { return statusCode, err } + permits, err := c.getBCSNamespaceScopedPermission(ctx, contextGetProjID(ctx), map[string]map[string]struct{}{ + clusterName: {clusterNamespace: struct{}{}}, + }) + if err != nil { + return http.StatusInternalServerError, err + } + nsPM, ok := permits[authutils.CalcIAMNsID(clusterName, clusterNamespace)] + if !ok { + return http.StatusBadRequest, errors.Errorf("cluster-namespace '%s/%s' permission not found", + clusterName, clusterNamespace) + } + if !nsPM[string(iamnamespace.NameSpaceScopedCreate)] { + return http.StatusForbidden, errors.Errorf("user '%s' not have 'namespace_scoped_create' "+ + "permission for '%s/%s'", ctxutils.User(ctx).GetUser(), clusterName, clusterNamespace) + } + // setting application name with project prefix if !strings.HasPrefix(app.Name, projectName+"-") { app.Name = projectName + "-" + app.Name diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_appset.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_appset.go index 3f4f83c672..ce08b02d11 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_appset.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_appset.go @@ -22,6 +22,7 @@ import ( "github.com/argoproj/argo-cd/v2/applicationset/generators" "github.com/argoproj/argo-cd/v2/applicationset/services" "github.com/argoproj/argo-cd/v2/applicationset/utils" + appsetpkg "github.com/argoproj/argo-cd/v2/pkg/apiclient/applicationset" "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" "github.com/argoproj/argo-cd/v2/reposerver/apiclient" "github.com/pkg/errors" @@ -34,23 +35,190 @@ var ( render = utils.Render{} ) -// CheckAppSetPermission check appset permission -func (c *checker) CheckAppSetPermission(ctx context.Context, appSet string, action RSAction) ( - *v1alpha1.ApplicationSet, int, error) { - argoAppSet, err := c.store.GetApplicationSet(ctx, appSet) +// UpdatePermissions 更新用户权限,目前只有 appset +func (c *checker) UpdatePermissions(ctx context.Context, project string, resourceType RSType, + req *UpdatePermissionRequest) (int, error) { + switch resourceType { + case AppSetRSType: + return c.updateAppSetPermissions(ctx, project, req) + default: + return http.StatusBadRequest, fmt.Errorf("not handler for resourceType=%s", resourceType) + } +} + +// updateAppSetPermissions update the appset permissions +func (c *checker) updateAppSetPermissions(ctx context.Context, project string, + req *UpdatePermissionRequest) (int, error) { + for i := range req.ResourceActions { + action := req.ResourceActions[i] + if action != string(AppSetUpdateRSAction) { + return http.StatusBadRequest, fmt.Errorf("not allowed action '%s'", action) + } + } + argoProject, statusCode, err := c.CheckProjectPermission(ctx, project, ProjectViewRSAction) if err != nil { - return nil, http.StatusInternalServerError, errors.Wrapf(err, "get appset from storage failed") + return statusCode, errors.Wrapf(err, "check permission for project '%s' failed", project) } - if argoAppSet == nil { - return nil, http.StatusBadRequest, errors.Errorf("appset '%s' not found", appSet) + clusterCreate, err := c.getBCSClusterCreatePermission(ctx, common.GetBCSProjectID(argoProject.Annotations)) + if err != nil { + return http.StatusInternalServerError, errors.Wrapf(err, "check cluster_create permission failed") } - var statusCode int - _, statusCode, err = c.checkSingleResourcePermission(ctx, argoAppSet.Spec.Template.Spec.Project, - AppSetRSType, appSet, action) + if !clusterCreate { + return http.StatusForbidden, errors.Errorf("user '%s' not have cluster_create permission", + ctxutils.User(ctx).GetUser()) + } + + appSets := c.store.AllApplicationSets() + appSetMap := make(map[string]*v1alpha1.ApplicationSet) + for _, appSet := range appSets { + appSetMap[appSet.Name] = appSet + } + notFoundAppSet := make([]string, 0) + resultAppSets := make([]*v1alpha1.ApplicationSet, 0) + // 校验请求的 resource_name + for i := range req.ResourceNames { + rsName := req.ResourceNames[i] + tmp, ok := appSetMap[rsName] + if !ok { + notFoundAppSet = append(notFoundAppSet, rsName) + continue + } + resultAppSets = append(resultAppSets, tmp) + if tmpProj := tmp.Spec.Template.Spec.Project; tmpProj != project { + return http.StatusBadRequest, fmt.Errorf("appset '%s' project '%s' not same as '%s'", + rsName, tmpProj, project) + } + } + if len(notFoundAppSet) != 0 { + return http.StatusBadRequest, fmt.Errorf("appset '%v' not found", notFoundAppSet) + } + + // 添加权限 + errs := make([]string, 0) + for _, appSet := range resultAppSets { + for _, action := range req.ResourceActions { + err = c.db.UpdateResourcePermissions(project, string(AppSetRSType), appSet.Name, action, req.Users) + if err == nil { + blog.Infof("RequestID[%s] update resource '%s/%s' permissions success", ctxutils.RequestID(ctx), + string(AppSetRSType), appSet.Name) + continue + } + + errMsg := fmt.Sprintf("update resource '%s/%s' permissions failed", string(AppSetRSType), appSet.Name) + errs = append(errs, errMsg) + blog.Errorf("RequestID[%s] update permission failed: %s", ctxutils.RequestID(ctx), errMsg) + } + } + if len(errs) != 0 { + return http.StatusInternalServerError, fmt.Errorf("create permission with multiple error: %v", errs) + } + return http.StatusOK, nil +} + +// CheckAppSetPermission check appset permission +func (c *checker) CheckAppSetPermission(ctx context.Context, appSet string, action RSAction) (*v1alpha1.ApplicationSet, + int, error) { + objs, permits, statusCode, err := c.getMultiAppSetMultiActionPermission(ctx, "", []string{appSet}) if err != nil { return nil, statusCode, err } - return argoAppSet, http.StatusOK, nil + pm, ok := permits.ResourcePerms[appSet] + if !ok { + return nil, http.StatusBadRequest, errors.Errorf("appset '%s' not exist", appSet) + } + if !pm[action] { + return nil, http.StatusForbidden, errors.Errorf("user '%s' not have aappsetpp permission '%s/%s'", + ctxutils.User(ctx).GetUser(), action, appSet) + } + if len(objs) != 1 { + return nil, http.StatusBadRequest, errors.Errorf("query appset '%s' got '%d' appsets", appSet, len(objs)) + } + return objs[0].(*v1alpha1.ApplicationSet), http.StatusOK, nil +} + +func (c *checker) getMultiAppSetMultiActionPermission(ctx context.Context, project string, + appSets []string) ([]interface{}, *UserResourcePermission, int, error) { + resultAppSets := make([]interface{}, 0, len(appSets)) + projAppSets := make(map[string][]*v1alpha1.ApplicationSet) + if project != "" && len(appSets) == 0 { + appSetList, err := c.store.ListApplicationSets(ctx, &appsetpkg.ApplicationSetListQuery{ + Projects: []string{project}, + }) + if err != nil { + return nil, nil, http.StatusInternalServerError, err + } + for i := range appSetList.Items { + argoAppSet := appSetList.Items[i] + resultAppSets = append(resultAppSets, &argoAppSet) + projAppSets[project] = append(projAppSets[project], &argoAppSet) + } + } else { + for i := range appSets { + appSet := appSets[i] + argoAppSet, err := c.store.GetApplicationSet(ctx, appSet) + if err != nil { + return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "get application failed") + } + if argoAppSet == nil { + return nil, nil, http.StatusBadRequest, errors.Errorf("appset '%s' not found", appSet) + } + proj := argoAppSet.Spec.Template.Spec.Project + _, ok := projAppSets[proj] + if ok { + projAppSets[proj] = append(projAppSets[proj], argoAppSet) + } else { + projAppSets[proj] = []*v1alpha1.ApplicationSet{argoAppSet} + } + resultAppSets = append(resultAppSets, argoAppSet) + } + } + + result := &UserResourcePermission{ + ResourceType: AppSetRSType, + ResourcePerms: make(map[string]map[RSAction]bool), + ActionPerms: map[RSAction]bool{AppSetViewRSAction: true, AppSetDeleteRSAction: true, + AppSetCreateRSAction: true, AppSetUpdateRSAction: true}, + } + if len(resultAppSets) == 0 { + return resultAppSets, result, http.StatusOK, nil + } + + canDeleteOrUpdate := false + var statusCode int + var err error + for proj, argoAppSets := range projAppSets { + ctx, statusCode, err = c.createPermitContext(ctx, proj) + if err != nil { + return nil, nil, statusCode, err + } + projPermits := contextGetProjPermits(ctx) + for _, argoAppSet := range argoAppSets { + result.ResourcePerms[argoAppSet.Name] = map[RSAction]bool{ + AppSetViewRSAction: projPermits[ProjectViewRSAction], + AppSetDeleteRSAction: projPermits[ProjectEditRSAction], + AppSetUpdateRSAction: projPermits[ProjectEditRSAction], + } + } + if projPermits[ProjectEditRSAction] { + canDeleteOrUpdate = true + continue + } + // 如果数据库中具备权限,则将 Update 权限设置为 true + user := ctxutils.User(ctx) + permissions, err := c.db.ListUserPermissions(user.GetUser(), contextGetProjName(ctx), string(AppSetRSType)) + if err != nil { + return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "list user's resources failed") + } + for _, permit := range permissions { + if _, ok := result.ResourcePerms[permit.ResourceName]; ok { + canDeleteOrUpdate = true + result.ResourcePerms[permit.ResourceName][AppSetUpdateRSAction] = true + } + } + } + result.ActionPerms = map[RSAction]bool{AppSetViewRSAction: true, AppSetCreateRSAction: true, + AppSetUpdateRSAction: canDeleteOrUpdate, AppSetDeleteRSAction: canDeleteOrUpdate} + return resultAppSets, result, http.StatusOK, nil } // CheckAppSetCreate check appset create permission diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_base.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_base.go new file mode 100644 index 0000000000..6266ea7caa --- /dev/null +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_base.go @@ -0,0 +1,197 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package permitcheck + +import ( + "context" + "net/http" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/auth/iam" + iamnamespace "github.com/Tencent/bk-bcs/bcs-services/pkg/bcs-auth-v4/namespace" + authutils "github.com/Tencent/bk-bcs/bcs-services/pkg/bcs-auth/utils" + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/pkg/errors" + + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/common" + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils" + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/utils" +) + +// getProjectWithID get project with id +func (c *checker) getProjectWithID(ctx context.Context, projectName string) (*v1alpha1.AppProject, string, int, error) { + if projectName == "" { + return nil, "", http.StatusBadRequest, errors.Errorf("project name cannot be empty") + } + // get project info and validate projectPermission + argoProject, err := c.store.GetProject(ctx, projectName) + if err != nil { + return nil, "", http.StatusInternalServerError, errors.Wrapf(err, "get project from storage failure") + } + if argoProject == nil { + return nil, "", http.StatusBadRequest, errors.Errorf("project '%s' not found", projectName) + } + projectID := common.GetBCSProjectID(argoProject.Annotations) + if projectID == "" { + return nil, "", http.StatusForbidden, + errors.Errorf("project '%s' got id failed, not under control", projectName) + } + return argoProject, projectID, http.StatusOK, nil +} + +// getBCSMultiProjectPermission get mutli-projects permission +func (c *checker) getBCSMultiProjectPermission(ctx context.Context, projectIDs []string, + actions []RSAction) (map[string]map[RSAction]bool, error) { + user := ctxutils.User(ctx) + if c.isAdminUser(user.GetUser()) { + result := make(map[string]map[RSAction]bool) + for _, projectID := range projectIDs { + result[projectID] = map[RSAction]bool{ + ProjectViewRSAction: true, ProjectEditRSAction: true, ProjectDeleteRSAction: true, + } + } + return result, nil + } + + bcsActions := make([]string, 0) + for _, action := range actions { + switch action { + case ProjectViewRSAction: + bcsActions = append(bcsActions, string(iam.ProjectView)) + case ProjectEditRSAction: + bcsActions = append(bcsActions, string(iam.ProjectEdit)) + case ProjectDeleteRSAction: + bcsActions = append(bcsActions, string(iam.ProjectDelete)) + } + } + var permits map[string]map[string]bool + var err error + for i := 0; i < 5; i++ { + permits, err = c.projectPermission.GetMultiProjectMultiActionPerm(user.GetUser(), projectIDs, bcsActions) + if err == nil { + break + } + if !utils.NeedRetry(err) { + break + } + time.Sleep(2 * time.Second) + } + if err != nil { + return nil, errors.Wrapf(err, "get project permission failed") + } + + newResult := make(map[string]map[RSAction]bool) + for projID, projPermits := range permits { + newResult[projID] = make(map[RSAction]bool) + for act, perm := range projPermits { + switch act { + case string(iam.ProjectView): + newResult[projID][ProjectViewRSAction] = perm + case string(iam.ProjectEdit): + newResult[projID][ProjectEditRSAction] = perm + case string(iam.ProjectDelete): + newResult[projID][ProjectDeleteRSAction] = perm + } + } + } + // rewrite not tencent user with only-view permission + if !user.IsTencent { + for k := range newResult { + newResult[k][ProjectEditRSAction] = false + newResult[k][ProjectDeleteRSAction] = false + } + } + return newResult, nil +} + +// getBCSClusterCreatePermission get bcs cluster creat permission +func (c *checker) getBCSClusterCreatePermission(ctx context.Context, projectID string) (bool, error) { + user := ctxutils.User(ctx) + if c.isAdminUser(user.GetUser()) { + return true, nil + } + // rewrite not tencent user with only-view permission + if !user.IsTencent { + return false, nil + } + + var err error + for i := 0; i < 5; i++ { + var permit bool + permit, _, _, err = c.clusterPermission.CanCreateCluster(user.GetUser(), projectID) + if err == nil { + return permit, nil + } + if !utils.NeedRetry(err) { + break + } + time.Sleep(2 * time.Second) + } + return false, errors.Wrapf(err, "get cluster create permission failed") +} + +// getBCSNamespaceScopedPermission get bcs namespace scoped permission +func (c *checker) getBCSNamespaceScopedPermission(ctx context.Context, projectID string, + clusterNS map[string]map[string]struct{}) (map[string]map[string]bool, error) { + user := ctxutils.User(ctx) + if c.isAdminUser(user.GetUser()) { + result := make(map[string]map[string]bool) + for cls, nsMap := range clusterNS { + for ns := range nsMap { + result[authutils.CalcIAMNsID(cls, ns)] = map[string]bool{ + string(iamnamespace.NameSpaceScopedCreate): true, string(iamnamespace.NameSpaceScopedDelete): true, + string(iamnamespace.NameSpaceScopedUpdate): true, + } + } + } + return result, nil + } + + projNsData := make([]iamnamespace.ProjectNamespaceData, 0) + for cls, nsMap := range clusterNS { + for ns := range nsMap { + projNsData = append(projNsData, iamnamespace.ProjectNamespaceData{ + Project: projectID, + Cluster: cls, + Namespace: ns, + }) + } + } + + var permits map[string]map[string]bool + defer func() { + // rewrite not tencent user with only-view permission + if !user.IsTencent { + for k := range permits { + permits[k][string(iamnamespace.NameSpaceScopedCreate)] = false + permits[k][string(iamnamespace.NameSpaceScopedDelete)] = false + permits[k][string(iamnamespace.NameSpaceScopedUpdate)] = false + } + } + }() + var err error + for i := 0; i < 5; i++ { + permits, err = c.namespacePermission.GetMultiNamespaceMultiActionPerm(user.GetUser(), projNsData, []string{ + string(iamnamespace.NameSpaceScopedCreate), string(iamnamespace.NameSpaceScopedDelete), + string(iamnamespace.NameSpaceScopedUpdate), string(iamnamespace.NameSpaceScopedView), + }) + if err == nil { + return permits, nil + } + if !utils.NeedRetry(err) { + break + } + time.Sleep(2 * time.Second) + } + return nil, errors.Wrapf(err, "get nameespace scoped permission failed") +} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_cluster.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_cluster.go new file mode 100644 index 0000000000..fea0be0231 --- /dev/null +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_cluster.go @@ -0,0 +1,109 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package permitcheck + +import ( + "context" + "net/http" + + "github.com/argoproj/argo-cd/v2/pkg/apiclient/cluster" + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/pkg/errors" +) + +// CheckClusterPermission check cluster permission +func (c *checker) CheckClusterPermission(ctx context.Context, query *cluster.ClusterQuery, action RSAction) ( + *v1alpha1.Cluster, int, error) { + argoCluster, err := c.store.GetCluster(ctx, query) + if err != nil { + return nil, http.StatusInternalServerError, errors.Wrapf(err, "get cluster from storage failure") + } + if argoCluster == nil { + return nil, http.StatusBadRequest, errors.Errorf("cluster '%v' not found", query) + } + + var statusCode int + _, statusCode, err = c.CheckProjectPermission(ctx, argoCluster.Project, ProjectViewRSAction) + if err != nil { + return nil, statusCode, err + } + return argoCluster, http.StatusOK, nil +} + +func (c *checker) getMultiClustersMultiActionsPermission(ctx context.Context, project string, clusters []string) ( + []interface{}, *UserResourcePermission, int, error) { + resultClusters := make([]interface{}, 0, len(clusters)) + projClusters := make(map[string][]*v1alpha1.Cluster) + // list all clusters by project + if project != "" && len(clusters) == 0 { + argoClusterList, err := c.store.ListClustersByProjectName(ctx, project) + if err != nil { + return nil, nil, http.StatusInternalServerError, err + } + for i := range argoClusterList.Items { + argoCluster := argoClusterList.Items[i] + resultClusters = append(resultClusters, &argoCluster) + projClusters[project] = append(projClusters[project], &argoCluster) + } + } else { + for i := range clusters { + cls := clusters[i] + argoCluster, err := c.store.GetCluster(ctx, &cluster.ClusterQuery{ + Name: cls, + }) + if err != nil { + return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "get cluster failed") + } + if argoCluster == nil { + return nil, nil, http.StatusBadRequest, errors.Errorf("cluster '%s' not found", cls) + } + proj := argoCluster.Project + _, ok := projClusters[proj] + if ok { + projClusters[proj] = append(projClusters[proj], argoCluster) + } else { + projClusters[proj] = []*v1alpha1.Cluster{argoCluster} + } + resultClusters = append(resultClusters, argoCluster) + } + } + + result := &UserResourcePermission{ + ResourceType: ClusterRSType, + ResourcePerms: make(map[string]map[RSAction]bool), + ActionPerms: map[RSAction]bool{ClusterViewRSAction: true}, + } + if len(resultClusters) == 0 { + return resultClusters, result, http.StatusOK, nil + } + + allView := false + for proj, argoClusters := range projClusters { + _, projPermits, statusCode, err := c.getProjectMultiActionsPermission(ctx, proj) + if statusCode != http.StatusForbidden && statusCode != http.StatusOK { + return nil, nil, statusCode, err + } + if projPermits[ProjectViewRSAction] { + allView = true + } + for _, cls := range argoClusters { + result.ResourcePerms[cls.Name] = map[RSAction]bool{ + ClusterViewRSAction: projPermits[ProjectViewRSAction], + } + } + } + result.ActionPerms = map[RSAction]bool{ + ClusterViewRSAction: allView, + } + return resultClusters, result, http.StatusOK, nil +} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_project.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_project.go new file mode 100644 index 0000000000..ada5546cdc --- /dev/null +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_project.go @@ -0,0 +1,110 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package permitcheck + +import ( + "context" + "fmt" + "net/http" + + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/pkg/errors" + "k8s.io/utils/strings/slices" + + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils" +) + +// GetProjectMultiPermission get multi projects permission +func (c *checker) GetProjectMultiPermission(ctx context.Context, projectIDs []string, + actions []RSAction) (map[string]map[RSAction]bool, error) { + return c.getBCSMultiProjectPermission(ctx, projectIDs, actions) +} + +// CheckProjectPermission check permission for project +func (c *checker) CheckProjectPermission(ctx context.Context, project string, action RSAction) ( + *v1alpha1.AppProject, int, error) { + argoProj, permits, statusCode, err := c.getProjectMultiActionsPermission(ctx, project) + if err != nil { + return nil, statusCode, errors.Wrapf(err, "check project permission failed") + } + user := ctxutils.User(ctx) + if !permits[action] { + return nil, http.StatusForbidden, errors.Errorf("user '%s' not have project permission '%s/%s'", + user.GetUser(), action, project) + } + return argoProj, http.StatusOK, nil +} + +func (c *checker) getMultiProjectsMultiActionsPermission(ctx context.Context, projects []string) ( + []interface{}, *UserResourcePermission, int, error) { + resultObjs := make([]interface{}, 0, len(projects)) + urp := &UserResourcePermission{ + ResourceType: ProjectRSType, + ResourcePerms: make(map[string]map[RSAction]bool), + } + canView := false + canEdit := false + canDelete := false + for _, project := range projects { + argoProj, permits, statusCode, err := c.getProjectMultiActionsPermission(ctx, project) + if err != nil { + return nil, nil, statusCode, err + } + resultObjs = append(resultObjs, argoProj) + urp.ResourcePerms[project] = permits + if permits[ProjectViewRSAction] { + canView = true + } + if permits[ProjectEditRSAction] { + canEdit = true + } + if permits[ProjectDeleteRSAction] { + canDelete = true + } + } + urp.ActionPerms = map[RSAction]bool{ + ProjectViewRSAction: canView, + ProjectEditRSAction: canEdit, + ProjectDeleteRSAction: canDelete, + } + return resultObjs, urp, http.StatusOK, nil +} + +func (c *checker) getProjectMultiActionsPermission(ctx context.Context, project string) ( + *v1alpha1.AppProject, map[RSAction]bool, int, error) { + pctx, statusCode, err := c.createPermitContext(ctx, project) + if err != nil { + return nil, nil, statusCode, errors.Wrapf(err, "check project permission failed") + } + return pctx.argoProj, pctx.projPermits, http.StatusOK, nil +} + +// checkRepositoryBelongProject check repo belong to project +func (c *checker) checkRepositoryBelongProject(ctx context.Context, repoUrl, project string) (bool, error) { + repo, err := c.store.GetRepository(ctx, repoUrl) + if err != nil { + return false, errors.Wrapf(err, "get repo '%s' failed", repoUrl) + } + if repo == nil { + return false, fmt.Errorf("repo '%s' not found", repoUrl) + } + // pass if repository's project equal to public projects + if slices.Contains(c.option.PublicProjects, repo.Project) { + return true, nil + } + + if repo.Project != project { + return false, nil + } + return true, nil +} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_query.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_query.go new file mode 100644 index 0000000000..22c87240e1 --- /dev/null +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_query.go @@ -0,0 +1,111 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package permitcheck + +import ( + "context" + "net/http" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + "github.com/pkg/errors" + + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/internal/dao" + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils" +) + +// UserAllPermissions return all user permission +func (c *checker) UserAllPermissions(ctx context.Context, project string) ([]*UserResourcePermission, int, error) { + permitType := []RSType{ProjectRSType, ClusterRSType, RepoRSType, AppRSType, AppSetRSType} + permits := make([]*UserResourcePermission, 0) + for _, pt := range permitType { + _, permit, statusCode, err := c.queryUserSingleTypePermission(ctx, project, pt, nil) + if err != nil { + return nil, statusCode, errors.Wrapf(err, "query permission for type '%s' failed", pt) + } + permits = append(permits, permit) + } + return permits, http.StatusOK, nil +} + +func (c *checker) queryUserSingleTypePermission(ctx context.Context, project string, rsType RSType, + rsNames []string) ([]interface{}, *UserResourcePermission, int, error) { + start := time.Now() + defer blog.Infof("RequestID[%s] query permission for project '%s' with resource '%s/%v' cost time: %v", + ctxutils.RequestID(ctx), project, rsType, rsNames, time.Since(start)) + var result *UserResourcePermission + var resources []interface{} + var statusCode int + var err error + switch rsType { + case ProjectRSType: + resources, result, statusCode, err = c.getMultiProjectsMultiActionsPermission(ctx, []string{project}) + case ClusterRSType: + resources, result, statusCode, err = c.getMultiClustersMultiActionsPermission(ctx, project, rsNames) + case RepoRSType: + resources, result, statusCode, err = c.getMultiRepoMultiActionPermission(ctx, project, rsNames) + case AppRSType: + resources, result, statusCode, err = c.getMultiApplicationMultiActionPermission(ctx, project, rsNames) + case AppSetRSType: + resources, result, statusCode, err = c.getMultiAppSetMultiActionPermission(ctx, project, rsNames) + default: + return nil, nil, http.StatusBadRequest, errors.Errorf("unknown resource type '%s'", rsType) + } + if err != nil { + return nil, nil, statusCode, errors.Wrapf(err, "query user reosurces failed") + } + return resources, result, http.StatusOK, nil +} + +// QueryUserPermissions 获取用户对应的资源的权限信息 +func (c *checker) QueryUserPermissions(ctx context.Context, project string, rsType RSType, rsNames []string) ( + []interface{}, *UserResourcePermission, int, error) { + return c.queryUserSingleTypePermission(ctx, project, rsType, rsNames) +} + +// QueryResourceUsers 获取某些资源对应的具备权限的用户信息 +// NOTE: 此接口仅针对存储在数据库中的权限 +func (c *checker) QueryResourceUsers(ctx context.Context, project string, rsType RSType, resources []string) ( + map[string]*ResourceUserPermission, int, error) { + _, statusCode, err := c.CheckProjectPermission(ctx, project, ProjectViewRSAction) + if err != nil { + return nil, statusCode, errors.Wrapf(err, "check permission for project '%s' failed", project) + } + permissions, err := c.db.ListResourceUsers(project, string(rsType), resources) + if err != nil { + return nil, http.StatusInternalServerError, errors.Wrapf(err, "list reosurce's users failed") + } + resourceMap := make(map[string][]*dao.UserPermission) + for _, permit := range permissions { + resourceMap[permit.ResourceName] = append(resourceMap[permit.ResourceName], permit) + } + result := make(map[string]*ResourceUserPermission) + for rsName, permits := range resourceMap { + rpr := &ResourceUserPermission{ + ResourceType: rsType, + ResourceName: rsName, + UserPerms: make(map[string]map[string]bool), + } + for _, permit := range permits { + if _, ok := rpr.UserPerms[permit.User]; ok { + rpr.UserPerms[permit.User][permit.ResourceAction] = true + } else { + rpr.UserPerms[permit.User] = map[string]bool{ + permit.ResourceAction: true, + } + } + } + result[rsName] = rpr + } + return result, http.StatusOK, nil +} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_repo.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_repo.go new file mode 100644 index 0000000000..a75973788a --- /dev/null +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/permitcheck/permit_repo.go @@ -0,0 +1,130 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package permitcheck + +import ( + "context" + "net/http" + + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/pkg/errors" + + "github.com/Tencent/bk-bcs/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/middleware/ctxutils" +) + +// CheckRepoPermission check repo permission +func (c *checker) CheckRepoPermission(ctx context.Context, repo string, action RSAction) (*v1alpha1.Repository, + int, error) { + objs, permits, statusCode, err := c.getMultiRepoMultiActionPermission(ctx, "", []string{repo}) + if err != nil { + return nil, statusCode, errors.Wrapf(err, "get repository permission failed") + } + pm, ok := permits.ResourcePerms[repo] + if !ok { + return nil, http.StatusBadRequest, errors.Errorf("repository '%s' not exist", repo) + } + if !pm[action] { + return nil, http.StatusForbidden, errors.Errorf("user '%s' not have repo permission '%s/%s'", + ctxutils.User(ctx).GetUser(), action, repo) + } + if len(objs) != 1 { + return nil, http.StatusBadRequest, errors.Errorf("query repository '%s' got '%d' repos", repo, len(objs)) + } + return objs[0].(*v1alpha1.Repository), http.StatusOK, nil +} + +// CheckRepoCreate check repo create +func (c *checker) CheckRepoCreate(ctx context.Context, repo *v1alpha1.Repository) (int, error) { + _, statusCode, err := c.CheckProjectPermission(ctx, repo.Project, ProjectViewRSAction) + if err != nil { + return statusCode, errors.Wrapf(err, "check repo create permission failed") + } + return http.StatusOK, nil +} + +// getMultiRepoMultiActionPermission query repo permission +func (c *checker) getMultiRepoMultiActionPermission(ctx context.Context, project string, repos []string) ([]interface{}, + *UserResourcePermission, int, error) { + resultRepos := make([]interface{}, 0, len(repos)) + projRepos := make(map[string][]*v1alpha1.Repository) + if project != "" && len(repos) == 0 { + repoList, err := c.store.ListRepository(ctx, []string{project}) + if err != nil { + return nil, nil, http.StatusInternalServerError, err + } + for _, argoRepo := range repoList.Items { + resultRepos = append(resultRepos, argoRepo) + projRepos[project] = append(projRepos[project], argoRepo) + } + } else { + for i := range repos { + repo := repos[i] + argoRepo, err := c.store.GetRepository(ctx, repo) + if err != nil { + return nil, nil, http.StatusInternalServerError, errors.Wrapf(err, "get repos failed") + } + if argoRepo == nil { + return nil, nil, http.StatusBadRequest, errors.Errorf("repo '%s' not found", repo) + } + proj := argoRepo.Project + _, ok := projRepos[proj] + if ok { + projRepos[proj] = append(projRepos[proj], argoRepo) + } else { + projRepos[proj] = []*v1alpha1.Repository{argoRepo} + } + resultRepos = append(resultRepos, argoRepo) + } + } + + result := &UserResourcePermission{ + ResourceType: RepoRSType, + ResourcePerms: make(map[string]map[RSAction]bool), + ActionPerms: map[RSAction]bool{ + RepoViewRSAction: true, RepoCreateRSAction: true, RepoUpdateRSAction: true, RepoDeleteRSAction: true, + }, + } + if len(resultRepos) == 0 { + return resultRepos, result, http.StatusOK, nil + } + + canDelete := false + canViewOrCreateOrUpdate := false + for proj, argoRepos := range projRepos { + _, projPermits, statusCode, err := c.getProjectMultiActionsPermission(ctx, proj) + if err != nil { + return nil, nil, statusCode, err + } + for _, repo := range argoRepos { + result.ResourcePerms[repo.Repo] = map[RSAction]bool{ + RepoViewRSAction: projPermits[ProjectViewRSAction], + RepoCreateRSAction: projPermits[ProjectViewRSAction], + RepoUpdateRSAction: projPermits[ProjectViewRSAction], + RepoDeleteRSAction: projPermits[ProjectEditRSAction], + } + } + if projPermits[ProjectEditRSAction] { + canDelete = true + } + if projPermits[ProjectViewRSAction] { + canViewOrCreateOrUpdate = true + } + } + result.ActionPerms = map[RSAction]bool{ + RepoViewRSAction: canViewOrCreateOrUpdate, + RepoCreateRSAction: canViewOrCreateOrUpdate, + RepoUpdateRSAction: canViewOrCreateOrUpdate, + RepoDeleteRSAction: canDelete, + } + return resultRepos, result, http.StatusOK, nil +} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/secret.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/secret.go index ec3d8f53c9..922620ea82 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/secret.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/argocd/secret.go @@ -100,7 +100,7 @@ func (plugin *SecretPlugin) createPutSecretHandler(r *http.Request) (*http.Reque return r, mw.ReturnSecretReverse() } -// Delete with preifx /api/v1/secrets/{project}/{path} +// Delete with prefix /api/v1/secrets/{project}/{path} func (plugin *SecretPlugin) deleteSecretHandler(r *http.Request) (*http.Request, *mw.HttpResponse) { projectName := mux.Vars(r)["project"] secretName := mux.Vars(r)["path"] @@ -113,7 +113,7 @@ func (plugin *SecretPlugin) deleteSecretHandler(r *http.Request) (*http.Request, return r, mw.ReturnSecretReverse() } -// Get with preifx /api/v1/secrets/{project}/{path}?version={version} +// Get with prefix /api/v1/secrets/{project}/{path}?version={version} func (plugin *SecretPlugin) getSecretHandler(r *http.Request) (*http.Request, *mw.HttpResponse) { projectName := mux.Vars(r)["project"] secretName := mux.Vars(r)["path"] diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/proxy.go b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/proxy.go index 9f605bcb0e..6398fb0f6a 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/proxy/proxy.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/proxy/proxy.go @@ -40,9 +40,14 @@ type GitOpsProxy interface { Init() error } +var ( + tencentUserRegexp = regexp.MustCompile("^(v_|p_|[a-z])[a-z]+$") +) + // UserInfo for token validate type UserInfo struct { *jwt.UserClaimsInfo + IsTencent bool } // GetUser string @@ -67,6 +72,7 @@ func GetJWTInfo(req *http.Request, client *jwt.JWTClient) (*UserInfo, error) { userName := req.Header.Get(common.HeaderBKUserName) user.UserName = userName } + user.IsTencent = tencentUserRegexp.MatchString(user.GetUser()) return user, nil } @@ -83,7 +89,7 @@ func GetJWTInfoWithAuthorization(authorization string, client *jwt.JWTClient) (* if err != nil { return nil, err } - u := &UserInfo{claim} + u := &UserInfo{UserClaimsInfo: claim} if u.GetUser() == "" { return nil, fmt.Errorf("lost user information") } diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/store/argocd.go b/bcs-scenarios/bcs-gitops-manager/pkg/store/argocd.go index 2fe5537681..c213069fde 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/store/argocd.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/store/argocd.go @@ -129,10 +129,16 @@ func (cd *argo) InitArgoDB(ctx context.Context) error { return nil } +// GetArgoDB return argodb object func (cd *argo) GetArgoDB() db.ArgoDB { return cd.argoDB } +// GetAppClient return argo app client +func (cd *argo) GetAppClient() applicationpkg.ApplicationServiceClient { + return cd.appClient +} + // Stop control interface func (cd *argo) Stop() { } @@ -403,6 +409,31 @@ func (cd *argo) ListClustersByProject(ctx context.Context, projID string) (*v1al return cls, nil } +// ListClustersByProjectName will list clusters by project name +func (cd *argo) ListClustersByProjectName(ctx context.Context, projectName string) (*v1alpha1.ClusterList, error) { + cls, err := cd.clusterClient.List(ctx, &cluster.ClusterQuery{}) + if err != nil { + if !utils.IsContextCanceled(err) { + metric.ManagerArgoOperateFailed.WithLabelValues("ListClustersByProject").Inc() + } + return nil, errors.Wrapf(err, "argocd list all clusters failed") + } + + clusters := make([]v1alpha1.Cluster, 0, len(cls.Items)) + for _, item := range cls.Items { + projectID, ok := item.Annotations[common.ProjectIDKey] + if item.Name != common.InClusterName && (!ok || projectID == "") { + blog.Errorf("cluster '%s' not have project id annotation", item.Name) + continue + } + if item.Project == projectName { + clusters = append(clusters, item) + } + } + cls.Items = clusters + return cls, nil +} + // repo name perhaps encoded, such as: https%253A%252F%252Fgit.fake.com%252Ftest%252Fhelloworld.git. // So we should urldecode the repo name twice. It also works fine when repo is normal. func (cd *argo) decodeRepoUrl(repo string) (string, error) { @@ -860,6 +891,14 @@ func (cd *argo) deleteApplicationResource(ctx context.Context, application *v1al // GetApplicationSet query the ApplicationSet by name func (cd *argo) GetApplicationSet(ctx context.Context, name string) (*v1alpha1.ApplicationSet, error) { + if cd.cacheSynced.Load() { + v, ok := cd.cacheAppSet.Load(name) + if !ok { + return nil, nil + } + return v.(*v1alpha1.ApplicationSet), nil + } + appset, err := cd.appsetClient.Get(ctx, &appsetpkg.ApplicationSetGetQuery{ Name: name, }) diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/store/secretstore/secret.go b/bcs-scenarios/bcs-gitops-manager/pkg/store/secretstore/secret.go index c9394fae5c..600e23679b 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/store/secretstore/secret.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/store/secretstore/secret.go @@ -30,6 +30,7 @@ type SecretInterface interface { InitProjectSecret(ctx context.Context, project string) error GetProjectSecret(ctx context.Context, project string) (string, error) ListProjectSecrets(ctx context.Context, project string) ([]string, error) + DecryptManifest(ctx context.Context, project string, manifests []string) ([]string, error) } type secretStore struct { @@ -151,3 +152,33 @@ func (s *secretStore) ListProjectSecrets(ctx context.Context, project string) ([ } return nil, errors.Errorf("list secrets for project '%s' convert failed", project) } + +const ( + decryptSecretPath = "/api/v1/decryption/manifest" // nolint +) + +type decryptResp struct { + Manifests []string `json:"manifests"` +} + +// DecryptManifest decrypt manifest from vault plugin server +func (s *secretStore) DecryptManifest(ctx context.Context, project string, manifests []string) ([]string, error) { + bs, err := httputils.Send(ctx, &httputils.HTTPRequest{ + Address: s.op.Address, + Port: s.op.Port, + Path: decryptSecretPath, + Method: http.MethodPost, + Body: map[string]interface{}{ + "project": project, + "manifests": manifests, + }, + }) + if err != nil { + return nil, errors.Wrapf(err, "decrypt manifests failed") + } + response := new(decryptResp) + if err = json.Unmarshal(bs, response); err != nil { + return nil, errors.Wrapf(err, "decrtyp manifest unmarshal failed") + } + return response.Manifests, nil +} diff --git a/bcs-scenarios/bcs-gitops-manager/pkg/store/store.go b/bcs-scenarios/bcs-gitops-manager/pkg/store/store.go index 356064f710..0106f24350 100644 --- a/bcs-scenarios/bcs-gitops-manager/pkg/store/store.go +++ b/bcs-scenarios/bcs-gitops-manager/pkg/store/store.go @@ -18,6 +18,7 @@ import ( "sync" appclient "github.com/argoproj/argo-cd/v2/pkg/apiclient/application" + applicationpkg "github.com/argoproj/argo-cd/v2/pkg/apiclient/application" appsetpkg "github.com/argoproj/argo-cd/v2/pkg/apiclient/applicationset" "github.com/argoproj/argo-cd/v2/pkg/apiclient/cluster" "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" @@ -51,6 +52,7 @@ type Store interface { Init() error InitArgoDB(ctx context.Context) error GetArgoDB() db.ArgoDB + GetAppClient() applicationpkg.ApplicationServiceClient Stop() GetOptions() *Options ReturnArgoK8SClient() *argopkg.ArgoprojV1alpha1Client @@ -68,6 +70,7 @@ type Store interface { GetClusterFromDB(ctx context.Context, serverUrL string) (*v1alpha1.Cluster, error) ListCluster(ctx context.Context) (*v1alpha1.ClusterList, error) ListClustersByProject(ctx context.Context, projectID string) (*v1alpha1.ClusterList, error) + ListClustersByProjectName(ctx context.Context, projectName string) (*v1alpha1.ClusterList, error) UpdateCluster(ctx context.Context, cluster *v1alpha1.Cluster) error DeleteCluster(ctx context.Context, name string) error diff --git a/bcs-scenarios/bcs-gitops-vaultplugin-server/pkg/server/decryption.go b/bcs-scenarios/bcs-gitops-vaultplugin-server/pkg/server/decryption.go index 8c03dc47af..18cc8808ad 100644 --- a/bcs-scenarios/bcs-gitops-vaultplugin-server/pkg/server/decryption.go +++ b/bcs-scenarios/bcs-gitops-vaultplugin-server/pkg/server/decryption.go @@ -35,6 +35,8 @@ import ( type decryptionManifestRequest struct { Project string `json:"project"` + AppName string `json:"appName"` + Repos []string `json:"repos"` Manifests []string `json:"manifests"` } @@ -50,12 +52,12 @@ func (s *Server) routerDecryptManifest(w http.ResponseWriter, r *http.Request) { errors.Wrapf(err, "decryption manifest decode request body failed")) return } - if req.Manifests == nil || req.Project == "" { - s.responseError(r, w, http.StatusBadRequest, - errors.Errorf("request 'manifests' or 'project' required")) + projectName, err := s.getProjectNameFromDecryptRequest(r.Context(), req) + if err != nil { + s.responseError(r, w, http.StatusBadRequest, errors.Wrapf(err, "get project name from decrypt request failed")) return } - projectName := req.Project + secretKey, err := s.getSecretKeyForProject(r.Context(), projectName) if err != nil { s.responseError(r, w, http.StatusBadRequest, @@ -76,6 +78,46 @@ func (s *Server) routerDecryptManifest(w http.ResponseWriter, r *http.Request) { s.responseDirect(w, bs) } +func (s *Server) getProjectNameFromDecryptRequest(ctx context.Context, req *decryptionManifestRequest) (string, error) { + if req.Project != "" { + return req.Project, nil + } + blog.Warnf("RequestID[%s] decrypt request project is empty: %v", requestID(ctx), *req) + var project string + defer func() { + blog.Infof("RequestID[%s] got project: %s", requestID(ctx), project) + }() + if req.AppName != "" { + argoApp, err := s.argoStore.GetApplication(ctx, req.AppName) + if err != nil { + return "", errors.Wrapf(err, "get application '%s' failed", req.AppName) + } + if argoApp == nil { + return "", errors.Errorf("application %s not found", req.AppName) + } + project = argoApp.Spec.Project + return project, nil + } + if len(req.Repos) != 0 { + for _, repo := range req.Repos { + argoRepo, err := s.argoStore.GetRepository(ctx, repo) + if err != nil { + return "", errors.Wrapf(err, "get repo '%s' failed", repo) + } + if argoRepo == nil { + blog.Warnf("RequestID[%s] repository '%s' not found", requestID(ctx), repo) + continue + } + project = argoRepo.Project + } + if project == "" { + return "", errors.Errorf("get project with repos '%v' not found", req.Repos) + } + return project, nil + } + return "", errors.Errorf("request param 'project' or 'appName' or 'repos' required") +} + func (s *Server) getSecretKeyForProject(ctx context.Context, project string) (string, error) { argoProj, err := s.argoStore.GetProject(ctx, project) if err != nil { diff --git a/bcs-scenarios/bcs-monitor-controller/pkg/httpsvr/httpserver.go b/bcs-scenarios/bcs-monitor-controller/pkg/httpsvr/httpserver.go index 36089e9b31..b4d74abc5c 100644 --- a/bcs-scenarios/bcs-monitor-controller/pkg/httpsvr/httpserver.go +++ b/bcs-scenarios/bcs-monitor-controller/pkg/httpsvr/httpserver.go @@ -107,9 +107,10 @@ func (h *HttpServerClient) ListAppMonitors(request *restful.Request, response *r infoList := make([]InstalledScenarioInfo, 0) for _, appMonitor := range appMonitorList.Items { + specBytes, _ := yaml.Marshal(appMonitor.Spec) info := InstalledScenarioInfo{Name: appMonitor.Spec.Scenario, Status: string(appMonitor.Status.SyncStatus.State), - Message: appMonitor.Status.SyncStatus.Message} + Message: string(specBytes)} panelSelector, err1 := k8smetav1.LabelSelectorAsSelector(k8smetav1.SetAsLabelSelector(map[string]string{ monitorextensionv1.LabelKeyForAppMonitorName: appMonitor.GetName(), diff --git a/bcs-scenarios/bcs-monitor-controller/pkg/patch/threewaymerge.go b/bcs-scenarios/bcs-monitor-controller/pkg/patch/threewaymerge.go index 17e76faf0d..5a69159077 100644 --- a/bcs-scenarios/bcs-monitor-controller/pkg/patch/threewaymerge.go +++ b/bcs-scenarios/bcs-monitor-controller/pkg/patch/threewaymerge.go @@ -61,13 +61,13 @@ func ThreeWayMergeMonitorRule(original, current, modified []*v1.MonitorRuleDetai // 3. 其余情况, 统一以模板为准 var mergeRule *v1.MonitorRuleDetail if cmp.Equal(originalRule, currentRule, cmp.Comparer(compareMonitorRule)) { - blog.Infof("mergeRule..") + blog.Infof("[%s]mergeRule..", originalRule.Name) // 相同说明用户没有在面板上进行修改 mergeRule = modifiedRule // 告警组配置以用户设置为准 mergeRule.Notice = mergeNoticeGroup(currentRule.Notice, modifiedRule.Notice) } else { - blog.Infof("changed Rule..") + blog.Infof("[%s]changed Rule..", originalRule.Name) // 用户进行了修改, 不做变更 mergeRule = currentRule } diff --git a/bcs-scenarios/bcs-monitor-controller/pkg/repo/git_repo.go b/bcs-scenarios/bcs-monitor-controller/pkg/repo/git_repo.go index 28ab42c9bb..5dada00373 100644 --- a/bcs-scenarios/bcs-monitor-controller/pkg/repo/git_repo.go +++ b/bcs-scenarios/bcs-monitor-controller/pkg/repo/git_repo.go @@ -24,13 +24,22 @@ import ( "github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/plumbing/transport/http" + "gopkg.in/yaml.v3" ) // ScenarioInfo info of monitor scenario type ScenarioInfo struct { - Name string - Readme string - OptionInfo string + Name string `json:"name"` + Readme string `json:"readme"` + OptionInfo string `json:"option_info"` + Config ScenarioConfig `json:"config"` +} + +// ScenarioConfig config +type ScenarioConfig struct { + Label string `yaml:"label" json:"label"` + // if true, not visible for users + Invisible bool `yaml:"invisible" json:"invisible"` } // gitRepo clone git repo and pull in certain freq @@ -235,10 +244,20 @@ func (gr *gitRepo) refreshScenarioInfos() error { } // 所有场景以目录形式存在 if file.IsDir() { + config := ScenarioConfig{} + configStr := readFileContent(filepath.Join(gr.Directory, file.Name(), "config.yaml")) + // 解析config失败时正常返回 + if err1 := yaml.Unmarshal([]byte(configStr), &config); err1 != nil { + blog.Errorf("Scene[%s] unmarshal config failed, err: %s", file.Name(), err1.Error) + } + if config.Invisible { + continue + } scenarioList = append(scenarioList, &ScenarioInfo{ Name: file.Name(), Readme: readFileContent(filepath.Join(gr.Directory, file.Name(), "README.md")), OptionInfo: readFileContent(filepath.Join(gr.Directory, file.Name(), "option.yaml")), + Config: config, }) } } diff --git a/bcs-services/bcs-bscp/cmd/api-server/service/config_import.go b/bcs-services/bcs-bscp/cmd/api-server/service/config_import.go index fca4922de0..b4481dc9f6 100644 --- a/bcs-services/bcs-bscp/cmd/api-server/service/config_import.go +++ b/bcs-services/bcs-bscp/cmd/api-server/service/config_import.go @@ -102,7 +102,7 @@ func (c *configImport) TemplateConfigFileImport(w http.ResponseWriter, r *http.R n, errR := r.Body.Read(buffer[:512]) if errR != nil && errR != io.EOF { _ = render.Render(w, r, - rest.BadRequest(errors.New(i18n.T(kt, "read file failed %s", errR)))) + rest.BadRequest(errors.New(i18n.T(kt, "read file failed, err: %v", errR)))) return } @@ -119,13 +119,13 @@ func (c *configImport) TemplateConfigFileImport(w http.ResponseWriter, r *http.R // 创建目录 dirPath := path.Join(os.TempDir(), constant.UploadTemporaryDirectory) if err := createTemporaryDirectory(dirPath); err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "create directory failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "create directory failed, err: %v", err)))) return } // 随机生成临时目录 tempDir, err := os.MkdirTemp(dirPath, "templateConfigItem-") if err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "create temporary directory failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "create temporary directory failed, err: %v", err)))) return } @@ -140,12 +140,12 @@ func (c *configImport) TemplateConfigFileImport(w http.ResponseWriter, r *http.R return } } - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "decompression failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "decompression failed, err: %v", err)))) return } } else { if err = saveFile(combinedReader, tempDir, fileName); err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed, err: %v", err)))) return } } @@ -155,7 +155,7 @@ func (c *configImport) TemplateConfigFileImport(w http.ResponseWriter, r *http.R // 先扫描一遍文件夹,获取路径和名称, fileItems, err := getFilePathsAndNames(tempDir) if err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed, err: %v", err)))) return } @@ -165,13 +165,13 @@ func (c *configImport) TemplateConfigFileImport(w http.ResponseWriter, r *http.R c.uploadFileMetrics(kt.BizID, tmplSpaceIdStr, dirPath, totalSize) if err = c.checkFileConfictsWithTemplates(kt, uint32(tmplSpaceID), fileItems); err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "detecting file conflicts failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(err)) return } folder, err := c.processAndUploadDirectoryFiles(kt, tempDir, len(fileItems)) if err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed, err: %v", err)))) return } @@ -203,7 +203,7 @@ func (c *configImport) TemplateConfigFileImport(w http.ResponseWriter, r *http.R Items: batch, }) if err != nil { - _ = render.Render(w, r, rest.BadRequest(err)) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "list template config failed, err: %v", err)))) return } if len(tuple.Items) > 0 { @@ -293,7 +293,7 @@ func (c *configImport) ConfigFileImport(w http.ResponseWriter, r *http.Request) n, errR := r.Body.Read(buffer[:512]) if errR != nil && errR != io.EOF { _ = render.Render(w, r, - rest.BadRequest(errors.New(i18n.T(kt, "read file failed %s", errR)))) + rest.BadRequest(errors.New(i18n.T(kt, "read file failed, err: %v", errR)))) return } @@ -311,14 +311,14 @@ func (c *configImport) ConfigFileImport(w http.ResponseWriter, r *http.Request) dirPath := path.Join(os.TempDir(), constant.UploadTemporaryDirectory) if err := createTemporaryDirectory(dirPath); err != nil { _ = render.Render(w, r, - rest.BadRequest(errors.New(i18n.T(kt, "create directory failed %s", err)))) + rest.BadRequest(errors.New(i18n.T(kt, "create directory failed, err: %v", err)))) return } // 随机生成临时目录 tempDir, err := os.MkdirTemp(dirPath, "configItem-") if err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "create temporary directory failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "create temporary directory failed, err: %v", err)))) return } @@ -333,12 +333,12 @@ func (c *configImport) ConfigFileImport(w http.ResponseWriter, r *http.Request) return } } - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "decompression failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "decompression failed, err: %v", err)))) return } } else { if err = saveFile(combinedReader, tempDir, fileName); err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed, err: %v", err)))) return } } @@ -348,7 +348,7 @@ func (c *configImport) ConfigFileImport(w http.ResponseWriter, r *http.Request) // 先扫描一遍文件夹,获取路径和名称, fileItems, err := getFilePathsAndNames(tempDir) if err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed, err: %v", err)))) return } @@ -358,7 +358,7 @@ func (c *configImport) ConfigFileImport(w http.ResponseWriter, r *http.Request) c.uploadFileMetrics(kt.BizID, appIdStr, dirPath, totalSize) if err = c.checkFileConfictsWithNonTemplates(kt, fileItems); err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "detecting file conflicts failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(err)) return } @@ -386,7 +386,7 @@ func (c *configImport) ConfigFileImport(w http.ResponseWriter, r *http.Request) Items: batch, }) if errC != nil { - _ = render.Render(w, r, rest.BadRequest(errC)) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "list config item failed, err: %v", err)))) return } for _, item := range tuple.GetDetails() { @@ -400,7 +400,8 @@ func (c *configImport) ConfigFileImport(w http.ResponseWriter, r *http.Request) AppId: kt.AppID, }) if err != nil { - _ = render.Render(w, r, rest.BadRequest(err)) + _ = render.Render(w, r, rest.BadRequest(errors.New( + i18n.T(kt, "get the current number of service config items failed, err: %v", err)))) return } @@ -415,7 +416,7 @@ func (c *configImport) ConfigFileImport(w http.ResponseWriter, r *http.Request) folder, err := c.processAndUploadDirectoryFiles(kt, tempDir, len(fileItems)) if err != nil { - _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed %s", err)))) + _ = render.Render(w, r, rest.BadRequest(errors.New(i18n.T(kt, "upload file failed, err: %v", err)))) return } @@ -513,7 +514,7 @@ func (c *configImport) processAndUploadDirectoryFiles(kt *kit.Kit, fileDir strin // 创建一个并发池 pool, err := ants.NewPool(constant.MaxConcurrentUpload) if err != nil { - return nil, fmt.Errorf("generates an instance of ants pool fail %s", err) + return nil, fmt.Errorf("generates an instance of ants pool fail %v", err) } defer pool.Release() @@ -746,7 +747,7 @@ func (c *configImport) checkFileConfictsWithNonTemplates(kt *kit.Kit, files []to }) } - return tools.DetectFilePathConflicts(files, filesToCompare) + return tools.DetectFilePathConflicts(kt, files, filesToCompare) } // 检测与模板套餐下的文件冲突 @@ -759,7 +760,7 @@ func (c *configImport) checkFileConfictsWithTemplates(kt *kit.Kit, templateSpace All: true, }) if err != nil { - return err + return errors.New(i18n.T(kt, "list templates failed, err: %v", err)) } filesToCompare := []tools.CIUniqueKey{} for _, v := range items.GetDetails() { @@ -769,7 +770,7 @@ func (c *configImport) checkFileConfictsWithTemplates(kt *kit.Kit, templateSpace }) } - return tools.DetectFilePathConflicts(files, filesToCompare) + return tools.DetectFilePathConflicts(kt, files, filesToCompare) } // 临时保存文件 @@ -783,7 +784,7 @@ func saveFile(reader io.Reader, tempDir, fileName string) error { // 创建文件 file, err := os.Create(tempDir + "/" + fileName) if err != nil { - return fmt.Errorf("failed to create temp file: %s", err.Error()) + return fmt.Errorf("create temp file failed, err: %v", err.Error()) } defer file.Close() diff --git a/bcs-services/bcs-bscp/cmd/auth-server/service/service.go b/bcs-services/bcs-bscp/cmd/auth-server/service/service.go index 458ddb6009..87581ecfd4 100644 --- a/bcs-services/bcs-bscp/cmd/auth-server/service/service.go +++ b/bcs-services/bcs-bscp/cmd/auth-server/service/service.go @@ -517,6 +517,7 @@ func (s *Service) ListUserSpace(ctx context.Context, req *pbas.ListUserSpaceReq) SpaceTypeId: space.SpaceTypeID, SpaceTypeName: space.SpaceTypeName, SpaceUid: space.SpaceUid, + SpaceEnName: space.SpaceEnName, }) } diff --git a/bcs-services/bcs-bscp/cmd/config-server/service/app.go b/bcs-services/bcs-bscp/cmd/config-server/service/app.go index 309f69caf7..cf3aecf0ab 100644 --- a/bcs-services/bcs-bscp/cmd/config-server/service/app.go +++ b/bcs-services/bcs-bscp/cmd/config-server/service/app.go @@ -40,7 +40,7 @@ import ( func (s *Service) CreateApp(ctx context.Context, req *pbcs.CreateAppReq) (*pbcs.CreateAppResp, error) { kt := kit.FromGrpcContext(ctx) - if err := req.Validate(); err != nil { + if err := req.Validate(kt); err != nil { return nil, err } diff --git a/bcs-services/bcs-bscp/cmd/config-server/service/app_template_binding.go b/bcs-services/bcs-bscp/cmd/config-server/service/app_template_binding.go index a0643be50c..2416c06acf 100644 --- a/bcs-services/bcs-bscp/cmd/config-server/service/app_template_binding.go +++ b/bcs-services/bcs-bscp/cmd/config-server/service/app_template_binding.go @@ -771,3 +771,52 @@ func (s *Service) CheckAppTemplateBinding(ctx context.Context, req *pbcs.CheckAp } return resp, nil } + +// ImportFromTemplateSetToApp 从配置模板导入到服务 +func (s *Service) ImportFromTemplateSetToApp(ctx context.Context, req *pbcs.ImportFromTemplateSetToAppReq) ( + *pbcs.ImportFromTemplateSetToAppResp, error) { + + kit := kit.FromGrpcContext(ctx) + + res := []*meta.ResourceAttribute{ + {Basic: meta.Basic{Type: meta.Biz, Action: meta.FindBusinessResource}, BizID: req.BizId}, + {Basic: meta.Basic{Type: meta.App, Action: meta.Update, ResourceID: req.AppId}, BizID: req.BizId}, + } + if err := s.authorizer.Authorize(kit, res...); err != nil { + return nil, err + } + + bindings := make([]*pbds.ImportFromTemplateSetToAppReq_Binding, 0, len(req.GetBindings())) + for _, binding := range req.GetBindings() { + revisions := make([]*pbds.ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding, + 0, len(binding.GetTemplateRevisions())) + for _, revision := range binding.GetTemplateRevisions() { + revisions = append(revisions, &pbds.ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding{ + TemplateId: revision.GetTemplateId(), + TemplateRevisionId: revision.GetTemplateRevisionId(), + IsLatest: revision.GetIsLatest(), + TemplateName: revision.GetTemplateName(), + TemplateRevisionName: revision.GetTemplateRevisionName(), + }) + } + bindings = append(bindings, &pbds.ImportFromTemplateSetToAppReq_Binding{ + TemplateSetId: binding.GetTemplateSetId(), + TemplateSpaceId: binding.GetTemplateSpaceId(), + TemplateSpaceName: binding.GetTemplateSpaceName(), + TemplateSetName: binding.GetTemplateSetName(), + TemplateRevisions: revisions, + }) + } + + _, err := s.client.DS.ImportFromTemplateSetToApp(kit.RpcCtx(), &pbds.ImportFromTemplateSetToAppReq{ + BizId: req.BizId, + AppId: req.AppId, + Bindings: bindings, + }) + + if err != nil { + return nil, err + } + + return &pbcs.ImportFromTemplateSetToAppResp{}, nil +} diff --git a/bcs-services/bcs-bscp/cmd/config-server/service/template.go b/bcs-services/bcs-bscp/cmd/config-server/service/template.go index 2696b97d57..fe37759872 100644 --- a/bcs-services/bcs-bscp/cmd/config-server/service/template.go +++ b/bcs-services/bcs-bscp/cmd/config-server/service/template.go @@ -156,12 +156,6 @@ func (s *Service) BatchDeleteTemplate(ctx context.Context, req *pbcs.BatchDelete templateIDs = tools.Difference(idsAll, templateIDs) } - idsLen := len(templateIDs) - if idsLen == 0 || idsLen > constant.ArrayInputLenLimit { - return nil, fmt.Errorf("the length of template ids is %d, it must be within the range of [1,%d]", - idsLen, constant.ArrayInputLenLimit) - } - res := []*meta.ResourceAttribute{ {Basic: meta.Basic{Type: meta.Biz, Action: meta.FindBusinessResource}, BizID: req.BizId}, } diff --git a/bcs-services/bcs-bscp/cmd/config-server/service/template_binding_relation.go b/bcs-services/bcs-bscp/cmd/config-server/service/template_binding_relation.go index df724b1891..468d38708b 100644 --- a/bcs-services/bcs-bscp/cmd/config-server/service/template_binding_relation.go +++ b/bcs-services/bcs-bscp/cmd/config-server/service/template_binding_relation.go @@ -267,11 +267,6 @@ func (s *Service) ListMultiTmplBoundTmplSets(ctx context.Context, req *pbcs.List if err != nil { return nil, fmt.Errorf("invalid template ids, %s", err) } - idsLen := len(templateIDs) - if idsLen == 0 || idsLen > constant.ArrayInputLenLimit { - return nil, fmt.Errorf("the length of template ids is %d, it must be within the range of [1,%d]", - idsLen, constant.ArrayInputLenLimit) - } res := []*meta.ResourceAttribute{ {Basic: meta.Basic{Type: meta.Biz, Action: meta.FindBusinessResource}, BizID: req.BizId}, @@ -422,11 +417,6 @@ func (s *Service) ListMultiTmplSetBoundUnnamedApps(ctx context.Context, req *pbc if err != nil { return nil, fmt.Errorf("invalid template set ids, %s", err) } - idsLen := len(templateSetIDs) - if idsLen == 0 || idsLen > constant.ArrayInputLenLimit { - return nil, fmt.Errorf("the length of template set ids is %d, it must be within the range of [1,%d]", - idsLen, constant.ArrayInputLenLimit) - } res := []*meta.ResourceAttribute{ {Basic: meta.Basic{Type: meta.Biz, Action: meta.FindBusinessResource}, BizID: req.BizId}, @@ -561,12 +551,14 @@ func (s *Service) CheckTemplateSetReferencesApps(ctx context.Context, req *pbcs. result := make([]*pbcs.CheckTemplateSetReferencesAppsResp_Item, 0, len(resp.GetItems())) for _, v := range resp.GetItems() { result = append(result, &pbcs.CheckTemplateSetReferencesAppsResp_Item{ - TemplateSetId: v.GetTemplateSetId(), - TemplateSetName: v.GetTemplateSetName(), - AppId: v.GetAppId(), - AppName: v.GetAppName(), - AppExceedsLimit: v.GetAppExceedsLimit(), - TemplateSetExceedsLimit: v.GetTemplateSetExceedsLimit(), + TemplateSetId: v.GetTemplateSetId(), + TemplateSetName: v.GetTemplateSetName(), + AppId: v.GetAppId(), + AppName: v.GetAppName(), + AppExceedsLimit: v.GetAppExceedsLimit(), + TemplateSetExceedsLimit: v.GetTemplateSetExceedsLimit(), + AppExceedsQuantity: v.GetAppExceedsQuantity(), + TemplateSetExceedsQuantity: v.GetTemplateSetExceedsQuantity(), }) } diff --git a/bcs-services/bcs-bscp/cmd/config-server/service/template_set.go b/bcs-services/bcs-bscp/cmd/config-server/service/template_set.go index b25aa1cb3a..6954a31bfc 100644 --- a/bcs-services/bcs-bscp/cmd/config-server/service/template_set.go +++ b/bcs-services/bcs-bscp/cmd/config-server/service/template_set.go @@ -265,3 +265,37 @@ func (s *Service) ListTmplSetsOfBiz(ctx context.Context, req *pbcs.ListTmplSetsO } return resp, nil } + +// ListTemplateSetsAndRevisions 获取模板套餐下所有的模板版本 +func (s *Service) ListTemplateSetsAndRevisions(ctx context.Context, req *pbcs.ListTemplateSetsAndRevisionsReq) ( + *pbcs.ListTemplateSetsAndRevisionsResp, error) { + + kit := kit.FromGrpcContext(ctx) + + res := []*meta.ResourceAttribute{ + {Basic: meta.Basic{Type: meta.Biz, Action: meta.FindBusinessResource}, BizID: req.BizId}, + } + if err := s.authorizer.Authorize(kit, res...); err != nil { + return nil, err + } + + result, err := s.client.DS.ListTemplateSetsAndRevisions(kit.RpcCtx(), &pbds.ListTemplateSetsAndRevisionsReq{ + BizId: req.BizId, + TemplateSetId: req.TemplateSetId, + }) + if err != nil { + return nil, err + } + + details := make([]*pbcs.ListTemplateSetsAndRevisionsResp_Detail, 0) + for _, v := range result.GetDetails() { + details = append(details, &pbcs.ListTemplateSetsAndRevisionsResp_Detail{ + Template: v.GetTemplate(), + TemplateRevision: v.GetTemplateRevision(), + }) + } + + return &pbcs.ListTemplateSetsAndRevisionsResp{ + Details: details, + }, nil +} diff --git a/bcs-services/bcs-bscp/cmd/data-service/service/app.go b/bcs-services/bcs-bscp/cmd/data-service/service/app.go index 1338e1db77..2c3828c327 100644 --- a/bcs-services/bcs-bscp/cmd/data-service/service/app.go +++ b/bcs-services/bcs-bscp/cmd/data-service/service/app.go @@ -49,11 +49,11 @@ func (s *Service) CreateApp(ctx context.Context, req *pbds.CreateAppReq) (*pbds. } if _, err := s.dao.App().GetByName(kt, req.BizId, req.Spec.Name); err == nil { - return nil, fmt.Errorf("app name %s already exists", req.Spec.Name) + return nil, errf.Errorf(errf.InvalidRequest, i18n.T(kt, "app name %s already exists", req.Spec.Name)) } if _, err := s.dao.App().GetByAlias(kt, req.BizId, req.Spec.Alias); err == nil { - return nil, fmt.Errorf("app alias %s already exists", req.Spec.Alias) + return nil, errf.Errorf(errf.InvalidRequest, i18n.T(kt, "app alias %s already exists", req.Spec.Alias)) } app := &table.App{ @@ -82,16 +82,16 @@ func (s *Service) UpdateApp(ctx context.Context, req *pbds.UpdateAppReq) (*pbapp old, err := s.dao.App().GetByAlias(grpcKit, req.BizId, req.Spec.Alias) if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { logs.Errorf("get app failed, err: %v, rid: %s", err, grpcKit.Rid) - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(grpcKit, "get app failed, err: %v", err)) } if !errors.Is(gorm.ErrRecordNotFound, err) && old.ID != req.Id { - return nil, fmt.Errorf("app alias %s already exists", req.Spec.Alias) + return nil, errf.Errorf(errf.InvalidRequest, "app alias %s already exists", req.Spec.Alias) } app, err := s.dao.App().Get(grpcKit, req.BizId, req.Id) if err != nil { logs.Errorf("get app failed, err: %v, rid: %s", err, grpcKit.Rid) - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(grpcKit, "get app failed, err: %v", err)) } if app.Spec.ConfigType == table.KV { if e := s.checkUpdateAppDataType(grpcKit, req, app); e != nil { @@ -154,7 +154,7 @@ func (s *Service) checkUpdateAppDataType(kt *kit.Kit, req *pbds.UpdateAppReq, ap } if string(kvType) != req.Spec.DataType { - return fmt.Errorf("the specified type does not match the actual configuration") + return errf.Errorf(errf.InvalidArgument, i18n.T(kt, "the specified type does not match the actual configuration")) } } @@ -178,7 +178,8 @@ func (s *Service) DeleteApp(ctx context.Context, req *pbds.DeleteAppReq) (*pbbas if rErr := tx.Rollback(); rErr != nil { logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, grpcKit.Rid) } - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, + i18n.T(grpcKit, "delete app related resources failed, err: %v", err)) } // 2. delete app @@ -187,12 +188,14 @@ func (s *Service) DeleteApp(ctx context.Context, req *pbds.DeleteAppReq) (*pbbas if rErr := tx.Rollback(); rErr != nil { logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, grpcKit.Rid) } - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, + i18n.T(grpcKit, "delete app failed, err: %v", err)) } if err := tx.Commit(); err != nil { logs.Errorf("commit transaction failed, err: %v, rid: %s", err, grpcKit.Rid) - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, + i18n.T(grpcKit, "delete app failed, err: %v", err)) } return new(pbbase.EmptyResp), nil @@ -412,11 +415,11 @@ func (s *Service) validateBizExist(kt *kit.Kit, bizID uint32) error { bizResp, err := s.esb.Cmdb().SearchBusiness(kt.Ctx, searchBizParams) if err != nil { - return err + return errf.Errorf(errf.InvalidRequest, i18n.T(kt, "business query failed, err: %v", err)) } if bizResp.Count == 0 { - return errf.New(errf.RelatedResNotExist, fmt.Sprintf("app related biz %d is not exist", bizID)) + return errf.Errorf(errf.RelatedResNotExist, i18n.T(kt, "app related biz %d is not exist", bizID)) } return nil diff --git a/bcs-services/bcs-bscp/cmd/data-service/service/app_template_binding.go b/bcs-services/bcs-bscp/cmd/data-service/service/app_template_binding.go index 992482e2b4..d24bd5f71c 100644 --- a/bcs-services/bcs-bscp/cmd/data-service/service/app_template_binding.go +++ b/bcs-services/bcs-bscp/cmd/data-service/service/app_template_binding.go @@ -14,14 +14,17 @@ package service import ( "context" + "errors" "fmt" "path" "strings" "time" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/constant" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/gen" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/logs" pbatb "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/core/app-template-binding" @@ -753,7 +756,7 @@ func (s *Service) genFinalATB(kt *kit.Kit, atb *table.AppTemplateBinding) error // ValidateAppTemplateBindingUniqueKey validate the unique key name+path for an app. // if the unique key name+path exists in table app_template_binding for the app, return error. func (s *Service) ValidateAppTemplateBindingUniqueKey(kt *kit.Kit, bizID, appID uint32, name, - path string) error { + dir string) error { opt := &types.BasePage{All: true} details, _, err := s.dao.AppTemplateBinding().List(kt, bizID, appID, opt) if err != nil { @@ -771,8 +774,9 @@ func (s *Service) ValidateAppTemplateBindingUniqueKey(kt *kit.Kit, bizID, appID return err } for _, tr := range templateRevisions { - if name == tr.Spec.Name && path == tr.Spec.Path { - return fmt.Errorf("config item's same name %s and path %s already exists", name, path) + if name == tr.Spec.Name && dir == tr.Spec.Path { + return errf.Errorf(errf.InvalidRequest, i18n.T(kt, + "the config file %s already exists in this space and cannot be created again", path.Join(dir, name))) } } @@ -1013,3 +1017,263 @@ func findRepeatedElements(slice []types.CIUniqueKey) []types.CIUniqueKey { return repeatedElements } + +// ImportFromTemplateSetToApp 从配置模板导入到服务 +func (s *Service) ImportFromTemplateSetToApp(ctx context.Context, req *pbds.ImportFromTemplateSetToAppReq) ( + *pbbase.EmptyResp, error) { + kit := kit.FromGrpcContext(ctx) + templateIds, templateRevisionIds, latestTemplateIds, templateSetIds, templateSpaceIds := + []uint32{}, []uint32{}, []uint32{}, []uint32{}, []uint32{} + validatedTemplateSetNames := map[uint32]string{} + validatedTemplateSpaceNames := map[uint32]string{} + bindings := make([]*table.TemplateBinding, 0) + for _, binding := range req.GetBindings() { + templateSetIds = append(templateSetIds, binding.GetTemplateSetId()) + templateSpaceIds = append(templateSpaceIds, binding.GetTemplateSpaceId()) + validatedTemplateSetNames[binding.GetTemplateSetId()] = binding.GetTemplateSetName() + validatedTemplateSpaceNames[binding.GetTemplateSpaceId()] = binding.GetTemplateSpaceName() + revisions := make([]*table.TemplateRevisionBinding, 0) + for _, v := range binding.GetTemplateRevisions() { + templateIds = append(templateIds, v.TemplateId) + templateRevisionIds = append(templateRevisionIds, v.TemplateRevisionId) + if v.IsLatest { + latestTemplateIds = append(latestTemplateIds, v.TemplateId) + } + revisions = append(revisions, &table.TemplateRevisionBinding{ + TemplateID: v.TemplateId, + TemplateRevisionID: v.TemplateRevisionId, + IsLatest: v.IsLatest, + }) + } + bindings = append(bindings, &table.TemplateBinding{ + TemplateSetID: binding.TemplateSetId, + TemplateRevisions: revisions, + }) + } + + templateSets, err := s.dao.TemplateSet().ListByIDs(kit, templateSetIds) + if err != nil { + return nil, errf.Errorf(errf.DBOpFailed, + i18n.T(kit, "list template sets by template set ids failed, err: %v", err)) + } + + // 1. 验证模板空间 + if err := s.verifyTemplateSpaces(kit, templateSpaceIds, validatedTemplateSpaceNames); err != nil { + return nil, err + } + + // 2. 验证模板套餐 + if err := s.verifyTemplateSets(kit, templateSets, validatedTemplateSetNames); err != nil { + return nil, err + } + + // 3. 验证模板文件和模板版本数据 + if err := s.verifyTemplateSetAndRevisions(kit, validatedTemplateSetNames, req.GetBindings()); err != nil { + return nil, err + } + + // 4. 验证是否超出服务限制 + if err := s.verifyTemplateSetBoundTemplatesNumber(kit, templateSets, req); err != nil { + return nil, err + } + + tx := s.dao.GenQuery().Begin() + appTemplateBinding := &table.AppTemplateBinding{ + Spec: &table.AppTemplateBindingSpec{ + TemplateSpaceIDs: tools.RemoveDuplicates(templateSpaceIds), + TemplateSetIDs: tools.RemoveDuplicates(templateSetIds), + TemplateIDs: tools.RemoveDuplicates(templateIds), + TemplateRevisionIDs: tools.RemoveDuplicates(templateRevisionIds), + LatestTemplateIDs: tools.RemoveDuplicates(latestTemplateIds), + Bindings: bindings, + }, + Attachment: &table.AppTemplateBindingAttachment{ + BizID: req.BizId, + AppID: req.AppId, + }, + Revision: &table.Revision{ + Creator: kit.User, + Reviser: kit.User, + CreatedAt: time.Now().UTC(), + UpdatedAt: time.Now().UTC(), + }, + } + + if err := s.dao.AppTemplateBinding().UpsertWithTx(kit, tx, appTemplateBinding); err != nil { + logs.Errorf("update app template binding failed, err: %v, rid: %s", err, kit.Rid) + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kit, "update app template binding failed, err: %v", err)) + } + + if err := tx.Commit(); err != nil { + logs.Errorf("commit transaction failed, err: %v, rid: %s", err, kit.Rid) + return nil, err + } + + return &pbbase.EmptyResp{}, nil +} + +// 验证模板空间 +func (s *Service) verifyTemplateSpaces(kit *kit.Kit, templateSpaceIds []uint32, + templateSpaceNames map[uint32]string) error { + + templateSpaces, err := s.dao.TemplateSpace().ListByIDs(kit, templateSpaceIds) + if err != nil { + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "list template spaces failed, err: %v", err)) + } + + existingTemplateSpaces := map[uint32]bool{} + for _, v := range templateSpaces { + existingTemplateSpaces[v.ID] = true + } + + for k, v := range templateSpaceNames { + if !existingTemplateSpaces[k] { + return errf.Errorf(errf.NotFound, i18n.T(kit, "template space %s not found", v)) + } + } + + return nil +} + +// 验证模板套餐 +func (s *Service) verifyTemplateSets(kit *kit.Kit, templateSets []*table.TemplateSet, + validatedTemplateSetNames map[uint32]string) error { + + existsTemplateSet := map[uint32]bool{} + for _, v := range templateSets { + existsTemplateSet[v.ID] = true + } + + for k, v := range validatedTemplateSetNames { + if !existsTemplateSet[k] { + return errf.Errorf(errf.NotFound, i18n.T(kit, "template set %s not found", v)) + } + } + + return nil +} + +// 验证模板配置是否存在 +// 验证模板版本是否存在 +// 验证待提交latest版本是不是latest的 +func (s *Service) verifyTemplateSetAndRevisions(kit *kit.Kit, validatedTemplateSetNames map[uint32]string, + bindings []*pbds.ImportFromTemplateSetToAppReq_Binding) error { + + // 模板套餐下的模板配置id 和 模板配置下的模板版本id + templateSetAndTemplateIds, templateAndRevisionIds := map[uint32][]uint32{}, map[uint32][]uint32{} + // 模板配置名称 和 模板版本名称 + templateNames, revisionNames := map[uint32]string{}, map[uint32]string{} + // 待验证的latest版本 + validatedLatest := map[uint32]uint32{} + latestTemplateIds, templateIds, templateRevisionIds := []uint32{}, []uint32{}, []uint32{} + for _, binding := range bindings { + for _, v := range binding.GetTemplateRevisions() { + templateIds = append(templateIds, v.TemplateId) + templateRevisionIds = append(templateRevisionIds, v.TemplateRevisionId) + templateSetAndTemplateIds[binding.TemplateSetId] = append(templateSetAndTemplateIds[binding.TemplateSetId], + v.TemplateId) + templateAndRevisionIds[v.TemplateId] = append(templateAndRevisionIds[v.TemplateId], + v.TemplateRevisionId) + templateNames[v.TemplateId] = v.TemplateName + revisionNames[v.TemplateRevisionId] = v.TemplateRevisionName + if v.IsLatest { + latestTemplateIds = append(latestTemplateIds, v.TemplateId) + validatedLatest[v.TemplateId] = v.TemplateRevisionId + } + } + } + + // 获取指定的模板配置 + existsTemplateIds := map[uint32]bool{} + templates, err := s.dao.Template().ListByIDs(kit, templateIds) + if err != nil { + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "list templates of template set failed, err: %v", err)) + } + for _, v := range templates { + existsTemplateIds[v.ID] = true + } + + for sId, tId := range templateSetAndTemplateIds { + for _, v := range tId { + if !existsTemplateIds[v] { + return errors.New(i18n.T(kit, `the template file %s in the template set + %s has been removed. Please import the set again`, + validatedTemplateSetNames[sId], templateNames[v])) + } + } + } + + // 获取指定的模板版本 + existsRevisionsIds := map[uint32]bool{} + revisions, err := s.dao.TemplateRevision().ListByIDs(kit, templateRevisionIds) + if err != nil { + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "list template revisions failed, err: %v", err)) + } + for _, v := range revisions { + existsRevisionsIds[v.ID] = true + } + + for tId, rId := range templateAndRevisionIds { + for _, v := range rId { + if !existsRevisionsIds[v] { + return errors.New(i18n.T(kit, `template version %s in template file %s + has been removed. Please import the set again`, + revisionNames[v], templateNames[tId])) + } + } + } + + // 获取指定模板最新的模板版本 + latest, err := s.dao.TemplateRevision().ListLatestRevisionsGroupByTemplateIds(kit, latestTemplateIds) + if err != nil { + return err + } + for _, v := range latest { + if rid, ok := validatedLatest[v.Attachment.TemplateID]; ok && rid == v.ID { + continue + } + return errors.New(i18n.T(kit, `the version number %s in the template file %s is not the + latest version. Please import the set again`, + templateNames[v.Attachment.TemplateID], revisionNames[v.ID])) + } + + return nil +} + +// 模板套餐导入服务时验证是否超出服务限制 +// nolint:goconst +func (s *Service) verifyTemplateSetBoundTemplatesNumber(kt *kit.Kit, templateSets []*table.TemplateSet, + req *pbds.ImportFromTemplateSetToAppReq) error { + + var templateCount int + for _, v := range templateSets { + templateCount += len(v.Spec.TemplateIDs) + } + + // 1. 获取未命名版本配置文件数量 + configItemCount, err := s.dao.ConfigItem().GetConfigItemCount(kt, req.BizId, req.AppId) + if err != nil { + return errf.Errorf(errf.DBOpFailed, i18n.T(kt, "count the number of service configurations failed, err: %s", err)) + } + + // 获取app信息 + app, err := s.dao.App().GetByID(kt, req.AppId) + if err != nil { + return errf.Errorf(errf.AppNotExists, i18n.T(kt, "app %d not found", req.AppId)) + } + + // 只有文件类型的才能绑定套餐 + if app.Spec.ConfigType != table.File { + return errf.Errorf(errf.DBOpFailed, i18n.T(kt, "app %s is not file type", app.Spec.Name)) + } + + appConfigCnt := getAppConfigCnt(req.BizId) + + if int(configItemCount)+templateCount > appConfigCnt { + return errf.New(errf.InvalidParameter, + i18n.T(kt, "the total number of app %s config items(including template and non-template)"+ + "exceeded the limit %d", app.Spec.Name, appConfigCnt)) + } + + return nil +} diff --git a/bcs-services/bcs-bscp/cmd/data-service/service/config_item.go b/bcs-services/bcs-bscp/cmd/data-service/service/config_item.go index de33ef1564..62d5418b3c 100644 --- a/bcs-services/bcs-bscp/cmd/data-service/service/config_item.go +++ b/bcs-services/bcs-bscp/cmd/data-service/service/config_item.go @@ -60,8 +60,9 @@ func (s *Service) CreateConfigItem(ctx context.Context, req *pbds.CreateConfigIt // validate in table config_items if tools.CheckPathConflict(path.Join(req.ConfigItemSpec.Path, req.ConfigItemSpec.Name), existingPaths) { - return nil, fmt.Errorf("config item's same name %s and path %s already exists", - req.ConfigItemSpec.Name, req.ConfigItemSpec.Path) + return nil, errf.Errorf(errf.InvalidRequest, + i18n.T(grpcKit, "the config file %s under this service already exists and cannot be created again", + path.Join(req.ConfigItemSpec.Path, req.ConfigItemSpec.Name))) } tx := s.dao.GenQuery().Begin() @@ -166,7 +167,7 @@ func (s *Service) BatchUpsertConfigItems(ctx context.Context, req *pbds.BatchUps Name: item.GetConfigItemSpec().GetName(), Path: item.GetConfigItemSpec().GetPath(), }) } - if err = tools.DetectFilePathConflicts(file2, file1); err != nil { + if err = tools.DetectFilePathConflicts(grpcKit, file2, file1); err != nil { return nil, err } @@ -355,7 +356,7 @@ func (s *Service) verifyAppLimitHasBeenExceeded(kit *kit.Kit, tx *gen.QueryTx, b app, err := s.dao.App().GetByID(kit, appID) if err != nil { - return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "list apps by app ids failed, err: %s", err)) + return errf.Errorf(errf.AppNotExists, i18n.T(kit, "app %d not found", appID)) } // 只有文件类型的才能绑定套餐 @@ -366,7 +367,7 @@ func (s *Service) verifyAppLimitHasBeenExceeded(kit *kit.Kit, tx *gen.QueryTx, b // 非模板配置数+当前套餐配置数+历史套餐配置数+待创建的配置项数 if int(configItemCount)+currentTemplateSetNum+historyTemplateSetNum+createConfigItemNum > appConfigCnt { return errf.New(errf.InvalidParameter, - fmt.Sprintf("the total number of app %s's config items(including template and non-template)"+ + i18n.T(kit, "the total number of app %s config items(including template and non-template)"+ "exceeded the limit %d", app.Spec.Name, appConfigCnt)) } @@ -1096,10 +1097,9 @@ func (s *Service) ListConfigItems(ctx context.Context, req *pbds.ListConfigItems } // 如果有topID则按照topID排最前面 - topId, _ := tools.StrToUint32Slice(req.Ids) sort.SliceStable(configItems, func(i, j int) bool { - iInTopID := tools.Contains(topId, configItems[i].Id) - jInTopID := tools.Contains(topId, configItems[j].Id) + iInTopID := tools.Contains(req.Ids, configItems[i].Id) + jInTopID := tools.Contains(req.Ids, configItems[j].Id) if iInTopID && jInTopID { return i < j } @@ -1276,7 +1276,7 @@ func (s *Service) UnDeleteConfigItem(ctx context.Context, req *pbds.UnDeleteConf }) } - if err = tools.DetectFilePathConflicts(file1, file2); err != nil { + if err = tools.DetectFilePathConflicts(grpcKit, file1, file2); err != nil { return nil, err } diff --git a/bcs-services/bcs-bscp/cmd/data-service/service/kv.go b/bcs-services/bcs-bscp/cmd/data-service/service/kv.go index 9d77d1e9b6..b1962d6bc5 100644 --- a/bcs-services/bcs-bscp/cmd/data-service/service/kv.go +++ b/bcs-services/bcs-bscp/cmd/data-service/service/kv.go @@ -42,19 +42,22 @@ func (s *Service) CreateKv(ctx context.Context, req *pbds.CreateKvReq) (*pbds.Cr []string{string(table.KvStateAdd), string(table.KvStateUnchange), string(table.KvStateRevise)}) if err != nil && !errors.Is(gorm.ErrRecordNotFound, err) { logs.Errorf("get kv (%d) failed, err: %v, rid: %s", req.Spec.Key, err, kt.Rid) - return nil, err + return nil, errf.Errorf(errf.NotFound, + i18n.T(kt, "get kv (%d) failed, err: %v", req.Spec.Key, err)) } if !errors.Is(gorm.ErrRecordNotFound, err) { logs.Errorf("get kv (%d) failed, err: %v, rid: %s", req.Spec.Key, err, kt.Rid) - return nil, fmt.Errorf("kv same key %s already exists", req.Spec.Key) + return nil, errf.Errorf(errf.DBOpFailed, + i18n.T(kt, "the config item %s under this service already exists and cannot be created again", req.Spec.Key)) } // get app with id. app, err := s.dao.App().Get(kt, req.Attachment.BizId, req.Attachment.AppId) if err != nil { - return nil, fmt.Errorf("get app fail,err : %v", req.Spec.Key) + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "get app fail, key: %s, err: %v", req.Spec.Key, err)) } if !checkKVTypeMatch(table.DataType(req.Spec.KvType), app.Spec.DataType) { - return nil, fmt.Errorf("kv type does not match the data type defined in the application") + return nil, errf.Errorf(errf.InvalidRequest, + i18n.T(kt, "kv type does not match the data type defined in the application")) } opt := &types.UpsertKvOption{ @@ -68,7 +71,7 @@ func (s *Service) CreateKv(ctx context.Context, req *pbds.CreateKvReq) (*pbds.Cr version, err := s.vault.UpsertKv(kt, opt) if err != nil { logs.Errorf("create kv failed, err: %v, rid: %s", err, kt.Rid) - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "create kv failed, err: %v", err)) } kv := &table.Kv{ @@ -90,12 +93,11 @@ func (s *Service) CreateKv(ctx context.Context, req *pbds.CreateKvReq) (*pbds.Cr id, err := s.dao.Kv().Create(kt, kv) if err != nil { logs.Errorf("create kv failed, err: %v, rid: %s", err, kt.Rid) - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "create kv failed, err: %v", err)) } resp := &pbds.CreateResp{Id: id} return resp, nil - } // check KV Type Match @@ -116,7 +118,8 @@ func (s *Service) UpdateKv(ctx context.Context, req *pbds.UpdateKvReq) (*pbbase. []string{string(table.KvStateAdd), string(table.KvStateUnchange), string(table.KvStateRevise)}) if err != nil { logs.Errorf("get kv (%d) failed, err: %v, rid: %s", req.Spec.Key, err, kt.Rid) - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, + i18n.T(kt, "get kv (%d) failed, err: %v", req.Spec.Key, err)) } opt := &types.UpsertKvOption{ @@ -129,8 +132,7 @@ func (s *Service) UpdateKv(ctx context.Context, req *pbds.UpdateKvReq) (*pbbase. // UpsertKv 创建|更新kv version, err := s.vault.UpsertKv(kt, opt) if err != nil { - logs.Errorf("update kv failed, err: %v, rid: %s", err, kt.Rid) - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "update kv failed, err: %v", err)) } if kv.KvState == table.KvStateUnchange { @@ -151,7 +153,7 @@ func (s *Service) UpdateKv(ctx context.Context, req *pbds.UpdateKvReq) (*pbbase. } if e := s.dao.Kv().Update(kt, kv); e != nil { logs.Errorf("update kv failed, err: %v, rid: %s", e, kt.Rid) - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "update kv failed, err: %v", err)) } return new(pbbase.EmptyResp), nil diff --git a/bcs-services/bcs-bscp/cmd/data-service/service/template.go b/bcs-services/bcs-bscp/cmd/data-service/service/template.go index 310d937358..1e3bd33720 100644 --- a/bcs-services/bcs-bscp/cmd/data-service/service/template.go +++ b/bcs-services/bcs-bscp/cmd/data-service/service/template.go @@ -56,8 +56,10 @@ func (s *Service) CreateTemplate(ctx context.Context, req *pbds.CreateTemplateRe existingPaths = append(existingPaths, path.Join(v.Spec.Path, v.Spec.Name)) } + // 1. 同一空间不能出现相同绝对路径的配置文件且同路径下不能出现同名的文件夹和文件 比如: /a.txt 和 /a/1.txt if tools.CheckPathConflict(path.Join(req.Spec.Path, req.Spec.Name), existingPaths) { - return nil, fmt.Errorf("config item's same name %s and path %s already exists", req.Spec.Name, req.Spec.Path) + return nil, errors.New(i18n.T(kt, "the config file %s already exists in this space and cannot be created again", + path.Join(req.Spec.Path, req.Spec.Name))) } if len(req.TemplateSetIds) > 0 { @@ -69,7 +71,37 @@ func (s *Service) CreateTemplate(ctx context.Context, req *pbds.CreateTemplateRe tx := s.dao.GenQuery().Begin() - // 1. create template + // 2. 验证套餐是否超出 + templateSets, err := s.verifyTemplateSetAndReturnData(kt, tx, req.GetAttachment().BizId, + req.GetTemplateSetIds(), []uint32{}, 1) + if err != nil { + if rErr := tx.Rollback(); rErr != nil { + logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) + } + return nil, err + } + + // 3. 通过套餐获取绑定的服务数据 + bindings, err := s.dao.AppTemplateBinding().GetBindingAppByTemplateSetID(kt, req.GetAttachment().BizId, + req.GetTemplateSetIds()) + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + if rErr := tx.Rollback(); rErr != nil { + logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) + } + return nil, errf.Errorf(errf.DBOpFailed, + i18n.T(kt, "get app template bindings by template set ids, err: %s", err)) + } + + // 4. 验证服务套餐下是否超出限制 + if err = s.verifyAppReferenceTmplSetExceedsLimit(kt, req.GetAttachment().BizId, bindings, req.GetTemplateSetIds(), + []uint32{}, 1); err != nil { + if rErr := tx.Rollback(); rErr != nil { + logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) + } + return nil, err + } + + // 5. create template template := &table.Template{ Spec: req.Spec.TemplateSpec(), Attachment: req.Attachment.TemplateAttachment(), @@ -79,7 +111,7 @@ func (s *Service) CreateTemplate(ctx context.Context, req *pbds.CreateTemplateRe }, } // CreateWithTx create one template instance with transaction. - id, err := s.dao.Template().CreateWithTx(kt, tx, template) + templateID, err := s.dao.Template().CreateWithTx(kt, tx, template) if err != nil { logs.Errorf("create template failed, err: %v, rid: %s", err, kt.Rid) if rErr := tx.Rollback(); rErr != nil { @@ -88,18 +120,7 @@ func (s *Service) CreateTemplate(ctx context.Context, req *pbds.CreateTemplateRe return nil, err } - // validate template set's templates count. - for _, tmplSetID := range req.TemplateSetIds { - if err = s.dao.TemplateSet().ValidateTmplNumber(kt, tx, req.Attachment.BizId, tmplSetID); err != nil { - logs.Errorf("validate template set's templates count failed, err: %v, rid: %s", err, kt.Rid) - if rErr := tx.Rollback(); rErr != nil { - logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) - } - return nil, err - } - } - - // 2. create template revision + // 6. create template revision spec := req.TrSpec.TemplateRevisionSpec() // if no revision name is specified, generate it by system if spec.RevisionName == "" { @@ -110,12 +131,13 @@ func (s *Service) CreateTemplate(ctx context.Context, req *pbds.CreateTemplateRe Attachment: &table.TemplateRevisionAttachment{ BizID: template.Attachment.BizID, TemplateSpaceID: template.Attachment.TemplateSpaceID, - TemplateID: id, + TemplateID: templateID, }, Revision: &table.CreatedRevision{ Creator: kt.User, }, } + // CreateWithTx create one template revision instance with transaction. if _, err = s.dao.TemplateRevision().CreateWithTx(kt, tx, templateRevision); err != nil { logs.Errorf("create template revision failed, err: %v, rid: %s", err, kt.Rid) @@ -125,44 +147,45 @@ func (s *Service) CreateTemplate(ctx context.Context, req *pbds.CreateTemplateRe return nil, err } - // 3. add current template to template sets if necessary - if len(req.TemplateSetIds) > 0 { - if err = s.dao.TemplateSet().AddTmplToTmplSetsWithTx(kt, tx, id, req.TemplateSetIds); err != nil { - logs.Errorf("add current template to template sets failed, err: %v, rid: %s", err, kt.Rid) - if rErr := tx.Rollback(); rErr != nil { - logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) - } - return nil, err + // 7. 处理和服务之前的绑定关系 + appTemplateBindings, errH := s.handleAppTemplateBindings(kt, tx, req.GetAttachment().BizId, bindings, + req.GetTemplateSetIds(), []uint32{templateID}) + if errH != nil { + if rErr := tx.Rollback(); rErr != nil { + logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) } + return nil, errH + } - // 3-1. update app template bindings if necessary - atbs, err := s.dao.TemplateBindingRelation(). - ListTemplateSetsBoundATBs(kt, template.Attachment.BizID, req.TemplateSetIds) - if err != nil { - logs.Errorf("list template sets bound app template bindings failed, err: %v, rid: %s", err, kt.Rid) + // 8. 更新引用的服务 + if len(appTemplateBindings) > 0 { + if err = s.dao.AppTemplateBinding().BatchUpdateWithTx(kt, tx, appTemplateBindings); err != nil { + logs.Errorf("batch update app template binding's failed, err: %v, rid: %s", err, kt.Rid) if rErr := tx.Rollback(); rErr != nil { logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) } - return nil, err + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "batch update app template binding's failed, err: %s", err)) } - if len(atbs) > 0 { - for _, atb := range atbs { - if err := s.CascadeUpdateATB(kt, tx, atb); err != nil { - logs.Errorf("cascade update app template binding failed, err: %v, rid: %s", err, kt.Rid) - if rErr := tx.Rollback(); rErr != nil { - logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) - } - return nil, err - } - } + } + + for _, v := range templateSets { + v.Spec.TemplateIDs = tools.MergeAndDeduplicate(v.Spec.TemplateIDs, []uint32{templateID}) + } + + // 9. 添加至模板套餐中 + if err := s.dao.TemplateSet().BatchAddTmplsToTmplSetsWithTx(kt, tx, templateSets); err != nil { + logs.Errorf("batch add templates to template sets failed, err: %v, rid: %s", err, kt.Rid) + if rErr := tx.Rollback(); rErr != nil { + logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) } + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "batch add templates to template sets failed, err: %s", err)) } if err := tx.Commit(); err != nil { logs.Errorf("commit transaction failed, err: %v, rid: %s", err, kt.Rid) return nil, err } - return &pbds.CreateResp{Id: id}, nil + return &pbds.CreateResp{Id: templateID}, nil } // ListTemplates list templates. @@ -178,10 +201,9 @@ func (s *Service) ListTemplates(ctx context.Context, req *pbds.ListTemplatesReq) if err != nil { return nil, err } - topIds, _ := tools.StrToUint32Slice(req.Ids) // List templates with options. details, count, err := s.dao.Template().List(kt, req.BizId, req.TemplateSpaceId, searcher, - opt, topIds, req.SearchValue) + opt, req.Ids, req.SearchValue) if err != nil { logs.Errorf("list templates failed, err: %v, rid: %s", err, kt.Rid) @@ -578,7 +600,7 @@ func (s *Service) DeleteTmplsFromTmplSets(ctx context.Context, req *pbds.DeleteT logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) } return nil, errf.Errorf(errf.DBOpFailed, - i18n.T(kt, "delete template from template sets failed, err: %v, rid: %s", err, kt.Rid)) + i18n.T(kt, "delete template from template sets failed, err: %v", err)) } // 3. 通过套餐获取绑定的服务数据 @@ -588,7 +610,7 @@ func (s *Service) DeleteTmplsFromTmplSets(ctx context.Context, req *pbds.DeleteT logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) } return nil, errf.Errorf(errf.DBOpFailed, - i18n.T(kt, "get app template bindings by template set ids, err: %s", err)) + i18n.T(kt, "get app template bindings by template set ids, err: %v", err)) } // 4. 移除服务引用套餐下的模板 @@ -600,13 +622,14 @@ func (s *Service) DeleteTmplsFromTmplSets(ctx context.Context, req *pbds.DeleteT logs.Errorf("transaction rollback failed, err: %v, rid: %s", rErr, kt.Rid) } return nil, errf.Errorf(errf.DBOpFailed, - i18n.T(kt, "batch update app template binding's failed, err: %s", err)) + i18n.T(kt, "batch update app template binding's failed, err: %v", err)) } } if e := tx.Commit(); e != nil { logs.Errorf("commit transaction failed, err: %v, rid: %s", e, kt.Rid) - return nil, e + return nil, errf.Errorf(errf.DBOpFailed, + i18n.T(kt, "delete template from template sets failed, err: %v", e)) } return new(pbbase.EmptyResp), nil @@ -769,10 +792,9 @@ func (s *Service) ListTmplsOfTmplSet(ctx context.Context, req *pbds.ListTmplsOfT } details = newDetails } - topId, _ := tools.StrToUint32Slice(req.Ids) sort.SliceStable(details, func(i, j int) bool { - iInTopID := tools.Contains(topId, details[i].Id) - jInTopID := tools.Contains(topId, details[j].Id) + iInTopID := tools.Contains(req.Ids, details[i].Id) + jInTopID := tools.Contains(req.Ids, details[j].Id) if iInTopID && jInTopID { return i < j } @@ -1237,7 +1259,7 @@ func (s *Service) verifyTemplateSetAndReturnData(kt *kit.Kit, tx *gen.QueryTx, b mergedIDs := tools.MergeAndDeduplicate(v.Spec.TemplateIDs, templateIDs) if len(mergedIDs)+additionalQuantity > tmplSetTmplCnt { return nil, errf.New(errf.InvalidParameter, - fmt.Sprintf("the total number of template set %s's templates exceeded the limit %d", + i18n.T(kt, "the total number of template set %s templates exceeded the limit %d", v.Spec.Name, tmplSetTmplCnt)) } v.Spec.TemplateIDs = mergedIDs @@ -1295,7 +1317,7 @@ func (s *Service) verifyAppReferenceTmplSetExceedsLimit(kt *kit.Kit, bizID uint3 mergedIDs := tools.MergeAndDeduplicate(excludedTemplateSetIDs[spec.TemplateSetID], templateIDs) if len(mergedIDs)+configCountWithTemplates[templateBinding.Attachment.AppID] > appConfigCnt { return errf.New(errf.InvalidParameter, - fmt.Sprintf("the total number of app %s's config items(including template and non-template)"+ + i18n.T(kt, "the total number of app %s config items(including template and non-template)"+ "exceeded the limit %d", configItemName[templateBinding.Attachment.AppID], appConfigCnt)) } } diff --git a/bcs-services/bcs-bscp/cmd/data-service/service/template_binding_relation.go b/bcs-services/bcs-bscp/cmd/data-service/service/template_binding_relation.go index 98d15d19ee..7d7635bb67 100644 --- a/bcs-services/bcs-bscp/cmd/data-service/service/template_binding_relation.go +++ b/bcs-services/bcs-bscp/cmd/data-service/service/template_binding_relation.go @@ -1313,13 +1313,13 @@ func (s *Service) CheckTemplateSetReferencesApps(ctx context.Context, req *pbds. } } - templateSet, err := s.checkTemplateSetExceedsLimit(kit, req.BizId, + templateSet, templateSetExceedsQuantity, err := s.checkTemplateSetExceedsLimit(kit, req.BizId, req.GetTemplateSetIds(), templateIDs, createTemplateNum) if err != nil { return nil, err } - appReferenceTmplSet, err := s.checkAppReferenceTmplSetExceedsLimit(kit, req.BizId, + appReferenceTmplSet, appExceedsQuantity, err := s.checkAppReferenceTmplSetExceedsLimit(kit, req.BizId, req.GetTemplateSetIds(), templateIDs, createTemplateNum) if err != nil { return nil, err @@ -1330,19 +1330,22 @@ func (s *Service) CheckTemplateSetReferencesApps(ctx context.Context, req *pbds. if len(item) > 0 { for _, appId := range item { results = append(results, &pbds.CheckTemplateSetReferencesAppsResp_Item{ - TemplateSetId: setId, - TemplateSetName: templateSetNames[setId], - AppId: appId, - AppName: appNames[appId], - AppExceedsLimit: appReferenceTmplSet[appId], - TemplateSetExceedsLimit: templateSet[setId], + TemplateSetId: setId, + TemplateSetName: templateSetNames[setId], + AppId: appId, + AppName: appNames[appId], + AppExceedsLimit: appReferenceTmplSet[appId], + TemplateSetExceedsLimit: templateSet[setId], + AppExceedsQuantity: appExceedsQuantity[appId], + TemplateSetExceedsQuantity: templateSetExceedsQuantity[setId], }) } } else { results = append(results, &pbds.CheckTemplateSetReferencesAppsResp_Item{ - TemplateSetId: setId, - TemplateSetName: templateSetNames[setId], - TemplateSetExceedsLimit: templateSet[setId], + TemplateSetId: setId, + TemplateSetName: templateSetNames[setId], + TemplateSetExceedsLimit: templateSet[setId], + TemplateSetExceedsQuantity: templateSetExceedsQuantity[setId], }) } } @@ -1354,43 +1357,45 @@ func (s *Service) CheckTemplateSetReferencesApps(ctx context.Context, req *pbds. // 检测某个套餐是否超出限制 func (s *Service) checkTemplateSetExceedsLimit(kt *kit.Kit, bizID uint32, templateSetIds []uint32, - templateIDs []uint32, additionalQuantity int) (map[uint32]bool, error) { + templateIDs []uint32, additionalQuantity int) (map[uint32]bool, map[uint32]uint32, error) { tmplSetTmplCnt := getTmplSetTmplCnt(bizID) // 1. 查询套餐数据 templateSets, err := s.dao.TemplateSet().ListByIDs(kt, templateSetIds) if err != nil { - return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "get template set failed, err: %s", err)) + return nil, nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "get template set failed, err: %s", err)) } exceedsLimit := map[uint32]bool{} - + exceedsQuantity := map[uint32]uint32{} // 2. 验证是否超出套餐限制 for _, v := range templateSets { mergedIDs := tools.MergeAndDeduplicate(v.Spec.TemplateIDs, templateIDs) - if len(mergedIDs)+additionalQuantity > tmplSetTmplCnt { + quantity := len(mergedIDs) + additionalQuantity + if quantity > tmplSetTmplCnt { exceedsLimit[v.ID] = true + exceedsQuantity[v.ID] = uint32(quantity) } } - return exceedsLimit, nil + return exceedsLimit, exceedsQuantity, nil } // 检测某个服务是否超出限制 func (s *Service) checkAppReferenceTmplSetExceedsLimit(kt *kit.Kit, bizID uint32, templateSetIDs, - templateIDs []uint32, additionalQuantity int) (map[uint32]bool, error) { + templateIDs []uint32, additionalQuantity int) (map[uint32]bool, map[uint32]uint32, error) { // 4. 通过套餐获取绑定的服务数据 bindings, err := s.dao.AppTemplateBinding().GetBindingAppByTemplateSetID(kt, bizID, templateSetIDs) if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { - return nil, errf.Errorf(errf.DBOpFailed, + return nil, nil, errf.Errorf(errf.DBOpFailed, i18n.T(kt, "get app template bindings by template set ids, err: %s", err)) } if bindings == nil { - return nil, nil + return nil, nil, nil } betectedTemplateSetIDs := make(map[uint32]bool, 0) @@ -1404,10 +1409,11 @@ func (s *Service) checkAppReferenceTmplSetExceedsLimit(kt *kit.Kit, bizID uint32 configCountWithTemplates, excludedTemplateSetIDs, err := s.countNumberAppTemplateBindings(kt, bizID, bindings, betectedTemplateSetIDs, additionalQuantity) if err != nil { - return nil, err + return nil, nil, err } exceedsLimit := map[uint32]bool{} + exceedsQuantity := map[uint32]uint32{} for _, templateBinding := range bindings { for _, spec := range templateBinding.Spec.Bindings { // 不需要处理的套餐忽略掉 @@ -1417,11 +1423,13 @@ func (s *Service) checkAppReferenceTmplSetExceedsLimit(kt *kit.Kit, bizID uint32 // 需验证套餐数量是否超出限制 // 需要验证的套餐配置ID和需要操作的配置文件ID合并,判断是否超出限制 mergedIDs := tools.MergeAndDeduplicate(excludedTemplateSetIDs[spec.TemplateSetID], templateIDs) - if len(mergedIDs)+configCountWithTemplates[templateBinding.Attachment.AppID] > appConfigCnt { + quantity := len(mergedIDs) + configCountWithTemplates[templateBinding.Attachment.AppID] + if quantity > appConfigCnt { exceedsLimit[templateBinding.Attachment.AppID] = true + exceedsQuantity[templateBinding.Attachment.AppID] = uint32(quantity) } } } - return exceedsLimit, nil + return exceedsLimit, exceedsQuantity, nil } diff --git a/bcs-services/bcs-bscp/cmd/data-service/service/template_set.go b/bcs-services/bcs-bscp/cmd/data-service/service/template_set.go index 28ac9727fd..d44cbc50bf 100644 --- a/bcs-services/bcs-bscp/cmd/data-service/service/template_set.go +++ b/bcs-services/bcs-bscp/cmd/data-service/service/template_set.go @@ -17,10 +17,14 @@ import ( "errors" "fmt" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/logs" pbbase "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/core/base" + pbtemplate "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/core/template" + pbtr "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/core/template-revision" pbtset "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/core/template-set" pbds "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/data-service" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/search" @@ -441,3 +445,55 @@ func (s *Service) ListTmplSetsOfBiz(ctx context.Context, req *pbds.ListTmplSetsO } return resp, nil } + +// ListTemplateSetsAndRevisions 获取模板套餐下所有的模板版本 +func (s *Service) ListTemplateSetsAndRevisions(ctx context.Context, req *pbds.ListTemplateSetsAndRevisionsReq) ( + *pbds.ListTemplateSetsAndRevisionsResp, error) { + + kit := kit.FromGrpcContext(ctx) + + // 获取模板套餐数据 + templateSet, err := s.dao.TemplateSet().GetByTemplateSetByID(kit, req.BizId, req.TemplateSetId) + if err != nil { + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kit, "get template set data failed, err: %s", err)) + } + + if templateSet == nil { + return nil, errors.New(i18n.T(kit, "template set data is empty")) + } + + templateIDs := tools.RemoveDuplicates(templateSet.Spec.TemplateIDs) + + // 获取模板数据 + templates, err := s.dao.Template().ListByIDs(kit, templateIDs) + if err != nil { + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kit, "list templates data failed, err: %s", err)) + } + + if templates == nil { + return nil, errors.New(i18n.T(kit, "template data is empty")) + } + + revisions, err := s.dao.TemplateRevision().ListByTemplateIDs(kit, req.BizId, templateIDs) + if err != nil { + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kit, "list templates revisions data failed, err: %s", err)) + } + + templateRevisionsMap := make(map[uint32][]*pbtr.TemplateRevision, 0) + for _, v := range revisions { + templateRevisionsMap[v.Attachment.TemplateID] = append(templateRevisionsMap[v.Attachment.TemplateID], + pbtr.PbTemplateRevision(v)) + } + + result := make([]*pbds.ListTemplateSetsAndRevisionsResp_Detail, 0) + for _, v := range templates { + result = append(result, &pbds.ListTemplateSetsAndRevisionsResp_Detail{ + Template: pbtemplate.PbTemplate(v), + TemplateRevision: templateRevisionsMap[v.ID], + }) + } + + return &pbds.ListTemplateSetsAndRevisionsResp{ + Details: result, + }, nil +} diff --git a/bcs-services/bcs-bscp/pkg/criteria/validator/file.go b/bcs-services/bcs-bscp/pkg/criteria/validator/file.go index aa9ad8aa55..a2ce422654 100644 --- a/bcs-services/bcs-bscp/pkg/criteria/validator/file.go +++ b/bcs-services/bcs-bscp/pkg/criteria/validator/file.go @@ -14,32 +14,34 @@ package validator import ( - "errors" "fmt" "path/filepath" "regexp" "strings" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/constant" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // validUnixFileSubPathRegexp sub path support character: -// chinese, english, number, '-', '_', '#', '%', ',', '@', '^', '+', '=', '[', ']', '{', '}, '{'. '}'. +// chinese, english, number, '-', '_', '#', '%', ',', '@', '^', '+', '=', '[', ']', '{', '}, '.' var validUnixFileSubPathRegexp = regexp.MustCompile("^[\u4e00-\u9fa5A-Za-z0-9-_#%,.@^+=\\[\\]{}]+$") // ValidateUnixFilePath validate unix os file path. -func ValidateUnixFilePath(path string) error { +func ValidateUnixFilePath(kit *kit.Kit, path string) error { if len(path) < 1 { - return errors.New("invalid path, length should >= 1") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid path, length should >= 1")) } if len(path) > 1024 { - return errors.New("invalid path, length should <= 1024") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid path, length should <= 1024")) } // 1. should start with '/' if !strings.HasPrefix(path, "/") { - return fmt.Errorf("invalid path, should start with '/'") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid path, should start with '/'")) } // Split the path into parts @@ -54,15 +56,16 @@ func ValidateUnixFilePath(path string) error { // 2. the verification path cannot all be '{'. '}' if dotsRegexp.MatchString(part) { - return fmt.Errorf("invalid path %s, path cannot all be '{'. '}'", part) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid path %s, path cannot all be '.' ", part)) } // 3. each sub path support character: // chinese, english, number, '-', '_', '#', '%', ',', '@', '^', '+', '=', '[', ']', '{', '}' if !validUnixFileSubPathRegexp.MatchString(part) { - return fmt.Errorf("invalid path, each sub path should only contain chinese, english, " + - "number, '-', '_', '#', '%%', ',', '@', '^', '+', '=', '[', ']', '{', '}', '{'. '}") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, fmt.Sprintf(`invalid path, each sub path should only + contain chinese, english, number, '-', '_', '#', '%%', ',', '@', '^', '+', '=', '[', ']', '{', '}', '{'. '}`))) } + // 4. each sub path should be separated by '/' // (handled by strings.Split above) } @@ -74,17 +77,18 @@ func ValidateUnixFilePath(path string) error { var qualifiedWinFilePathRegexp = regexp.MustCompile("^[a-zA-Z]:(\\\\[\\w\u4e00-\u9fa5\\s]+)+") // ValidateWinFilePath validate win file path. -func ValidateWinFilePath(path string) error { +func ValidateWinFilePath(kit *kit.Kit, path string) error { if len(path) < 1 { - return errors.New("invalid path, length should >= 1") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid path, length should >= 1")) } if len(path) > 256 { - return errors.New("invalid path, length should <= 256") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid path, length should <= 256")) } if !qualifiedWinFilePathRegexp.MatchString(path) { - return fmt.Errorf("invalid path, path does not conform to the win file path format specification") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid path,"+ + "path does not conform to the win file path format specification")) } return nil @@ -95,21 +99,22 @@ var qualifiedReloadFilePathRegexp = regexp.MustCompile(fmt.Sprintf("^.*[\\\\/]*% constant.SideWorkspaceDir)) // ValidateReloadFilePath validate reload file path. -func ValidateReloadFilePath(path string) error { +func ValidateReloadFilePath(kit *kit.Kit, path string) error { if len(path) == 0 { - return errors.New("reload file path is required") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "reload file path is required")) } if len(path) > 128 { - return errors.New("invalid reload file path, should <= 128") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid reload file path, should <= 128")) } if yes := filepath.IsAbs(path); !yes { - return errors.New("reload file path is not the absolute path") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "reload file path is not the absolute path")) } if qualifiedReloadFilePathRegexp.MatchString(path) { - return fmt.Errorf("%s sub path is system reserved path, do not allow to use", constant.SideWorkspaceDir) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "%s sub path is system reserved path, do not allow to use", + constant.SideWorkspaceDir)) } return nil diff --git a/bcs-services/bcs-bscp/pkg/criteria/validator/file_test.go b/bcs-services/bcs-bscp/pkg/criteria/validator/file_test.go index d95b360691..ba2ad71f8e 100644 --- a/bcs-services/bcs-bscp/pkg/criteria/validator/file_test.go +++ b/bcs-services/bcs-bscp/pkg/criteria/validator/file_test.go @@ -17,17 +17,18 @@ import ( "testing" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/constant" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) func TestUnixFilePath(t *testing.T) { unixPath := "/root/code/go/src/github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/test/benchmark/tools/gen-data" - if err := ValidateUnixFilePath(unixPath); err != nil { + if err := ValidateUnixFilePath(kit.New(), unixPath); err != nil { t.Log(err) return } winPath := `C:\Documents\Newsletters` - if err := ValidateUnixFilePath(winPath); err == nil { + if err := ValidateUnixFilePath(kit.New(), winPath); err == nil { t.Log("unix file path validate failed") return } @@ -35,13 +36,13 @@ func TestUnixFilePath(t *testing.T) { func TestWinFilePath(t *testing.T) { winPath := `C:\Documents\Newsletters/test` - if err := ValidateWinFilePath(winPath); err != nil { + if err := ValidateWinFilePath(kit.New(), winPath); err != nil { t.Log(err) return } unixPath := "/root/code/go/src/github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/test/benchmark/tools/gen-data" - if err := ValidateWinFilePath(unixPath); err == nil { + if err := ValidateWinFilePath(kit.New(), unixPath); err == nil { t.Log("win file path validate failed") return } @@ -49,13 +50,13 @@ func TestWinFilePath(t *testing.T) { func TestReloadFilePath(t *testing.T) { path := "/root/reload/reload.json" - if err := ValidateReloadFilePath(path); err != nil { + if err := ValidateReloadFilePath(kit.New(), path); err != nil { t.Error(err) return } path = fmt.Sprintf("/root/%s/reload/reload.json", constant.SideWorkspaceDir) - if err := ValidateReloadFilePath(path); err == nil { + if err := ValidateReloadFilePath(kit.New(), path); err == nil { t.Errorf("validate reload file path failed, case result not except") return } diff --git a/bcs-services/bcs-bscp/pkg/criteria/validator/memo.go b/bcs-services/bcs-bscp/pkg/criteria/validator/memo.go index c1fd6c9257..7e728df7a1 100644 --- a/bcs-services/bcs-bscp/pkg/criteria/validator/memo.go +++ b/bcs-services/bcs-bscp/pkg/criteria/validator/memo.go @@ -13,20 +13,23 @@ package validator import ( - "errors" "unicode/utf8" + + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // ValidateMemo validate bscp resource memo's length and format. -func ValidateMemo(memo string, required bool) error { +func ValidateMemo(kit *kit.Kit, memo string, required bool) error { // check data is nil and required. if required && len(memo) == 0 { - return errors.New("memo is required, can not be empty") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "memo is required, can not be empty")) } if required { if len(memo) == 0 { - return errors.New("memo is required, can not be empty") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "memo is required, can not be empty")) } } else { if len(memo) == 0 { @@ -36,7 +39,7 @@ func ValidateMemo(memo string, required bool) error { charLength := utf8.RuneCountInString(memo) if charLength > 200 { - return errors.New("invalid memo, length should <= 200") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid memo, length should <= 200")) } return nil diff --git a/bcs-services/bcs-bscp/pkg/criteria/validator/name.go b/bcs-services/bcs-bscp/pkg/criteria/validator/name.go index 746474d703..6cbd45cc38 100644 --- a/bcs-services/bcs-bscp/pkg/criteria/validator/name.go +++ b/bcs-services/bcs-bscp/pkg/criteria/validator/name.go @@ -13,7 +13,6 @@ package validator import ( - "errors" "fmt" "regexp" "strings" @@ -27,12 +26,12 @@ import ( var reservedResNamePrefix = []string{"_bk"} // validResNamePrefix verify whether the resource naming takes up the reserved resource name prefix of bscp. -func validResNamePrefix(name string) error { +func validResNamePrefix(kit *kit.Kit, name string) error { lowerName := strings.ToLower(name) for _, prefix := range reservedResNamePrefix { if strings.HasPrefix(lowerName, prefix) { - return fmt.Errorf("resource name '%s' is prefixed with '%s' is reserved name, "+ - "which is not allows to use", lowerName, prefix) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "resource name '%s' is prefixed with '%s' is reserved name, "+ + "which is not allows to use", lowerName, prefix)) } } @@ -43,22 +42,22 @@ func validResNamePrefix(name string) error { var qualifiedAppNameRegexp = regexp.MustCompile(`^[a-zA-Z0-9][\w\-]*[a-zA-Z0-9]$`) // ValidateAppName validate bscp app name's length and format. -func ValidateAppName(name string) error { +func ValidateAppName(kit *kit.Kit, name string) error { if len(name) < 1 { - return errors.New("invalid name, length should >= 1") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should >= 1")) } if len(name) > 128 { - return errors.New("invalid name, length should <= 128") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should <= 128")) } - if err := validResNamePrefix(name); err != nil { + if err := validResNamePrefix(kit, name); err != nil { return err } if !qualifiedAppNameRegexp.MatchString(name) { - return fmt.Errorf("invalid name: %s, only allows to include english、numbers、underscore (_)"+ - "、hyphen (-), and must start and end with an english、numbers", name) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name: %s, only allows to include english、"+ + "numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", name)) } return nil @@ -68,23 +67,22 @@ func ValidateAppName(name string) error { var qualifiedAppAliasRegexp = regexp.MustCompile(`^[a-zA-Z0-9\p{Han}][\w\p{Han}\-]*[a-zA-Z0-9\p{Han}]$`) // ValidateAppAlias validate bscp app Alias length and format. -func ValidateAppAlias(alias string) error { +func ValidateAppAlias(kit *kit.Kit, alias string) error { if len(alias) < 1 { - return errors.New("invalid name, length should >= 1") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should >= 1")) } if len(alias) > 128 { - return errors.New("invalid name, length should <= 128") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should <= 128")) } - if err := validResNamePrefix(alias); err != nil { + if err := validResNamePrefix(kit, alias); err != nil { return err } if !qualifiedAppAliasRegexp.MatchString(alias) { - return fmt.Errorf("invalid name: %s, only allows to include Chinese, English, numbers, underscore (_), "+ - "hyphen (-), and must start and end with Chinese, English, or a number", alias) - + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, fmt.Sprintf(`invalid name: %s, only allows to include Chinese, + English, numbers, underscore (_), hyphen (-), and must start and end with Chinese, English, or a number`, alias))) } return nil @@ -102,8 +100,7 @@ func ValidateVariableName(kit *kit.Kit, name string) error { } if len(name) > 128 { - return errf.Errorf(errf.InvalidArgument, - i18n.T(kit, "invalid name, length should <= 128")) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should <= 128")) } if !qualifiedVariableNameRegexp.MatchString(name) { @@ -127,22 +124,22 @@ const ( var qualifiedNameRegexp = regexp.MustCompile("^" + qualifiedNameFmt + "$") // ValidateName validate bscp resource name's length and format. -func ValidateName(name string) error { +func ValidateName(kit *kit.Kit, name string) error { if len(name) < 1 { - return errors.New("invalid name, length should >= 1") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should >= 1")) } if len(name) > 128 { - return errors.New("invalid name, length should <= 128") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should <= 128")) } - if err := validResNamePrefix(name); err != nil { + if err := validResNamePrefix(kit, name); err != nil { return err } if !qualifiedNameRegexp.MatchString(name) { - return fmt.Errorf("invalid name: %s, only allows to include chinese、english、numbers、underscore (_)"+ - "、hyphen (-), and must start and end with an chinese、english、numbers", name) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, fmt.Sprintf(`invalid name: %s, only allows to include chinese、 + english、numbers、underscore (_)、hyphen (-), and must start and end with an chinese、english、numbers`, name))) } return nil @@ -158,22 +155,22 @@ const ( var qualifiedRNRegexp = regexp.MustCompile("^" + qualifiedReleaseNameFmt + "$") // ValidateReleaseName validate release name's length and format. -func ValidateReleaseName(name string) error { +func ValidateReleaseName(kit *kit.Kit, name string) error { if len(name) < 1 { - return errors.New("invalid name, length should >= 1") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should >= 1")) } if len(name) > 128 { - return errors.New("invalid name, length should <= 128") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should <= 128")) } - if err := validResNamePrefix(name); err != nil { + if err := validResNamePrefix(kit, name); err != nil { return err } if !qualifiedRNRegexp.MatchString(name) { - return fmt.Errorf("invalid name: %s, only allows to include chinese、english、numbers、underscore (_)"+ - "、hyphen (-)、point (.), and must start and end with an chinese、english、numbers", name) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name: %s, only allows to include Chinese, English,"+ + "numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", name)) } return nil @@ -181,66 +178,66 @@ func ValidateReleaseName(name string) error { // qualifiedFileNameRegexp file name regexp. // support character: chinese, english, number, -// '-', '_', '#', '%', ',', '@', '^', '+', '=', '[', ']', '{', '}, '{'. '}'. +// '-', '_', '#', '%', ',', '@', '^', '+', '=', '[', ']', '{', '}, '.' var qualifiedFileNameRegexp = regexp.MustCompile("^[\u4e00-\u9fa5A-Za-z0-9-_#%,.@^+=\\[\\]\\{\\}]+$") var dotsRegexp = regexp.MustCompile(`^\.+$`) // ValidateFileName validate config item's name. -func ValidateFileName(name string) error { +func ValidateFileName(kit *kit.Kit, name string) error { if len(name) < 1 { - return errors.New("invalid name, length should >= 1") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should >= 1")) } if len(name) > 64 { - return errors.New("invalid name, length should <= 64") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name, length should <= 64")) } - if err := validResNamePrefix(name); err != nil { + if err := validResNamePrefix(kit, name); err != nil { return err } if dotsRegexp.MatchString(name) { - return fmt.Errorf("invalid name %s, name cannot all be '{'. '}'", name) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name %s, name cannot all be '.'", name)) } if !qualifiedFileNameRegexp.MatchString(name) { - return fmt.Errorf("invalid name %s, should only contains chinese, english, "+ - "number, '-', '_', '#', '%%', ',', '@', '^', '+', '=', '[', ']', '{', '}', '{'. '}", name) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, fmt.Sprintf(`invalid name %s, should only contains chinese, + english, number, '-', '_', '#', '%%', ',', '@', '^', '+', '=', '[', ']', '{', '}', '.'`, name))) } return nil } // ValidateNamespace validate namespace is valid or not. -func ValidateNamespace(namespace string) error { +func ValidateNamespace(kit *kit.Kit, namespace string) error { if len(namespace) < 1 { - return errors.New("invalid namespace, length should >= 1") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid namespace, length should >= 1")) } if len(namespace) > 128 { - return errors.New("invalid namespace, length should <= 128") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid namespace, length should <= 128")) } - if err := validResNamePrefix(namespace); err != nil { + if err := validResNamePrefix(kit, namespace); err != nil { return err } if !qualifiedNameRegexp.MatchString(namespace) { - return fmt.Errorf("invalid namespace: %s, only allows to include chinese、english、numbers、"+ - "underscore (_)、hyphen (-), and must start and end with an chinese、english、numbers", namespace) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid name: %s, only allows to include Chinese, English,"+ + "numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", namespace)) } return nil } // ValidateUserName validate username. -func ValidateUserName(username string) error { +func ValidateUserName(kit *kit.Kit, username string) error { if len(username) < 1 { - return errors.New("invalid username, length should >= 1") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid username, length should >= 1")) } if len(username) > 32 { - return errors.New("invalid username, length should <= 32") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid username, length should <= 32")) } return nil diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/app.go b/bcs-services/bcs-bscp/pkg/dal/dao/app.go index 23d4093207..6e55e9d114 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/app.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/app.go @@ -18,8 +18,10 @@ import ( rawgen "gorm.io/gen" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/gen" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/logs" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/types" @@ -146,10 +148,10 @@ func (dao *appDao) ListAppsByIDs(kit *kit.Kit, ids []uint32) ([]*table.App, erro // Create one app instance func (dao *appDao) Create(kit *kit.Kit, g *table.App) (uint32, error) { if g == nil { - return 0, errors.New("app is nil") + return 0, errf.Errorf(errf.InvalidArgument, i18n.T(kit, "app is nil")) } - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } @@ -167,11 +169,12 @@ func (dao *appDao) Create(kit *kit.Kit, g *table.App) (uint32, error) { createTx := func(tx *gen.Query) error { q := tx.App.WithContext(kit.Ctx) if err = q.Create(g); err != nil { - return err + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "create data failed, err: %v", err)) } if err = ad.Do(tx); err != nil { - return err + logs.Errorf("execution of transactions failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "create app failed, err: %v", err)) } // fire the event with txn to ensure the if save the event failed then the business logic is failed anyway. @@ -186,7 +189,7 @@ func (dao *appDao) Create(kit *kit.Kit, g *table.App) (uint32, error) { } if err = eDecorator.Fire(one); err != nil { logs.Errorf("fire create app: %s event failed, err: %v, rid: %s", g.ID, err, kit.Rid) - return errors.New("fire event failed, " + err.Error()) // nolint goconst + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "create app failed, err: %v", err)) } return nil @@ -196,7 +199,8 @@ func (dao *appDao) Create(kit *kit.Kit, g *table.App) (uint32, error) { eDecorator.Finalizer(err) if err != nil { - return 0, err + logs.Errorf("transaction processing failed %s", err) + return 0, errf.Errorf(errf.DBOpFailed, i18n.T(kit, "create app failed, err: %v", err)) } return id, nil @@ -205,15 +209,15 @@ func (dao *appDao) Create(kit *kit.Kit, g *table.App) (uint32, error) { // Update an app instance. func (dao *appDao) Update(kit *kit.Kit, g *table.App) error { if g == nil { - return errors.New("app is nil") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "app is nil")) } oldOne, err := dao.Get(kit, g.BizID, g.ID) if err != nil { - return fmt.Errorf("get update app failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "update app failed, err: %s", err)) } - if err = g.ValidateUpdate(oldOne.Spec.ConfigType); err != nil { + if err = g.ValidateUpdate(kit, oldOne.Spec.ConfigType); err != nil { return err } @@ -247,7 +251,7 @@ func (dao *appDao) Update(kit *kit.Kit, g *table.App) error { } if err = eDecorator.Fire(one); err != nil { logs.Errorf("fire update app: %s event failed, err: %v, rid: %s", g.ID, err, kit.Rid) - return errors.New("fire event failed, " + err.Error()) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "update app failed, err: %s", err)) } return nil } @@ -343,7 +347,7 @@ func (dao *appDao) GetByName(kit *kit.Kit, bizID uint32, name string) (*table.Ap app, err := q.Where(m.BizID.Eq(bizID), m.Name.Eq(name)).Take() if err != nil { - return nil, fmt.Errorf("get app failed, err: %v", err) + return nil, errf.Errorf(errf.DBOpFailed, i18n.T(kit, "get app failed, err: %v", err)) } return app, nil diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/commit.go b/bcs-services/bcs-bscp/pkg/dal/dao/commit.go index bdf7411ec8..cdf2c7c646 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/commit.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/commit.go @@ -83,7 +83,7 @@ func (dao *commitDao) Create(kit *kit.Kit, commit *table.Commit) (uint32, error) return 0, errf.New(errf.InvalidParameter, "commit is nil") } - if err := commit.ValidateCreate(); err != nil { + if err := commit.ValidateCreate(kit); err != nil { return 0, errf.New(errf.InvalidParameter, err.Error()) } @@ -127,7 +127,7 @@ func (dao *commitDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, commit *table. return 0, errf.New(errf.InvalidParameter, "commit is nil") } - if err := commit.ValidateCreate(); err != nil { + if err := commit.ValidateCreate(kit); err != nil { return 0, errf.New(errf.InvalidParameter, err.Error()) } @@ -163,7 +163,7 @@ func (dao *commitDao) BatchCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, commits [ return err } for i, commit := range commits { - if err := commit.ValidateCreate(); err != nil { + if err := commit.ValidateCreate(kit); err != nil { return err } commit.ID = ids[i] diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/config_item.go b/bcs-services/bcs-bscp/pkg/dal/dao/config_item.go index 149850f68b..7dd3bc3bc9 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/config_item.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/config_item.go @@ -24,6 +24,7 @@ import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/gen" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/logs" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/types" @@ -135,7 +136,7 @@ func (dao *configItemDao) UpdateWithTx(kit *kit.Kit, tx *gen.QueryTx, ci *table. ci.Spec.FileMode = fileMode } - if err := ci.ValidateUpdate(); err != nil { + if err := ci.ValidateUpdate(kit); err != nil { return errf.New(errf.InvalidParameter, err.Error()) } @@ -178,7 +179,7 @@ func (dao *configItemDao) RecoverConfigItem(kit *kit.Kit, tx *gen.QueryTx, ci *t return errors.New("config item is nil") } - if err := ci.ValidateRecover(); err != nil { + if err := ci.ValidateRecover(kit); err != nil { return err } @@ -216,7 +217,7 @@ func (dao *configItemDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, ci *table. return 0, errors.New("config item is nil") } - if err := ci.ValidateCreate(); err != nil { + if err := ci.ValidateCreate(kit); err != nil { return 0, err } @@ -258,7 +259,7 @@ func (dao *configItemDao) BatchCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, return err } for i, configItem := range configItems { - if err := configItem.ValidateCreate(); err != nil { + if err := configItem.ValidateCreate(kit); err != nil { return err } configItem.ID = ids[i] @@ -289,7 +290,7 @@ func (dao *configItemDao) Update(kit *kit.Kit, ci *table.ConfigItem) error { ci.Spec.FileMode = fileMode } - if err := ci.ValidateUpdate(); err != nil { + if err := ci.ValidateUpdate(kit); err != nil { return errf.New(errf.InvalidParameter, err.Error()) } @@ -503,7 +504,7 @@ func (dao *configItemDao) ValidateAppCINumber(kt *kit.Kit, tx *gen.QueryTx, bizI m := tx.ConfigItem count, err := m.WithContext(kt.Ctx).Where(m.BizID.Eq(bizID), m.AppID.Eq(appID)).Count() if err != nil { - return fmt.Errorf("count app %d's config items failed, err: %v", appID, err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kt, "count app %d's config items failed, err: %v", appID, err)) } // get template config count @@ -514,7 +515,7 @@ func (dao *configItemDao) ValidateAppCINumber(kt *kit.Kit, tx *gen.QueryTx, bizI if err != nil { // if not found, means the count should be 0 if !errors.Is(err, gorm.ErrRecordNotFound) { - return fmt.Errorf("get app %d's template binding failed, err: %v", appID, err) + return errf.Errorf(errf.InvalidRequest, i18n.T(kt, "get app %d's template binding failed, err: %v", appID, err)) } } else { tcount = len(atb.Spec.TemplateRevisionIDs) @@ -524,8 +525,8 @@ func (dao *configItemDao) ValidateAppCINumber(kt *kit.Kit, tx *gen.QueryTx, bizI appConfigCnt := getAppConfigCnt(bizID) if total > appConfigCnt { return errf.New(errf.InvalidParameter, - fmt.Sprintf("the total number of app %d's config items(including template and non-template)"+ - "exceeded the limit %d", appID, appConfigCnt)) + i18n.T(kt, "the total number of app %d's config items(including template and non-template)exceeded the limit %d", + appID, appConfigCnt)) } return nil @@ -551,7 +552,7 @@ func (dao *configItemDao) queryFileMode(kt *kit.Kit, id, bizID uint32) ( return "", errf.New(errf.DBOpFailed, fmt.Sprintf("get config item %d file mode failed", id)) } - if err := ci.Spec.FileMode.Validate(); err != nil { + if err := ci.Spec.FileMode.Validate(kt); err != nil { return "", errf.New(errf.InvalidParameter, err.Error()) } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/content.go b/bcs-services/bcs-bscp/pkg/dal/dao/content.go index 40fe4db863..b6518b5ee8 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/content.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/content.go @@ -65,7 +65,7 @@ func (dao *contentDao) Create(kit *kit.Kit, content *table.Content) (uint32, err return 0, errf.New(errf.InvalidParameter, "content is nil") } - if err := content.ValidateCreate(); err != nil { + if err := content.ValidateCreate(kit); err != nil { return 0, errf.New(errf.InvalidParameter, err.Error()) } @@ -109,7 +109,7 @@ func (dao *contentDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, content *tabl return 0, errf.New(errf.InvalidParameter, "content is nil") } - if err := content.ValidateCreate(); err != nil { + if err := content.ValidateCreate(kit); err != nil { return 0, errf.New(errf.InvalidParameter, err.Error()) } @@ -144,7 +144,7 @@ func (dao *contentDao) BatchCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, contents return err } for i, content := range contents { - if err := content.ValidateCreate(); err != nil { + if err := content.ValidateCreate(kit); err != nil { return err } content.ID = ids[i] diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/credential.go b/bcs-services/bcs-bscp/pkg/dal/dao/credential.go index 5415fd382c..182e91a614 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/credential.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/credential.go @@ -157,7 +157,7 @@ func (dao *credentialDao) BatchListByIDs(kit *kit.Kit, bizID uint32, ids []uint3 // Create create credential func (dao *credentialDao) Create(kit *kit.Kit, g *table.Credential) (uint32, error) { - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } @@ -298,7 +298,7 @@ func (dao *credentialDao) DeleteWithTx(kit *kit.Kit, tx *gen.QueryTx, bizID, id // Update update credential's name, description, enable // !Note: update credential should emit a update event. func (dao *credentialDao) Update(kit *kit.Kit, g *table.Credential) error { - if err := g.ValidateUpdate(); err != nil { + if err := g.ValidateUpdate(kit); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/group.go b/bcs-services/bcs-bscp/pkg/dal/dao/group.go index ab2bbe7193..1be4513ab8 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/group.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/group.go @@ -76,7 +76,7 @@ func (dao *groupDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.Group) return 0, errf.New(errf.InvalidParameter, "group is nil") } - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, errf.New(errf.InvalidParameter, err.Error()) } @@ -106,7 +106,7 @@ func (dao *groupDao) UpdateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.Group) return errf.New(errf.InvalidParameter, "group is nil") } - if err := g.ValidateUpdate(); err != nil { + if err := g.ValidateUpdate(kit); err != nil { return errf.New(errf.InvalidParameter, err.Error()) } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/hook.go b/bcs-services/bcs-bscp/pkg/dal/dao/hook.go index ca63fdd171..dc8627a3d8 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/hook.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/hook.go @@ -66,7 +66,7 @@ type hookDao struct { // UpdateWithTx update one hook instance with transaction. func (dao *hookDao) UpdateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.Hook) error { - if err := g.ValidateUpdate(); err != nil { + if err := g.ValidateUpdate(kit); err != nil { return err } @@ -152,7 +152,7 @@ func (dao *hookDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.Hook) ( return 0, errf.Errorf(errf.InvalidArgument, i18n.T(kit, "hook is nil")) } - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } @@ -331,7 +331,7 @@ func (dao *hookDao) DeleteWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.Hook) e // Update one hook instance. func (dao *hookDao) Update(kit *kit.Kit, g *table.Hook) error { - if err := g.ValidateUpdate(); err != nil { + if err := g.ValidateUpdate(kit); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/hook_revision.go b/bcs-services/bcs-bscp/pkg/dal/dao/hook_revision.go index 5b550ef0be..b714937278 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/hook_revision.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/hook_revision.go @@ -63,7 +63,7 @@ type hookRevisionDao struct { // Create one hook instance. func (dao *hookRevisionDao) Create(kit *kit.Kit, hr *table.HookRevision) (uint32, error) { - if err := hr.ValidateCreate(); err != nil { + if err := hr.ValidateCreate(kit); err != nil { return 0, err } @@ -102,7 +102,7 @@ func (dao *hookRevisionDao) Create(kit *kit.Kit, hr *table.HookRevision) (uint32 // CreateWithTx create one hookRevision instance with transaction. func (dao *hookRevisionDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, hr *table.HookRevision) (uint32, error) { - if err := hr.ValidateCreate(); err != nil { + if err := hr.ValidateCreate(kit); err != nil { return 0, err } @@ -420,7 +420,7 @@ func (dao *hookRevisionDao) UpdatePubStateWithTx(kit *kit.Kit, tx *gen.QueryTx, // Update one HookRevision's info. func (dao *hookRevisionDao) Update(kit *kit.Kit, hr *table.HookRevision) error { - if err := hr.ValidateUpdate(); err != nil { + if err := hr.ValidateUpdate(kit); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/kv.go b/bcs-services/bcs-bscp/pkg/dal/dao/kv.go index 945804806f..b22411103d 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/kv.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/kv.go @@ -20,6 +20,7 @@ import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/gen" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/utils" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/types" ) @@ -143,7 +144,7 @@ func (dao *kvDao) Create(kit *kit.Kit, kv *table.Kv) (uint32, error) { return 0, fmt.Errorf("kv is nil") } - if err := kv.ValidateCreate(); err != nil { + if err := kv.ValidateCreate(kit); err != nil { return 0, err } @@ -435,7 +436,7 @@ func (dao *kvDao) BatchCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, kvs []*table. return err } for i, kv := range kvs { - if e := kv.ValidateCreate(); e != nil { + if e := kv.ValidateCreate(kit); e != nil { return e } kv.ID = ids[i] @@ -492,7 +493,7 @@ func (dao *kvDao) UpdateSelectedKVStates(kit *kit.Kit, tx *gen.QueryTx, bizID, a // ListAllByAppID list all Kv by appID func (dao *kvDao) ListAllByAppID(kit *kit.Kit, appID uint32, bizID uint32, kvState []string) ([]*table.Kv, error) { if appID == 0 { - return nil, errf.New(errf.InvalidParameter, "appID can not be 0") + return nil, errf.New(errf.InvalidParameter, i18n.T(kit, "appID can not be 0")) } if bizID == 0 { return nil, errf.New(errf.InvalidParameter, "bizID can not be 0") diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/release.go b/bcs-services/bcs-bscp/pkg/dal/dao/release.go index 0b0d417597..090f756faf 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/release.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/release.go @@ -67,7 +67,7 @@ func (dao *releaseDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.Rele return 0, errors.New("release is nil") } - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/release_ci.go b/bcs-services/bcs-bscp/pkg/dal/dao/release_ci.go index 0aa2669355..fee92d09e7 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/release_ci.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/release_ci.go @@ -65,7 +65,7 @@ func (dao *releasedCIDao) BulkCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, items // validate released config item field. for _, item := range items { - if err := item.Validate(); err != nil { + if err := item.Validate(kit); err != nil { return err } } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/released_kv.go b/bcs-services/bcs-bscp/pkg/dal/dao/released_kv.go index f377c7941f..8b22efec14 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/released_kv.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/released_kv.go @@ -58,7 +58,7 @@ func (dao *releasedKvDao) BulkCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, kvs [] // validate released kv field. for _, kv := range kvs { - if err := kv.ValidateCreate(); err != nil { + if err := kv.ValidateCreate(kit); err != nil { return err } } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/template.go b/bcs-services/bcs-bscp/pkg/dal/dao/template.go index 30339d08c2..cd77481aa9 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/template.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/template.go @@ -75,7 +75,7 @@ type templateDao struct { // UpdateWithTx Update one template instance with transaction. func (dao *templateDao) UpdateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.Template) error { - if err := g.ValidateUpdate(); err != nil { + if err := g.ValidateUpdate(kit); err != nil { return err } @@ -143,7 +143,7 @@ func (dao *templateDao) BatchCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, templat } for i, item := range templates { - if err = item.ValidateCreate(); err != nil { + if err = item.ValidateCreate(kit); err != nil { return err } item.ID = ids[i] @@ -157,7 +157,7 @@ func (dao *templateDao) BatchCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, templat // Create one template instance. func (dao *templateDao) Create(kit *kit.Kit, g *table.Template) (uint32, error) { - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } @@ -196,7 +196,7 @@ func (dao *templateDao) Create(kit *kit.Kit, g *table.Template) (uint32, error) // CreateWithTx create one template instance with transaction. func (dao *templateDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.Template) (uint32, error) { - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } @@ -222,7 +222,7 @@ func (dao *templateDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.Tem // Update one template instance. func (dao *templateDao) Update(kit *kit.Kit, g *table.Template) error { - if err := g.ValidateUpdate(); err != nil { + if err := g.ValidateUpdate(kit); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/template_revision.go b/bcs-services/bcs-bscp/pkg/dal/dao/template_revision.go index e6155821d1..68051efdc8 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/template_revision.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/template_revision.go @@ -115,7 +115,7 @@ func (dao *templateRevisionDao) GetLatestTemplateRevision(kit *kit.Kit, bizID ui // Create one template revision instance. func (dao *templateRevisionDao) Create(kit *kit.Kit, g *table.TemplateRevision) (uint32, error) { - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } @@ -154,7 +154,7 @@ func (dao *templateRevisionDao) Create(kit *kit.Kit, g *table.TemplateRevision) // CreateWithTx create one template revision instance with transaction. func (dao *templateRevisionDao) CreateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.TemplateRevision) (uint32, error) { - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } @@ -324,12 +324,12 @@ func (dao *templateRevisionDao) BatchCreateWithTx(kit *kit.Kit, tx *gen.QueryTx, return err } for i, item := range revisions { - if err := item.ValidateCreate(); err != nil { + if err := item.ValidateCreate(kit); err != nil { return err } item.ID = ids[i] } - return tx.Query.TemplateRevision.WithContext(kit.Ctx).Save(revisions...) + return tx.Query.TemplateRevision.WithContext(kit.Ctx).CreateInBatches(revisions, 200) } // ListLatestRevisionsGroupByTemplateIds Lists the latest version groups by template ids diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/template_set.go b/bcs-services/bcs-bscp/pkg/dal/dao/template_set.go index c54b1c3fb6..c170787e1b 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/template_set.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/template_set.go @@ -25,6 +25,7 @@ import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/gen" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table" dtypes "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/types" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/search" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/tools" @@ -121,7 +122,7 @@ func (dao *templateSetDao) GetByTemplateSetByID(kit *kit.Kit, bizID uint32, id u // Create one template set instance. func (dao *templateSetDao) Create(kit *kit.Kit, g *table.TemplateSet) (uint32, error) { - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } @@ -164,7 +165,7 @@ func (dao *templateSetDao) Create(kit *kit.Kit, g *table.TemplateSet) (uint32, e // Update one template set instance. func (dao *templateSetDao) Update(kit *kit.Kit, g *table.TemplateSet) error { - if err := g.ValidateUpdate(); err != nil { + if err := g.ValidateUpdate(kit); err != nil { return err } @@ -205,7 +206,7 @@ func (dao *templateSetDao) Update(kit *kit.Kit, g *table.TemplateSet) error { // UpdateWithTx update one template set's info with transaction. func (dao *templateSetDao) UpdateWithTx(kit *kit.Kit, tx *gen.QueryTx, g *table.TemplateSet) error { - if err := g.ValidateUpdate(); err != nil { + if err := g.ValidateUpdate(kit); err != nil { return err } @@ -550,8 +551,7 @@ func (dao *templateSetDao) ValidateTmplNumber(kt *kit.Kit, tx *gen.QueryTx, bizI tmplSetTmplCnt := getTmplSetTmplCnt(bizID) if count > tmplSetTmplCnt { return errf.New(errf.InvalidParameter, - fmt.Sprintf("the total number of template set %d's templates exceeded the limit %d", - tmplSetID, tmplSetTmplCnt)) + i18n.T(kt, "the total number of template set %d's templates exceeded the limit %d", tmplSetID, tmplSetTmplCnt)) } return nil @@ -572,8 +572,7 @@ func (dao *templateSetDao) ValidateWillExceedMaxTmplCount(kt *kit.Kit, tx *gen.Q tmplSetTmplCnt := getTmplSetTmplCnt(bizID) if count > tmplSetTmplCnt { return errf.New(errf.InvalidParameter, - fmt.Sprintf("the total number of template set %d's templates exceeded the limit %d", - tmplSetID, tmplSetTmplCnt)) + i18n.T(kt, "the total number of template set %d's templates exceeded the limit %d", tmplSetID, tmplSetTmplCnt)) } return nil diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/template_space.go b/bcs-services/bcs-bscp/pkg/dal/dao/template_space.go index aeb93029ee..0822c865ff 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/template_space.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/template_space.go @@ -56,7 +56,7 @@ type templateSpaceDao struct { // Create one template space instance. // Every template space must have one default template set, so they should be created together. func (dao *templateSpaceDao) Create(kit *kit.Kit, g *table.TemplateSpace) (uint32, error) { - if err := g.ValidateCreate(); err != nil { + if err := g.ValidateCreate(kit); err != nil { return 0, err } @@ -119,7 +119,7 @@ func (dao *templateSpaceDao) Create(kit *kit.Kit, g *table.TemplateSpace) (uint3 // Update one template space instance. func (dao *templateSpaceDao) Update(kit *kit.Kit, g *table.TemplateSpace) error { - if err := g.ValidateUpdate(); err != nil { + if err := g.ValidateUpdate(kit); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/dao/validator.go b/bcs-services/bcs-bscp/pkg/dal/dao/validator.go index b30355ed64..5696d87c0a 100644 --- a/bcs-services/bcs-bscp/pkg/dal/dao/validator.go +++ b/bcs-services/bcs-bscp/pkg/dal/dao/validator.go @@ -14,12 +14,13 @@ package dao import ( "errors" - "fmt" "gorm.io/gorm" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/gen" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/types" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/tools" ) @@ -62,12 +63,12 @@ func (dao *validatorDao) ValidateTmplSpacesExist(kit *kit.Kit, templateSpaceIDs q := dao.genQ.TemplateSpace.WithContext(kit.Ctx) var existIDs []uint32 if err := q.Where(m.ID.In(templateSpaceIDs...)).Pluck(m.ID, &existIDs); err != nil { - return fmt.Errorf("validate templates exist failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "validate templates exist failed, err: %v", err)) } diffIDs := tools.SliceDiff(templateSpaceIDs, existIDs) if len(diffIDs) > 0 { - return fmt.Errorf("template space id in %v is not exist", diffIDs) + return errf.Errorf(errf.InvalidRequest, i18n.T(kit, "template space id in %v is not exist", diffIDs)) } return nil @@ -79,12 +80,12 @@ func (dao *validatorDao) ValidateTemplatesExist(kit *kit.Kit, templateIDs []uint q := dao.genQ.Template.WithContext(kit.Ctx) var existIDs []uint32 if err := q.Where(m.ID.In(templateIDs...)).Pluck(m.ID, &existIDs); err != nil { - return fmt.Errorf("validate templates exist failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "validate templates exist failed, err: %v", err)) } diffIDs := tools.SliceDiff(templateIDs, existIDs) if len(diffIDs) > 0 { - return fmt.Errorf("template id in %v is not exist", diffIDs) + return errf.Errorf(errf.InvalidRequest, i18n.T(kit, "template id in %v is not exist", diffIDs)) } return nil @@ -96,12 +97,12 @@ func (dao *validatorDao) ValidateTmplRevisionsExist(kit *kit.Kit, templateRevisi q := dao.genQ.TemplateRevision.WithContext(kit.Ctx) var existIDs []uint32 if err := q.Where(m.ID.In(templateRevisionIDs...)).Pluck(m.ID, &existIDs); err != nil { - return fmt.Errorf("validate template releases exist failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "validate template releases exist failed, err: %v", err)) } diffIDs := tools.SliceDiff(templateRevisionIDs, existIDs) if len(diffIDs) > 0 { - return fmt.Errorf("template revision id in %v is not exist", diffIDs) + return errf.Errorf(errf.InvalidRequest, i18n.T(kit, "template revision id in %v is not exist", diffIDs)) } return nil @@ -114,12 +115,12 @@ func (dao *validatorDao) ValidateTmplRevisionsExistWithTx(kit *kit.Kit, tx *gen. q := tx.TemplateRevision.WithContext(kit.Ctx) var existIDs []uint32 if err := q.Where(m.ID.In(templateRevisionIDs...)).Pluck(m.ID, &existIDs); err != nil { - return fmt.Errorf("validate template releases exist failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "validate template releases exist failed, err: %v", err)) } diffIDs := tools.SliceDiff(templateRevisionIDs, existIDs) if len(diffIDs) > 0 { - return fmt.Errorf("template revision id in %v is not exist", diffIDs) + return errf.Errorf(errf.InvalidRequest, i18n.T(kit, "template revision id in %v is not exist", diffIDs)) } return nil @@ -131,12 +132,12 @@ func (dao *validatorDao) ValidateTmplSetsExist(kit *kit.Kit, templateSetIDs []ui q := dao.genQ.TemplateSet.WithContext(kit.Ctx) var existIDs []uint32 if err := q.Where(m.ID.In(templateSetIDs...)).Pluck(m.ID, &existIDs); err != nil { - return fmt.Errorf("validate template sets exist failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "validate template sets exist failed, err: %v", err)) } diffIDs := tools.SliceDiff(templateSetIDs, existIDs) if len(diffIDs) > 0 { - return fmt.Errorf("template set id in %v is not exist", diffIDs) + return errf.Errorf(errf.InvalidRequest, i18n.T(kit, "template set id in %v is not exist", diffIDs)) } return nil @@ -149,9 +150,9 @@ func (dao *validatorDao) ValidateTemplateExist(kit *kit.Kit, id uint32) error { if _, err := q.Where(m.ID.Eq(id)).Take(); err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { - return fmt.Errorf("template %d is not exist", id) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "template %d is not exist", id)) } - return fmt.Errorf("get template failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "get template failed, err: %v", err)) } return nil @@ -164,9 +165,9 @@ func (dao *validatorDao) ValidateTmplRevisionExist(kit *kit.Kit, id uint32) erro if _, err := q.Where(m.ID.Eq(id)).Take(); err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { - return fmt.Errorf("template release %d is not exist", id) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "template release %d is not exist", id)) } - return fmt.Errorf("get template release failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "get template release failed, err: %v", err)) } return nil @@ -179,9 +180,9 @@ func (dao *validatorDao) ValidateTmplSetExist(kit *kit.Kit, id uint32) error { if _, err := q.Where(m.ID.Eq(id)).Take(); err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { - return fmt.Errorf("template set %d is not exist", id) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "template set %d is not exist", id)) } - return fmt.Errorf("get template set failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "get template set failed, err: %v", err)) } return nil @@ -197,19 +198,21 @@ func (dao *validatorDao) ValidateTmplSpaceNoSubRes(kit *kit.Kit, id uint32) erro m := dao.genQ.TemplateSet q := dao.genQ.TemplateSet.WithContext(kit.Ctx) if tmplSetCnt, err = q.Where(m.TemplateSpaceID.Eq(id)).Count(); err != nil { - return fmt.Errorf("get template set count failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "get template set count failed, err: %v", err)) } if tmplSetCnt > 0 { - return fmt.Errorf("there are template sets under the template space, need to delete them first") + return errf.Errorf(errf.InvalidRequest, + i18n.T(kit, "there are template sets under the template space, need to delete them first")) } tm := dao.genQ.Template tq := dao.genQ.Template.WithContext(kit.Ctx) if tmplCnt, err = tq.Where(tm.TemplateSpaceID.Eq(id)).Count(); err != nil { - return fmt.Errorf("get template count failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, i18n.T(kit, "get template count failed, err: %v", err)) } if tmplCnt > 0 { - return fmt.Errorf("there are templates under the template space, need to delete them first") + return errf.Errorf(errf.InvalidRequest, + i18n.T(kit, "there are templates under the template space, need to delete them first")) } return nil @@ -226,12 +229,14 @@ func (dao *validatorDao) ValidateTmplsBelongToTmplSet( } var existIDs existT if err := q.Select(m.TemplateIDs).Where(m.ID.Eq(templateSetID)).Scan(&existIDs); err != nil { - return fmt.Errorf("validate templates in a template set failed, err: %v", err) + return errf.Errorf(errf.DBOpFailed, + i18n.T(kit, "validate templates in a template set failed, err: %v", err)) } diffIDs := tools.SliceDiff(templateIDs, existIDs.TemplateIDs) if len(diffIDs) > 0 { - return fmt.Errorf("template id in %v is not belong to template set id %d", diffIDs, templateSetID) + return errf.Errorf(errf.InvalidRequest, + i18n.T(kit, "template id in %v is not belong to template set id %d", diffIDs, templateSetID)) } return nil diff --git a/bcs-services/bcs-bscp/pkg/dal/table/app.go b/bcs-services/bcs-bscp/pkg/dal/table/app.go index 25def739dc..e5e7c76f5a 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/app.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/app.go @@ -14,10 +14,12 @@ package table import ( "errors" - "fmt" "time" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // App defines an application's detail information @@ -54,20 +56,20 @@ func (a *App) ResType() string { } // ValidateCreate validate app's info when created. -func (a *App) ValidateCreate() error { +func (a *App) ValidateCreate(kit *kit.Kit) error { if a.ID != 0 { - return errors.New("id can not be set") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "id can not be set")) } if a.BizID <= 0 { - return errors.New("invalid biz id") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid biz id")) } if a.Spec == nil { - return errors.New("invalid spec, is nil") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid spec, is nil")) } - if err := a.Spec.ValidateCreate(); err != nil { + if err := a.Spec.ValidateCreate(kit); err != nil { return err } @@ -83,20 +85,20 @@ func (a *App) ValidateCreate() error { } // ValidateUpdate validate app's info when update. -func (a *App) ValidateUpdate(configType ConfigType) error { +func (a *App) ValidateUpdate(kit *kit.Kit, configType ConfigType) error { if a.ID <= 0 { - return errors.New("id is not set") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "id can not be set")) } if a.BizID <= 0 { - return errors.New("biz id not set") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid biz id")) } if a.Spec == nil { - return errors.New("invalid spec, is nil") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid spec, is nil")) } - if err := a.Spec.ValidateUpdate(configType); err != nil { + if err := a.Spec.ValidateUpdate(kit, configType); err != nil { return err } @@ -137,68 +139,68 @@ type AppSpec struct { } // ValidateCreate validate spec when created. -func (as *AppSpec) ValidateCreate() error { +func (as *AppSpec) ValidateCreate(kit *kit.Kit) error { if as == nil { - return errors.New("app spec is nil") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "app spec is nil")) } - if err := validator.ValidateAppName(as.Name); err != nil { + if err := validator.ValidateAppName(kit, as.Name); err != nil { return err } - if err := validator.ValidateAppAlias(as.Alias); err != nil { + if err := validator.ValidateAppAlias(kit, as.Alias); err != nil { return err } - if err := as.ConfigType.Validate(); err != nil { + if err := as.ConfigType.Validate(kit); err != nil { return err } - if err := validator.ValidateMemo(as.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, as.Memo, false); err != nil { return err } switch as.ConfigType { case File: case KV: - if err := as.DataType.ValidateApp(); err != nil { + if err := as.DataType.ValidateApp(kit); err != nil { return err } case Table: default: - return fmt.Errorf("unknown config type: %s", as.ConfigType) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "unknown config type: %s", as.ConfigType)) } return nil } // ValidateUpdate validate spec when updated. -func (as *AppSpec) ValidateUpdate(configType ConfigType) error { +func (as *AppSpec) ValidateUpdate(kit *kit.Kit, configType ConfigType) error { if as == nil { - return errors.New("app spec is nil") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "app spec is nil")) } - if err := validator.ValidateAppName(as.Name); err != nil { + if err := validator.ValidateAppName(kit, as.Name); err != nil { return err } if len(as.ConfigType) > 0 { - return errors.New("app's type can not be updated") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "app's type can not be updated")) } - if err := validator.ValidateMemo(as.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, as.Memo, false); err != nil { return err } switch configType { case File: case KV: - if err := as.DataType.ValidateApp(); err != nil { + if err := as.DataType.ValidateApp(kit); err != nil { return err } case Table: default: - return fmt.Errorf("unknown config type: %s", as.ConfigType) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "unknown config type: %s", as.ConfigType)) } return nil @@ -217,14 +219,14 @@ const ( type ConfigType string // Validate the config type is supported or not. -func (c ConfigType) Validate() error { +func (c ConfigType) Validate(kit *kit.Kit) error { switch c { case KV: case File: case Table: - return errors.New("not support table config type for now") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "not support table config type for now")) default: - return fmt.Errorf("unsupported config type: %s", c) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "unsupported config type: %s", c)) } return nil @@ -241,11 +243,11 @@ const ( type AppReloadType string // Validate app reload type -func (rt AppReloadType) Validate() error { +func (rt AppReloadType) Validate(kit *kit.Kit) error { switch rt { case ReloadWithFile: default: - return fmt.Errorf("unsupported app reload type: %s", rt) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "unsupported app reload type: %s", rt)) } return nil @@ -287,7 +289,7 @@ const ( ) // ValidateApp the kvType and value match -func (k DataType) ValidateApp() error { +func (k DataType) ValidateApp(kit *kit.Kit) error { switch k { case KvAny: case KvStr: @@ -297,7 +299,7 @@ func (k DataType) ValidateApp() error { case KvYAML: case KvXml: default: - return errors.New("invalid data-type") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid data-type")) } return nil } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/commit.go b/bcs-services/bcs-bscp/pkg/dal/table/commit.go index e3265653d8..3fb116e010 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/commit.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/commit.go @@ -16,7 +16,10 @@ import ( "errors" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/enumor" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // CommitsColumns defines all the commits' columns. @@ -61,16 +64,16 @@ func (c Commit) TableName() Name { } // ValidateCreate a commit related information when it be created. -func (c Commit) ValidateCreate() error { +func (c Commit) ValidateCreate(kit *kit.Kit) error { if c.ID != 0 { - return errors.New("id should not be set") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "id should not be set")) } if c.Spec == nil { - return errors.New("spec should be set") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "spec should be set")) } - if err := c.Spec.Validate(); err != nil { + if err := c.Spec.Validate(kit); err != nil { return err } @@ -119,24 +122,24 @@ type ReleasedCommitSpec struct { } // Validate commit specifics. -func (c CommitSpec) Validate() error { +func (c CommitSpec) Validate(kit *kit.Kit) error { if c.ContentID <= 0 { - return errors.New("invalid commit spec's content id") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid commit spec's content id")) } if c.Content == nil { - return errors.New("commit spec's content is empty") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "commit spec's content is empty")) } - if err := validator.ValidateMemo(c.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, c.Memo, false); err != nil { return err } - return c.Content.Validate() + return c.Content.Validate(kit) } // Validate released commit specifics. -func (c ReleasedCommitSpec) Validate() error { +func (c ReleasedCommitSpec) Validate(kit *kit.Kit) error { if c.ContentID <= 0 { return errors.New("invalid commit spec's content id") } @@ -145,11 +148,11 @@ func (c ReleasedCommitSpec) Validate() error { return errors.New("commit spec's content is empty") } - if err := validator.ValidateMemo(c.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, c.Memo, false); err != nil { return err } - return c.Content.Validate() + return c.Content.Validate(kit) } // CommitAttachmentColumns defines commit attachment's columns diff --git a/bcs-services/bcs-bscp/pkg/dal/table/config_item.go b/bcs-services/bcs-bscp/pkg/dal/table/config_item.go index b963283ef6..c728578249 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/config_item.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/config_item.go @@ -19,7 +19,10 @@ import ( "time" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/enumor" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // ConfigItemColumns defines config item's columns @@ -63,7 +66,7 @@ func (c ConfigItem) TableName() Name { } // ValidateCreate validate the config item's specific when create it. -func (c ConfigItem) ValidateCreate() error { +func (c ConfigItem) ValidateCreate(kit *kit.Kit) error { if c.ID != 0 { return errors.New("config item id can not be set") } @@ -72,7 +75,7 @@ func (c ConfigItem) ValidateCreate() error { return errors.New("spec should be set") } - if err := c.Spec.ValidateCreate(); err != nil { + if err := c.Spec.ValidateCreate(kit); err != nil { return err } @@ -96,13 +99,13 @@ func (c ConfigItem) ValidateCreate() error { } // ValidateUpdate validate the config item's specific when update it. -func (c ConfigItem) ValidateUpdate() error { +func (c ConfigItem) ValidateUpdate(kit *kit.Kit) error { if c.ID <= 0 { return errors.New("config item id should be set") } if c.Spec != nil { - if err := c.Spec.ValidateUpdate(); err != nil { + if err := c.Spec.ValidateUpdate(kit); err != nil { return err } } @@ -142,7 +145,7 @@ func (c ConfigItem) ValidateDelete() error { } // ValidateRecover validate the config item's specific when recover it. -func (c ConfigItem) ValidateRecover() error { +func (c ConfigItem) ValidateRecover(kit *kit.Kit) error { if c.ID == 0 { return errors.New("config item id can not be set") } @@ -151,7 +154,7 @@ func (c ConfigItem) ValidateRecover() error { return errors.New("spec should be set") } - if err := c.Spec.ValidateCreate(); err != nil { + if err := c.Spec.ValidateCreate(kit); err != nil { return err } @@ -216,29 +219,29 @@ type ConfigItemSpec struct { } // ValidateCreate validate the config item's specifics -func (ci ConfigItemSpec) ValidateCreate() error { +func (ci ConfigItemSpec) ValidateCreate(kit *kit.Kit) error { - if err := validator.ValidateFileName(ci.Name); err != nil { + if err := validator.ValidateFileName(kit, ci.Name); err != nil { return err } - if err := ci.FileType.Validate(); err != nil { + if err := ci.FileType.Validate(kit); err != nil { return err } - if err := ci.FileMode.Validate(); err != nil { + if err := ci.FileMode.Validate(kit); err != nil { return err } - if err := ValidatePath(ci.Path, ci.FileMode); err != nil { - return fmt.Errorf("%s err: %v", ci.Path, err) + if err := ValidatePath(kit, ci.Path, ci.FileMode); err != nil { + return err } - if err := validator.ValidateMemo(ci.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, ci.Memo, false); err != nil { return err } - if err := ci.Permission.Validate(ci.FileMode); err != nil { + if err := ci.Permission.Validate(kit, ci.FileMode); err != nil { return err } @@ -246,25 +249,25 @@ func (ci ConfigItemSpec) ValidateCreate() error { } // ValidatePath validate path. -func ValidatePath(path string, fileMode FileMode) error { +func ValidatePath(kit *kit.Kit, path string, fileMode FileMode) error { switch fileMode { case Windows: - if err := validator.ValidateWinFilePath(path); err != nil { - return fmt.Errorf("%s err: %v", path, err) + if err := validator.ValidateWinFilePath(kit, path); err != nil { + return errors.New(i18n.T(kit, "verify Windows file paths failed, path: %s, err: %v", path, err)) } case Unix: - if err := validator.ValidateUnixFilePath(path); err != nil { - return fmt.Errorf("%s err: %v", path, err) + if err := validator.ValidateUnixFilePath(kit, path); err != nil { + return errors.New(i18n.T(kit, "verify Unix file paths failed, path: %s, err: %v", path, err)) } default: - return errors.New("unknown file mode " + string(fileMode)) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "unknown file mode "+string(fileMode))) } return nil } // Validate file permission. -func (f FilePermission) Validate(mode FileMode) error { +func (f FilePermission) Validate(kit *kit.Kit, mode FileMode) error { switch mode { case Windows: return errors.New("windows file mode not supported at the moment") @@ -300,35 +303,35 @@ func (f FilePermission) Validate(mode FileMode) error { } // ValidateUpdate validate the config item's specifics when update it. -func (ci ConfigItemSpec) ValidateUpdate() error { +func (ci ConfigItemSpec) ValidateUpdate(kit *kit.Kit) error { if len(ci.Name) != 0 { - if err := validator.ValidateFileName(ci.Name); err != nil { + if err := validator.ValidateFileName(kit, ci.Name); err != nil { return err } } if len(ci.FileType) != 0 { - if err := ci.FileType.Validate(); err != nil { + if err := ci.FileType.Validate(kit); err != nil { return err } } - if err := ci.FileMode.Validate(); err != nil { + if err := ci.FileMode.Validate(kit); err != nil { return err } - if err := ValidatePath(ci.Path, ci.FileMode); err != nil { + if err := ValidatePath(kit, ci.Path, ci.FileMode); err != nil { return err } if len(ci.Memo) != 0 { - if err := validator.ValidateMemo(ci.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, ci.Memo, false); err != nil { return err } } - if err := ci.Permission.Validate(ci.FileMode); err != nil { + if err := ci.Permission.Validate(kit, ci.FileMode); err != nil { return err } @@ -391,12 +394,12 @@ const ( type FileFormat string // Validate the file format is supported or not. -func (f FileFormat) Validate() error { +func (f FileFormat) Validate(kit *kit.Kit) error { switch f { case Text: case Binary: default: - return fmt.Errorf("unsupported file format: %s", f) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "unsupported file format: %s", f)) } return nil @@ -413,12 +416,12 @@ const ( type FileMode string // Validate the file mode is supported or not. -func (f FileMode) Validate() error { +func (f FileMode) Validate(kit *kit.Kit) error { switch f { case Windows: case Unix: default: - return fmt.Errorf("unsupported file mode: %s", f) + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "unsupported file mode: %s", f)) } return nil diff --git a/bcs-services/bcs-bscp/pkg/dal/table/content.go b/bcs-services/bcs-bscp/pkg/dal/table/content.go index 8163d06567..0a1f5f64ca 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/content.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/content.go @@ -17,6 +17,9 @@ import ( "strings" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/enumor" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // ContentColumns defines 's columns @@ -60,16 +63,16 @@ func (c Content) TableName() Name { } // ValidateCreate validate create information when content is created. -func (c Content) ValidateCreate() error { +func (c Content) ValidateCreate(kit *kit.Kit) error { if c.ID != 0 { - return errors.New("content id can not set") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "content id can not set")) } if c.Spec == nil { - return errors.New("spec should be set") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "spec should be set")) } - if err := c.Spec.Validate(); err != nil { + if err := c.Spec.Validate(kit); err != nil { return err } @@ -77,7 +80,7 @@ func (c Content) ValidateCreate() error { return errors.New("attachment should be set") } - if err := c.Attachment.Validate(); err != nil { + if err := c.Attachment.Validate(kit); err != nil { return err } @@ -135,33 +138,35 @@ type ReleasedContentSpec struct { } // Validate content's spec -func (cs ContentSpec) Validate() error { +func (cs ContentSpec) Validate(kit *kit.Kit) error { // a file's sha256 signature value's length is 64. if len(cs.Signature) != 64 { - return errors.New("invalid content signature, should be config's sha256 value") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid content signature, should be config's sha256 value")) } if cs.Signature != strings.ToLower(cs.Signature) { - return errors.New("content signature should be lowercase") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "content signature should be lowercase")) } return nil } // Validate released content's spec -func (cs ReleasedContentSpec) Validate() error { +func (cs ReleasedContentSpec) Validate(kit *kit.Kit) error { // a file's sha256 signature value's length is 64. if len(cs.Signature) != 64 { - return errors.New("invalid content signature, should be config's sha256 value") + return errf.Errorf(errf.InvalidArgument, + i18n.T(kit, "invalid content signature, should be config's sha256 value")) } if len(cs.OriginSignature) != 64 { - return errors.New("invalid origin content signature, should be config's sha256 value") + return errf.Errorf(errf.InvalidArgument, + i18n.T(kit, "invalid origin content signature, should be config's sha256 value")) } if cs.Signature != strings.ToLower(cs.Signature) { - return errors.New("content signature should be lowercase") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "content signature should be lowercase")) } if cs.OriginSignature != strings.ToLower(cs.OriginSignature) { - return errors.New("origin content signature should be lowercase") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "origin content signature should be lowercase")) } return nil } @@ -183,17 +188,17 @@ type ContentAttachment struct { } // Validate content attachment. -func (c ContentAttachment) Validate() error { +func (c ContentAttachment) Validate(kit *kit.Kit) error { if c.BizID <= 0 { - return errors.New("invalid biz id") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid biz id")) } if c.AppID <= 0 { - return errors.New("invalid app id") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid app id")) } if c.ConfigItemID <= 0 { - return errors.New("invalid config item id") + return errf.Errorf(errf.InvalidArgument, i18n.T(kit, "invalid config item id")) } return nil diff --git a/bcs-services/bcs-bscp/pkg/dal/table/credential.go b/bcs-services/bcs-bscp/pkg/dal/table/credential.go index eb626df559..1cd029e0e7 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/credential.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/credential.go @@ -18,6 +18,7 @@ import ( "time" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // Credential defines a credential's detail information @@ -50,7 +51,7 @@ func (c *Credential) ResType() string { } // ValidateCreate validate Credential is valid or not when create it. -func (c *Credential) ValidateCreate() error { +func (c *Credential) ValidateCreate(kit *kit.Kit) error { if c.ID > 0 { return errors.New("id should not be set") @@ -60,7 +61,7 @@ func (c *Credential) ValidateCreate() error { return errors.New("spec not set") } - if err := c.Spec.ValidateCreate(); err != nil { + if err := c.Spec.ValidateCreate(kit); err != nil { return err } @@ -122,18 +123,18 @@ func (s CredentialType) String() string { } // ValidateCreate validate credential spec when it is created. -func (c *CredentialSpec) ValidateCreate() error { +func (c *CredentialSpec) ValidateCreate(kit *kit.Kit) error { if err := c.CredentialType.Validate(); err != nil { return err } - if err := validator.ValidateName(c.Name); err != nil { + if err := validator.ValidateName(kit, c.Name); err != nil { return err } return nil } // ValidateUpdate validate credential spec when it is updated. -func (c *CredentialSpec) ValidateUpdate() error { +func (c *CredentialSpec) ValidateUpdate(kit *kit.Kit) error { if c.CredentialType != "" { return errors.New("credential type cannot be updated once created") } @@ -143,7 +144,7 @@ func (c *CredentialSpec) ValidateUpdate() error { if c.EncCredential != "" { return errors.New("enc credential cannot be updated once created") } - if err := validator.ValidateName(c.Name); err != nil { + if err := validator.ValidateName(kit, c.Name); err != nil { return err } return nil @@ -182,7 +183,7 @@ func (c *Credential) ValidateDelete() error { } // ValidateUpdate validate Credential is valid or not when update it. -func (c *Credential) ValidateUpdate() error { +func (c *Credential) ValidateUpdate(kit *kit.Kit) error { if c.ID <= 0 { return errors.New("id should be set") @@ -192,7 +193,7 @@ func (c *Credential) ValidateUpdate() error { return errors.New("spec should be set") } - if err := c.Spec.ValidateUpdate(); err != nil { + if err := c.Spec.ValidateUpdate(kit); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/db.go b/bcs-services/bcs-bscp/pkg/dal/table/db.go index 44f397b995..2e0f4bfa6f 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/db.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/db.go @@ -18,6 +18,7 @@ import ( "time" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // ShardingDB defines a mysql instance @@ -37,7 +38,7 @@ func (s ShardingDB) TableName() Name { } // ValidateCreate sharding db details -func (s ShardingDB) ValidateCreate() error { +func (s ShardingDB) ValidateCreate(kit *kit.Kit) error { if s.ID > 0 { return errors.New("id can not set") } @@ -46,7 +47,7 @@ func (s ShardingDB) ValidateCreate() error { return errors.New("spec not set") } - if err := s.Spec.Validate(); err != nil { + if err := s.Spec.Validate(kit); err != nil { return err } @@ -58,7 +59,7 @@ func (s ShardingDB) ValidateCreate() error { } // ValidateUpdate sharding db details -func (s ShardingDB) ValidateUpdate() error { +func (s ShardingDB) ValidateUpdate(kit *kit.Kit) error { if s.ID <= 0 { return errors.New("id not set") @@ -68,7 +69,7 @@ func (s ShardingDB) ValidateUpdate() error { return errors.New("spec not set") } - if err := s.Spec.Validate(); err != nil { + if err := s.Spec.Validate(kit); err != nil { return err } @@ -133,7 +134,7 @@ type ShardingDBSpec struct { } // Validate sharding db instance's specifics -func (s ShardingDBSpec) Validate() error { +func (s ShardingDBSpec) Validate(kit *kit.Kit) error { if err := s.Type.Validate(); err != nil { return err @@ -155,7 +156,7 @@ func (s ShardingDBSpec) Validate() error { return errors.New("passport not set") } - if err := validator.ValidateMemo(s.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, s.Memo, false); err != nil { return err } @@ -175,7 +176,7 @@ func (s ShardingBiz) TableName() Name { } // ValidateCreate validate sharding biz details when create it -func (s ShardingBiz) ValidateCreate() error { +func (s ShardingBiz) ValidateCreate(kit *kit.Kit) error { if s.ID > 0 { return errors.New("id should not be set") @@ -185,7 +186,7 @@ func (s ShardingBiz) ValidateCreate() error { return errors.New("invalid spec") } - if err := s.Spec.Validate(); err != nil { + if err := s.Spec.Validate(kit); err != nil { return err } @@ -201,7 +202,7 @@ func (s ShardingBiz) ValidateCreate() error { } // ValidateUpdate validate sharding biz details when update it -func (s ShardingBiz) ValidateUpdate() error { +func (s ShardingBiz) ValidateUpdate(kit *kit.Kit) error { if s.ID <= 0 { return errors.New("invalid id") @@ -211,7 +212,7 @@ func (s ShardingBiz) ValidateUpdate() error { return errors.New("spec not set") } - if err := s.Spec.Validate(); err != nil { + if err := s.Spec.Validate(kit); err != nil { return err } @@ -243,7 +244,7 @@ type ShardingBizSpec struct { } // Validate sharding biz specifics -func (s ShardingBizSpec) Validate() error { +func (s ShardingBizSpec) Validate(kit *kit.Kit) error { if s.ShardingDBID <= 0 { return errors.New("invalid sharding db id") } @@ -252,7 +253,7 @@ func (s ShardingBizSpec) Validate() error { return errors.New("invalid biz id") } - if err := validator.ValidateMemo(s.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, s.Memo, false); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/group.go b/bcs-services/bcs-bscp/pkg/dal/table/group.go index 92119cd248..4d9f593e89 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/group.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/group.go @@ -18,6 +18,7 @@ import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/enumor" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/runtime/selector" ) @@ -62,7 +63,7 @@ func (g Group) ResType() string { } // ValidateCreate validate group is valid or not when create it. -func (g Group) ValidateCreate() error { +func (g Group) ValidateCreate(kit *kit.Kit) error { if g.ID > 0 { return errors.New("id should not be set") @@ -72,7 +73,7 @@ func (g Group) ValidateCreate() error { return errors.New("spec not set") } - if err := g.Spec.ValidateCreate(); err != nil { + if err := g.Spec.ValidateCreate(kit); err != nil { return err } @@ -96,7 +97,7 @@ func (g Group) ValidateCreate() error { } // ValidateUpdate validate group is valid or not when update it. -func (g Group) ValidateUpdate() error { +func (g Group) ValidateUpdate(kit *kit.Kit) error { if g.ID <= 0 { return errors.New("id should be set") @@ -105,7 +106,7 @@ func (g Group) ValidateUpdate() error { changed := false if g.Spec != nil { changed = true - if err := g.Spec.ValidateUpdate(); err != nil { + if err := g.Spec.ValidateUpdate(kit); err != nil { return err } } @@ -204,8 +205,8 @@ func (g GroupMode) Validate() error { } // ValidateCreate validate group spec when it is created. -func (g GroupSpec) ValidateCreate() error { - if err := validator.ValidateName(g.Name); err != nil { +func (g GroupSpec) ValidateCreate(kit *kit.Kit) error { + if err := validator.ValidateName(kit, g.Name); err != nil { return err } if err := g.Mode.Validate(); err != nil { @@ -230,8 +231,8 @@ func (g GroupSpec) ValidateCreate() error { } // ValidateUpdate validate group spec when it is updated. -func (g GroupSpec) ValidateUpdate() error { - if err := validator.ValidateName(g.Name); err != nil { +func (g GroupSpec) ValidateUpdate(kit *kit.Kit) error { + if err := validator.ValidateName(kit, g.Name); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/hook.go b/bcs-services/bcs-bscp/pkg/dal/table/hook.go index 0d99453dea..e5e8bf21c2 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/hook.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/hook.go @@ -19,6 +19,7 @@ import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/enumor" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/types" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // Hook defines a hook for an app to publish. @@ -52,7 +53,7 @@ func (h *Hook) ResType() string { } // ValidateCreate validate hook is valid or not when create it. -func (h Hook) ValidateCreate() error { +func (h Hook) ValidateCreate(kit *kit.Kit) error { if h.ID > 0 { return errors.New("id should not be set") @@ -62,7 +63,7 @@ func (h Hook) ValidateCreate() error { return errors.New("spec not set") } - if err := h.Spec.ValidateCreate(); err != nil { + if err := h.Spec.ValidateCreate(kit); err != nil { return err } @@ -99,13 +100,13 @@ func (h Hook) ValidateDelete() error { } // ValidateUpdate validate the hook's info when update it. -func (h Hook) ValidateUpdate() error { +func (h Hook) ValidateUpdate(kit *kit.Kit) error { if h.ID <= 0 { return errors.New("hook id should be set") } if h.Spec != nil { - if err := h.Spec.ValidateUpdate(); err != nil { + if err := h.Spec.ValidateUpdate(kit); err != nil { return err } } @@ -144,6 +145,12 @@ const ( // Python is the type for python hook Python ScriptType = "python" + + // Bat is the type for bat hook + Bat ScriptType = "bat" + + // PowerShell is the type for powershell hook + PowerShell ScriptType = "powershell" ) // ScriptType is the type of hook script @@ -162,6 +169,8 @@ func (s ScriptType) Validate() error { switch s { case Shell: case Python: + case Bat: + case PowerShell: default: return fmt.Errorf("unsupported hook type: %s", s) } @@ -170,12 +179,12 @@ func (s ScriptType) Validate() error { } // ValidateCreate validate hook spec when it is created. -func (s HookSpec) ValidateCreate() error { - if err := validator.ValidateFileName(s.Name); err != nil { +func (s HookSpec) ValidateCreate(kit *kit.Kit) error { + if err := validator.ValidateFileName(kit, s.Name); err != nil { return err } - if err := validator.ValidateMemo(s.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, s.Memo, false); err != nil { return err } @@ -187,8 +196,8 @@ func (s HookSpec) ValidateCreate() error { } // ValidateUpdate validate hook spec when it is updated. -func (s HookSpec) ValidateUpdate() error { - if err := validator.ValidateMemo(s.Memo, false); err != nil { +func (s HookSpec) ValidateUpdate(kit *kit.Kit) error { + if err := validator.ValidateMemo(kit, s.Memo, false); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/hook_revision.go b/bcs-services/bcs-bscp/pkg/dal/table/hook_revision.go index a03e76f1d7..ab3621f0c4 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/hook_revision.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/hook_revision.go @@ -18,6 +18,7 @@ import ( "strings" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // HookRevision 脚本版本 @@ -65,13 +66,13 @@ func (r *HookRevision) ResType() string { } // ValidateCreate validate hook is valid or not when create it. -func (r *HookRevision) ValidateCreate() error { +func (r *HookRevision) ValidateCreate(kit *kit.Kit) error { if r.Spec == nil { return errors.New("spec not set") } - if err := r.Spec.ValidateCreate(); err != nil { + if err := r.Spec.ValidateCreate(kit); err != nil { return err } @@ -95,13 +96,13 @@ func (r *HookRevision) ValidateCreate() error { } // ValidateCreate validate spec when created. -func (s *HookRevisionSpec) ValidateCreate() error { +func (s *HookRevisionSpec) ValidateCreate(kit *kit.Kit) error { - if err := validator.ValidateReleaseName(s.Name); err != nil { + if err := validator.ValidateReleaseName(kit, s.Name); err != nil { return err } - if err := validator.ValidateMemo(s.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, s.Memo, false); err != nil { return err } @@ -113,13 +114,13 @@ func (s *HookRevisionSpec) ValidateCreate() error { } // ValidateUpdate validate spec when updated. -func (s *HookRevisionSpec) ValidateUpdate() error { +func (s *HookRevisionSpec) ValidateUpdate(kit *kit.Kit) error { - if err := validator.ValidateReleaseName(s.Name); err != nil { + if err := validator.ValidateReleaseName(kit, s.Name); err != nil { return err } - if err := validator.ValidateMemo(s.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, s.Memo, false); err != nil { return err } @@ -194,7 +195,7 @@ func (r HookRevision) ValidatePublish() error { } // ValidateUpdate validate the update -func (r HookRevision) ValidateUpdate() error { +func (r HookRevision) ValidateUpdate(kit *kit.Kit) error { if r.ID <= 0 { return errors.New("hook revision id should be set") @@ -212,7 +213,7 @@ func (r HookRevision) ValidateUpdate() error { return errors.New("spec not set") } - if err := r.Spec.ValidateUpdate(); err != nil { + if err := r.Spec.ValidateUpdate(kit); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/kv.go b/bcs-services/bcs-bscp/pkg/dal/table/kv.go index 3e0a88c528..cdcdd7212e 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/kv.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/kv.go @@ -22,6 +22,7 @@ import ( "gopkg.in/yaml.v3" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/tools" ) @@ -71,7 +72,7 @@ func (k *Kv) ResType() string { } // ValidateCreate validate kv is valid or not when create it. -func (k Kv) ValidateCreate() error { +func (k Kv) ValidateCreate(kit *kit.Kit) error { if k.ID > 0 { return errors.New("id should not be set") @@ -86,7 +87,7 @@ func (k Kv) ValidateCreate() error { return errors.New("spec not set") } - if err := k.Spec.ValidateCreate(); err != nil { + if err := k.Spec.ValidateCreate(kit); err != nil { return err } @@ -110,8 +111,8 @@ func (k Kv) ValidateCreate() error { } // ValidateCreate validate kv spec when it is created. -func (k KvSpec) ValidateCreate() error { - if err := validator.ValidateName(k.Key); err != nil { +func (k KvSpec) ValidateCreate(kit *kit.Kit) error { + if err := validator.ValidateName(kit, k.Key); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/release.go b/bcs-services/bcs-bscp/pkg/dal/table/release.go index 298df42981..7bf5565f4e 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/release.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/release.go @@ -18,6 +18,7 @@ import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/enumor" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // ReleaseColumns defines Release's columns @@ -62,7 +63,7 @@ func (r *Release) ResType() string { } // ValidateCreate a release's information -func (r Release) ValidateCreate() error { +func (r Release) ValidateCreate(kit *kit.Kit) error { if r.ID != 0 { return errors.New("id should not set") } @@ -71,7 +72,7 @@ func (r Release) ValidateCreate() error { return errors.New("spec should be set") } - if err := r.Spec.Validate(); err != nil { + if err := r.Spec.Validate(kit); err != nil { return err } @@ -126,12 +127,12 @@ type ReleaseSpec struct { } // Validate a release specifics when it is created. -func (r ReleaseSpec) Validate() error { - if err := validator.ValidateReleaseName(r.Name); err != nil { +func (r ReleaseSpec) Validate(kit *kit.Kit) error { + if err := validator.ValidateReleaseName(kit, r.Name); err != nil { return err } - if err := validator.ValidateMemo(r.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, r.Memo, false); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/released_ci.go b/bcs-services/bcs-bscp/pkg/dal/table/released_ci.go index 99bab91600..2d4f2eafc6 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/released_ci.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/released_ci.go @@ -17,6 +17,7 @@ import ( "fmt" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/enumor" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // ReleasedConfigItemColumns defines ReleasedConfigItem's columns @@ -108,7 +109,7 @@ func (rs RciList) ResType() string { } // Validate the released config item information. -func (r *ReleasedConfigItem) Validate() error { +func (r *ReleasedConfigItem) Validate(kit *kit.Kit) error { if r.ID != 0 { return errors.New("id should not set") } @@ -128,12 +129,12 @@ func (r *ReleasedConfigItem) Validate() error { return errors.New("invalid commit id") } - if err := r.CommitSpec.Validate(); err != nil { + if err := r.CommitSpec.Validate(kit); err != nil { return err } } else { // for rendered template config item, need to validate content signature - if err := r.CommitSpec.Content.Validate(); err != nil { + if err := r.CommitSpec.Content.Validate(kit); err != nil { return err } } @@ -142,7 +143,7 @@ func (r *ReleasedConfigItem) Validate() error { return errors.New("config item spec is empty") } - if err := r.ConfigItemSpec.ValidateCreate(); err != nil { + if err := r.ConfigItemSpec.ValidateCreate(kit); err != nil { return fmt.Errorf("invalid config item spec, err: %v", err) } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/released_kv.go b/bcs-services/bcs-bscp/pkg/dal/table/released_kv.go index 7eee74d80c..2fb835eeb0 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/released_kv.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/released_kv.go @@ -12,7 +12,11 @@ package table -import "errors" +import ( + "errors" + + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" +) // ReleasedKv 已生成版本的kv type ReleasedKv struct { @@ -72,7 +76,7 @@ func (rs RkvList) ResType() string { } // ValidateCreate validate ReleasedKv is valid or not when create ir. -func (r *ReleasedKv) ValidateCreate() error { +func (r *ReleasedKv) ValidateCreate(kit *kit.Kit) error { if r.ID > 0 { return errors.New("id should not be set") } @@ -81,7 +85,7 @@ func (r *ReleasedKv) ValidateCreate() error { return errors.New("spec not set") } - if err := r.Spec.ValidateCreate(); err != nil { + if err := r.Spec.ValidateCreate(kit); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/strategy.go b/bcs-services/bcs-bscp/pkg/dal/table/strategy.go index 6b92eb714a..2f5e6521d4 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/strategy.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/strategy.go @@ -19,6 +19,7 @@ import ( "fmt" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/runtime/selector" ) @@ -84,7 +85,7 @@ func (s *Strategy) ResType() string { } // ValidateCreate validate strategy is valid or not when create it. -func (s *Strategy) ValidateCreate() error { +func (s *Strategy) ValidateCreate(kit *kit.Kit) error { if s.ID > 0 { return errors.New("id should not be set") @@ -94,7 +95,7 @@ func (s *Strategy) ValidateCreate() error { return errors.New("spec not set") } - if err := s.Spec.ValidateCreate(); err != nil { + if err := s.Spec.ValidateCreate(kit); err != nil { return err } @@ -126,7 +127,7 @@ func (s *Strategy) ValidateCreate() error { } // ValidateUpdate validate strategy is valid or not when update it. -func (s *Strategy) ValidateUpdate(asDefault bool, namespaced bool) error { +func (s *Strategy) ValidateUpdate(kit *kit.Kit, asDefault bool, namespaced bool) error { if s.ID <= 0 { return errors.New("id should be set") @@ -135,7 +136,7 @@ func (s *Strategy) ValidateUpdate(asDefault bool, namespaced bool) error { changed := false if s.Spec != nil { changed = true - if err := s.Spec.ValidateUpdate(asDefault, namespaced); err != nil { + if err := s.Spec.ValidateUpdate(kit, asDefault, namespaced); err != nil { return err } } @@ -226,8 +227,8 @@ type StrategySpec struct { } // ValidateCreate validate strategy spec when it is created. -func (s StrategySpec) ValidateCreate() error { - if err := validator.ValidateName(s.Name); err != nil { +func (s StrategySpec) ValidateCreate(kit *kit.Kit) error { + if err := validator.ValidateName(kit, s.Name); err != nil { return err } @@ -240,13 +241,13 @@ func (s StrategySpec) ValidateCreate() error { return errors.New("strategy's scope can not be empty at gray release mode") } for _, group := range s.Scope.Groups { - if err := group.ValidateCreate(); err != nil { + if err := group.ValidateCreate(kit); err != nil { return err } } } - if err := validator.ValidateMemo(s.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, s.Memo, false); err != nil { return err } @@ -254,10 +255,10 @@ func (s StrategySpec) ValidateCreate() error { } // ValidateUpdate validate strategy spec when it is updated. -func (s StrategySpec) ValidateUpdate(asDefault bool, namespaced bool) error { +func (s StrategySpec) ValidateUpdate(kit *kit.Kit, asDefault bool, namespaced bool) error { if len(s.Name) != 0 { - if err := validator.ValidateName(s.Name); err != nil { + if err := validator.ValidateName(kit, s.Name); err != nil { return err } } @@ -270,7 +271,7 @@ func (s StrategySpec) ValidateUpdate(asDefault bool, namespaced bool) error { return errors.New("namespace can not be updated") } - if err := validator.ValidateMemo(s.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, s.Memo, false); err != nil { return err } @@ -440,12 +441,12 @@ func (s SubStrategy) IsEmpty() bool { } // ValidateCreate validate sub strategy when it is created. -func (s SubStrategy) ValidateCreate() error { +func (s SubStrategy) ValidateCreate(kit *kit.Kit) error { if s.Spec == nil { return errors.New("sub strategy's spec is empty") } - if err := s.Spec.Validate(); err != nil { + if err := s.Spec.Validate(kit); err != nil { return err } @@ -453,12 +454,12 @@ func (s SubStrategy) ValidateCreate() error { } // ValidateUpdate validate sub strategy when it is updated. -func (s SubStrategy) ValidateUpdate() error { +func (s SubStrategy) ValidateUpdate(kit *kit.Kit) error { if s.Spec == nil { return errors.New("sub strategy's spec is empty") } - if err := s.Spec.Validate(); err != nil { + if err := s.Spec.Validate(kit); err != nil { return err } @@ -498,8 +499,8 @@ func (s SubStrategySpec) IsEmpty() bool { } // Validate the sub strategy's specifics -func (s SubStrategySpec) Validate() error { - if err := validator.ValidateName(s.Name); err != nil { +func (s SubStrategySpec) Validate(kit *kit.Kit) error { + if err := validator.ValidateName(kit, s.Name); err != nil { return err } @@ -515,7 +516,7 @@ func (s SubStrategySpec) Validate() error { return err } - if err := validator.ValidateMemo(s.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, s.Memo, false); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/template.go b/bcs-services/bcs-bscp/pkg/dal/table/template.go index af03b13b12..b6df6b44cc 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/template.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/template.go @@ -17,6 +17,7 @@ import ( "fmt" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // Template 模版 @@ -48,7 +49,7 @@ func (t *Template) ResType() string { } // ValidateCreate validate template is valid or not when create it. -func (t *Template) ValidateCreate() error { +func (t *Template) ValidateCreate(kit *kit.Kit) error { if t.ID > 0 { return errors.New("id should not be set") } @@ -57,7 +58,7 @@ func (t *Template) ValidateCreate() error { return errors.New("spec not set") } - if err := t.Spec.ValidateCreate(); err != nil { + if err := t.Spec.ValidateCreate(kit); err != nil { return err } @@ -81,14 +82,14 @@ func (t *Template) ValidateCreate() error { } // ValidateUpdate validate template is valid or not when update it. -func (t *Template) ValidateUpdate() error { +func (t *Template) ValidateUpdate(kit *kit.Kit) error { if t.ID <= 0 { return errors.New("id should be set") } if t.Spec != nil { - if err := t.Spec.ValidateUpdate(); err != nil { + if err := t.Spec.ValidateUpdate(kit); err != nil { return err } } @@ -137,12 +138,12 @@ type TemplateSpec struct { } // ValidateCreate validate template spec when it is created. -func (t *TemplateSpec) ValidateCreate() error { - if err := validator.ValidateFileName(t.Name); err != nil { +func (t *TemplateSpec) ValidateCreate(kit *kit.Kit) error { + if err := validator.ValidateFileName(kit, t.Name); err != nil { return err } - if err := ValidatePath(t.Path, Unix); err != nil { + if err := ValidatePath(kit, t.Path, Unix); err != nil { return fmt.Errorf("%s err: %v", t.Path, err) } @@ -150,8 +151,8 @@ func (t *TemplateSpec) ValidateCreate() error { } // ValidateUpdate validate template spec when it is updated. -func (t *TemplateSpec) ValidateUpdate() error { - if err := validator.ValidateMemo(t.Memo, false); err != nil { +func (t *TemplateSpec) ValidateUpdate(kit *kit.Kit) error { + if err := validator.ValidateMemo(kit, t.Memo, false); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/template_revision.go b/bcs-services/bcs-bscp/pkg/dal/table/template_revision.go index 218a356b94..e910df756b 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/template_revision.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/template_revision.go @@ -16,6 +16,7 @@ import ( "errors" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // TemplateRevision 模版版本 @@ -47,7 +48,7 @@ func (t *TemplateRevision) ResType() string { } // ValidateCreate validate template revision is valid or not when create it. -func (t *TemplateRevision) ValidateCreate() error { +func (t *TemplateRevision) ValidateCreate(kit *kit.Kit) error { if t.ID > 0 { return errors.New("id should not be set") } @@ -56,7 +57,7 @@ func (t *TemplateRevision) ValidateCreate() error { return errors.New("spec not set") } - if err := t.Spec.ValidateCreate(); err != nil { + if err := t.Spec.ValidateCreate(kit); err != nil { return err } @@ -109,36 +110,36 @@ type TemplateRevisionSpec struct { } // ValidateCreate validate template revision spec when it is created. -func (t *TemplateRevisionSpec) ValidateCreate() error { - if err := validator.ValidateReleaseName(t.RevisionName); err != nil { +func (t *TemplateRevisionSpec) ValidateCreate(kit *kit.Kit) error { + if err := validator.ValidateReleaseName(kit, t.RevisionName); err != nil { return err } - if err := validator.ValidateMemo(t.RevisionMemo, false); err != nil { + if err := validator.ValidateMemo(kit, t.RevisionMemo, false); err != nil { return err } - if err := validator.ValidateFileName(t.Name); err != nil { + if err := validator.ValidateFileName(kit, t.Name); err != nil { return err } - if err := t.FileType.Validate(); err != nil { + if err := t.FileType.Validate(kit); err != nil { return err } - if err := t.FileMode.Validate(); err != nil { + if err := t.FileMode.Validate(kit); err != nil { return err } - if err := ValidatePath(t.Path, Unix); err != nil { + if err := ValidatePath(kit, t.Path, Unix); err != nil { return err } - if err := t.Permission.Validate(t.FileMode); err != nil { + if err := t.Permission.Validate(kit, t.FileMode); err != nil { return err } - if err := t.ContentSpec.Validate(); err != nil { + if err := t.ContentSpec.Validate(kit); err != nil { return err } @@ -146,8 +147,8 @@ func (t *TemplateRevisionSpec) ValidateCreate() error { } // ValidateUpdate validate template revision spec when it is updated. -func (t *TemplateRevisionSpec) ValidateUpdate() error { - if err := validator.ValidateMemo(t.RevisionMemo, false); err != nil { +func (t *TemplateRevisionSpec) ValidateUpdate(kit *kit.Kit) error { + if err := validator.ValidateMemo(kit, t.RevisionMemo, false); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/template_set.go b/bcs-services/bcs-bscp/pkg/dal/table/template_set.go index bf935f5306..9563b232c7 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/template_set.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/template_set.go @@ -17,6 +17,7 @@ import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/types" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // TemplateSet 模版套餐 @@ -48,7 +49,7 @@ func (t *TemplateSet) ResType() string { } // ValidateCreate validate template set is valid or not when create it. -func (t *TemplateSet) ValidateCreate() error { +func (t *TemplateSet) ValidateCreate(kit *kit.Kit) error { if t.ID > 0 { return errors.New("id should not be set") } @@ -57,7 +58,7 @@ func (t *TemplateSet) ValidateCreate() error { return errors.New("spec not set") } - if err := t.Spec.ValidateCreate(); err != nil { + if err := t.Spec.ValidateCreate(kit); err != nil { return err } @@ -81,14 +82,14 @@ func (t *TemplateSet) ValidateCreate() error { } // ValidateUpdate validate template set is valid or not when update it. -func (t *TemplateSet) ValidateUpdate() error { +func (t *TemplateSet) ValidateUpdate(kit *kit.Kit) error { if t.ID <= 0 { return errors.New("id should be set") } if t.Spec != nil { - if err := t.Spec.ValidateUpdate(); err != nil { + if err := t.Spec.ValidateUpdate(kit); err != nil { return err } } @@ -139,8 +140,8 @@ type TemplateSetSpec struct { } // ValidateCreate validate template set spec when it is created. -func (t *TemplateSetSpec) ValidateCreate() error { - if err := validator.ValidateName(t.Name); err != nil { +func (t *TemplateSetSpec) ValidateCreate(kit *kit.Kit) error { + if err := validator.ValidateName(kit, t.Name); err != nil { return err } @@ -148,8 +149,8 @@ func (t *TemplateSetSpec) ValidateCreate() error { } // ValidateUpdate validate template set spec when it is updated. -func (t *TemplateSetSpec) ValidateUpdate() error { - if err := validator.ValidateMemo(t.Memo, false); err != nil { +func (t *TemplateSetSpec) ValidateUpdate(kit *kit.Kit) error { + if err := validator.ValidateMemo(kit, t.Memo, false); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/template_space.go b/bcs-services/bcs-bscp/pkg/dal/table/template_space.go index 22547f675c..af0c313890 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/template_space.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/template_space.go @@ -16,6 +16,7 @@ import ( "errors" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // TemplateSpace 模版空间 @@ -47,7 +48,7 @@ func (t *TemplateSpace) ResType() string { } // ValidateCreate validate template space is valid or not when create it. -func (t *TemplateSpace) ValidateCreate() error { +func (t *TemplateSpace) ValidateCreate(kit *kit.Kit) error { if t.ID > 0 { return errors.New("id should not be set") } @@ -56,7 +57,7 @@ func (t *TemplateSpace) ValidateCreate() error { return errors.New("spec not set") } - if err := t.Spec.ValidateCreate(); err != nil { + if err := t.Spec.ValidateCreate(kit); err != nil { return err } @@ -80,14 +81,14 @@ func (t *TemplateSpace) ValidateCreate() error { } // ValidateUpdate validate template space is valid or not when update it. -func (t *TemplateSpace) ValidateUpdate() error { +func (t *TemplateSpace) ValidateUpdate(kit *kit.Kit) error { if t.ID <= 0 { return errors.New("id should be set") } if t.Spec != nil { - if err := t.Spec.ValidateUpdate(); err != nil { + if err := t.Spec.ValidateUpdate(kit); err != nil { return err } } @@ -135,8 +136,8 @@ type TemplateSpaceSpec struct { } // ValidateCreate validate template space spec when it is created. -func (t *TemplateSpaceSpec) ValidateCreate() error { - if err := validator.ValidateName(t.Name); err != nil { +func (t *TemplateSpaceSpec) ValidateCreate(kit *kit.Kit) error { + if err := validator.ValidateName(kit, t.Name); err != nil { return err } @@ -144,8 +145,8 @@ func (t *TemplateSpaceSpec) ValidateCreate() error { } // ValidateUpdate validate template space spec when it is updated. -func (t *TemplateSpaceSpec) ValidateUpdate() error { - if err := validator.ValidateMemo(t.Memo, false); err != nil { +func (t *TemplateSpaceSpec) ValidateUpdate(kit *kit.Kit) error { + if err := validator.ValidateMemo(kit, t.Memo, false); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/table/template_variable.go b/bcs-services/bcs-bscp/pkg/dal/table/template_variable.go index b15a586842..d8639ed7ad 100644 --- a/bcs-services/bcs-bscp/pkg/dal/table/template_variable.go +++ b/bcs-services/bcs-bscp/pkg/dal/table/template_variable.go @@ -163,7 +163,7 @@ func (t *TemplateVariableSpec) ValidateUpdate(kit *kit.Kit) error { return err } - if err := validator.ValidateMemo(t.Memo, false); err != nil { + if err := validator.ValidateMemo(kit, t.Memo, false); err != nil { return err } diff --git a/bcs-services/bcs-bscp/pkg/dal/vault/kv.go b/bcs-services/bcs-bscp/pkg/dal/vault/kv.go index dcb1bc866e..dfa8b858be 100644 --- a/bcs-services/bcs-bscp/pkg/dal/vault/kv.go +++ b/bcs-services/bcs-bscp/pkg/dal/vault/kv.go @@ -15,7 +15,9 @@ package vault import ( "fmt" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/types" ) @@ -91,14 +93,14 @@ func (s *set) GetKvByVersion(kit *kit.Kit, opt *types.GetKvByVersion) (kvType ta kvTypeStr, ok := kv.Data["kv_type"].(string) if !ok { - return "", "", fmt.Errorf("failed to get 'kv_type' as a string from kv.Data,"+ - " err : %v", err) + return "", "", errf.Errorf(errf.InvalidRequest, i18n.T(kit, `get 'kv_type' as a string + from kv.Data failed, err: %v`, err)) } kvType = table.DataType(kvTypeStr) value, ok = kv.Data["value"].(string) if !ok { - return "", "", fmt.Errorf("value type assertion failed: err : %v", err) + return "", "", errf.Errorf(errf.InvalidRequest, i18n.T(kit, "value type assertion failed, err: %v", err)) } return kvType, value, nil diff --git a/bcs-services/bcs-bscp/pkg/i18n/translations/catalog.go b/bcs-services/bcs-bscp/pkg/i18n/translations/catalog.go index 9244692169..1654e9a689 100644 --- a/bcs-services/bcs-bscp/pkg/i18n/translations/catalog.go +++ b/bcs-services/bcs-bscp/pkg/i18n/translations/catalog.go @@ -39,154 +39,471 @@ func init() { } var messageKeyToIndex = map[string]int{ - "Unnamed Version": 51, - "app %d not found": 19, - "attachment not set": 45, - "batch add templates to template sets failed, err: %s": 31, - "batch delete config items failed": 13, - "batch delete failed": 16, - "batch delete groups failed": 14, - "batch update app template binding's failed, err: %s": 30, - "client ids is empty": 12, - "count the number of app configs failed, err: %s": 39, - "create directory failed %s": 2, - "create temporary directory failed %s": 3, - "db operation failed": 41, - "decompress file failed, exceeding the maximum file limit threshold of %d": 10, + "%s and %s path file conflict": 175, + "%s sub path is system reserved path, do not allow to use": 98, + "Unnamed Version": 122, + "app %d not found": 28, + "app %s is not file type": 43, + "app alias %s already exists": 23, + "app is nil": 114, + "app name %s already exists": 22, + "app related biz %d is not exist": 30, + "app spec is nil": 147, + "app's type can not be updated": 149, + "appID can not be 0": 123, + "attachment not set": 87, + "authorize failed": 172, + "batch add templates to template sets failed, err: %s": 66, + "batch create contents failed, err: %s": 47, + "batch delete config items failed": 16, + "batch delete failed": 19, + "batch delete groups failed": 17, + "batch update app template binding's failed, err: %s": 65, + "batch update app template binding's failed, err: %v": 71, + "business query failed, err: %v": 29, + "client ids is empty": 15, + "commit spec's content is empty": 156, + "content id can not set": 161, + "content signature should be lowercase": 163, + "count app %d's config items failed, err: %v": 118, + "count the number of app configs failed, err: %s": 77, + "count the number of service configurations failed, err: %s": 42, + "create app failed, err: %v": 116, + "create data failed, err: %v": 115, + "create directory failed, err: %v": 2, + "create kv failed, err: %v": 61, + "create temporary directory failed, err: %v": 3, + "db operation failed": 83, + "decompress file failed, exceeding the maximum file limit threshold of %d": 12, "decompress the file. The size of file %s exceeds the maximum limit of %s": 4, - "decompression failed %s": 5, - "default_val %s is not a number type": 52, - "delete template from template sets failed, err: %v, rid: %s": 34, - "detecting file conflicts failed %s": 7, - "get app template bindings by template set ids, err: %s": 29, - "get excluded hook failed, err: %s": 26, - "get excluded kv failed, err: %s": 28, - "get reference template set under this app failed, err: %s": 22, - "get template binding relationships through business and service IDs failed, err: %s": 21, - "get template set data failed, err: %s": 32, - "get template set failed, err: %s": 37, - "hook is nil": 50, - "hook name %s already exists": 25, - "id is required": 0, - "id should not be set": 43, - "invalid argument": 42, - "invalid name, length should <= 128": 48, - "invalid name, length should >= 9 and must start with prefix bk_bscp_ (ignore case)": 47, - "invalid name: %s, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)": 49, - "list app template bindings by app ids failed, err: %s": 36, - "list apps by app ids failed, err: %s": 38, - "list template sets by template set ids failed, err: %s": 23, - "list templates by tuple failed, err: %v": 35, - "obtain the number of configuration items": 20, - "read file failed %s": 1, - "remove the template set bound to the app failed, err: %s": 24, - "retrieve the referenced script failed, err: %s": 27, - "revision not set": 46, - "same template variable name %s already exists": 40, - "spec not set": 44, - "template variable name must start with %s": 17, - "the length of hook ids is %d, it must be within the range of [1,%d]": 15, - "the length of template variable ids is %d, it must be within the range of [1,%d]": 18, - "there is no template file under this template set": 33, - "unsupported variable type: %s": 53, - "upload completed": 8, - "upload completed, %d failed": 9, - "upload failed, please make sure the file size does not exceed %s": 11, - "upload file failed %s": 6, + "decompression failed, err: %v": 5, + "default_val %s is not a number type": 168, + "delete app failed, err: %v": 27, + "delete app related resources failed, err: %v": 26, + "delete one app template binding instance by app id failed, err: %s": 46, + "delete one app template variable failed, err: %s": 48, + "delete template from template sets failed, err: %v": 69, + "get 'kv_type' as a string \n\t\tfrom kv.Data failed, err: %v": 170, + "get app %d's template binding failed, err: %v": 119, + "get app fail, key: %s, err: %v": 59, + "get app failed, err: %v": 24, + "get app template bindings by template set ids, err: %s": 64, + "get app template bindings by template set ids, err: %v": 70, + "get excluded hook failed, err: %s": 55, + "get excluded kv failed, err: %s": 63, + "get kv (%d) failed, err: %v": 57, + "get permission to apply failed, err: %v": 173, + "get reference template set under this app failed, err: %s": 51, + "get template binding relationships through business and service IDs failed, err: %s": 50, + "get template count failed, err: %v": 140, + "get template failed, err: %v": 133, + "get template release failed, err: %v": 135, + "get template set count failed, err: %v": 138, + "get template set data failed, err: %s": 67, + "get template set failed, err: %s": 74, + "get template set failed, err: %v": 137, + "get the current number of service config items failed, err: %v": 11, + "grpc status with details failed, err: %v": 174, + "hook is nil": 121, + "hook name %s already exists": 54, + "id can not be set": 144, + "id is required": 0, + "id should not be set": 85, + "invalid app id": 166, + "invalid argument": 84, + "invalid biz id": 145, + "invalid commit spec's content id": 155, + "invalid config item id": 167, + "invalid content signature, should be config's sha256 value": 162, + "invalid data-type": 153, + "invalid memo, length should <= 200": 100, + "invalid name %s, name cannot all be '.'": 109, + "invalid name, length should <= 128": 103, + "invalid name, length should <= 64": 108, + "invalid name, length should >= 1": 102, + "invalid name, length should >= 9 and must start with prefix bk_bscp_ (ignore case)": 105, + "invalid name: %s, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number": 107, + "invalid name: %s, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)": 106, + "invalid name: %s, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers": 104, + "invalid namespace, length should <= 128": 111, + "invalid namespace, length should >= 1": 110, + "invalid origin content signature, should be config's sha256 value": 164, + "invalid path %s, path cannot all be '.' ": 92, + "invalid path, length should <= 1024": 90, + "invalid path, length should <= 256": 93, + "invalid path, length should >= 1": 89, + "invalid path, should start with '/'": 91, + "invalid path,path does not conform to the win file path format specification": 94, + "invalid reload file path, should <= 128": 96, + "invalid spec, is nil": 146, + "invalid username, length should <= 32": 113, + "invalid username, length should >= 1": 112, + "kv type does not match the data type defined in the application": 60, + "list app template bindings by app ids failed, err: %s": 73, + "list apps by app ids failed, err: %s": 76, + "list config item failed, err: %v": 10, + "list template config failed, err: %v": 7, + "list template revisions failed, err: %v": 39, + "list template sets by template set ids failed, err: %s": 52, + "list template sets by template set ids failed, err: %v": 32, + "list template spaces failed, err: %v": 34, + "list templates by tuple failed, err: %v": 72, + "list templates data failed, err: %s": 79, + "list templates failed, err: %v": 14, + "list templates of template set failed, err: %v": 37, + "list templates revisions data failed, err: %s": 81, + "memo is required, can not be empty": 99, + "not support table config type for now": 150, + "obtain the number of configuration items": 49, + "origin content signature should be lowercase": 165, + "read file failed, err: %v": 1, + "reload file path is not the absolute path": 97, + "reload file path is required": 95, + "remove the template set bound to the app failed, err: %s": 53, + "resource name '%s' is prefixed with '%s' is reserved name, which is not allows to use": 101, + "retrieve the referenced script failed, err: %s": 56, + "revision not set": 88, + "same template variable name %s already exists": 82, + "spec not set": 86, + "spec should be set": 154, + "template %d is not exist": 132, + "template data is empty": 80, + "template id in %v is not belong to template set id %d": 143, + "template id in %v is not exist": 127, + "template release %d is not exist": 134, + "template revision id in %v is not exist": 129, + "template set %d is not exist": 136, + "template set %s not found": 36, + "template set data is empty": 78, + "template set id in %v is not exist": 131, + "template space %s not found": 35, + "template space id in %v is not exist": 126, + "template variable name must start with %s": 20, + "template version %s in template file %s \n\t\t\t\thas been removed. Please import the set again": 40, + "the config file %s already exists in this space and cannot be created again": 31, + "the config file %s under this service already exists and cannot be created again": 45, + "the config item %s under this service already exists and cannot be created again": 58, + "the length of hook ids is %d, it must be within the range of [1,%d]": 18, + "the length of template variable ids is %d, it must be within the range of [1,%d]": 21, + "the specified type does not match the actual configuration": 25, + "the template file %s in the template set \n\t\t\t\t%s has been removed. Please import the set again": 38, + "the total number of app %d's config items(including template and non-template)exceeded the limit %d": 120, + "the total number of app %s config items(including template and non-template)exceeded the limit %d": 44, + "the total number of template set %d's templates exceeded the limit %d": 124, + "the total number of template set %s templates exceeded the limit %d": 75, + "the version number %s in the template file %s is not the \n\t\tlatest version. Please import the set again": 41, + "there are template sets under the template space, need to delete them first": 139, + "there are templates under the template space, need to delete them first": 141, + "there is no template file under this template set": 68, + "unknown config type: %s": 148, + "unsupported app reload type: %s": 152, + "unsupported config type: %s": 151, + "unsupported file format: %s": 159, + "unsupported file mode: %s": 160, + "unsupported variable type: %s": 169, + "update app failed, err: %s": 117, + "update app template binding failed, err: %v": 33, + "update kv failed, err: %v": 62, + "upload completed": 8, + "upload completed, %d failed": 9, + "upload failed, please make sure the file size does not exceed %s": 13, + "upload file failed, err: %v": 6, + "validate template releases exist failed, err: %v": 128, + "validate template sets exist failed, err: %v": 130, + "validate templates exist failed, err: %v": 125, + "validate templates in a template set failed, err: %v": 142, + "value type assertion failed, err: %v": 171, + "verify Unix file paths failed, path: %s, err: %v": 158, + "verify Windows file paths failed, path: %s, err: %v": 157, } -var enIndex = []uint32{ // 55 elements +var enIndex = []uint32{ // 177 elements // Entry 0 - 1F - 0x00000000, 0x0000000f, 0x00000026, 0x00000044, - 0x0000006c, 0x000000bb, 0x000000d6, 0x000000ef, - 0x00000115, 0x00000126, 0x00000145, 0x00000191, - 0x000001d5, 0x000001e9, 0x0000020a, 0x00000225, - 0x0000026f, 0x00000283, 0x000002b0, 0x00000307, - 0x0000031b, 0x00000344, 0x0000039b, 0x000003d8, - 0x00000412, 0x0000044e, 0x0000046d, 0x00000492, - 0x000004c4, 0x000004e7, 0x00000521, 0x00000558, + 0x00000000, 0x0000000f, 0x0000002c, 0x00000050, + 0x0000007e, 0x000000cd, 0x000000ee, 0x0000010d, + 0x00000135, 0x00000146, 0x00000165, 0x00000189, + 0x000001cb, 0x00000217, 0x0000025b, 0x0000027d, + 0x00000291, 0x000002b2, 0x000002cd, 0x00000317, + 0x0000032b, 0x00000358, 0x000003af, 0x000003cd, + 0x000003ec, 0x00000407, 0x00000442, 0x00000472, + 0x00000490, 0x000004a4, 0x000004c6, 0x000004e9, // Entry 20 - 3F - 0x00000590, 0x000005b9, 0x000005eb, 0x0000062d, - 0x00000658, 0x00000691, 0x000006b5, 0x000006dd, - 0x00000710, 0x00000741, 0x00000755, 0x00000766, - 0x0000077b, 0x00000788, 0x0000079b, 0x000007ac, - 0x000007ff, 0x00000822, 0x000008a4, 0x000008b0, - 0x000008c0, 0x000008e7, 0x00000908, -} // Size: 244 bytes + 0x00000538, 0x00000572, 0x000005a1, 0x000005c9, + 0x000005e8, 0x00000605, 0x00000637, 0x0000069c, + 0x000006c7, 0x00000728, 0x00000796, 0x000007d4, + 0x000007ef, 0x00000857, 0x000008ab, 0x000008f1, + 0x0000091a, 0x0000094e, 0x00000977, 0x000009ce, + 0x00000a0b, 0x00000a45, 0x00000a81, 0x00000aa0, + 0x00000ac5, 0x00000af7, 0x00000b19, 0x00000b6d, + 0x00000b92, 0x00000bd2, 0x00000bef, 0x00000c0c, + // Entry 40 - 5F + 0x00000c2f, 0x00000c69, 0x00000ca0, 0x00000cd8, + 0x00000d01, 0x00000d33, 0x00000d69, 0x00000da3, + 0x00000dda, 0x00000e05, 0x00000e3e, 0x00000e62, + 0x00000eac, 0x00000ed4, 0x00000f07, 0x00000f22, + 0x00000f49, 0x00000f60, 0x00000f91, 0x00000fc2, + 0x00000fd6, 0x00000fe7, 0x00000ffc, 0x00001009, + 0x0000101c, 0x0000102d, 0x0000104e, 0x00001072, + 0x00001096, 0x000010c6, 0x000010e9, 0x00001136, + // Entry 60 - 7F + 0x00001153, 0x0000117b, 0x000011a5, 0x000011e1, + 0x00001204, 0x00001227, 0x00001283, 0x000012a4, + 0x000012c7, 0x00001355, 0x000013a8, 0x0000142a, + 0x000014c5, 0x000014e7, 0x00001512, 0x00001538, + 0x00001560, 0x00001585, 0x000015ab, 0x000015b6, + 0x000015d5, 0x000015f3, 0x00001611, 0x00001643, + 0x00001677, 0x000016e1, 0x000016ed, 0x000016fd, + 0x00001710, 0x0000175c, 0x00001788, 0x000017b0, + // Entry 80 - 9F + 0x000017d2, 0x00001806, 0x00001831, 0x00001861, + 0x00001887, 0x000018a3, 0x000018c3, 0x000018e7, + 0x0000190f, 0x0000192f, 0x00001953, 0x0000197d, + 0x000019c9, 0x000019ef, 0x00001a37, 0x00001a6f, + 0x00001aab, 0x00001abd, 0x00001acc, 0x00001ae1, + 0x00001af1, 0x00001b0c, 0x00001b2a, 0x00001b50, + 0x00001b6f, 0x00001b92, 0x00001ba4, 0x00001bb7, + 0x00001bd8, 0x00001bf7, 0x00001c31, 0x00001c68, + // Entry A0 - BF + 0x00001c87, 0x00001ca4, 0x00001cbb, 0x00001cf6, + 0x00001d1c, 0x00001d5e, 0x00001d8b, 0x00001d9a, + 0x00001db1, 0x00001dd8, 0x00001df9, 0x00001e36, + 0x00001e5e, 0x00001e6f, 0x00001e9a, 0x00001ec6, + 0x00001ee9, +} // Size: 732 bytes -const enData string = "" + // Size: 2312 bytes - "\x02id is required\x02read file failed %[1]s\x02create directory failed " + - "%[1]s\x02create temporary directory failed %[1]s\x02decompress the file." + - " The size of file %[1]s exceeds the maximum limit of %[2]s\x02decompress" + - "ion failed %[1]s\x02upload file failed %[1]s\x02detecting file conflicts" + - " failed %[1]s\x02upload completed\x02upload completed, %[1]d failed\x02d" + - "ecompress file failed, exceeding the maximum file limit threshold of %[1" + - "]d\x02upload failed, please make sure the file size does not exceed %[1]" + - "s\x02client ids is empty\x02batch delete config items failed\x02batch de" + - "lete groups failed\x02the length of hook ids is %[1]d, it must be within" + - " the range of [1,%[2]d]\x02batch delete failed\x02template variable name" + - " must start with %[1]s\x02the length of template variable ids is %[1]d, " + - "it must be within the range of [1,%[2]d]\x02app %[1]d not found\x02obtai" + - "n the number of configuration items\x02get template binding relationship" + - "s through business and service IDs failed, err: %[1]s\x02get reference t" + - "emplate set under this app failed, err: %[1]s\x02list template sets by t" + - "emplate set ids failed, err: %[1]s\x02remove the template set bound to t" + - "he app failed, err: %[1]s\x02hook name %[1]s already exists\x02get exclu" + - "ded hook failed, err: %[1]s\x02retrieve the referenced script failed, er" + - "r: %[1]s\x02get excluded kv failed, err: %[1]s\x02get app template bindi" + +const enData string = "" + // Size: 7913 bytes + "\x02id is required\x02read file failed, err: %[1]v\x02create directory f" + + "ailed, err: %[1]v\x02create temporary directory failed, err: %[1]v\x02de" + + "compress the file. The size of file %[1]s exceeds the maximum limit of %" + + "[2]s\x02decompression failed, err: %[1]v\x02upload file failed, err: %[1" + + "]v\x02list template config failed, err: %[1]v\x02upload completed\x02upl" + + "oad completed, %[1]d failed\x02list config item failed, err: %[1]v\x02ge" + + "t the current number of service config items failed, err: %[1]v\x02decom" + + "press file failed, exceeding the maximum file limit threshold of %[1]d" + + "\x02upload failed, please make sure the file size does not exceed %[1]s" + + "\x02list templates failed, err: %[1]v\x02client ids is empty\x02batch de" + + "lete config items failed\x02batch delete groups failed\x02the length of " + + "hook ids is %[1]d, it must be within the range of [1,%[2]d]\x02batch del" + + "ete failed\x02template variable name must start with %[1]s\x02the length" + + " of template variable ids is %[1]d, it must be within the range of [1,%[" + + "2]d]\x02app name %[1]s already exists\x02app alias %[1]s already exists" + + "\x02get app failed, err: %[1]v\x02the specified type does not match the " + + "actual configuration\x02delete app related resources failed, err: %[1]v" + + "\x02delete app failed, err: %[1]v\x02app %[1]d not found\x02business que" + + "ry failed, err: %[1]v\x02app related biz %[1]d is not exist\x02the confi" + + "g file %[1]s already exists in this space and cannot be created again" + + "\x02list template sets by template set ids failed, err: %[1]v\x02update " + + "app template binding failed, err: %[1]v\x02list template spaces failed, " + + "err: %[1]v\x02template space %[1]s not found\x02template set %[1]s not f" + + "ound\x02list templates of template set failed, err: %[1]v\x02the templat" + + "e file %[1]s in the template set \x0a\x09\x09\x09\x09%[2]s has been remo" + + "ved. Please import the set again\x02list template revisions failed, err:" + + " %[1]v\x02template version %[1]s in template file %[2]s \x0a\x09\x09\x09" + + "\x09has been removed. Please import the set again\x02the version number " + + "%[1]s in the template file %[2]s is not the \x0a\x09\x09latest version. " + + "Please import the set again\x02count the number of service configuration" + + "s failed, err: %[1]s\x02app %[1]s is not file type\x02the total number o" + + "f app %[1]s config items(including template and non-template)exceeded th" + + "e limit %[2]d\x02the config file %[1]s under this service already exists" + + " and cannot be created again\x02delete one app template binding instance" + + " by app id failed, err: %[1]s\x02batch create contents failed, err: %[1]" + + "s\x02delete one app template variable failed, err: %[1]s\x02obtain the n" + + "umber of configuration items\x02get template binding relationships throu" + + "gh business and service IDs failed, err: %[1]s\x02get reference template" + + " set under this app failed, err: %[1]s\x02list template sets by template" + + " set ids failed, err: %[1]s\x02remove the template set bound to the app " + + "failed, err: %[1]s\x02hook name %[1]s already exists\x02get excluded hoo" + + "k failed, err: %[1]s\x02retrieve the referenced script failed, err: %[1]" + + "s\x02get kv (%[1]d) failed, err: %[2]v\x02the config item %[1]s under th" + + "is service already exists and cannot be created again\x02get app fail, k" + + "ey: %[1]s, err: %[2]v\x02kv type does not match the data type defined in" + + " the application\x02create kv failed, err: %[1]v\x02update kv failed, er" + + "r: %[1]v\x02get excluded kv failed, err: %[1]s\x02get app template bindi" + "ngs by template set ids, err: %[1]s\x02batch update app template binding" + "'s failed, err: %[1]s\x02batch add templates to template sets failed, er" + "r: %[1]s\x02get template set data failed, err: %[1]s\x02there is no temp" + "late file under this template set\x02delete template from template sets " + - "failed, err: %[1]v, rid: %[2]s\x02list templates by tuple failed, err: %" + - "[1]v\x02list app template bindings by app ids failed, err: %[1]s\x02get " + - "template set failed, err: %[1]s\x02list apps by app ids failed, err: %[1" + - "]s\x02count the number of app configs failed, err: %[1]s\x02same templat" + - "e variable name %[1]s already exists\x02db operation failed\x02invalid a" + - "rgument\x02id should not be set\x02spec not set\x02attachment not set" + - "\x02revision not set\x02invalid name, length should >= 9 and must start " + - "with prefix bk_bscp_ (ignore case)\x02invalid name, length should <= 128" + + "failed, err: %[1]v\x02get app template bindings by template set ids, err" + + ": %[1]v\x02batch update app template binding's failed, err: %[1]v\x02lis" + + "t templates by tuple failed, err: %[1]v\x02list app template bindings by" + + " app ids failed, err: %[1]s\x02get template set failed, err: %[1]s\x02th" + + "e total number of template set %[1]s templates exceeded the limit %[2]d" + + "\x02list apps by app ids failed, err: %[1]s\x02count the number of app c" + + "onfigs failed, err: %[1]s\x02template set data is empty\x02list template" + + "s data failed, err: %[1]s\x02template data is empty\x02list templates re" + + "visions data failed, err: %[1]s\x02same template variable name %[1]s alr" + + "eady exists\x02db operation failed\x02invalid argument\x02id should not " + + "be set\x02spec not set\x02attachment not set\x02revision not set\x02inva" + + "lid path, length should >= 1\x02invalid path, length should <= 1024\x02i" + + "nvalid path, should start with '/'\x04\x00\x01 +\x02invalid path %[1]s, " + + "path cannot all be '.'\x02invalid path, length should <= 256\x02invalid " + + "path,path does not conform to the win file path format specification\x02" + + "reload file path is required\x02invalid reload file path, should <= 128" + + "\x02reload file path is not the absolute path\x02%[1]s sub path is syste" + + "m reserved path, do not allow to use\x02memo is required, can not be emp" + + "ty\x02invalid memo, length should <= 200\x02resource name '%[1]s' is pre" + + "fixed with '%[2]s' is reserved name, which is not allows to use\x02inval" + + "id name, length should >= 1\x02invalid name, length should <= 128\x02inv" + + "alid name: %[1]s, only allows to include english、numbers、underscore (_)、" + + "hyphen (-), and must start and end with an english、numbers\x02invalid na" + + "me, length should >= 9 and must start with prefix bk_bscp_ (ignore case)" + "\x02invalid name: %[1]s, only allows to include english、numbers、undersco" + - "re (_), and must start with prefix bk_bscp_ (ignore case)\x02hook is nil" + - "\x02Unnamed Version\x02default_val %[1]s is not a number type\x02unsuppo" + - "rted variable type: %[1]s" + "re (_), and must start with prefix bk_bscp_ (ignore case)\x02invalid nam" + + "e: %[1]s, only allows to include Chinese, English,numbers, underscore (_" + + "),hyphen (-), and must start and end with Chinese, English, or a number" + + "\x02invalid name, length should <= 64\x02invalid name %[1]s, name cannot" + + " all be '.'\x02invalid namespace, length should >= 1\x02invalid namespac" + + "e, length should <= 128\x02invalid username, length should >= 1\x02inval" + + "id username, length should <= 32\x02app is nil\x02create data failed, er" + + "r: %[1]v\x02create app failed, err: %[1]v\x02update app failed, err: %[1" + + "]s\x02count app %[1]d's config items failed, err: %[2]v\x02get app %[1]d" + + "'s template binding failed, err: %[2]v\x02the total number of app %[1]d'" + + "s config items(including template and non-template)exceeded the limit %[" + + "2]d\x02hook is nil\x02Unnamed Version\x02appID can not be 0\x02the total" + + " number of template set %[1]d's templates exceeded the limit %[2]d\x02va" + + "lidate templates exist failed, err: %[1]v\x02template space id in %[1]v " + + "is not exist\x02template id in %[1]v is not exist\x02validate template r" + + "eleases exist failed, err: %[1]v\x02template revision id in %[1]v is not" + + " exist\x02validate template sets exist failed, err: %[1]v\x02template se" + + "t id in %[1]v is not exist\x02template %[1]d is not exist\x02get templat" + + "e failed, err: %[1]v\x02template release %[1]d is not exist\x02get templ" + + "ate release failed, err: %[1]v\x02template set %[1]d is not exist\x02get" + + " template set failed, err: %[1]v\x02get template set count failed, err: " + + "%[1]v\x02there are template sets under the template space, need to delet" + + "e them first\x02get template count failed, err: %[1]v\x02there are templ" + + "ates under the template space, need to delete them first\x02validate tem" + + "plates in a template set failed, err: %[1]v\x02template id in %[1]v is n" + + "ot belong to template set id %[2]d\x02id can not be set\x02invalid biz i" + + "d\x02invalid spec, is nil\x02app spec is nil\x02unknown config type: %[1" + + "]s\x02app's type can not be updated\x02not support table config type for" + + " now\x02unsupported config type: %[1]s\x02unsupported app reload type: %" + + "[1]s\x02invalid data-type\x02spec should be set\x02invalid commit spec's" + + " content id\x02commit spec's content is empty\x02verify Windows file pat" + + "hs failed, path: %[1]s, err: %[2]v\x02verify Unix file paths failed, pat" + + "h: %[1]s, err: %[2]v\x02unsupported file format: %[1]s\x02unsupported fi" + + "le mode: %[1]s\x02content id can not set\x02invalid content signature, s" + + "hould be config's sha256 value\x02content signature should be lowercase" + + "\x02invalid origin content signature, should be config's sha256 value" + + "\x02origin content signature should be lowercase\x02invalid app id\x02in" + + "valid config item id\x02default_val %[1]s is not a number type\x02unsupp" + + "orted variable type: %[1]s\x02get 'kv_type' as a string \x0a\x09\x09from" + + " kv.Data failed, err: %[1]v\x02value type assertion failed, err: %[1]v" + + "\x02authorize failed\x02get permission to apply failed, err: %[1]v\x02gr" + + "pc status with details failed, err: %[1]v\x02%[1]s and %[2]s path file c" + + "onflict" -var zhIndex = []uint32{ // 55 elements +var zhIndex = []uint32{ // 177 elements // Entry 0 - 1F - 0x00000000, 0x0000000f, 0x00000029, 0x00000049, - 0x00000069, 0x000000b6, 0x000000d1, 0x000000ec, - 0x0000010c, 0x00000119, 0x00000134, 0x00000177, - 0x000001ab, 0x000001bf, 0x000001db, 0x000001f4, - 0x00000234, 0x00000247, 0x00000271, 0x000002b7, - 0x000002d4, 0x000002ea, 0x0000032d, 0x0000036b, - 0x0000039c, 0x000003bc, 0x000003d9, 0x00000405, - 0x0000042e, 0x00000456, 0x00000490, 0x000004c2, + 0x00000000, 0x0000000f, 0x0000002e, 0x0000004d, + 0x00000072, 0x000000be, 0x000000d7, 0x000000f6, + 0x0000011b, 0x00000128, 0x00000143, 0x00000165, + 0x00000165, 0x000001a7, 0x000001da, 0x000001ff, + 0x00000213, 0x0000022f, 0x00000248, 0x00000288, + 0x0000029b, 0x000002c5, 0x0000030b, 0x00000328, + 0x00000345, 0x00000364, 0x0000038c, 0x000003b7, + 0x000003d6, 0x000003f3, 0x00000412, 0x00000438, // Entry 20 - 3F - 0x000004f1, 0x0000051a, 0x0000053c, 0x00000577, - 0x00000597, 0x000005ce, 0x000005f1, 0x00000622, - 0x0000064e, 0x00000678, 0x00000687, 0x00000694, - 0x000006a9, 0x000006bd, 0x000006d7, 0x000006ef, - 0x00000743, 0x00000764, 0x000007df, 0x000007ef, - 0x000007ef, 0x00000814, 0x00000835, -} // Size: 244 bytes + 0x00000476, 0x000004ac, 0x000004d7, 0x000004fc, + 0x00000519, 0x00000536, 0x00000567, 0x000005b4, + 0x000005d9, 0x00000626, 0x00000679, 0x000006a4, + 0x000006c7, 0x00000738, 0x00000778, 0x000007a3, + 0x000007c8, 0x000007ed, 0x00000803, 0x00000845, + 0x0000087c, 0x000008b2, 0x000008d1, 0x000008ee, + 0x00000919, 0x00000941, 0x00000966, 0x000009a1, + 0x000009cc, 0x00000a06, 0x00000a21, 0x00000a3c, + // Entry 40 - 5F + 0x00000a63, 0x00000a9c, 0x00000acd, 0x00000afb, + 0x00000b23, 0x00000b45, 0x00000b76, 0x00000baf, + 0x00000be0, 0x00000bff, 0x00000c35, 0x00000c57, + 0x00000c9e, 0x00000cc8, 0x00000cf3, 0x00000d0c, + 0x00000d31, 0x00000d44, 0x00000d6f, 0x00000d99, + 0x00000da8, 0x00000db5, 0x00000dca, 0x00000dde, + 0x00000df8, 0x00000e10, 0x00000e30, 0x00000e53, + 0x00000e75, 0x00000eac, 0x00000ece, 0x00000f07, + // Entry 60 - 7F + 0x00000f26, 0x00000f54, 0x00000f7f, 0x00000fb5, + 0x00000fd6, 0x00000ff8, 0x00001049, 0x00001069, + 0x00001089, 0x00001110, 0x00001163, 0x000011dc, + 0x00001275, 0x00001296, 0x000012c8, 0x000012ee, + 0x00001316, 0x00001339, 0x0000135d, 0x0000136a, + 0x00001383, 0x000013a2, 0x000013c1, 0x000013f3, + 0x00001429, 0x00001479, 0x00001489, 0x00001499, + 0x000014a9, 0x000014f2, 0x0000151d, 0x00001543, + // Entry 80 - 9F + 0x00001563, 0x00001594, 0x000015ba, 0x000015eb, + 0x00001611, 0x00001628, 0x00001647, 0x00001664, + 0x00001689, 0x000016a6, 0x000016c8, 0x000016f3, + 0x00001723, 0x00001748, 0x00001772, 0x000017a3, + 0x000017d8, 0x000017e8, 0x000017fd, 0x0000180a, + 0x0000181d, 0x0000183b, 0x00001854, 0x00001870, + 0x00001891, 0x000018b2, 0x000018cb, 0x000018d8, + 0x000018eb, 0x000018f8, 0x00001933, 0x0000196b, + // Entry A0 - BF + 0x0000198c, 0x000019ad, 0x000019ba, 0x000019e9, + 0x000019ff, 0x00001a37, 0x00001a53, 0x00001a65, + 0x00001a7a, 0x00001a9f, 0x00001ac0, 0x00001b01, + 0x00001b23, 0x00001b30, 0x00001b4f, 0x00001b79, + 0x00001b9c, +} // Size: 732 bytes -const zhData string = "" + // Size: 2101 bytes - "\x02id不能为空\x02读取文件失败: %[1]s\x02创建文件目录失败: %[1]s\x02创建临时目录失败: %[1]s\x02解压文" + - "件失败,文件 %[1]s 的大小超过了最大限制阈值 %[2]s\x02解压文件失败:%[1]s\x02上传文件失败:%[1]s\x02检测文" + - "件冲突失败: %[1]s\x02上传完成\x02上传完成, %[1]d 失败\x02解压文件失败,超过了文件数量最大限制阈值 %[1]d" + - "\x02上传失败,请确保文件大小不超过 %[1]s\x02客户端 id 为空\x02批量删除配置项失败\x02批量删除群组失败\x02脚本id列" + - "表的长度为%[1]d, 长度范围必须为[1,%[2]d]\x02批量删除失败\x02模版变量名必须以%[1]s前缀开头\x02全局变量id列" + - "表的长度为%[1]d, 长度范围必须为[1,%[2]d]\x02ID为%[1]d的服务不存在\x02获取配置项数量\x02通过业务和服务ID" + - "获取模板绑定关系失败,err: %[1]s\x02获取此应用程序下的引用模板集失败,err: %[1]s\x02按模板集ID列出模板集失败," + - "err: %[1]s\x02移除套餐失败,err: %[1]s\x02脚本名称 %[1]s 已存在\x02获取排除后的脚本失败,err: %[1" + - "]s\x02检索引用的脚本失败,err: %[1]s\x02获取排除后的kv失败,err: %[1]s\x02按模板集ID获取应用程序模板绑定," + - "err: %[1]s\x02批量更新应用模板绑定失败,err: %[1]s\x02模板集批量添加模板失败,err: %[1]s\x02获取模板集" + - "数据失败,err: %[1]s\x02此模板集下没有模板文件\x02从模板集中删除模板失败,err: %[1]v, rid: %[2]s" + - "\x02列出模板失败,err: %[1]v\x02按服务ID列出应用模板绑定失败,err: %[1]s\x02获取模板集失败,err: %[1]" + - "s\x02按服务ID列出应用程序失败,err: %[1]s\x02统计服务配置数量失败,err: %[1]s\x02同名的模版变量名称%[1]s" + - "已存在\x02db操作失败\x02无效参数\x02id不应该被设置\x02spec没有被设置\x02attachment没有被设置\x02r" + - "evision没有被设置\x02无效名称,长度应该>=9且必须以bk_bscp_前缀开头(忽略大小写)\x02无效名称,长度应该<=128" + - "\x02无效名称:%[1]s,只允许英文、数字、下划线(_),且必须以bk_bscp_前缀开头(忽略大小写)\x02脚本不存在\x02defau" + - "lt_val %[1]s 不是数字类型\x02不支持的变量类型:%[1]s" +const zhData string = "" + // Size: 7068 bytes + "\x02id不能为空\x02读取文件失败, err: %[1]v\x02创建目录失败, err: %[1]v\x02创建临时目录失败, err:" + + " %[1]v\x02解压文件失败, 文件 %[1]s 的大小超过了最大限制阈值 %[2]s\x02解压失败, err: %[1]v\x02上传文" + + "件失败, err: %[1]v\x02获取模板配置失败, err: %[1]v\x02上传完成\x02上传完成, %[1]d 失败\x02获" + + "取配置项失败, err: %[1]v\x02解压文件失败, 超过了文件数量最大限制阈值 %[1]d\x02上传失败, 请确保文件大小不超过 " + + "%[1]s\x02获取模板数据失败, err: %[1]v\x02客户端 id 为空\x02批量删除配置项失败\x02批量删除群组失败\x02脚" + + "本id列表的长度为%[1]d, 长度范围必须为[1,%[2]d]\x02批量删除失败\x02模版变量名必须以%[1]s前缀开头\x02全局变" + + "量id列表的长度为%[1]d, 长度范围必须为[1,%[2]d]\x02服务名称 %[1]s 已存在\x02服务别名 %[1]s 已存在" + + "\x02获取服务失败, err: %[1]v\x02指定的类型与实际配置不匹配\x02删除服务相关资源失败, err: %[1]v\x02删除服" + + "务失败, err: %[1]v\x02ID为%[1]d的服务不存在\x02业务查询失败, err: %[1]v\x02服务相关的业务 %[1" + + "]d 不存在\x02此空间下配置文件 %[1]s 已存在,无法重复创建\x02按模板套餐ID列出模板套餐失败, err: %[1]v\x02更新" + + "服务模板绑定失败, err: %[1]v\x02列出模板空间失败, err: %[1]v\x02模板空间 %[1]s 不存在\x02模板套餐" + + " %[1]s 不存在\x02获取模板套餐下的模板失败, err: %[1]v\x02模板套餐 %[2]s 中的模板文件 %[1]s 被移除, 请" + + "重新导入套餐\x02获取模板版本失败, err: %[1]v\x02模板文件 %[2]s 中的模板版本 %[1]s 被移除, 请重新导入套餐" + + "\x02模板文件 %[2]s 中的版本号 %[1]s 不是最新版本, 请重新导入套餐\x02统计服务配置数量失败, err: %[1]s\x02" + + "该服务 %[1]s 不是文件类型\x02服务 %[1]s 的配置项总数(包括模板和非模板)超过单服务最大配置文件数量限制 %[2]d\x02" + + "此服务下的配置文件 %[1]s 已存在, 无法重复创建\x02移除服务模板套餐失败, err: %[1]s\x02批量创建内容失败, err" + + ": %[1]s\x02删除模板变量失败, err: %[1]s\x02获取配置项数量\x02通过业务和服务ID获取模板绑定关系失败, err: " + + "%[1]s\x02获取该服务下的引用模板集失败, err: %[1]s\x02按模板套餐ID列出模板套餐失败, err: %[1]s\x02移除" + + "套餐失败, err: %[1]s\x02脚本名称 %[1]s 已存在\x02获取排除后的脚本失败, err: %[1]s\x02检索引用的脚" + + "本失败, err: %[1]s\x02获取 kv (%[1]d) 失败, err: %[2]v\x02该服务下的配置项%[1]s已存在, 无" + + "法重复创建\x02获取服务失败, key: %[1]s, err: %[2]v\x02kv 类型与服务类型中定义的数据类型不匹配\x02创建" + + "kv失败, err: %[1]v\x02更新kv失败, err: %[1]v\x02获取排除后的kv失败, err: %[1]s\x02按模板集" + + "ID获取应用程序模板绑定, err: %[1]s\x02批量更新应用模板绑定失败, err: %[1]s\x02模板集批量添加模板失败, err" + + ": %[1]s\x02获取模板集数据失败, err: %[1]s\x02此模板集下没有模板文件\x02从模板套餐中删除模板失败, err: %[" + + "1]v\x02按模板集ID获取应用程序模板绑定, err: %[1]v\x02批量更新应用模板绑定失败, err: %[1]v\x02列出模板失" + + "败, err: %[1]v\x02按服务ID列出应用模板绑定失败, err: %[1]s\x02获取模板集失败, err: %[1]s" + + "\x02模板套餐 %[1]s 超过单套餐最大配置文件数量限制 %[2]d\x02按服务ID列出服务失败, err: %[1]s\x02统计服务配" + + "置数量失败, err: %[1]s\x02模板套餐数据为空\x02列出模板数据失败, err: %[1]s\x02模板数据为空\x02列出模" + + "板版本数据失败, err: %[1]s\x02同名的模版变量名称%[1]s已存在\x02db操作失败\x02无效参数\x02id不应该被设置" + + "\x02spec没有被设置\x02attachment没有被设置\x02revision没有被设置\x02路径无效, 长度应为 >= 1\x02" + + "路径无效, 长度应为 <= 1024\x02路径无效, 应以“/”开头\x04\x00\x01 2\x02路径 %[1]s 无效, 路径不能" + + "全部为“.”\x02路径无效, 长度应为 <= 256\x02路径无效, 路径不符合win文件路径格式规范\x02需要重新加载文件路径" + + "\x02重新加载文件路径无效, 应该 <= 128\x02重新加载文件路径不是绝对路径\x02%[1]s 子路径为系统保留路径, 不允许使用" + + "\x02描述为必填项, 不能为空\x02描述无效, 长度应为 <= 200\x02资源名称“%[1]s”以“%[2]s”为前缀, 是保留名称, " + + "不允许使用\x02名称无效, 长度应为 >= 1\x02无效名称, 长度应该<=128\x02无效名称:%[1]s, 只允许包含英文、数字、" + + "下划线(_)、连字符(-), 且必须以英文、数字开头和结尾\x02无效名称, 长度应该>=9且必须以bk_bscp_前缀开头(忽略大小写)" + + "\x02无效名称:%[1]s, 只允许英文、数字、下划线(_), 且必须以bk_bscp_前缀开头(忽略大小写)\x02无效名称:%[1]s, " + + "只允许包含中文、英文、数字、下划线(_)、连字符(-), 且必须以中文、英文或数字开头和结尾\x02名称无效, 长度应为 <= 64\x02" + + "名称 %[1]s 无效, 名称不能全部为“.”\x02命名空间无效, 长度应为 >= 1\x02命名空间无效, 长度应为 <= 128" + + "\x02用户名无效, 长度应为 >= 1\x02用户名无效, 长度应为 <= 32\x02服务为空\x02创建失败, err: %[1]v" + + "\x02创建服务失败, err: %[1]v\x02更新服务失败, err: %[1]s\x02统计服务 %[1]d 的配置项失败, err: " + + "%[2]v\x02获取服务 %[1]d 的模板绑定失败, err: %[2]v\x02服务 %[1]d 的配置项总数(包括模板和非模板)超出限" + + "制 %[2]d\x02脚本不存在\x02未命名版本\x02appID不能为0\x02模板套餐 %[1]d's 超过单套餐最大配置文件数量限制" + + " %[2]d\x02验证模板是否存在失败, err: %[1]v\x02%[1]v 中的模板空间 ID 不存在\x02%[1]v 中的模板 ID" + + " 不存在\x02验证模板版本是否存在失败, err: %[1]v\x02%[1]v 中的模板版本 ID 不存在\x02验证模板套餐是否存在失败," + + " err: %[1]v\x02%[1]v 中的模板套餐 ID 不存在\x02模板 %[1]d 不存在\x02获取模板失败, err: %[1]v" + + "\x02模板版本 %[1]d 不存在\x02获取模板版本失败, err: %[1]v\x02模板套餐 %[1]d 不存在\x02获取模板集失败," + + " err: %[1]v\x02统计模板套餐数量失败, err: %[1]v\x02模板空间下有模板套餐, 需要先删除\x02获取模板数量失败, " + + "err: %[1]v\x02模板空间下有模板, 需要先删除\x02验证模板套餐中的模板失败, err: %[1]v\x02%[1]v 中的模板 " + + "ID 不属于模板套餐 ID %[2]d\x02ID 不能为空\x02无法验证业务ID\x02参数为空\x02服务参数为空\x02未知的配置类型:" + + "%[1]s\x02服务类型不能编辑\x02暂不支持表配置类型\x02不支持的配置类型:%[1]s\x02不支持的服务类型:%[1]s\x02无法" + + "验证数据类型\x02参数为空\x02无法验证参数\x02参数为空\x02验证 Windows 文件路径失败, path: %[1]s, er" + + "r: %[2]v\x02验证 Unix 文件路径失败, path: %[1]s, err: %[2]v\x02不支持的文件格式:%[1]s" + + "\x02不支持的文件模式:%[1]s\x02参数为空\x02内容签名无效, 应为配置的 sha256 值\x02内容签名应小写\x02无效的原始" + + "内容签名, 应为配置的 sha256 值\x02原始内容签名应小写\x02无效的服务ID\x02无效的配置项ID\x02default_va" + + "l %[1]s 不是数字类型\x02不支持的变量类型:%[1]s\x02从 kv.Data 获取“kv_type”作为字符串失败, err: %" + + "[1]v\x02值类型断言失败, err: %[1]v\x02授权失败\x02获取权限失败, err: %[1]v\x02grpc 状态详细信息" + + "失败, err: %[1]v\x02%[1]s 与 %[2]s 路径文件冲突" - // Total table size 4901 bytes (4KiB); checksum: A7F6C093 + // Total table size 16445 bytes (16KiB); checksum: 5567453D diff --git a/bcs-services/bcs-bscp/pkg/i18n/translations/locales/en/messages.gotext.json b/bcs-services/bcs-bscp/pkg/i18n/translations/locales/en/messages.gotext.json index 3e0f99e402..3b27356162 100644 --- a/bcs-services/bcs-bscp/pkg/i18n/translations/locales/en/messages.gotext.json +++ b/bcs-services/bcs-bscp/pkg/i18n/translations/locales/en/messages.gotext.json @@ -1,6 +1,336 @@ { "language": "en", "messages": [ + { + "id": "id is required", + "message": "id is required", + "translation": "id is required", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "read file failed, err: {ErrR}", + "message": "read file failed, err: {ErrR}", + "translation": "read file failed, err: {ErrR}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "ErrR", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "errR" + } + ], + "fuzzy": true + }, + { + "id": "create directory failed, err: {Err}", + "message": "create directory failed, err: {Err}", + "translation": "create directory failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "create temporary directory failed, err: {Err}", + "message": "create temporary directory failed, err: {Err}", + "translation": "create temporary directory failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "decompress the file. The size of file {Message} exceeds the maximum limit of {MB}", + "message": "decompress the file. The size of file {Message} exceeds the maximum limit of {MB}", + "translation": "decompress the file. The size of file {Message} exceeds the maximum limit of {MB}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Message", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "compare.Message" + }, + { + "id": "MB", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "tools.BytesToHumanReadable(uint64(singleContentLength * constant.MB))" + } + ], + "fuzzy": true + }, + { + "id": "decompression failed, err: {Err}", + "message": "decompression failed, err: {Err}", + "translation": "decompression failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "upload file failed, err: {Err}", + "message": "upload file failed, err: {Err}", + "translation": "upload file failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "list template config failed, err: {Err}", + "message": "list template config failed, err: {Err}", + "translation": "list template config failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "upload completed", + "message": "upload completed", + "translation": "upload completed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "upload completed, {UploadErrCount} failed", + "message": "upload completed, {UploadErrCount} failed", + "translation": "upload completed, {UploadErrCount} failed", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "UploadErrCount", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "uploadErrCount" + } + ], + "fuzzy": true + }, + { + "id": "create directory failed {Err}", + "message": "create directory failed {Err}", + "translation": "create directory failed {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "create temporary directory failed {Err}", + "message": "create temporary directory failed {Err}", + "translation": "create temporary directory failed {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "list config item failed, err: {ErrC}", + "message": "list config item failed, err: {ErrC}", + "translation": "list config item failed, err: {ErrC}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "ErrC", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "errC" + } + ], + "fuzzy": true + }, + { + "id": "get the current number of service configuration items failed, err: {Err}", + "message": "get the current number of service configuration items failed, err: {Err}", + "translation": "get the current number of service configuration items failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "decompress file failed, exceeding the maximum file limit threshold of {Limit}", + "message": "decompress file failed, exceeding the maximum file limit threshold of {Limit}", + "translation": "decompress file failed, exceeding the maximum file limit threshold of {Limit}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Limit", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "limit" + } + ], + "fuzzy": true + }, + { + "id": "upload failed, please make sure the file size does not exceed {BytesToHumanReadableuint64maxSize}", + "message": "upload failed, please make sure the file size does not exceed {BytesToHumanReadableuint64maxSize}", + "translation": "upload failed, please make sure the file size does not exceed {BytesToHumanReadableuint64maxSize}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "BytesToHumanReadableuint64maxSize", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "tools.BytesToHumanReadable(uint64(maxSize))" + } + ], + "fuzzy": true + }, + { + "id": "list templates failed, err: {Err}", + "message": "list templates failed, err: {Err}", + "translation": "list templates failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "client ids is empty", + "message": "client ids is empty", + "translation": "client ids is empty", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "batch delete config items failed", + "message": "batch delete config items failed", + "translation": "batch delete config items failed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "batch delete groups failed", + "message": "batch delete groups failed", + "translation": "batch delete groups failed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "the length of hook ids is {IdsLen}, it must be within the range of [1,{ArrayInputLenLimit}]", + "message": "the length of hook ids is {IdsLen}, it must be within the range of [1,{ArrayInputLenLimit}]", + "translation": "the length of hook ids is {IdsLen}, it must be within the range of [1,{ArrayInputLenLimit}]", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "IdsLen", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "idsLen" + }, + { + "id": "ArrayInputLenLimit", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "constant.ArrayInputLenLimit" + } + ], + "fuzzy": true + }, + { + "id": "batch delete failed", + "message": "batch delete failed", + "translation": "batch delete failed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, { "id": "template variable name must start with {TemplateVariablePrefix}", "message": "template variable name must start with {TemplateVariablePrefix}", @@ -8,89 +338,2021 @@ "translatorComment": "Copied from source.", "placeholders": [ { - "id": "TemplateVariablePrefix", + "id": "TemplateVariablePrefix", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "constant.TemplateVariablePrefix" + } + ], + "fuzzy": true + }, + { + "id": "the length of template variable ids is {IdsLen}, it must be within the range of [1,{ArrayInputLenLimit}]", + "message": "the length of template variable ids is {IdsLen}, it must be within the range of [1,{ArrayInputLenLimit}]", + "translation": "the length of template variable ids is {IdsLen}, it must be within the range of [1,{ArrayInputLenLimit}]", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "IdsLen", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "idsLen" + }, + { + "id": "ArrayInputLenLimit", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "constant.ArrayInputLenLimit" + } + ], + "fuzzy": true + }, + { + "id": "app name {Name} already exists", + "message": "app name {Name} already exists", + "translation": "app name {Name} already exists", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Name" + } + ], + "fuzzy": true + }, + { + "id": "app alias {Alias} already exists", + "message": "app alias {Alias} already exists", + "translation": "app alias {Alias} already exists", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Alias", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Alias" + } + ], + "fuzzy": true + }, + { + "id": "get app failed, err: {Err}", + "message": "get app failed, err: {Err}", + "translation": "get app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "the specified type does not match the actual configuration", + "message": "the specified type does not match the actual configuration", + "translation": "the specified type does not match the actual configuration", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "delete app related resources failed, err: {Err}", + "message": "delete app related resources failed, err: {Err}", + "translation": "delete app related resources failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "delete app failed, err: {Err}", + "message": "delete app failed, err: {Err}", + "translation": "delete app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "app {AppId} not found", + "message": "app {AppId} not found", + "translation": "app {AppId} not found", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AppId", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "req.AppId" + } + ], + "fuzzy": true + }, + { + "id": "business query failed, err: {Err}", + "message": "business query failed, err: {Err}", + "translation": "business query failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "app related biz {BizID} is not exist", + "message": "app related biz {BizID} is not exist", + "translation": "app related biz {BizID} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "BizID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "bizID" + } + ], + "fuzzy": true + }, + { + "id": "the config file {Joindir_name} already exists in this space and cannot be created again", + "message": "the config file {Joindir_name} already exists in this space and cannot be created again", + "translation": "the config file {Joindir_name} already exists in this space and cannot be created again", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Joindir_name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path.Join(dir, name)" + } + ], + "fuzzy": true + }, + { + "id": "list template sets by template set ids failed, err: {Err}", + "message": "list template sets by template set ids failed, err: {Err}", + "translation": "list template sets by template set ids failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "update app template binding failed, err: {Err}", + "message": "update app template binding failed, err: {Err}", + "translation": "update app template binding failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "list template spaces failed, err: {Err}", + "message": "list template spaces failed, err: {Err}", + "translation": "list template spaces failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template space {V} not found", + "message": "template space {V} not found", + "translation": "template space {V} not found", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "V", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "v" + } + ], + "fuzzy": true + }, + { + "id": "template set {V} not found", + "message": "template set {V} not found", + "translation": "template set {V} not found", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "V", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "v" + } + ], + "fuzzy": true + }, + { + "id": "list templates of template set failed, err: {Err}", + "message": "list templates of template set failed, err: {Err}", + "translation": "list templates of template set failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "message": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "translation": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "ValidatedTemplateSetNamessId", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "validatedTemplateSetNames[sId]" + }, + { + "id": "TemplateNamesv", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "templateNames[v]" + } + ], + "fuzzy": true + }, + { + "id": "list template revisions failed, err: {Err}", + "message": "list template revisions failed, err: {Err}", + "translation": "list template revisions failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", + "message": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", + "translation": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "RevisionNamesv", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "revisionNames[v]" + }, + { + "id": "TemplateNamestId", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "templateNames[tId]" + } + ], + "fuzzy": true + }, + { + "id": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", + "message": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", + "translation": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "TemplateID", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "templateNames[v.Attachment.TemplateID]" + }, + { + "id": "ID", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "revisionNames[v.ID]" + } + ], + "fuzzy": true + }, + { + "id": "count the number of service configurations failed, err: {Err}", + "message": "count the number of service configurations failed, err: {Err}", + "translation": "count the number of service configurations failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "app {Name} is not file type", + "message": "app {Name} is not file type", + "translation": "app {Name} is not file type", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "app.Spec.Name" + } + ], + "fuzzy": true + }, + { + "id": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "message": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translation": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "app.Spec.Name" + }, + { + "id": "AppConfigCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "appConfigCnt" + } + ], + "fuzzy": true + }, + { + "id": "the config file {Name} under this service already exists and cannot be created again", + "message": "the config file {Name} under this service already exists and cannot be created again", + "translation": "the config file {Name} under this service already exists and cannot be created again", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path.Join(req.ConfigItemSpec.Path, req.ConfigItemSpec.Name)" + } + ], + "fuzzy": true + }, + { + "id": "delete one app template binding instance by app id failed, err: {Err}", + "message": "delete one app template binding instance by app id failed, err: {Err}", + "translation": "delete one app template binding instance by app id failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "batch create contents failed, err: {Error}", + "message": "batch create contents failed, err: {Error}", + "translation": "batch create contents failed, err: {Error}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Error", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "e" + } + ], + "fuzzy": true + }, + { + "id": "delete one app template variable failed, err: {Error}", + "message": "delete one app template variable failed, err: {Error}", + "translation": "delete one app template variable failed, err: {Error}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Error", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "e" + } + ], + "fuzzy": true + }, + { + "id": "obtain the number of configuration items", + "message": "obtain the number of configuration items", + "translation": "obtain the number of configuration items", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "get template binding relationships through business and service IDs failed, err: {Err}", + "message": "get template binding relationships through business and service IDs failed, err: {Err}", + "translation": "get template binding relationships through business and service IDs failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get reference template set under this app failed, err: {Err}", + "message": "get reference template set under this app failed, err: {Err}", + "translation": "get reference template set under this app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "remove the template set bound to the app failed, err: {Err}", + "message": "remove the template set bound to the app failed, err: {Err}", + "translation": "remove the template set bound to the app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "hook name {Name} already exists", + "message": "hook name {Name} already exists", + "translation": "hook name {Name} already exists", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Name" + } + ], + "fuzzy": true + }, + { + "id": "get excluded hook failed, err: {Err}", + "message": "get excluded hook failed, err: {Err}", + "translation": "get excluded hook failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "retrieve the referenced script failed, err: {Err}", + "message": "retrieve the referenced script failed, err: {Err}", + "translation": "retrieve the referenced script failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get kv ({Key}) failed, err: {Err}", + "message": "get kv ({Key}) failed, err: {Err}", + "translation": "get kv ({Key}) failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Key", + "string": "%[1]d", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "the config item {Key} under this service already exists and cannot be created again", + "message": "the config item {Key} under this service already exists and cannot be created again", + "translation": "the config item {Key} under this service already exists and cannot be created again", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Key", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + } + ], + "fuzzy": true + }, + { + "id": "get app fail, key: {Key}, err: {Err}", + "message": "get app fail, key: {Key}, err: {Err}", + "translation": "get app fail, key: {Key}, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Key", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "kv type does not match the data type defined in the application", + "message": "kv type does not match the data type defined in the application", + "translation": "kv type does not match the data type defined in the application", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "create kv failed, err: {Err}", + "message": "create kv failed, err: {Err}", + "translation": "create kv failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "update kv failed, err: {Err}", + "message": "update kv failed, err: {Err}", + "translation": "update kv failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get excluded kv failed, err: {Err}", + "message": "get excluded kv failed, err: {Err}", + "translation": "get excluded kv failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get app template bindings by template set ids, err: {Err}", + "message": "get app template bindings by template set ids, err: {Err}", + "translation": "get app template bindings by template set ids, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "batch update app template binding's failed, err: {Err}", + "message": "batch update app template binding's failed, err: {Err}", + "translation": "batch update app template binding's failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "batch add templates to template sets failed, err: {Err}", + "message": "batch add templates to template sets failed, err: {Err}", + "translation": "batch add templates to template sets failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get template set data failed, err: {Err}", + "message": "get template set data failed, err: {Err}", + "translation": "get template set data failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "there is no template file under this template set", + "message": "there is no template file under this template set", + "translation": "there is no template file under this template set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "delete template from template sets failed, err: {Err}", + "message": "delete template from template sets failed, err: {Err}", + "translation": "delete template from template sets failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "list templates by tuple failed, err: {Err}", + "message": "list templates by tuple failed, err: {Err}", + "translation": "list templates by tuple failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "list app template bindings by app ids failed, err: {Err}", + "message": "list app template bindings by app ids failed, err: {Err}", + "translation": "list app template bindings by app ids failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get template set failed, err: {Err}", + "message": "get template set failed, err: {Err}", + "translation": "get template set failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "message": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "translation": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "v.Spec.Name" + }, + { + "id": "TmplSetTmplCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "tmplSetTmplCnt" + } + ], + "fuzzy": true + }, + { + "id": "list apps by app ids failed, err: {Err}", + "message": "list apps by app ids failed, err: {Err}", + "translation": "list apps by app ids failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "count the number of app configs failed, err: {Err}", + "message": "count the number of app configs failed, err: {Err}", + "translation": "count the number of app configs failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template set data is empty", + "message": "template set data is empty", + "translation": "template set data is empty", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "list templates data failed, err: {Err}", + "message": "list templates data failed, err: {Err}", + "translation": "list templates data failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template data is empty", + "message": "template data is empty", + "translation": "template data is empty", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "list templates revisions data failed, err: {Err}", + "message": "list templates revisions data failed, err: {Err}", + "translation": "list templates revisions data failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "same template variable name {Name} already exists", + "message": "same template variable name {Name} already exists", + "translation": "same template variable name {Name} already exists", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Name" + } + ], + "fuzzy": true + }, + { + "id": "db operation failed", + "message": "db operation failed", + "translation": "db operation failed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid argument", + "message": "invalid argument", + "translation": "invalid argument", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "id should not be set", + "message": "id should not be set", + "translation": "id should not be set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "spec not set", + "message": "spec not set", + "translation": "spec not set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "attachment not set", + "message": "attachment not set", + "translation": "attachment not set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "revision not set", + "message": "revision not set", + "translation": "revision not set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path, length should \u003e= 1", + "message": "invalid path, length should \u003e= 1", + "translation": "invalid path, length should \u003e= 1", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path, length should \u003c= 1024", + "message": "invalid path, length should \u003c= 1024", + "translation": "invalid path, length should \u003c= 1024", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path, should start with '/'", + "message": "invalid path, should start with '/'", + "translation": "invalid path, should start with '/'", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path {Part}, path cannot all be '.'", + "message": "invalid path {Part}, path cannot all be '.'", + "translation": "invalid path {Part}, path cannot all be '.'", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Part", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "part" + } + ], + "fuzzy": true + }, + { + "id": "invalid path, length should \u003c= 256", + "message": "invalid path, length should \u003c= 256", + "translation": "invalid path, length should \u003c= 256", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path,path does not conform to the win file path format specification", + "message": "invalid path,path does not conform to the win file path format specification", + "translation": "invalid path,path does not conform to the win file path format specification", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "reload file path is required", + "message": "reload file path is required", + "translation": "reload file path is required", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid reload file path, should \u003c= 128", + "message": "invalid reload file path, should \u003c= 128", + "translation": "invalid reload file path, should \u003c= 128", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "reload file path is not the absolute path", + "message": "reload file path is not the absolute path", + "translation": "reload file path is not the absolute path", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "message": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "translation": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "SideWorkspaceDir", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "constant.SideWorkspaceDir" + } + ], + "fuzzy": true + }, + { + "id": "memo is required, can not be empty", + "message": "memo is required, can not be empty", + "translation": "memo is required, can not be empty", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid memo, length should \u003c= 200", + "message": "invalid memo, length should \u003c= 200", + "translation": "invalid memo, length should \u003c= 200", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "message": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "translation": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "LowerName", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "lowerName" + }, + { + "id": "Prefix", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "prefix" + } + ], + "fuzzy": true + }, + { + "id": "invalid name, length should \u003e= 1", + "message": "invalid name, length should \u003e= 1", + "translation": "invalid name, length should \u003e= 1", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid name, length should \u003c= 128", + "message": "invalid name, length should \u003c= 128", + "translation": "invalid name, length should \u003c= 128", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "translation": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ], + "fuzzy": true + }, + { + "id": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "message": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "translation": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "translation": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ], + "fuzzy": true + }, + { + "id": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "message": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "translation": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ], + "fuzzy": true + }, + { + "id": "invalid name, length should \u003c= 64", + "message": "invalid name, length should \u003c= 64", + "translation": "invalid name, length should \u003c= 64", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid name {Name}, name cannot all be '.'", + "message": "invalid name {Name}, name cannot all be '.'", + "translation": "invalid name {Name}, name cannot all be '.'", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ], + "fuzzy": true + }, + { + "id": "invalid namespace, length should \u003e= 1", + "message": "invalid namespace, length should \u003e= 1", + "translation": "invalid namespace, length should \u003e= 1", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid namespace, length should \u003c= 128", + "message": "invalid namespace, length should \u003c= 128", + "translation": "invalid namespace, length should \u003c= 128", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid username, length should \u003e= 1", + "message": "invalid username, length should \u003e= 1", + "translation": "invalid username, length should \u003e= 1", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid username, length should \u003c= 32", + "message": "invalid username, length should \u003c= 32", + "translation": "invalid username, length should \u003c= 32", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "app is nil", + "message": "app is nil", + "translation": "app is nil", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "create app failed, err: {Err}", + "message": "create app failed, err: {Err}", + "translation": "create app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "update app failed, err: {Err}", + "message": "update app failed, err: {Err}", + "translation": "update app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "count app {AppID}'s config items failed, err: {Err}", + "message": "count app {AppID}'s config items failed, err: {Err}", + "translation": "count app {AppID}'s config items failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get app {AppID}'s template binding failed, err: {Err}", + "message": "get app {AppID}'s template binding failed, err: {Err}", + "translation": "get app {AppID}'s template binding failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "message": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translation": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "AppConfigCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "appConfigCnt" + } + ], + "fuzzy": true + }, + { + "id": "hook is nil", + "message": "hook is nil", + "translation": "hook is nil", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "Unnamed Version", + "message": "Unnamed Version", + "translation": "Unnamed Version", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "message": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "translation": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "TmplSetID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "tmplSetID" + }, + { + "id": "TmplSetTmplCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "tmplSetTmplCnt" + } + ], + "fuzzy": true + }, + { + "id": "validate templates exist failed, err: {Err}", + "message": "validate templates exist failed, err: {Err}", + "translation": "validate templates exist failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template space id in {DiffIDs} is not exist", + "message": "template space id in {DiffIDs} is not exist", + "translation": "template space id in {DiffIDs} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ], + "fuzzy": true + }, + { + "id": "template id in {DiffIDs} is not exist", + "message": "template id in {DiffIDs} is not exist", + "translation": "template id in {DiffIDs} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ], + "fuzzy": true + }, + { + "id": "validate template releases exist failed, err: {Err}", + "message": "validate template releases exist failed, err: {Err}", + "translation": "validate template releases exist failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template revision id in {DiffIDs} is not exist", + "message": "template revision id in {DiffIDs} is not exist", + "translation": "template revision id in {DiffIDs} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ], + "fuzzy": true + }, + { + "id": "validate template sets exist failed, err: {Err}", + "message": "validate template sets exist failed, err: {Err}", + "translation": "validate template sets exist failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template set id in {DiffIDs} is not exist", + "message": "template set id in {DiffIDs} is not exist", + "translation": "template set id in {DiffIDs} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ], + "fuzzy": true + }, + { + "id": "template {Id} is not exist", + "message": "template {Id} is not exist", + "translation": "template {Id} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ], + "fuzzy": true + }, + { + "id": "get template failed, err: {Err}", + "message": "get template failed, err: {Err}", + "translation": "get template failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template release {Id} is not exist", + "message": "template release {Id} is not exist", + "translation": "template release {Id} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ], + "fuzzy": true + }, + { + "id": "get template release failed, err: {Err}", + "message": "get template release failed, err: {Err}", + "translation": "get template release failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template set {Id} is not exist", + "message": "template set {Id} is not exist", + "translation": "template set {Id} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ], + "fuzzy": true + }, + { + "id": "get template set count failed, err: {Err}", + "message": "get template set count failed, err: {Err}", + "translation": "get template set count failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "there are template sets under the template space, need to delete them first", + "message": "there are template sets under the template space, need to delete them first", + "translation": "there are template sets under the template space, need to delete them first", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "get template count failed, err: {Err}", + "message": "get template count failed, err: {Err}", + "translation": "get template count failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "there are templates under the template space, need to delete them first", + "message": "there are templates under the template space, need to delete them first", + "translation": "there are templates under the template space, need to delete them first", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "validate templates in a template set failed, err: {Err}", + "message": "validate templates in a template set failed, err: {Err}", + "translation": "validate templates in a template set failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", + "message": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", + "translation": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + }, + { + "id": "TemplateSetID", + "string": "%[2]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 2, + "expr": "templateSetID" + } + ], + "fuzzy": true + }, + { + "id": "id can not be set", + "message": "id can not be set", + "translation": "id can not be set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid biz id", + "message": "invalid biz id", + "translation": "invalid biz id", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid spec, is nil", + "message": "invalid spec, is nil", + "translation": "invalid spec, is nil", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "app spec is nil", + "message": "app spec is nil", + "translation": "app spec is nil", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "unknown config type: {ConfigType}", + "message": "unknown config type: {ConfigType}", + "translation": "unknown config type: {ConfigType}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "ConfigType", "string": "%[1]s", - "type": "string", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.ConfigType", "underlyingType": "string", "argNum": 1, - "expr": "constant.TemplateVariablePrefix" + "expr": "as.ConfigType" } ], "fuzzy": true }, { - "id": "db operation failed", - "message": "db operation failed", - "translation": "db operation failed", + "id": "app's type can not be updated", + "message": "app's type can not be updated", + "translation": "app's type can not be updated", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "invalid argument", - "message": "invalid argument", - "translation": "invalid argument", + "id": "not support table config type for now", + "message": "not support table config type for now", + "translation": "not support table config type for now", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "id should not be set", - "message": "id should not be set", - "translation": "id should not be set", + "id": "unsupported config type: {ConfigType}", + "message": "unsupported config type: {ConfigType}", + "translation": "unsupported config type: {ConfigType}", "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "ConfigType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.ConfigType", + "underlyingType": "string", + "argNum": 1, + "expr": "c" + } + ], "fuzzy": true }, { - "id": "spec not set", - "message": "spec not set", - "translation": "spec not set", + "id": "unsupported app reload type: {AppReloadType}", + "message": "unsupported app reload type: {AppReloadType}", + "translation": "unsupported app reload type: {AppReloadType}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AppReloadType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.AppReloadType", + "underlyingType": "string", + "argNum": 1, + "expr": "rt" + } + ], + "fuzzy": true + }, + { + "id": "invalid data-type", + "message": "invalid data-type", + "translation": "invalid data-type", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "attachment not set", - "message": "attachment not set", - "translation": "attachment not set", + "id": "spec should be set", + "message": "spec should be set", + "translation": "spec should be set", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "revision not set", - "message": "revision not set", - "translation": "revision not set", + "id": "invalid commit spec's content id", + "message": "invalid commit spec's content id", + "translation": "invalid commit spec's content id", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", - "message": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", - "translation": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "id": "commit spec's content is empty", + "message": "commit spec's content is empty", + "translation": "commit spec's content is empty", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "invalid name, length should \u003c= 128", - "message": "invalid name, length should \u003c= 128", - "translation": "invalid name, length should \u003c= 128", + "id": "verify Windows file paths failed, path: {Path}, err: {Err}", + "message": "verify Windows file paths failed, path: {Path}, err: {Err}", + "translation": "verify Windows file paths failed, path: {Path}, err: {Err}", "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Path", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], "fuzzy": true }, { - "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", - "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", - "translation": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "id": "verify Unix file paths failed, path: {Path}, err: {Err}", + "message": "verify Unix file paths failed, path: {Path}, err: {Err}", + "translation": "verify Unix file paths failed, path: {Path}, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Name", + "id": "Path", "string": "%[1]s", "type": "string", "underlyingType": "string", "argNum": 1, - "expr": "name" + "expr": "path" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "unsupported file format: {FileFormat}", + "message": "unsupported file format: {FileFormat}", + "translation": "unsupported file format: {FileFormat}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "FileFormat", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.FileFormat", + "underlyingType": "string", + "argNum": 1, + "expr": "f" + } + ], + "fuzzy": true + }, + { + "id": "unsupported file mode: {FileMode}", + "message": "unsupported file mode: {FileMode}", + "translation": "unsupported file mode: {FileMode}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "FileMode", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.FileMode", + "underlyingType": "string", + "argNum": 1, + "expr": "f" } ], "fuzzy": true }, + { + "id": "content id can not set", + "message": "content id can not set", + "translation": "content id can not set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid content signature, should be config's sha256 value", + "message": "invalid content signature, should be config's sha256 value", + "translation": "invalid content signature, should be config's sha256 value", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "content signature should be lowercase", + "message": "content signature should be lowercase", + "translation": "content signature should be lowercase", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid origin content signature, should be config's sha256 value", + "message": "invalid origin content signature, should be config's sha256 value", + "translation": "invalid origin content signature, should be config's sha256 value", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "origin content signature should be lowercase", + "message": "origin content signature should be lowercase", + "translation": "origin content signature should be lowercase", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid app id", + "message": "invalid app id", + "translation": "invalid app id", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid config item id", + "message": "invalid config item id", + "translation": "invalid config item id", + "translatorComment": "Copied from source.", + "fuzzy": true + }, { "id": "default_val {DefaultVal} is not a number type", "message": "default_val {DefaultVal} is not a number type", @@ -124,6 +2386,86 @@ } ], "fuzzy": true + }, + { + "id": "failed to get 'kv_type' as a string from kv.Data, err : {Err}", + "message": "failed to get 'kv_type' as a string from kv.Data, err : {Err}", + "translation": "failed to get 'kv_type' as a string from kv.Data, err : {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "value type assertion failed: err : {Err}", + "message": "value type assertion failed: err : {Err}", + "translation": "value type assertion failed: err : {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "authorize failed", + "message": "authorize failed", + "translation": "authorize failed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "get permission to apply failed", + "message": "get permission to apply failed", + "translation": "get permission to apply failed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "grpc status with details failed", + "message": "grpc status with details failed", + "translation": "grpc status with details failed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "{Path2} and {Path1} path file conflict", + "message": "{Path2} and {Path1} path file conflict", + "translation": "{Path2} and {Path1} path file conflict", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Path2", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path2" + }, + { + "id": "Path1", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "path1" + } + ], + "fuzzy": true } ] } \ No newline at end of file diff --git a/bcs-services/bcs-bscp/pkg/i18n/translations/locales/en/out.gotext.json b/bcs-services/bcs-bscp/pkg/i18n/translations/locales/en/out.gotext.json index 25f983a650..ebde6f0689 100644 --- a/bcs-services/bcs-bscp/pkg/i18n/translations/locales/en/out.gotext.json +++ b/bcs-services/bcs-bscp/pkg/i18n/translations/locales/en/out.gotext.json @@ -9,14 +9,14 @@ "fuzzy": true }, { - "id": "read file failed {ErrR}", - "message": "read file failed {ErrR}", - "translation": "read file failed {ErrR}", + "id": "read file failed, err: {ErrR}", + "message": "read file failed, err: {ErrR}", + "translation": "read file failed, err: {ErrR}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "ErrR", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -26,14 +26,14 @@ "fuzzy": true }, { - "id": "create directory failed {Err}", - "message": "create directory failed {Err}", - "translation": "create directory failed {Err}", + "id": "create directory failed, err: {Err}", + "message": "create directory failed, err: {Err}", + "translation": "create directory failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -43,14 +43,14 @@ "fuzzy": true }, { - "id": "create temporary directory failed {Err}", - "message": "create temporary directory failed {Err}", - "translation": "create temporary directory failed {Err}", + "id": "create temporary directory failed, err: {Err}", + "message": "create temporary directory failed, err: {Err}", + "translation": "create temporary directory failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -85,14 +85,14 @@ "fuzzy": true }, { - "id": "decompression failed {Err}", - "message": "decompression failed {Err}", - "translation": "decompression failed {Err}", + "id": "decompression failed, err: {Err}", + "message": "decompression failed, err: {Err}", + "translation": "decompression failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -102,14 +102,14 @@ "fuzzy": true }, { - "id": "upload file failed {Err}", - "message": "upload file failed {Err}", - "translation": "upload file failed {Err}", + "id": "upload file failed, err: {Err}", + "message": "upload file failed, err: {Err}", + "translation": "upload file failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -119,14 +119,14 @@ "fuzzy": true }, { - "id": "detecting file conflicts failed {Err}", - "message": "detecting file conflicts failed {Err}", - "translation": "detecting file conflicts failed {Err}", + "id": "list template config failed, err: {Err}", + "message": "list template config failed, err: {Err}", + "translation": "list template config failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -159,6 +159,40 @@ ], "fuzzy": true }, + { + "id": "list config item failed, err: {Err}", + "message": "list config item failed, err: {Err}", + "translation": "list config item failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get the current number of service config items failed, err: {Err}", + "message": "get the current number of service config items failed, err: {Err}", + "translation": "get the current number of service config items failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, { "id": "decompress file failed, exceeding the maximum file limit threshold of {Limit}", "message": "decompress file failed, exceeding the maximum file limit threshold of {Limit}", @@ -193,6 +227,23 @@ ], "fuzzy": true }, + { + "id": "list templates failed, err: {Err}", + "message": "list templates failed, err: {Err}", + "translation": "list templates failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, { "id": "client ids is empty", "message": "client ids is empty", @@ -289,55 +340,48 @@ "fuzzy": true }, { - "id": "app {AppId} not found", - "message": "app {AppId} not found", - "translation": "app {AppId} not found", + "id": "app name {Name} already exists", + "message": "app name {Name} already exists", + "translation": "app name {Name} already exists", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "AppId", - "string": "%[1]d", - "type": "uint32", - "underlyingType": "uint32", + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "req.AppId" + "expr": "req.Spec.Name" } ], "fuzzy": true }, { - "id": "obtain the number of configuration items", - "message": "obtain the number of configuration items", - "translation": "obtain the number of configuration items", - "translatorComment": "Copied from source.", - "fuzzy": true - }, - { - "id": "get template binding relationships through business and service IDs failed, err: {Err}", - "message": "get template binding relationships through business and service IDs failed, err: {Err}", - "translation": "get template binding relationships through business and service IDs failed, err: {Err}", + "id": "app alias {Alias} already exists", + "message": "app alias {Alias} already exists", + "translation": "app alias {Alias} already exists", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Err", + "id": "Alias", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "req.Spec.Alias" } ], "fuzzy": true }, { - "id": "get reference template set under this app failed, err: {Err}", - "message": "get reference template set under this app failed, err: {Err}", - "translation": "get reference template set under this app failed, err: {Err}", + "id": "get app failed, err: {Err}", + "message": "get app failed, err: {Err}", + "translation": "get app failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -347,14 +391,21 @@ "fuzzy": true }, { - "id": "list template sets by template set ids failed, err: {Err}", - "message": "list template sets by template set ids failed, err: {Err}", - "translation": "list template sets by template set ids failed, err: {Err}", + "id": "the specified type does not match the actual configuration", + "message": "the specified type does not match the actual configuration", + "translation": "the specified type does not match the actual configuration", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "delete app related resources failed, err: {Err}", + "message": "delete app related resources failed, err: {Err}", + "translation": "delete app related resources failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -364,14 +415,14 @@ "fuzzy": true }, { - "id": "remove the template set bound to the app failed, err: {Err}", - "message": "remove the template set bound to the app failed, err: {Err}", - "translation": "remove the template set bound to the app failed, err: {Err}", + "id": "delete app failed, err: {Err}", + "message": "delete app failed, err: {Err}", + "translation": "delete app failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -381,31 +432,31 @@ "fuzzy": true }, { - "id": "hook name {Name} already exists", - "message": "hook name {Name} already exists", - "translation": "hook name {Name} already exists", + "id": "app {AppId} not found", + "message": "app {AppId} not found", + "translation": "app {AppId} not found", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Name", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", + "id": "AppId", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", "argNum": 1, - "expr": "req.Spec.Name" + "expr": "req.AppId" } ], "fuzzy": true }, { - "id": "get excluded hook failed, err: {Err}", - "message": "get excluded hook failed, err: {Err}", - "translation": "get excluded hook failed, err: {Err}", + "id": "business query failed, err: {Err}", + "message": "business query failed, err: {Err}", + "translation": "business query failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -415,48 +466,48 @@ "fuzzy": true }, { - "id": "retrieve the referenced script failed, err: {Err}", - "message": "retrieve the referenced script failed, err: {Err}", - "translation": "retrieve the referenced script failed, err: {Err}", + "id": "app related biz {BizID} is not exist", + "message": "app related biz {BizID} is not exist", + "translation": "app related biz {BizID} is not exist", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Err", - "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "id": "BizID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", "argNum": 1, - "expr": "err" + "expr": "bizID" } ], "fuzzy": true }, { - "id": "get excluded kv failed, err: {Err}", - "message": "get excluded kv failed, err: {Err}", - "translation": "get excluded kv failed, err: {Err}", + "id": "the config file {Joindir_name} already exists in this space and cannot be created again", + "message": "the config file {Joindir_name} already exists in this space and cannot be created again", + "translation": "the config file {Joindir_name} already exists in this space and cannot be created again", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Err", + "id": "Joindir_name", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "path.Join(dir, name)" } ], "fuzzy": true }, { - "id": "get app template bindings by template set ids, err: {Err}", - "message": "get app template bindings by template set ids, err: {Err}", - "translation": "get app template bindings by template set ids, err: {Err}", + "id": "list template sets by template set ids failed, err: {Err}", + "message": "list template sets by template set ids failed, err: {Err}", + "translation": "list template sets by template set ids failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -466,14 +517,14 @@ "fuzzy": true }, { - "id": "batch update app template binding's failed, err: {Err}", - "message": "batch update app template binding's failed, err: {Err}", - "translation": "batch update app template binding's failed, err: {Err}", + "id": "update app template binding failed, err: {Err}", + "message": "update app template binding failed, err: {Err}", + "translation": "update app template binding failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -483,14 +534,14 @@ "fuzzy": true }, { - "id": "batch add templates to template sets failed, err: {Err}", - "message": "batch add templates to template sets failed, err: {Err}", - "translation": "batch add templates to template sets failed, err: {Err}", + "id": "list template spaces failed, err: {Err}", + "message": "list template spaces failed, err: {Err}", + "translation": "list template spaces failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -500,33 +551,43 @@ "fuzzy": true }, { - "id": "get template set data failed, err: {Err}", - "message": "get template set data failed, err: {Err}", - "translation": "get template set data failed, err: {Err}", + "id": "template space {V} not found", + "message": "template space {V} not found", + "translation": "template space {V} not found", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Err", + "id": "V", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "v" } ], "fuzzy": true }, { - "id": "there is no template file under this template set", - "message": "there is no template file under this template set", - "translation": "there is no template file under this template set", + "id": "template set {V} not found", + "message": "template set {V} not found", + "translation": "template set {V} not found", "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "V", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "v" + } + ], "fuzzy": true }, { - "id": "delete template from template sets failed, err: {Err}, rid: {Rid}", - "message": "delete template from template sets failed, err: {Err}, rid: {Rid}", - "translation": "delete template from template sets failed, err: {Err}, rid: {Rid}", + "id": "list templates of template set failed, err: {Err}", + "message": "list templates of template set failed, err: {Err}", + "translation": "list templates of template set failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { @@ -536,22 +597,39 @@ "underlyingType": "interface{Error() string}", "argNum": 1, "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "message": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "translation": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "ValidatedTemplateSetNamessId", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "validatedTemplateSetNames[sId]" }, { - "id": "Rid", + "id": "TemplateNamesv", "string": "%[2]s", "type": "string", "underlyingType": "string", "argNum": 2, - "expr": "kt.Rid" + "expr": "templateNames[v]" } ], "fuzzy": true }, { - "id": "list templates by tuple failed, err: {Err}", - "message": "list templates by tuple failed, err: {Err}", - "translation": "list templates by tuple failed, err: {Err}", + "id": "list template revisions failed, err: {Err}", + "message": "list template revisions failed, err: {Err}", + "translation": "list template revisions failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { @@ -566,43 +644,59 @@ "fuzzy": true }, { - "id": "list app template bindings by app ids failed, err: {Err}", - "message": "list app template bindings by app ids failed, err: {Err}", - "translation": "list app template bindings by app ids failed, err: {Err}", + "id": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", + "message": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", + "translation": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Err", + "id": "RevisionNamesv", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "revisionNames[v]" + }, + { + "id": "TemplateNamestId", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "templateNames[tId]" } ], "fuzzy": true }, { - "id": "get template set failed, err: {Err}", - "message": "get template set failed, err: {Err}", - "translation": "get template set failed, err: {Err}", + "id": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", + "message": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", + "translation": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Err", + "id": "TemplateID", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "templateNames[v.Attachment.TemplateID]" + }, + { + "id": "ID", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "revisionNames[v.ID]" } ], "fuzzy": true }, { - "id": "list apps by app ids failed, err: {Err}", - "message": "list apps by app ids failed, err: {Err}", - "translation": "list apps by app ids failed, err: {Err}", + "id": "count the number of service configurations failed, err: {Err}", + "message": "count the number of service configurations failed, err: {Err}", + "translation": "count the number of service configurations failed, err: {Err}", "translatorComment": "Copied from source.", "placeholders": [ { @@ -617,26 +711,26 @@ "fuzzy": true }, { - "id": "count the number of app configs failed, err: {Err}", - "message": "count the number of app configs failed, err: {Err}", - "translation": "count the number of app configs failed, err: {Err}", + "id": "app {Name} is not file type", + "message": "app {Name} is not file type", + "translation": "app {Name} is not file type", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Err", + "id": "Name", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "app.Spec.Name" } ], "fuzzy": true }, { - "id": "same template variable name {Name} already exists", - "message": "same template variable name {Name} already exists", - "translation": "same template variable name {Name} already exists", + "id": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "message": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translation": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", "translatorComment": "Copied from source.", "placeholders": [ { @@ -645,95 +739,1607 @@ "type": "string", "underlyingType": "string", "argNum": 1, - "expr": "req.Spec.Name" + "expr": "app.Spec.Name" + }, + { + "id": "AppConfigCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "appConfigCnt" } ], "fuzzy": true }, { - "id": "db operation failed", - "message": "db operation failed", - "translation": "db operation failed", + "id": "the config file {Name} under this service already exists and cannot be created again", + "message": "the config file {Name} under this service already exists and cannot be created again", + "translation": "the config file {Name} under this service already exists and cannot be created again", "translatorComment": "Copied from source.", - "fuzzy": true - }, - { - "id": "invalid argument", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path.Join(req.ConfigItemSpec.Path, req.ConfigItemSpec.Name)" + } + ], + "fuzzy": true + }, + { + "id": "delete one app template binding instance by app id failed, err: {Err}", + "message": "delete one app template binding instance by app id failed, err: {Err}", + "translation": "delete one app template binding instance by app id failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "batch create contents failed, err: {Error}", + "message": "batch create contents failed, err: {Error}", + "translation": "batch create contents failed, err: {Error}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Error", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "e" + } + ], + "fuzzy": true + }, + { + "id": "delete one app template variable failed, err: {Error}", + "message": "delete one app template variable failed, err: {Error}", + "translation": "delete one app template variable failed, err: {Error}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Error", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "e" + } + ], + "fuzzy": true + }, + { + "id": "obtain the number of configuration items", + "message": "obtain the number of configuration items", + "translation": "obtain the number of configuration items", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "get template binding relationships through business and service IDs failed, err: {Err}", + "message": "get template binding relationships through business and service IDs failed, err: {Err}", + "translation": "get template binding relationships through business and service IDs failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get reference template set under this app failed, err: {Err}", + "message": "get reference template set under this app failed, err: {Err}", + "translation": "get reference template set under this app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "remove the template set bound to the app failed, err: {Err}", + "message": "remove the template set bound to the app failed, err: {Err}", + "translation": "remove the template set bound to the app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "hook name {Name} already exists", + "message": "hook name {Name} already exists", + "translation": "hook name {Name} already exists", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Name" + } + ], + "fuzzy": true + }, + { + "id": "get excluded hook failed, err: {Err}", + "message": "get excluded hook failed, err: {Err}", + "translation": "get excluded hook failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "retrieve the referenced script failed, err: {Err}", + "message": "retrieve the referenced script failed, err: {Err}", + "translation": "retrieve the referenced script failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get kv ({Key}) failed, err: {Err}", + "message": "get kv ({Key}) failed, err: {Err}", + "translation": "get kv ({Key}) failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Key", + "string": "%[1]d", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "the config item {Key} under this service already exists and cannot be created again", + "message": "the config item {Key} under this service already exists and cannot be created again", + "translation": "the config item {Key} under this service already exists and cannot be created again", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Key", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + } + ], + "fuzzy": true + }, + { + "id": "get app fail, key: {Key}, err: {Err}", + "message": "get app fail, key: {Key}, err: {Err}", + "translation": "get app fail, key: {Key}, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Key", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "kv type does not match the data type defined in the application", + "message": "kv type does not match the data type defined in the application", + "translation": "kv type does not match the data type defined in the application", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "create kv failed, err: {Err}", + "message": "create kv failed, err: {Err}", + "translation": "create kv failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "update kv failed, err: {Err}", + "message": "update kv failed, err: {Err}", + "translation": "update kv failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get excluded kv failed, err: {Err}", + "message": "get excluded kv failed, err: {Err}", + "translation": "get excluded kv failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get app template bindings by template set ids, err: {Err}", + "message": "get app template bindings by template set ids, err: {Err}", + "translation": "get app template bindings by template set ids, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "batch update app template binding's failed, err: {Err}", + "message": "batch update app template binding's failed, err: {Err}", + "translation": "batch update app template binding's failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "batch add templates to template sets failed, err: {Err}", + "message": "batch add templates to template sets failed, err: {Err}", + "translation": "batch add templates to template sets failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get template set data failed, err: {Err}", + "message": "get template set data failed, err: {Err}", + "translation": "get template set data failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "there is no template file under this template set", + "message": "there is no template file under this template set", + "translation": "there is no template file under this template set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "delete template from template sets failed, err: {Err}", + "message": "delete template from template sets failed, err: {Err}", + "translation": "delete template from template sets failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "list templates by tuple failed, err: {Err}", + "message": "list templates by tuple failed, err: {Err}", + "translation": "list templates by tuple failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "list app template bindings by app ids failed, err: {Err}", + "message": "list app template bindings by app ids failed, err: {Err}", + "translation": "list app template bindings by app ids failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get template set failed, err: {Err}", + "message": "get template set failed, err: {Err}", + "translation": "get template set failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "message": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "translation": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "v.Spec.Name" + }, + { + "id": "TmplSetTmplCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "tmplSetTmplCnt" + } + ], + "fuzzy": true + }, + { + "id": "list apps by app ids failed, err: {Err}", + "message": "list apps by app ids failed, err: {Err}", + "translation": "list apps by app ids failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "count the number of app configs failed, err: {Err}", + "message": "count the number of app configs failed, err: {Err}", + "translation": "count the number of app configs failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template set data is empty", + "message": "template set data is empty", + "translation": "template set data is empty", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "list templates data failed, err: {Err}", + "message": "list templates data failed, err: {Err}", + "translation": "list templates data failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template data is empty", + "message": "template data is empty", + "translation": "template data is empty", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "list templates revisions data failed, err: {Err}", + "message": "list templates revisions data failed, err: {Err}", + "translation": "list templates revisions data failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "same template variable name {Name} already exists", + "message": "same template variable name {Name} already exists", + "translation": "same template variable name {Name} already exists", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Name" + } + ], + "fuzzy": true + }, + { + "id": "db operation failed", + "message": "db operation failed", + "translation": "db operation failed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid argument", "message": "invalid argument", "translation": "invalid argument", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "id should not be set", - "message": "id should not be set", - "translation": "id should not be set", + "id": "id should not be set", + "message": "id should not be set", + "translation": "id should not be set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "spec not set", + "message": "spec not set", + "translation": "spec not set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "attachment not set", + "message": "attachment not set", + "translation": "attachment not set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "revision not set", + "message": "revision not set", + "translation": "revision not set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path, length should \u003e= 1", + "message": "invalid path, length should \u003e= 1", + "translation": "invalid path, length should \u003e= 1", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path, length should \u003c= 1024", + "message": "invalid path, length should \u003c= 1024", + "translation": "invalid path, length should \u003c= 1024", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path, should start with '/'", + "message": "invalid path, should start with '/'", + "translation": "invalid path, should start with '/'", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path {Part}, path cannot all be '.'", + "message": "invalid path {Part}, path cannot all be '.'", + "translation": "invalid path {Part}, path cannot all be '.'", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Part", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "part" + } + ], + "fuzzy": true + }, + { + "id": "invalid path, length should \u003c= 256", + "message": "invalid path, length should \u003c= 256", + "translation": "invalid path, length should \u003c= 256", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid path,path does not conform to the win file path format specification", + "message": "invalid path,path does not conform to the win file path format specification", + "translation": "invalid path,path does not conform to the win file path format specification", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "reload file path is required", + "message": "reload file path is required", + "translation": "reload file path is required", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid reload file path, should \u003c= 128", + "message": "invalid reload file path, should \u003c= 128", + "translation": "invalid reload file path, should \u003c= 128", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "reload file path is not the absolute path", + "message": "reload file path is not the absolute path", + "translation": "reload file path is not the absolute path", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "message": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "translation": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "SideWorkspaceDir", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "constant.SideWorkspaceDir" + } + ], + "fuzzy": true + }, + { + "id": "memo is required, can not be empty", + "message": "memo is required, can not be empty", + "translation": "memo is required, can not be empty", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid memo, length should \u003c= 200", + "message": "invalid memo, length should \u003c= 200", + "translation": "invalid memo, length should \u003c= 200", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "message": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "translation": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "LowerName", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "lowerName" + }, + { + "id": "Prefix", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "prefix" + } + ], + "fuzzy": true + }, + { + "id": "invalid name, length should \u003e= 1", + "message": "invalid name, length should \u003e= 1", + "translation": "invalid name, length should \u003e= 1", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid name, length should \u003c= 128", + "message": "invalid name, length should \u003c= 128", + "translation": "invalid name, length should \u003c= 128", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "translation": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ], + "fuzzy": true + }, + { + "id": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "message": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "translation": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "translation": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ], + "fuzzy": true + }, + { + "id": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "message": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "translation": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ], + "fuzzy": true + }, + { + "id": "invalid name, length should \u003c= 64", + "message": "invalid name, length should \u003c= 64", + "translation": "invalid name, length should \u003c= 64", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid name {Name}, name cannot all be '.'", + "message": "invalid name {Name}, name cannot all be '.'", + "translation": "invalid name {Name}, name cannot all be '.'", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ], + "fuzzy": true + }, + { + "id": "invalid namespace, length should \u003e= 1", + "message": "invalid namespace, length should \u003e= 1", + "translation": "invalid namespace, length should \u003e= 1", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid namespace, length should \u003c= 128", + "message": "invalid namespace, length should \u003c= 128", + "translation": "invalid namespace, length should \u003c= 128", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid username, length should \u003e= 1", + "message": "invalid username, length should \u003e= 1", + "translation": "invalid username, length should \u003e= 1", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid username, length should \u003c= 32", + "message": "invalid username, length should \u003c= 32", + "translation": "invalid username, length should \u003c= 32", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "app is nil", + "message": "app is nil", + "translation": "app is nil", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "create data failed, err: {Err}", + "message": "create data failed, err: {Err}", + "translation": "create data failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "create app failed, err: {Err}", + "message": "create app failed, err: {Err}", + "translation": "create app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "update app failed, err: {Err}", + "message": "update app failed, err: {Err}", + "translation": "update app failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "count app {AppID}'s config items failed, err: {Err}", + "message": "count app {AppID}'s config items failed, err: {Err}", + "translation": "count app {AppID}'s config items failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "get app {AppID}'s template binding failed, err: {Err}", + "message": "get app {AppID}'s template binding failed, err: {Err}", + "translation": "get app {AppID}'s template binding failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "message": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translation": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "AppConfigCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "appConfigCnt" + } + ], + "fuzzy": true + }, + { + "id": "hook is nil", + "message": "hook is nil", + "translation": "hook is nil", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "Unnamed Version", + "message": "Unnamed Version", + "translation": "Unnamed Version", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "appID can not be 0", + "message": "appID can not be 0", + "translation": "appID can not be 0", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "message": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "translation": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "TmplSetID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "tmplSetID" + }, + { + "id": "TmplSetTmplCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "tmplSetTmplCnt" + } + ], + "fuzzy": true + }, + { + "id": "validate templates exist failed, err: {Err}", + "message": "validate templates exist failed, err: {Err}", + "translation": "validate templates exist failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template space id in {DiffIDs} is not exist", + "message": "template space id in {DiffIDs} is not exist", + "translation": "template space id in {DiffIDs} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ], + "fuzzy": true + }, + { + "id": "template id in {DiffIDs} is not exist", + "message": "template id in {DiffIDs} is not exist", + "translation": "template id in {DiffIDs} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ], + "fuzzy": true + }, + { + "id": "validate template releases exist failed, err: {Err}", + "message": "validate template releases exist failed, err: {Err}", + "translation": "validate template releases exist failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template revision id in {DiffIDs} is not exist", + "message": "template revision id in {DiffIDs} is not exist", + "translation": "template revision id in {DiffIDs} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ], + "fuzzy": true + }, + { + "id": "validate template sets exist failed, err: {Err}", + "message": "validate template sets exist failed, err: {Err}", + "translation": "validate template sets exist failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template set id in {DiffIDs} is not exist", + "message": "template set id in {DiffIDs} is not exist", + "translation": "template set id in {DiffIDs} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ], + "fuzzy": true + }, + { + "id": "template {Id} is not exist", + "message": "template {Id} is not exist", + "translation": "template {Id} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ], + "fuzzy": true + }, + { + "id": "get template failed, err: {Err}", + "message": "get template failed, err: {Err}", + "translation": "get template failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template release {Id} is not exist", + "message": "template release {Id} is not exist", + "translation": "template release {Id} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ], + "fuzzy": true + }, + { + "id": "get template release failed, err: {Err}", + "message": "get template release failed, err: {Err}", + "translation": "get template release failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "template set {Id} is not exist", + "message": "template set {Id} is not exist", + "translation": "template set {Id} is not exist", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ], + "fuzzy": true + }, + { + "id": "get template set count failed, err: {Err}", + "message": "get template set count failed, err: {Err}", + "translation": "get template set count failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "there are template sets under the template space, need to delete them first", + "message": "there are template sets under the template space, need to delete them first", + "translation": "there are template sets under the template space, need to delete them first", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "get template count failed, err: {Err}", + "message": "get template count failed, err: {Err}", + "translation": "get template count failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "there are templates under the template space, need to delete them first", + "message": "there are templates under the template space, need to delete them first", + "translation": "there are templates under the template space, need to delete them first", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "validate templates in a template set failed, err: {Err}", + "message": "validate templates in a template set failed, err: {Err}", + "translation": "validate templates in a template set failed, err: {Err}", "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], "fuzzy": true }, { - "id": "spec not set", - "message": "spec not set", - "translation": "spec not set", + "id": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", + "message": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", + "translation": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + }, + { + "id": "TemplateSetID", + "string": "%[2]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 2, + "expr": "templateSetID" + } + ], "fuzzy": true }, { - "id": "attachment not set", - "message": "attachment not set", - "translation": "attachment not set", + "id": "id can not be set", + "message": "id can not be set", + "translation": "id can not be set", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "revision not set", - "message": "revision not set", - "translation": "revision not set", + "id": "invalid biz id", + "message": "invalid biz id", + "translation": "invalid biz id", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", - "message": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", - "translation": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "id": "invalid spec, is nil", + "message": "invalid spec, is nil", + "translation": "invalid spec, is nil", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "invalid name, length should \u003c= 128", - "message": "invalid name, length should \u003c= 128", - "translation": "invalid name, length should \u003c= 128", + "id": "app spec is nil", + "message": "app spec is nil", + "translation": "app spec is nil", "translatorComment": "Copied from source.", "fuzzy": true }, { - "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", - "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", - "translation": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "id": "unknown config type: {ConfigType}", + "message": "unknown config type: {ConfigType}", + "translation": "unknown config type: {ConfigType}", "translatorComment": "Copied from source.", "placeholders": [ { - "id": "Name", + "id": "ConfigType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.ConfigType", + "underlyingType": "string", + "argNum": 1, + "expr": "as.ConfigType" + } + ], + "fuzzy": true + }, + { + "id": "app's type can not be updated", + "message": "app's type can not be updated", + "translation": "app's type can not be updated", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "not support table config type for now", + "message": "not support table config type for now", + "translation": "not support table config type for now", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "unsupported config type: {ConfigType}", + "message": "unsupported config type: {ConfigType}", + "translation": "unsupported config type: {ConfigType}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "ConfigType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.ConfigType", + "underlyingType": "string", + "argNum": 1, + "expr": "c" + } + ], + "fuzzy": true + }, + { + "id": "unsupported app reload type: {AppReloadType}", + "message": "unsupported app reload type: {AppReloadType}", + "translation": "unsupported app reload type: {AppReloadType}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AppReloadType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.AppReloadType", + "underlyingType": "string", + "argNum": 1, + "expr": "rt" + } + ], + "fuzzy": true + }, + { + "id": "invalid data-type", + "message": "invalid data-type", + "translation": "invalid data-type", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "spec should be set", + "message": "spec should be set", + "translation": "spec should be set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid commit spec's content id", + "message": "invalid commit spec's content id", + "translation": "invalid commit spec's content id", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "commit spec's content is empty", + "message": "commit spec's content is empty", + "translation": "commit spec's content is empty", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "verify Windows file paths failed, path: {Path}, err: {Err}", + "message": "verify Windows file paths failed, path: {Path}, err: {Err}", + "translation": "verify Windows file paths failed, path: {Path}, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Path", "string": "%[1]s", "type": "string", "underlyingType": "string", "argNum": 1, - "expr": "name" + "expr": "path" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" } ], "fuzzy": true }, { - "id": "hook is nil", - "message": "hook is nil", - "translation": "hook is nil", + "id": "verify Unix file paths failed, path: {Path}, err: {Err}", + "message": "verify Unix file paths failed, path: {Path}, err: {Err}", + "translation": "verify Unix file paths failed, path: {Path}, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Path", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "unsupported file format: {FileFormat}", + "message": "unsupported file format: {FileFormat}", + "translation": "unsupported file format: {FileFormat}", "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "FileFormat", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.FileFormat", + "underlyingType": "string", + "argNum": 1, + "expr": "f" + } + ], "fuzzy": true }, { - "id": "Unnamed Version", - "message": "Unnamed Version", - "translation": "Unnamed Version", + "id": "unsupported file mode: {FileMode}", + "message": "unsupported file mode: {FileMode}", + "translation": "unsupported file mode: {FileMode}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "FileMode", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.FileMode", + "underlyingType": "string", + "argNum": 1, + "expr": "f" + } + ], + "fuzzy": true + }, + { + "id": "content id can not set", + "message": "content id can not set", + "translation": "content id can not set", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid content signature, should be config's sha256 value", + "message": "invalid content signature, should be config's sha256 value", + "translation": "invalid content signature, should be config's sha256 value", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "content signature should be lowercase", + "message": "content signature should be lowercase", + "translation": "content signature should be lowercase", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid origin content signature, should be config's sha256 value", + "message": "invalid origin content signature, should be config's sha256 value", + "translation": "invalid origin content signature, should be config's sha256 value", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "origin content signature should be lowercase", + "message": "origin content signature should be lowercase", + "translation": "origin content signature should be lowercase", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid app id", + "message": "invalid app id", + "translation": "invalid app id", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "invalid config item id", + "message": "invalid config item id", + "translation": "invalid config item id", "translatorComment": "Copied from source.", "fuzzy": true }, @@ -770,6 +2376,106 @@ } ], "fuzzy": true + }, + { + "id": "get 'kv_type' as a string \n\t\tfrom kv.Data failed, err: {Err}", + "message": "get 'kv_type' as a string \n\t\tfrom kv.Data failed, err: {Err}", + "translation": "get 'kv_type' as a string \n\t\tfrom kv.Data failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "value type assertion failed, err: {Err}", + "message": "value type assertion failed, err: {Err}", + "translation": "value type assertion failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "authorize failed", + "message": "authorize failed", + "translation": "authorize failed", + "translatorComment": "Copied from source.", + "fuzzy": true + }, + { + "id": "get permission to apply failed, err: {Err}", + "message": "get permission to apply failed, err: {Err}", + "translation": "get permission to apply failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "grpc status with details failed, err: {Err}", + "message": "grpc status with details failed, err: {Err}", + "translation": "grpc status with details failed, err: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ], + "fuzzy": true + }, + { + "id": "{Path2} and {Path1} path file conflict", + "message": "{Path2} and {Path1} path file conflict", + "translation": "{Path2} and {Path1} path file conflict", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Path2", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path2" + }, + { + "id": "Path1", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "path1" + } + ], + "fuzzy": true } ] } \ No newline at end of file diff --git a/bcs-services/bcs-bscp/pkg/i18n/translations/locales/zh/messages.gotext.json b/bcs-services/bcs-bscp/pkg/i18n/translations/locales/zh/messages.gotext.json index 5002e0b2c3..9c6e9f4a46 100644 --- a/bcs-services/bcs-bscp/pkg/i18n/translations/locales/zh/messages.gotext.json +++ b/bcs-services/bcs-bscp/pkg/i18n/translations/locales/zh/messages.gotext.json @@ -7,13 +7,13 @@ "translation": "id不能为空" }, { - "id": "read file failed {ErrR}", - "message": "read file failed {ErrR}", - "translation": "读取文件失败: {ErrR}", + "id": "read file failed, err: {ErrR}", + "message": "read file failed, err: {ErrR}", + "translation": "读取文件失败, err: {ErrR}", "placeholders": [ { "id": "ErrR", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -22,13 +22,13 @@ ] }, { - "id": "create directory failed {Err}", - "message": "create directory failed {Err}", - "translation": "创建文件目录失败: {Err}", + "id": "create directory failed, err: {Err}", + "message": "create directory failed, err: {Err}", + "translation": "创建目录失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -37,13 +37,13 @@ ] }, { - "id": "create temporary directory failed {Err}", - "message": "create temporary directory failed {Err}", - "translation": "创建临时目录失败: {Err}", + "id": "create temporary directory failed, err: {Err}", + "message": "create temporary directory failed, err: {Err}", + "translation": "创建临时目录失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -54,7 +54,7 @@ { "id": "decompress the file. The size of file {Message} exceeds the maximum limit of {MB}", "message": "decompress the file. The size of file {Message} exceeds the maximum limit of {MB}", - "translation": "解压文件失败,文件 {Message} 的大小超过了最大限制阈值 {MB}", + "translation": "解压文件失败, 文件 {Message} 的大小超过了最大限制阈值 {MB}", "placeholders": [ { "id": "Message", @@ -75,13 +75,13 @@ ] }, { - "id": "decompression failed {Err}", - "message": "decompression failed {Err}", - "translation": "解压文件失败:{Err}", + "id": "decompression failed, err: {Err}", + "message": "decompression failed, err: {Err}", + "translation": "解压失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -90,13 +90,13 @@ ] }, { - "id": "upload file failed {Err}", - "message": "upload file failed {Err}", - "translation": "上传文件失败:{Err}", + "id": "upload file failed, err: {Err}", + "message": "upload file failed, err: {Err}", + "translation": "上传文件失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -105,13 +105,13 @@ ] }, { - "id": "detecting file conflicts failed {Err}", - "message": "detecting file conflicts failed {Err}", - "translation": "检测文件冲突失败: {Err}", + "id": "list template config failed, err: {Err}", + "message": "list template config failed, err: {Err}", + "translation": "获取模板配置失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -139,10 +139,40 @@ } ] }, + { + "id": "list config item failed, err: {Err}", + "message": "list config item failed, err: {Err}", + "translation": "获取配置项失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get the current number of service config items failed, err: {Err}", + "message": "get the current number of service config items failed, err: {Err}", + "translation": "", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, { "id": "decompress file failed, exceeding the maximum file limit threshold of {Limit}", "message": "decompress file failed, exceeding the maximum file limit threshold of {Limit}", - "translation": "解压文件失败,超过了文件数量最大限制阈值 {Limit}", + "translation": "解压文件失败, 超过了文件数量最大限制阈值 {Limit}", "placeholders": [ { "id": "Limit", @@ -157,7 +187,7 @@ { "id": "upload failed, please make sure the file size does not exceed {BytesToHumanReadableuint64maxSize}", "message": "upload failed, please make sure the file size does not exceed {BytesToHumanReadableuint64maxSize}", - "translation": "上传失败,请确保文件大小不超过 {BytesToHumanReadableuint64maxSize}", + "translation": "上传失败, 请确保文件大小不超过 {BytesToHumanReadableuint64maxSize}", "placeholders": [ { "id": "BytesToHumanReadableuint64maxSize", @@ -169,6 +199,21 @@ } ] }, + { + "id": "list templates failed, err: {Err}", + "message": "list templates failed, err: {Err}", + "translation": "获取模板数据失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, { "id": "client ids is empty", "message": "client ids is empty", @@ -251,48 +296,43 @@ ] }, { - "id": "app {AppId} not found", - "message": "app {AppId} not found", - "translation": "ID为{AppId}的服务不存在", + "id": "app name {Name} already exists", + "message": "app name {Name} already exists", + "translation": "服务名称 {Name} 已存在", "placeholders": [ { - "id": "AppId", - "string": "%[1]d", - "type": "uint32", - "underlyingType": "uint32", + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "req.AppId" + "expr": "req.Spec.Name" } ] }, { - "id": "obtain the number of configuration items", - "message": "obtain the number of configuration items", - "translation": "获取配置项数量" - }, - { - "id": "get template binding relationships through business and service IDs failed, err: {Err}", - "message": "get template binding relationships through business and service IDs failed, err: {Err}", - "translation": "通过业务和服务ID获取模板绑定关系失败,err: {Err}", + "id": "app alias {Alias} already exists", + "message": "app alias {Alias} already exists", + "translation": "服务别名 {Alias} 已存在", "placeholders": [ { - "id": "Err", + "id": "Alias", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "req.Spec.Alias" } ] }, { - "id": "get reference template set under this app failed, err: {Err}", - "message": "get reference template set under this app failed, err: {Err}", - "translation": "获取此应用程序下的引用模板集失败,err: {Err}", + "id": "get app failed, err: {Err}", + "message": "get app failed, err: {Err}", + "translation": "获取服务失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -301,13 +341,18 @@ ] }, { - "id": "list template sets by template set ids failed, err: {Err}", - "message": "list template sets by template set ids failed, err: {Err}", - "translation": "按模板集ID列出模板集失败,err: {Err}", + "id": "the specified type does not match the actual configuration", + "message": "the specified type does not match the actual configuration", + "translation": "指定的类型与实际配置不匹配" + }, + { + "id": "delete app related resources failed, err: {Err}", + "message": "delete app related resources failed, err: {Err}", + "translation": "删除服务相关资源失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -316,13 +361,13 @@ ] }, { - "id": "remove the template set bound to the app failed, err: {Err}", - "message": "remove the template set bound to the app failed, err: {Err}", - "translation": "移除套餐失败,err: {Err}", + "id": "delete app failed, err: {Err}", + "message": "delete app failed, err: {Err}", + "translation": "删除服务失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -331,28 +376,28 @@ ] }, { - "id": "hook name {Name} already exists", - "message": "hook name {Name} already exists", - "translation": "脚本名称 {Name} 已存在", + "id": "app {AppId} not found", + "message": "app {AppId} not found", + "translation": "ID为{AppId}的服务不存在", "placeholders": [ { - "id": "Name", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", + "id": "AppId", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", "argNum": 1, - "expr": "req.Spec.Name" + "expr": "req.AppId" } ] }, { - "id": "get excluded hook failed, err: {Err}", - "message": "get excluded hook failed, err: {Err}", - "translation": "获取排除后的脚本失败,err: {Err}", + "id": "business query failed, err: {Err}", + "message": "business query failed, err: {Err}", + "translation": "业务查询失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -361,43 +406,43 @@ ] }, { - "id": "retrieve the referenced script failed, err: {Err}", - "message": "retrieve the referenced script failed, err: {Err}", - "translation": "检索引用的脚本失败,err: {Err}", + "id": "app related biz {BizID} is not exist", + "message": "app related biz {BizID} is not exist", + "translation": "服务相关的业务 {BizID} 不存在", "placeholders": [ { - "id": "Err", - "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "id": "BizID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", "argNum": 1, - "expr": "err" + "expr": "bizID" } ] }, { - "id": "get excluded kv failed, err: {Err}", - "message": "get excluded kv failed, err: {Err}", - "translation": "获取排除后的kv失败,err: {Err}", + "id": "the config file {Joindir_name} already exists in this space and cannot be created again", + "message": "the config file {Joindir_name} already exists in this space and cannot be created again", + "translation": "此空间下配置文件 {Joindir_name} 已存在,无法重复创建", "placeholders": [ { - "id": "Err", + "id": "Joindir_name", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "path.Join(dir, name)" } ] }, { - "id": "get app template bindings by template set ids, err: {Err}", - "message": "get app template bindings by template set ids, err: {Err}", - "translation": "按模板集ID获取应用程序模板绑定,err: {Err}", + "id": "list template sets by template set ids failed, err: {Err}", + "message": "list template sets by template set ids failed, err: {Err}", + "translation": "按模板套餐ID列出模板套餐失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -406,13 +451,13 @@ ] }, { - "id": "batch update app template binding's failed, err: {Err}", - "message": "batch update app template binding's failed, err: {Err}", - "translation": "批量更新应用模板绑定失败,err: {Err}", + "id": "update app template binding failed, err: {Err}", + "message": "update app template binding failed, err: {Err}", + "translation": "更新服务模板绑定失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -421,13 +466,13 @@ ] }, { - "id": "batch add templates to template sets failed, err: {Err}", - "message": "batch add templates to template sets failed, err: {Err}", - "translation": "模板集批量添加模板失败,err: {Err}", + "id": "list template spaces failed, err: {Err}", + "message": "list template spaces failed, err: {Err}", + "translation": "列出模板空间失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -436,29 +481,39 @@ ] }, { - "id": "get template set data failed, err: {Err}", - "message": "get template set data failed, err: {Err}", - "translation": "获取模板集数据失败,err: {Err}", + "id": "template space {V} not found", + "message": "template space {V} not found", + "translation": "模板空间 {V} 不存在", "placeholders": [ { - "id": "Err", + "id": "V", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "v" } ] }, { - "id": "there is no template file under this template set", - "message": "there is no template file under this template set", - "translation": "此模板集下没有模板文件" + "id": "template set {V} not found", + "message": "template set {V} not found", + "translation": "模板套餐 {V} 不存在", + "placeholders": [ + { + "id": "V", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "v" + } + ] }, { - "id": "delete template from template sets failed, err: {Err}, rid: {Rid}", - "message": "delete template from template sets failed, err: {Err}, rid: {Rid}", - "translation": "从模板集中删除模板失败,err: {Err}, rid: {Rid}", + "id": "list templates of template set failed, err: {Err}", + "message": "list templates of template set failed, err: {Err}", + "translation": "获取模板套餐下的模板失败, err: {Err}", "placeholders": [ { "id": "Err", @@ -467,21 +522,36 @@ "underlyingType": "interface{Error() string}", "argNum": 1, "expr": "err" + } + ] + }, + { + "id": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "message": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "translation": "模板套餐 {TemplateNamesv} 中的模板文件 {ValidatedTemplateSetNamessId} 被移除, 请重新导入套餐", + "placeholders": [ + { + "id": "ValidatedTemplateSetNamessId", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "validatedTemplateSetNames[sId]" }, { - "id": "Rid", + "id": "TemplateNamesv", "string": "%[2]s", "type": "string", "underlyingType": "string", "argNum": 2, - "expr": "kt.Rid" + "expr": "templateNames[v]" } ] }, { - "id": "list templates by tuple failed, err: {Err}", - "message": "list templates by tuple failed, err: {Err}", - "translation": "列出模板失败,err: {Err}", + "id": "list template revisions failed, err: {Err}", + "message": "list template revisions failed, err: {Err}", + "translation": "获取模板版本失败, err: {Err}", "placeholders": [ { "id": "Err", @@ -494,39 +564,55 @@ ] }, { - "id": "list app template bindings by app ids failed, err: {Err}", - "message": "list app template bindings by app ids failed, err: {Err}", - "translation": "按服务ID列出应用模板绑定失败,err: {Err}", + "id": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", + "message": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", + "translation": "模板文件 {TemplateNamestId} 中的模板版本 {RevisionNamesv} 被移除, 请重新导入套餐", "placeholders": [ { - "id": "Err", + "id": "RevisionNamesv", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "revisionNames[v]" + }, + { + "id": "TemplateNamestId", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "templateNames[tId]" } ] }, { - "id": "get template set failed, err: {Err}", - "message": "get template set failed, err: {Err}", - "translation": "获取模板集失败,err: {Err}", + "id": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", + "message": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", + "translation": "模板文件 {ID} 中的版本号 {TemplateID} 不是最新版本, 请重新导入套餐", "placeholders": [ { - "id": "Err", + "id": "TemplateID", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "templateNames[v.Attachment.TemplateID]" + }, + { + "id": "ID", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "revisionNames[v.ID]" } ] }, { - "id": "list apps by app ids failed, err: {Err}", - "message": "list apps by app ids failed, err: {Err}", - "translation": "按服务ID列出应用程序失败,err: {Err}", + "id": "count the number of service configurations failed, err: {Err}", + "message": "count the number of service configurations failed, err: {Err}", + "translation": "统计服务配置数量失败, err: {Err}", "placeholders": [ { "id": "Err", @@ -539,24 +625,24 @@ ] }, { - "id": "count the number of app configs failed, err: {Err}", - "message": "count the number of app configs failed, err: {Err}", - "translation": "统计服务配置数量失败,err: {Err}", + "id": "app {Name} is not file type", + "message": "app {Name} is not file type", + "translation": "该服务 {Name} 不是文件类型", "placeholders": [ { - "id": "Err", + "id": "Name", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "app.Spec.Name" } ] }, { - "id": "same template variable name {Name} already exists", - "message": "same template variable name {Name} already exists", - "translation": "同名的模版变量名称{Name}已存在", + "id": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "message": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translation": "服务 {Name} 的配置项总数(包括模板和非模板)超过单服务最大配置文件数量限制 {AppConfigCnt}", "placeholders": [ { "id": "Name", @@ -564,24 +650,531 @@ "type": "string", "underlyingType": "string", "argNum": 1, - "expr": "req.Spec.Name" + "expr": "app.Spec.Name" + }, + { + "id": "AppConfigCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "appConfigCnt" } ] }, { - "id": "db operation failed", - "message": "db operation failed", - "translation": "db操作失败" + "id": "the config file {Name} under this service already exists and cannot be created again", + "message": "the config file {Name} under this service already exists and cannot be created again", + "translation": "此服务下的配置文件 {Name} 已存在, 无法重复创建", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path.Join(req.ConfigItemSpec.Path, req.ConfigItemSpec.Name)" + } + ] }, { - "id": "invalid argument", - "message": "invalid argument", - "translation": "无效参数" + "id": "delete one app template binding instance by app id failed, err: {Err}", + "message": "delete one app template binding instance by app id failed, err: {Err}", + "translation": "移除服务模板套餐失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] }, { - "id": "id should not be set", - "message": "id should not be set", - "translation": "id不应该被设置" + "id": "batch create contents failed, err: {Error}", + "message": "batch create contents failed, err: {Error}", + "translation": "批量创建内容失败, err: {Error}", + "placeholders": [ + { + "id": "Error", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "e" + } + ] + }, + { + "id": "delete one app template variable failed, err: {Error}", + "message": "delete one app template variable failed, err: {Error}", + "translation": "删除模板变量失败, err: {Error}", + "placeholders": [ + { + "id": "Error", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "e" + } + ] + }, + { + "id": "obtain the number of configuration items", + "message": "obtain the number of configuration items", + "translation": "获取配置项数量" + }, + { + "id": "get template binding relationships through business and service IDs failed, err: {Err}", + "message": "get template binding relationships through business and service IDs failed, err: {Err}", + "translation": "通过业务和服务ID获取模板绑定关系失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get reference template set under this app failed, err: {Err}", + "message": "get reference template set under this app failed, err: {Err}", + "translation": "获取该服务下的引用模板集失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "remove the template set bound to the app failed, err: {Err}", + "message": "remove the template set bound to the app failed, err: {Err}", + "translation": "移除套餐失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "hook name {Name} already exists", + "message": "hook name {Name} already exists", + "translation": "脚本名称 {Name} 已存在", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Name" + } + ] + }, + { + "id": "get excluded hook failed, err: {Err}", + "message": "get excluded hook failed, err: {Err}", + "translation": "获取排除后的脚本失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "retrieve the referenced script failed, err: {Err}", + "message": "retrieve the referenced script failed, err: {Err}", + "translation": "检索引用的脚本失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get kv ({Key}) failed, err: {Err}", + "message": "get kv ({Key}) failed, err: {Err}", + "translation": "获取 kv ({Key}) 失败, err: {Err}", + "placeholders": [ + { + "id": "Key", + "string": "%[1]d", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] + }, + { + "id": "the config item {Key} under this service already exists and cannot be created again", + "message": "the config item {Key} under this service already exists and cannot be created again", + "translation": "该服务下的配置项{Key}已存在, 无法重复创建", + "placeholders": [ + { + "id": "Key", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + } + ] + }, + { + "id": "get app fail, key: {Key}, err: {Err}", + "message": "get app fail, key: {Key}, err: {Err}", + "translation": "获取服务失败, key: {Key}, err: {Err}", + "placeholders": [ + { + "id": "Key", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] + }, + { + "id": "kv type does not match the data type defined in the application", + "message": "kv type does not match the data type defined in the application", + "translation": "kv 类型与服务类型中定义的数据类型不匹配" + }, + { + "id": "create kv failed, err: {Err}", + "message": "create kv failed, err: {Err}", + "translation": "创建kv失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "update kv failed, err: {Err}", + "message": "update kv failed, err: {Err}", + "translation": "更新kv失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get excluded kv failed, err: {Err}", + "message": "get excluded kv failed, err: {Err}", + "translation": "获取排除后的kv失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get app template bindings by template set ids, err: {Err}", + "message": "get app template bindings by template set ids, err: {Err}", + "translation": "按模板集ID获取应用程序模板绑定, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "batch update app template binding's failed, err: {Err}", + "message": "batch update app template binding's failed, err: {Err}", + "translation": "批量更新应用模板绑定失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "batch add templates to template sets failed, err: {Err}", + "message": "batch add templates to template sets failed, err: {Err}", + "translation": "模板集批量添加模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get template set data failed, err: {Err}", + "message": "get template set data failed, err: {Err}", + "translation": "获取模板集数据失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "there is no template file under this template set", + "message": "there is no template file under this template set", + "translation": "此模板集下没有模板文件" + }, + { + "id": "delete template from template sets failed, err: {Err}", + "message": "delete template from template sets failed, err: {Err}", + "translation": "从模板套餐中删除模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "list templates by tuple failed, err: {Err}", + "message": "list templates by tuple failed, err: {Err}", + "translation": "列出模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "list app template bindings by app ids failed, err: {Err}", + "message": "list app template bindings by app ids failed, err: {Err}", + "translation": "按服务ID列出应用模板绑定失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get template set failed, err: {Err}", + "message": "get template set failed, err: {Err}", + "translation": "获取模板集失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "message": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "translation": "模板套餐 {Name} 超过单套餐最大配置文件数量限制 {TmplSetTmplCnt}", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "v.Spec.Name" + }, + { + "id": "TmplSetTmplCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "tmplSetTmplCnt" + } + ] + }, + { + "id": "list apps by app ids failed, err: {Err}", + "message": "list apps by app ids failed, err: {Err}", + "translation": "按服务ID列出服务失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "count the number of app configs failed, err: {Err}", + "message": "count the number of app configs failed, err: {Err}", + "translation": "统计服务配置数量失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template set data is empty", + "message": "template set data is empty", + "translation": "模板套餐数据为空" + }, + { + "id": "list templates data failed, err: {Err}", + "message": "list templates data failed, err: {Err}", + "translation": "列出模板数据失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template data is empty", + "message": "template data is empty", + "translation": "模板数据为空" + }, + { + "id": "list templates revisions data failed, err: {Err}", + "message": "list templates revisions data failed, err: {Err}", + "translation": "列出模板版本数据失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "same template variable name {Name} already exists", + "message": "same template variable name {Name} already exists", + "translation": "同名的模版变量名称{Name}已存在", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Name" + } + ] + }, + { + "id": "db operation failed", + "message": "db operation failed", + "translation": "db操作失败" + }, + { + "id": "invalid argument", + "message": "invalid argument", + "translation": "无效参数" + }, + { + "id": "id should not be set", + "message": "id should not be set", + "translation": "id不应该被设置" }, { "id": "spec not set", @@ -589,49 +1182,838 @@ "translation": "spec没有被设置" }, { - "id": "attachment not set", - "message": "attachment not set", - "translation": "attachment没有被设置" + "id": "attachment not set", + "message": "attachment not set", + "translation": "attachment没有被设置" + }, + { + "id": "revision not set", + "message": "revision not set", + "translation": "revision没有被设置" + }, + { + "id": "invalid path, length should \u003e= 1", + "message": "invalid path, length should \u003e= 1", + "translation": "路径无效, 长度应为 \u003e= 1" + }, + { + "id": "invalid path, length should \u003c= 1024", + "message": "invalid path, length should \u003c= 1024", + "translation": "路径无效, 长度应为 \u003c= 1024" + }, + { + "id": "invalid path, should start with '/'", + "message": "invalid path, should start with '/'", + "translation": "路径无效, 应以“/”开头" + }, + { + "id": "invalid path {Part}, path cannot all be '.'", + "message": "invalid path {Part}, path cannot all be '.'", + "translation": "路径 {Part} 无效, 路径不能全部为“.”", + "placeholders": [ + { + "id": "Part", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "part" + } + ] + }, + { + "id": "invalid path, length should \u003c= 256", + "message": "invalid path, length should \u003c= 256", + "translation": "路径无效, 长度应为 \u003c= 256" + }, + { + "id": "invalid path,path does not conform to the win file path format specification", + "message": "invalid path,path does not conform to the win file path format specification", + "translation": "路径无效, 路径不符合win文件路径格式规范" + }, + { + "id": "reload file path is required", + "message": "reload file path is required", + "translation": "需要重新加载文件路径" + }, + { + "id": "invalid reload file path, should \u003c= 128", + "message": "invalid reload file path, should \u003c= 128", + "translation": "重新加载文件路径无效, 应该 \u003c= 128" + }, + { + "id": "reload file path is not the absolute path", + "message": "reload file path is not the absolute path", + "translation": "重新加载文件路径不是绝对路径" + }, + { + "id": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "message": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "translation": "{SideWorkspaceDir} 子路径为系统保留路径, 不允许使用", + "placeholders": [ + { + "id": "SideWorkspaceDir", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "constant.SideWorkspaceDir" + } + ] + }, + { + "id": "memo is required, can not be empty", + "message": "memo is required, can not be empty", + "translation": "描述为必填项, 不能为空" + }, + { + "id": "invalid memo, length should \u003c= 200", + "message": "invalid memo, length should \u003c= 200", + "translation": "描述无效, 长度应为 \u003c= 200" + }, + { + "id": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "message": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "translation": "资源名称“{LowerName}”以“{Prefix}”为前缀, 是保留名称, 不允许使用", + "placeholders": [ + { + "id": "LowerName", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "lowerName" + }, + { + "id": "Prefix", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "prefix" + } + ] + }, + { + "id": "invalid name, length should \u003e= 1", + "message": "invalid name, length should \u003e= 1", + "translation": "名称无效, 长度应为 \u003e= 1" + }, + { + "id": "invalid name, length should \u003c= 128", + "message": "invalid name, length should \u003c= 128", + "translation": "无效名称, 长度应该\u003c=128" + }, + { + "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "translation": "无效名称:{Name}, 只允许包含英文、数字、下划线(_)、连字符(-), 且必须以英文、数字开头和结尾", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ] + }, + { + "id": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "message": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "translation": "无效名称, 长度应该\u003e=9且必须以bk_bscp_前缀开头(忽略大小写)" + }, + { + "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "translation": "无效名称:{Name}, 只允许英文、数字、下划线(_), 且必须以bk_bscp_前缀开头(忽略大小写)", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ] + }, + { + "id": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "message": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "translation": "无效名称:{Name}, 只允许包含中文、英文、数字、下划线(_)、连字符(-), 且必须以中文、英文或数字开头和结尾", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ] + }, + { + "id": "invalid name, length should \u003c= 64", + "message": "invalid name, length should \u003c= 64", + "translation": "名称无效, 长度应为 \u003c= 64" + }, + { + "id": "invalid name {Name}, name cannot all be '.'", + "message": "invalid name {Name}, name cannot all be '.'", + "translation": "名称 {Name} 无效, 名称不能全部为“.”", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ] + }, + { + "id": "invalid namespace, length should \u003e= 1", + "message": "invalid namespace, length should \u003e= 1", + "translation": "命名空间无效, 长度应为 \u003e= 1" + }, + { + "id": "invalid namespace, length should \u003c= 128", + "message": "invalid namespace, length should \u003c= 128", + "translation": "命名空间无效, 长度应为 \u003c= 128" + }, + { + "id": "invalid username, length should \u003e= 1", + "message": "invalid username, length should \u003e= 1", + "translation": "用户名无效, 长度应为 \u003e= 1" + }, + { + "id": "invalid username, length should \u003c= 32", + "message": "invalid username, length should \u003c= 32", + "translation": "用户名无效, 长度应为 \u003c= 32" + }, + { + "id": "app is nil", + "message": "app is nil", + "translation": "服务为空" + }, + { + "id": "create data failed, err: {Err}", + "message": "create data failed, err: {Err}", + "translation": "创建失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "create app failed, err: {Err}", + "message": "create app failed, err: {Err}", + "translation": "创建服务失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "update app failed, err: {Err}", + "message": "update app failed, err: {Err}", + "translation": "更新服务失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "count app {AppID}'s config items failed, err: {Err}", + "message": "count app {AppID}'s config items failed, err: {Err}", + "translation": "统计服务 {AppID} 的配置项失败, err: {Err}", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] + }, + { + "id": "get app {AppID}'s template binding failed, err: {Err}", + "message": "get app {AppID}'s template binding failed, err: {Err}", + "translation": "获取服务 {AppID} 的模板绑定失败, err: {Err}", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] + }, + { + "id": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "message": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translation": "服务 {AppID} 的配置项总数(包括模板和非模板)超出限制 {AppConfigCnt}", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "AppConfigCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "appConfigCnt" + } + ] + }, + { + "id": "hook is nil", + "message": "hook is nil", + "translation": "脚本不存在" + }, + { + "id": "Unnamed Version", + "message": "Unnamed Version", + "translation": "未命名版本" + }, + { + "id": "appID can not be 0", + "message": "appID can not be 0", + "translation": "appID不能为0" + }, + { + "id": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "message": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "translation": "模板套餐 {TmplSetID}'s 超过单套餐最大配置文件数量限制 {TmplSetTmplCnt}", + "placeholders": [ + { + "id": "TmplSetID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "tmplSetID" + }, + { + "id": "TmplSetTmplCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "tmplSetTmplCnt" + } + ] + }, + { + "id": "validate templates exist failed, err: {Err}", + "message": "validate templates exist failed, err: {Err}", + "translation": "验证模板是否存在失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template space id in {DiffIDs} is not exist", + "message": "template space id in {DiffIDs} is not exist", + "translation": "{DiffIDs} 中的模板空间 ID 不存在", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ] + }, + { + "id": "template id in {DiffIDs} is not exist", + "message": "template id in {DiffIDs} is not exist", + "translation": "{DiffIDs} 中的模板 ID 不存在", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ] + }, + { + "id": "validate template releases exist failed, err: {Err}", + "message": "validate template releases exist failed, err: {Err}", + "translation": "验证模板版本是否存在失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template revision id in {DiffIDs} is not exist", + "message": "template revision id in {DiffIDs} is not exist", + "translation": "{DiffIDs} 中的模板版本 ID 不存在", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ] + }, + { + "id": "validate template sets exist failed, err: {Err}", + "message": "validate template sets exist failed, err: {Err}", + "translation": "验证模板套餐是否存在失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template set id in {DiffIDs} is not exist", + "message": "template set id in {DiffIDs} is not exist", + "translation": "{DiffIDs} 中的模板套餐 ID 不存在", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ] + }, + { + "id": "template {Id} is not exist", + "message": "template {Id} is not exist", + "translation": "模板 {Id} 不存在", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ] + }, + { + "id": "get template failed, err: {Err}", + "message": "get template failed, err: {Err}", + "translation": "获取模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template release {Id} is not exist", + "message": "template release {Id} is not exist", + "translation": "模板版本 {Id} 不存在", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ] + }, + { + "id": "get template release failed, err: {Err}", + "message": "get template release failed, err: {Err}", + "translation": "获取模板版本失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] }, { - "id": "revision not set", - "message": "revision not set", - "translation": "revision没有被设置" + "id": "template set {Id} is not exist", + "message": "template set {Id} is not exist", + "translation": "模板套餐 {Id} 不存在", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ] }, { - "id": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", - "message": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", - "translation": "无效名称,长度应该\u003e=9且必须以bk_bscp_前缀开头(忽略大小写)" + "id": "get template set count failed, err: {Err}", + "message": "get template set count failed, err: {Err}", + "translation": "统计模板套餐数量失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] }, { - "id": "invalid name, length should \u003c= 128", - "message": "invalid name, length should \u003c= 128", - "translation": "无效名称,长度应该\u003c=128" + "id": "there are template sets under the template space, need to delete them first", + "message": "there are template sets under the template space, need to delete them first", + "translation": "模板空间下有模板套餐, 需要先删除" }, { - "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", - "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", - "translation": "无效名称:{Name},只允许英文、数字、下划线(_),且必须以bk_bscp_前缀开头(忽略大小写)", + "id": "get template count failed, err: {Err}", + "message": "get template count failed, err: {Err}", + "translation": "获取模板数量失败, err: {Err}", "placeholders": [ { - "id": "Name", + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "there are templates under the template space, need to delete them first", + "message": "there are templates under the template space, need to delete them first", + "translation": "模板空间下有模板, 需要先删除" + }, + { + "id": "validate templates in a template set failed, err: {Err}", + "message": "validate templates in a template set failed, err: {Err}", + "translation": "验证模板套餐中的模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", + "message": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", + "translation": "{DiffIDs} 中的模板 ID 不属于模板套餐 ID {TemplateSetID}", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + }, + { + "id": "TemplateSetID", + "string": "%[2]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 2, + "expr": "templateSetID" + } + ] + }, + { + "id": "id can not be set", + "message": "id can not be set", + "translation": "ID 不能为空" + }, + { + "id": "invalid biz id", + "message": "invalid biz id", + "translation": "无法验证业务ID" + }, + { + "id": "invalid spec, is nil", + "message": "invalid spec, is nil", + "translation": "参数为空" + }, + { + "id": "app spec is nil", + "message": "app spec is nil", + "translation": "服务参数为空" + }, + { + "id": "unknown config type: {ConfigType}", + "message": "unknown config type: {ConfigType}", + "translation": "未知的配置类型:{ConfigType}", + "placeholders": [ + { + "id": "ConfigType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.ConfigType", + "underlyingType": "string", + "argNum": 1, + "expr": "as.ConfigType" + } + ] + }, + { + "id": "app's type can not be updated", + "message": "app's type can not be updated", + "translation": "服务类型不能编辑" + }, + { + "id": "not support table config type for now", + "message": "not support table config type for now", + "translation": "暂不支持表配置类型" + }, + { + "id": "unsupported config type: {ConfigType}", + "message": "unsupported config type: {ConfigType}", + "translation": "不支持的配置类型:{ConfigType}", + "placeholders": [ + { + "id": "ConfigType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.ConfigType", + "underlyingType": "string", + "argNum": 1, + "expr": "c" + } + ] + }, + { + "id": "unsupported app reload type: {AppReloadType}", + "message": "unsupported app reload type: {AppReloadType}", + "translation": "不支持的服务类型:{AppReloadType}", + "placeholders": [ + { + "id": "AppReloadType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.AppReloadType", + "underlyingType": "string", + "argNum": 1, + "expr": "rt" + } + ] + }, + { + "id": "invalid data-type", + "message": "invalid data-type", + "translation": "无法验证数据类型" + }, + { + "id": "spec should be set", + "message": "spec should be set", + "translation": "参数为空" + }, + { + "id": "invalid commit spec's content id", + "message": "invalid commit spec's content id", + "translation": "无法验证参数" + }, + { + "id": "commit spec's content is empty", + "message": "commit spec's content is empty", + "translation": "参数为空" + }, + { + "id": "verify Windows file paths failed, path: {Path}, err: {Err}", + "message": "verify Windows file paths failed, path: {Path}, err: {Err}", + "translation": "验证 Windows 文件路径失败, path: {Path}, err: {Err}", + "placeholders": [ + { + "id": "Path", "string": "%[1]s", "type": "string", "underlyingType": "string", "argNum": 1, - "expr": "name" + "expr": "path" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" } ] }, { - "id": "hook is nil", - "message": "hook is nil", - "translation": "脚本不存在" + "id": "verify Unix file paths failed, path: {Path}, err: {Err}", + "message": "verify Unix file paths failed, path: {Path}, err: {Err}", + "translation": "验证 Unix 文件路径失败, path: {Path}, err: {Err}", + "placeholders": [ + { + "id": "Path", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] }, { - "id": "Unnamed Version", - "message": "Unnamed Version", - "translation": "未命名版本" + "id": "unsupported file format: {FileFormat}", + "message": "unsupported file format: {FileFormat}", + "translation": "不支持的文件格式:{FileFormat}", + "placeholders": [ + { + "id": "FileFormat", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.FileFormat", + "underlyingType": "string", + "argNum": 1, + "expr": "f" + } + ] + }, + { + "id": "unsupported file mode: {FileMode}", + "message": "unsupported file mode: {FileMode}", + "translation": "不支持的文件模式:{FileMode}", + "placeholders": [ + { + "id": "FileMode", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.FileMode", + "underlyingType": "string", + "argNum": 1, + "expr": "f" + } + ] + }, + { + "id": "content id can not set", + "message": "content id can not set", + "translation": "参数为空" + }, + { + "id": "invalid content signature, should be config's sha256 value", + "message": "invalid content signature, should be config's sha256 value", + "translation": "内容签名无效, 应为配置的 sha256 值" + }, + { + "id": "content signature should be lowercase", + "message": "content signature should be lowercase", + "translation": "内容签名应小写" + }, + { + "id": "invalid origin content signature, should be config's sha256 value", + "message": "invalid origin content signature, should be config's sha256 value", + "translation": "无效的原始内容签名, 应为配置的 sha256 值" + }, + { + "id": "origin content signature should be lowercase", + "message": "origin content signature should be lowercase", + "translation": "原始内容签名应小写" + }, + { + "id": "invalid app id", + "message": "invalid app id", + "translation": "无效的服务ID" + }, + { + "id": "invalid config item id", + "message": "invalid config item id", + "translation": "无效的配置项ID" }, { "id": "default_val {DefaultVal} is not a number type", @@ -662,6 +2044,94 @@ "expr": "t" } ] + }, + { + "id": "get 'kv_type' as a string \n\t\tfrom kv.Data failed, err: {Err}", + "message": "get 'kv_type' as a string \n\t\tfrom kv.Data failed, err: {Err}", + "translation": "从 kv.Data 获取“kv_type”作为字符串失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "value type assertion failed, err: {Err}", + "message": "value type assertion failed, err: {Err}", + "translation": "值类型断言失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "authorize failed", + "message": "authorize failed", + "translation": "授权失败" + }, + { + "id": "get permission to apply failed, err: {Err}", + "message": "get permission to apply failed, err: {Err}", + "translation": "获取权限失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "grpc status with details failed, err: {Err}", + "message": "grpc status with details failed, err: {Err}", + "translation": "grpc 状态详细信息失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "{Path2} and {Path1} path file conflict", + "message": "{Path2} and {Path1} path file conflict", + "translation": "{Path2} 与 {Path1} 路径文件冲突", + "placeholders": [ + { + "id": "Path2", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path2" + }, + { + "id": "Path1", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "path1" + } + ] } ] } \ No newline at end of file diff --git a/bcs-services/bcs-bscp/pkg/i18n/translations/locales/zh/out.gotext.json b/bcs-services/bcs-bscp/pkg/i18n/translations/locales/zh/out.gotext.json index 5002e0b2c3..9c6e9f4a46 100644 --- a/bcs-services/bcs-bscp/pkg/i18n/translations/locales/zh/out.gotext.json +++ b/bcs-services/bcs-bscp/pkg/i18n/translations/locales/zh/out.gotext.json @@ -7,13 +7,13 @@ "translation": "id不能为空" }, { - "id": "read file failed {ErrR}", - "message": "read file failed {ErrR}", - "translation": "读取文件失败: {ErrR}", + "id": "read file failed, err: {ErrR}", + "message": "read file failed, err: {ErrR}", + "translation": "读取文件失败, err: {ErrR}", "placeholders": [ { "id": "ErrR", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -22,13 +22,13 @@ ] }, { - "id": "create directory failed {Err}", - "message": "create directory failed {Err}", - "translation": "创建文件目录失败: {Err}", + "id": "create directory failed, err: {Err}", + "message": "create directory failed, err: {Err}", + "translation": "创建目录失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -37,13 +37,13 @@ ] }, { - "id": "create temporary directory failed {Err}", - "message": "create temporary directory failed {Err}", - "translation": "创建临时目录失败: {Err}", + "id": "create temporary directory failed, err: {Err}", + "message": "create temporary directory failed, err: {Err}", + "translation": "创建临时目录失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -54,7 +54,7 @@ { "id": "decompress the file. The size of file {Message} exceeds the maximum limit of {MB}", "message": "decompress the file. The size of file {Message} exceeds the maximum limit of {MB}", - "translation": "解压文件失败,文件 {Message} 的大小超过了最大限制阈值 {MB}", + "translation": "解压文件失败, 文件 {Message} 的大小超过了最大限制阈值 {MB}", "placeholders": [ { "id": "Message", @@ -75,13 +75,13 @@ ] }, { - "id": "decompression failed {Err}", - "message": "decompression failed {Err}", - "translation": "解压文件失败:{Err}", + "id": "decompression failed, err: {Err}", + "message": "decompression failed, err: {Err}", + "translation": "解压失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -90,13 +90,13 @@ ] }, { - "id": "upload file failed {Err}", - "message": "upload file failed {Err}", - "translation": "上传文件失败:{Err}", + "id": "upload file failed, err: {Err}", + "message": "upload file failed, err: {Err}", + "translation": "上传文件失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -105,13 +105,13 @@ ] }, { - "id": "detecting file conflicts failed {Err}", - "message": "detecting file conflicts failed {Err}", - "translation": "检测文件冲突失败: {Err}", + "id": "list template config failed, err: {Err}", + "message": "list template config failed, err: {Err}", + "translation": "获取模板配置失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -139,10 +139,40 @@ } ] }, + { + "id": "list config item failed, err: {Err}", + "message": "list config item failed, err: {Err}", + "translation": "获取配置项失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get the current number of service config items failed, err: {Err}", + "message": "get the current number of service config items failed, err: {Err}", + "translation": "", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, { "id": "decompress file failed, exceeding the maximum file limit threshold of {Limit}", "message": "decompress file failed, exceeding the maximum file limit threshold of {Limit}", - "translation": "解压文件失败,超过了文件数量最大限制阈值 {Limit}", + "translation": "解压文件失败, 超过了文件数量最大限制阈值 {Limit}", "placeholders": [ { "id": "Limit", @@ -157,7 +187,7 @@ { "id": "upload failed, please make sure the file size does not exceed {BytesToHumanReadableuint64maxSize}", "message": "upload failed, please make sure the file size does not exceed {BytesToHumanReadableuint64maxSize}", - "translation": "上传失败,请确保文件大小不超过 {BytesToHumanReadableuint64maxSize}", + "translation": "上传失败, 请确保文件大小不超过 {BytesToHumanReadableuint64maxSize}", "placeholders": [ { "id": "BytesToHumanReadableuint64maxSize", @@ -169,6 +199,21 @@ } ] }, + { + "id": "list templates failed, err: {Err}", + "message": "list templates failed, err: {Err}", + "translation": "获取模板数据失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, { "id": "client ids is empty", "message": "client ids is empty", @@ -251,48 +296,43 @@ ] }, { - "id": "app {AppId} not found", - "message": "app {AppId} not found", - "translation": "ID为{AppId}的服务不存在", + "id": "app name {Name} already exists", + "message": "app name {Name} already exists", + "translation": "服务名称 {Name} 已存在", "placeholders": [ { - "id": "AppId", - "string": "%[1]d", - "type": "uint32", - "underlyingType": "uint32", + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "req.AppId" + "expr": "req.Spec.Name" } ] }, { - "id": "obtain the number of configuration items", - "message": "obtain the number of configuration items", - "translation": "获取配置项数量" - }, - { - "id": "get template binding relationships through business and service IDs failed, err: {Err}", - "message": "get template binding relationships through business and service IDs failed, err: {Err}", - "translation": "通过业务和服务ID获取模板绑定关系失败,err: {Err}", + "id": "app alias {Alias} already exists", + "message": "app alias {Alias} already exists", + "translation": "服务别名 {Alias} 已存在", "placeholders": [ { - "id": "Err", + "id": "Alias", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "req.Spec.Alias" } ] }, { - "id": "get reference template set under this app failed, err: {Err}", - "message": "get reference template set under this app failed, err: {Err}", - "translation": "获取此应用程序下的引用模板集失败,err: {Err}", + "id": "get app failed, err: {Err}", + "message": "get app failed, err: {Err}", + "translation": "获取服务失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -301,13 +341,18 @@ ] }, { - "id": "list template sets by template set ids failed, err: {Err}", - "message": "list template sets by template set ids failed, err: {Err}", - "translation": "按模板集ID列出模板集失败,err: {Err}", + "id": "the specified type does not match the actual configuration", + "message": "the specified type does not match the actual configuration", + "translation": "指定的类型与实际配置不匹配" + }, + { + "id": "delete app related resources failed, err: {Err}", + "message": "delete app related resources failed, err: {Err}", + "translation": "删除服务相关资源失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -316,13 +361,13 @@ ] }, { - "id": "remove the template set bound to the app failed, err: {Err}", - "message": "remove the template set bound to the app failed, err: {Err}", - "translation": "移除套餐失败,err: {Err}", + "id": "delete app failed, err: {Err}", + "message": "delete app failed, err: {Err}", + "translation": "删除服务失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -331,28 +376,28 @@ ] }, { - "id": "hook name {Name} already exists", - "message": "hook name {Name} already exists", - "translation": "脚本名称 {Name} 已存在", + "id": "app {AppId} not found", + "message": "app {AppId} not found", + "translation": "ID为{AppId}的服务不存在", "placeholders": [ { - "id": "Name", - "string": "%[1]s", - "type": "string", - "underlyingType": "string", + "id": "AppId", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", "argNum": 1, - "expr": "req.Spec.Name" + "expr": "req.AppId" } ] }, { - "id": "get excluded hook failed, err: {Err}", - "message": "get excluded hook failed, err: {Err}", - "translation": "获取排除后的脚本失败,err: {Err}", + "id": "business query failed, err: {Err}", + "message": "business query failed, err: {Err}", + "translation": "业务查询失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -361,43 +406,43 @@ ] }, { - "id": "retrieve the referenced script failed, err: {Err}", - "message": "retrieve the referenced script failed, err: {Err}", - "translation": "检索引用的脚本失败,err: {Err}", + "id": "app related biz {BizID} is not exist", + "message": "app related biz {BizID} is not exist", + "translation": "服务相关的业务 {BizID} 不存在", "placeholders": [ { - "id": "Err", - "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "id": "BizID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", "argNum": 1, - "expr": "err" + "expr": "bizID" } ] }, { - "id": "get excluded kv failed, err: {Err}", - "message": "get excluded kv failed, err: {Err}", - "translation": "获取排除后的kv失败,err: {Err}", + "id": "the config file {Joindir_name} already exists in this space and cannot be created again", + "message": "the config file {Joindir_name} already exists in this space and cannot be created again", + "translation": "此空间下配置文件 {Joindir_name} 已存在,无法重复创建", "placeholders": [ { - "id": "Err", + "id": "Joindir_name", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "path.Join(dir, name)" } ] }, { - "id": "get app template bindings by template set ids, err: {Err}", - "message": "get app template bindings by template set ids, err: {Err}", - "translation": "按模板集ID获取应用程序模板绑定,err: {Err}", + "id": "list template sets by template set ids failed, err: {Err}", + "message": "list template sets by template set ids failed, err: {Err}", + "translation": "按模板套餐ID列出模板套餐失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -406,13 +451,13 @@ ] }, { - "id": "batch update app template binding's failed, err: {Err}", - "message": "batch update app template binding's failed, err: {Err}", - "translation": "批量更新应用模板绑定失败,err: {Err}", + "id": "update app template binding failed, err: {Err}", + "message": "update app template binding failed, err: {Err}", + "translation": "更新服务模板绑定失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -421,13 +466,13 @@ ] }, { - "id": "batch add templates to template sets failed, err: {Err}", - "message": "batch add templates to template sets failed, err: {Err}", - "translation": "模板集批量添加模板失败,err: {Err}", + "id": "list template spaces failed, err: {Err}", + "message": "list template spaces failed, err: {Err}", + "translation": "列出模板空间失败, err: {Err}", "placeholders": [ { "id": "Err", - "string": "%[1]s", + "string": "%[1]v", "type": "error", "underlyingType": "interface{Error() string}", "argNum": 1, @@ -436,29 +481,39 @@ ] }, { - "id": "get template set data failed, err: {Err}", - "message": "get template set data failed, err: {Err}", - "translation": "获取模板集数据失败,err: {Err}", + "id": "template space {V} not found", + "message": "template space {V} not found", + "translation": "模板空间 {V} 不存在", "placeholders": [ { - "id": "Err", + "id": "V", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "v" } ] }, { - "id": "there is no template file under this template set", - "message": "there is no template file under this template set", - "translation": "此模板集下没有模板文件" + "id": "template set {V} not found", + "message": "template set {V} not found", + "translation": "模板套餐 {V} 不存在", + "placeholders": [ + { + "id": "V", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "v" + } + ] }, { - "id": "delete template from template sets failed, err: {Err}, rid: {Rid}", - "message": "delete template from template sets failed, err: {Err}, rid: {Rid}", - "translation": "从模板集中删除模板失败,err: {Err}, rid: {Rid}", + "id": "list templates of template set failed, err: {Err}", + "message": "list templates of template set failed, err: {Err}", + "translation": "获取模板套餐下的模板失败, err: {Err}", "placeholders": [ { "id": "Err", @@ -467,21 +522,36 @@ "underlyingType": "interface{Error() string}", "argNum": 1, "expr": "err" + } + ] + }, + { + "id": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "message": "the template file {ValidatedTemplateSetNamessId} in the template set \n\t\t\t\t{TemplateNamesv} has been removed. Please import the set again", + "translation": "模板套餐 {TemplateNamesv} 中的模板文件 {ValidatedTemplateSetNamessId} 被移除, 请重新导入套餐", + "placeholders": [ + { + "id": "ValidatedTemplateSetNamessId", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "validatedTemplateSetNames[sId]" }, { - "id": "Rid", + "id": "TemplateNamesv", "string": "%[2]s", "type": "string", "underlyingType": "string", "argNum": 2, - "expr": "kt.Rid" + "expr": "templateNames[v]" } ] }, { - "id": "list templates by tuple failed, err: {Err}", - "message": "list templates by tuple failed, err: {Err}", - "translation": "列出模板失败,err: {Err}", + "id": "list template revisions failed, err: {Err}", + "message": "list template revisions failed, err: {Err}", + "translation": "获取模板版本失败, err: {Err}", "placeholders": [ { "id": "Err", @@ -494,39 +564,55 @@ ] }, { - "id": "list app template bindings by app ids failed, err: {Err}", - "message": "list app template bindings by app ids failed, err: {Err}", - "translation": "按服务ID列出应用模板绑定失败,err: {Err}", + "id": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", + "message": "template version {RevisionNamesv} in template file {TemplateNamestId} \n\t\t\t\thas been removed. Please import the set again", + "translation": "模板文件 {TemplateNamestId} 中的模板版本 {RevisionNamesv} 被移除, 请重新导入套餐", "placeholders": [ { - "id": "Err", + "id": "RevisionNamesv", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "revisionNames[v]" + }, + { + "id": "TemplateNamestId", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "templateNames[tId]" } ] }, { - "id": "get template set failed, err: {Err}", - "message": "get template set failed, err: {Err}", - "translation": "获取模板集失败,err: {Err}", + "id": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", + "message": "the version number {TemplateID} in the template file {ID} is not the \n\t\tlatest version. Please import the set again", + "translation": "模板文件 {ID} 中的版本号 {TemplateID} 不是最新版本, 请重新导入套餐", "placeholders": [ { - "id": "Err", + "id": "TemplateID", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "templateNames[v.Attachment.TemplateID]" + }, + { + "id": "ID", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "revisionNames[v.ID]" } ] }, { - "id": "list apps by app ids failed, err: {Err}", - "message": "list apps by app ids failed, err: {Err}", - "translation": "按服务ID列出应用程序失败,err: {Err}", + "id": "count the number of service configurations failed, err: {Err}", + "message": "count the number of service configurations failed, err: {Err}", + "translation": "统计服务配置数量失败, err: {Err}", "placeholders": [ { "id": "Err", @@ -539,24 +625,24 @@ ] }, { - "id": "count the number of app configs failed, err: {Err}", - "message": "count the number of app configs failed, err: {Err}", - "translation": "统计服务配置数量失败,err: {Err}", + "id": "app {Name} is not file type", + "message": "app {Name} is not file type", + "translation": "该服务 {Name} 不是文件类型", "placeholders": [ { - "id": "Err", + "id": "Name", "string": "%[1]s", - "type": "error", - "underlyingType": "interface{Error() string}", + "type": "string", + "underlyingType": "string", "argNum": 1, - "expr": "err" + "expr": "app.Spec.Name" } ] }, { - "id": "same template variable name {Name} already exists", - "message": "same template variable name {Name} already exists", - "translation": "同名的模版变量名称{Name}已存在", + "id": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "message": "the total number of app {Name} config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translation": "服务 {Name} 的配置项总数(包括模板和非模板)超过单服务最大配置文件数量限制 {AppConfigCnt}", "placeholders": [ { "id": "Name", @@ -564,24 +650,531 @@ "type": "string", "underlyingType": "string", "argNum": 1, - "expr": "req.Spec.Name" + "expr": "app.Spec.Name" + }, + { + "id": "AppConfigCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "appConfigCnt" } ] }, { - "id": "db operation failed", - "message": "db operation failed", - "translation": "db操作失败" + "id": "the config file {Name} under this service already exists and cannot be created again", + "message": "the config file {Name} under this service already exists and cannot be created again", + "translation": "此服务下的配置文件 {Name} 已存在, 无法重复创建", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path.Join(req.ConfigItemSpec.Path, req.ConfigItemSpec.Name)" + } + ] }, { - "id": "invalid argument", - "message": "invalid argument", - "translation": "无效参数" + "id": "delete one app template binding instance by app id failed, err: {Err}", + "message": "delete one app template binding instance by app id failed, err: {Err}", + "translation": "移除服务模板套餐失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] }, { - "id": "id should not be set", - "message": "id should not be set", - "translation": "id不应该被设置" + "id": "batch create contents failed, err: {Error}", + "message": "batch create contents failed, err: {Error}", + "translation": "批量创建内容失败, err: {Error}", + "placeholders": [ + { + "id": "Error", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "e" + } + ] + }, + { + "id": "delete one app template variable failed, err: {Error}", + "message": "delete one app template variable failed, err: {Error}", + "translation": "删除模板变量失败, err: {Error}", + "placeholders": [ + { + "id": "Error", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "e" + } + ] + }, + { + "id": "obtain the number of configuration items", + "message": "obtain the number of configuration items", + "translation": "获取配置项数量" + }, + { + "id": "get template binding relationships through business and service IDs failed, err: {Err}", + "message": "get template binding relationships through business and service IDs failed, err: {Err}", + "translation": "通过业务和服务ID获取模板绑定关系失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get reference template set under this app failed, err: {Err}", + "message": "get reference template set under this app failed, err: {Err}", + "translation": "获取该服务下的引用模板集失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "remove the template set bound to the app failed, err: {Err}", + "message": "remove the template set bound to the app failed, err: {Err}", + "translation": "移除套餐失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "hook name {Name} already exists", + "message": "hook name {Name} already exists", + "translation": "脚本名称 {Name} 已存在", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Name" + } + ] + }, + { + "id": "get excluded hook failed, err: {Err}", + "message": "get excluded hook failed, err: {Err}", + "translation": "获取排除后的脚本失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "retrieve the referenced script failed, err: {Err}", + "message": "retrieve the referenced script failed, err: {Err}", + "translation": "检索引用的脚本失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get kv ({Key}) failed, err: {Err}", + "message": "get kv ({Key}) failed, err: {Err}", + "translation": "获取 kv ({Key}) 失败, err: {Err}", + "placeholders": [ + { + "id": "Key", + "string": "%[1]d", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] + }, + { + "id": "the config item {Key} under this service already exists and cannot be created again", + "message": "the config item {Key} under this service already exists and cannot be created again", + "translation": "该服务下的配置项{Key}已存在, 无法重复创建", + "placeholders": [ + { + "id": "Key", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + } + ] + }, + { + "id": "get app fail, key: {Key}, err: {Err}", + "message": "get app fail, key: {Key}, err: {Err}", + "translation": "获取服务失败, key: {Key}, err: {Err}", + "placeholders": [ + { + "id": "Key", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Key" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] + }, + { + "id": "kv type does not match the data type defined in the application", + "message": "kv type does not match the data type defined in the application", + "translation": "kv 类型与服务类型中定义的数据类型不匹配" + }, + { + "id": "create kv failed, err: {Err}", + "message": "create kv failed, err: {Err}", + "translation": "创建kv失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "update kv failed, err: {Err}", + "message": "update kv failed, err: {Err}", + "translation": "更新kv失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get excluded kv failed, err: {Err}", + "message": "get excluded kv failed, err: {Err}", + "translation": "获取排除后的kv失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get app template bindings by template set ids, err: {Err}", + "message": "get app template bindings by template set ids, err: {Err}", + "translation": "按模板集ID获取应用程序模板绑定, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "batch update app template binding's failed, err: {Err}", + "message": "batch update app template binding's failed, err: {Err}", + "translation": "批量更新应用模板绑定失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "batch add templates to template sets failed, err: {Err}", + "message": "batch add templates to template sets failed, err: {Err}", + "translation": "模板集批量添加模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get template set data failed, err: {Err}", + "message": "get template set data failed, err: {Err}", + "translation": "获取模板集数据失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "there is no template file under this template set", + "message": "there is no template file under this template set", + "translation": "此模板集下没有模板文件" + }, + { + "id": "delete template from template sets failed, err: {Err}", + "message": "delete template from template sets failed, err: {Err}", + "translation": "从模板套餐中删除模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "list templates by tuple failed, err: {Err}", + "message": "list templates by tuple failed, err: {Err}", + "translation": "列出模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "list app template bindings by app ids failed, err: {Err}", + "message": "list app template bindings by app ids failed, err: {Err}", + "translation": "按服务ID列出应用模板绑定失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "get template set failed, err: {Err}", + "message": "get template set failed, err: {Err}", + "translation": "获取模板集失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "message": "the total number of template set {Name} templates exceeded the limit {TmplSetTmplCnt}", + "translation": "模板套餐 {Name} 超过单套餐最大配置文件数量限制 {TmplSetTmplCnt}", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "v.Spec.Name" + }, + { + "id": "TmplSetTmplCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "tmplSetTmplCnt" + } + ] + }, + { + "id": "list apps by app ids failed, err: {Err}", + "message": "list apps by app ids failed, err: {Err}", + "translation": "按服务ID列出服务失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "count the number of app configs failed, err: {Err}", + "message": "count the number of app configs failed, err: {Err}", + "translation": "统计服务配置数量失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template set data is empty", + "message": "template set data is empty", + "translation": "模板套餐数据为空" + }, + { + "id": "list templates data failed, err: {Err}", + "message": "list templates data failed, err: {Err}", + "translation": "列出模板数据失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template data is empty", + "message": "template data is empty", + "translation": "模板数据为空" + }, + { + "id": "list templates revisions data failed, err: {Err}", + "message": "list templates revisions data failed, err: {Err}", + "translation": "列出模板版本数据失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "same template variable name {Name} already exists", + "message": "same template variable name {Name} already exists", + "translation": "同名的模版变量名称{Name}已存在", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "req.Spec.Name" + } + ] + }, + { + "id": "db operation failed", + "message": "db operation failed", + "translation": "db操作失败" + }, + { + "id": "invalid argument", + "message": "invalid argument", + "translation": "无效参数" + }, + { + "id": "id should not be set", + "message": "id should not be set", + "translation": "id不应该被设置" }, { "id": "spec not set", @@ -589,49 +1182,838 @@ "translation": "spec没有被设置" }, { - "id": "attachment not set", - "message": "attachment not set", - "translation": "attachment没有被设置" + "id": "attachment not set", + "message": "attachment not set", + "translation": "attachment没有被设置" + }, + { + "id": "revision not set", + "message": "revision not set", + "translation": "revision没有被设置" + }, + { + "id": "invalid path, length should \u003e= 1", + "message": "invalid path, length should \u003e= 1", + "translation": "路径无效, 长度应为 \u003e= 1" + }, + { + "id": "invalid path, length should \u003c= 1024", + "message": "invalid path, length should \u003c= 1024", + "translation": "路径无效, 长度应为 \u003c= 1024" + }, + { + "id": "invalid path, should start with '/'", + "message": "invalid path, should start with '/'", + "translation": "路径无效, 应以“/”开头" + }, + { + "id": "invalid path {Part}, path cannot all be '.'", + "message": "invalid path {Part}, path cannot all be '.'", + "translation": "路径 {Part} 无效, 路径不能全部为“.”", + "placeholders": [ + { + "id": "Part", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "part" + } + ] + }, + { + "id": "invalid path, length should \u003c= 256", + "message": "invalid path, length should \u003c= 256", + "translation": "路径无效, 长度应为 \u003c= 256" + }, + { + "id": "invalid path,path does not conform to the win file path format specification", + "message": "invalid path,path does not conform to the win file path format specification", + "translation": "路径无效, 路径不符合win文件路径格式规范" + }, + { + "id": "reload file path is required", + "message": "reload file path is required", + "translation": "需要重新加载文件路径" + }, + { + "id": "invalid reload file path, should \u003c= 128", + "message": "invalid reload file path, should \u003c= 128", + "translation": "重新加载文件路径无效, 应该 \u003c= 128" + }, + { + "id": "reload file path is not the absolute path", + "message": "reload file path is not the absolute path", + "translation": "重新加载文件路径不是绝对路径" + }, + { + "id": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "message": "{SideWorkspaceDir} sub path is system reserved path, do not allow to use", + "translation": "{SideWorkspaceDir} 子路径为系统保留路径, 不允许使用", + "placeholders": [ + { + "id": "SideWorkspaceDir", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "constant.SideWorkspaceDir" + } + ] + }, + { + "id": "memo is required, can not be empty", + "message": "memo is required, can not be empty", + "translation": "描述为必填项, 不能为空" + }, + { + "id": "invalid memo, length should \u003c= 200", + "message": "invalid memo, length should \u003c= 200", + "translation": "描述无效, 长度应为 \u003c= 200" + }, + { + "id": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "message": "resource name '{LowerName}' is prefixed with '{Prefix}' is reserved name, which is not allows to use", + "translation": "资源名称“{LowerName}”以“{Prefix}”为前缀, 是保留名称, 不允许使用", + "placeholders": [ + { + "id": "LowerName", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "lowerName" + }, + { + "id": "Prefix", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "prefix" + } + ] + }, + { + "id": "invalid name, length should \u003e= 1", + "message": "invalid name, length should \u003e= 1", + "translation": "名称无效, 长度应为 \u003e= 1" + }, + { + "id": "invalid name, length should \u003c= 128", + "message": "invalid name, length should \u003c= 128", + "translation": "无效名称, 长度应该\u003c=128" + }, + { + "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_)、hyphen (-), and must start and end with an english、numbers", + "translation": "无效名称:{Name}, 只允许包含英文、数字、下划线(_)、连字符(-), 且必须以英文、数字开头和结尾", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ] + }, + { + "id": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "message": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", + "translation": "无效名称, 长度应该\u003e=9且必须以bk_bscp_前缀开头(忽略大小写)" + }, + { + "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", + "translation": "无效名称:{Name}, 只允许英文、数字、下划线(_), 且必须以bk_bscp_前缀开头(忽略大小写)", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ] + }, + { + "id": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "message": "invalid name: {Name}, only allows to include Chinese, English,numbers, underscore (_),hyphen (-), and must start and end with Chinese, English, or a number", + "translation": "无效名称:{Name}, 只允许包含中文、英文、数字、下划线(_)、连字符(-), 且必须以中文、英文或数字开头和结尾", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ] + }, + { + "id": "invalid name, length should \u003c= 64", + "message": "invalid name, length should \u003c= 64", + "translation": "名称无效, 长度应为 \u003c= 64" + }, + { + "id": "invalid name {Name}, name cannot all be '.'", + "message": "invalid name {Name}, name cannot all be '.'", + "translation": "名称 {Name} 无效, 名称不能全部为“.”", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "name" + } + ] + }, + { + "id": "invalid namespace, length should \u003e= 1", + "message": "invalid namespace, length should \u003e= 1", + "translation": "命名空间无效, 长度应为 \u003e= 1" + }, + { + "id": "invalid namespace, length should \u003c= 128", + "message": "invalid namespace, length should \u003c= 128", + "translation": "命名空间无效, 长度应为 \u003c= 128" + }, + { + "id": "invalid username, length should \u003e= 1", + "message": "invalid username, length should \u003e= 1", + "translation": "用户名无效, 长度应为 \u003e= 1" + }, + { + "id": "invalid username, length should \u003c= 32", + "message": "invalid username, length should \u003c= 32", + "translation": "用户名无效, 长度应为 \u003c= 32" + }, + { + "id": "app is nil", + "message": "app is nil", + "translation": "服务为空" + }, + { + "id": "create data failed, err: {Err}", + "message": "create data failed, err: {Err}", + "translation": "创建失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "create app failed, err: {Err}", + "message": "create app failed, err: {Err}", + "translation": "创建服务失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "update app failed, err: {Err}", + "message": "update app failed, err: {Err}", + "translation": "更新服务失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]s", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "count app {AppID}'s config items failed, err: {Err}", + "message": "count app {AppID}'s config items failed, err: {Err}", + "translation": "统计服务 {AppID} 的配置项失败, err: {Err}", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] + }, + { + "id": "get app {AppID}'s template binding failed, err: {Err}", + "message": "get app {AppID}'s template binding failed, err: {Err}", + "translation": "获取服务 {AppID} 的模板绑定失败, err: {Err}", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] + }, + { + "id": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "message": "the total number of app {AppID}'s config items(including template and non-template)exceeded the limit {AppConfigCnt}", + "translation": "服务 {AppID} 的配置项总数(包括模板和非模板)超出限制 {AppConfigCnt}", + "placeholders": [ + { + "id": "AppID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "appID" + }, + { + "id": "AppConfigCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "appConfigCnt" + } + ] + }, + { + "id": "hook is nil", + "message": "hook is nil", + "translation": "脚本不存在" + }, + { + "id": "Unnamed Version", + "message": "Unnamed Version", + "translation": "未命名版本" + }, + { + "id": "appID can not be 0", + "message": "appID can not be 0", + "translation": "appID不能为0" + }, + { + "id": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "message": "the total number of template set {TmplSetID}'s templates exceeded the limit {TmplSetTmplCnt}", + "translation": "模板套餐 {TmplSetID}'s 超过单套餐最大配置文件数量限制 {TmplSetTmplCnt}", + "placeholders": [ + { + "id": "TmplSetID", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "tmplSetID" + }, + { + "id": "TmplSetTmplCnt", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "tmplSetTmplCnt" + } + ] + }, + { + "id": "validate templates exist failed, err: {Err}", + "message": "validate templates exist failed, err: {Err}", + "translation": "验证模板是否存在失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template space id in {DiffIDs} is not exist", + "message": "template space id in {DiffIDs} is not exist", + "translation": "{DiffIDs} 中的模板空间 ID 不存在", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ] + }, + { + "id": "template id in {DiffIDs} is not exist", + "message": "template id in {DiffIDs} is not exist", + "translation": "{DiffIDs} 中的模板 ID 不存在", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ] + }, + { + "id": "validate template releases exist failed, err: {Err}", + "message": "validate template releases exist failed, err: {Err}", + "translation": "验证模板版本是否存在失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template revision id in {DiffIDs} is not exist", + "message": "template revision id in {DiffIDs} is not exist", + "translation": "{DiffIDs} 中的模板版本 ID 不存在", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ] + }, + { + "id": "validate template sets exist failed, err: {Err}", + "message": "validate template sets exist failed, err: {Err}", + "translation": "验证模板套餐是否存在失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template set id in {DiffIDs} is not exist", + "message": "template set id in {DiffIDs} is not exist", + "translation": "{DiffIDs} 中的模板套餐 ID 不存在", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + } + ] + }, + { + "id": "template {Id} is not exist", + "message": "template {Id} is not exist", + "translation": "模板 {Id} 不存在", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ] + }, + { + "id": "get template failed, err: {Err}", + "message": "get template failed, err: {Err}", + "translation": "获取模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template release {Id} is not exist", + "message": "template release {Id} is not exist", + "translation": "模板版本 {Id} 不存在", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ] + }, + { + "id": "get template release failed, err: {Err}", + "message": "get template release failed, err: {Err}", + "translation": "获取模板版本失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] }, { - "id": "revision not set", - "message": "revision not set", - "translation": "revision没有被设置" + "id": "template set {Id} is not exist", + "message": "template set {Id} is not exist", + "translation": "模板套餐 {Id} 不存在", + "placeholders": [ + { + "id": "Id", + "string": "%[1]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 1, + "expr": "id" + } + ] }, { - "id": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", - "message": "invalid name, length should \u003e= 9 and must start with prefix bk_bscp_ (ignore case)", - "translation": "无效名称,长度应该\u003e=9且必须以bk_bscp_前缀开头(忽略大小写)" + "id": "get template set count failed, err: {Err}", + "message": "get template set count failed, err: {Err}", + "translation": "统计模板套餐数量失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] }, { - "id": "invalid name, length should \u003c= 128", - "message": "invalid name, length should \u003c= 128", - "translation": "无效名称,长度应该\u003c=128" + "id": "there are template sets under the template space, need to delete them first", + "message": "there are template sets under the template space, need to delete them first", + "translation": "模板空间下有模板套餐, 需要先删除" }, { - "id": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", - "message": "invalid name: {Name}, only allows to include english、numbers、underscore (_), and must start with prefix bk_bscp_ (ignore case)", - "translation": "无效名称:{Name},只允许英文、数字、下划线(_),且必须以bk_bscp_前缀开头(忽略大小写)", + "id": "get template count failed, err: {Err}", + "message": "get template count failed, err: {Err}", + "translation": "获取模板数量失败, err: {Err}", "placeholders": [ { - "id": "Name", + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "there are templates under the template space, need to delete them first", + "message": "there are templates under the template space, need to delete them first", + "translation": "模板空间下有模板, 需要先删除" + }, + { + "id": "validate templates in a template set failed, err: {Err}", + "message": "validate templates in a template set failed, err: {Err}", + "translation": "验证模板套餐中的模板失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", + "message": "template id in {DiffIDs} is not belong to template set id {TemplateSetID}", + "translation": "{DiffIDs} 中的模板 ID 不属于模板套餐 ID {TemplateSetID}", + "placeholders": [ + { + "id": "DiffIDs", + "string": "%[1]v", + "type": "[]uint32", + "underlyingType": "[]uint32", + "argNum": 1, + "expr": "diffIDs" + }, + { + "id": "TemplateSetID", + "string": "%[2]d", + "type": "uint32", + "underlyingType": "uint32", + "argNum": 2, + "expr": "templateSetID" + } + ] + }, + { + "id": "id can not be set", + "message": "id can not be set", + "translation": "ID 不能为空" + }, + { + "id": "invalid biz id", + "message": "invalid biz id", + "translation": "无法验证业务ID" + }, + { + "id": "invalid spec, is nil", + "message": "invalid spec, is nil", + "translation": "参数为空" + }, + { + "id": "app spec is nil", + "message": "app spec is nil", + "translation": "服务参数为空" + }, + { + "id": "unknown config type: {ConfigType}", + "message": "unknown config type: {ConfigType}", + "translation": "未知的配置类型:{ConfigType}", + "placeholders": [ + { + "id": "ConfigType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.ConfigType", + "underlyingType": "string", + "argNum": 1, + "expr": "as.ConfigType" + } + ] + }, + { + "id": "app's type can not be updated", + "message": "app's type can not be updated", + "translation": "服务类型不能编辑" + }, + { + "id": "not support table config type for now", + "message": "not support table config type for now", + "translation": "暂不支持表配置类型" + }, + { + "id": "unsupported config type: {ConfigType}", + "message": "unsupported config type: {ConfigType}", + "translation": "不支持的配置类型:{ConfigType}", + "placeholders": [ + { + "id": "ConfigType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.ConfigType", + "underlyingType": "string", + "argNum": 1, + "expr": "c" + } + ] + }, + { + "id": "unsupported app reload type: {AppReloadType}", + "message": "unsupported app reload type: {AppReloadType}", + "translation": "不支持的服务类型:{AppReloadType}", + "placeholders": [ + { + "id": "AppReloadType", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.AppReloadType", + "underlyingType": "string", + "argNum": 1, + "expr": "rt" + } + ] + }, + { + "id": "invalid data-type", + "message": "invalid data-type", + "translation": "无法验证数据类型" + }, + { + "id": "spec should be set", + "message": "spec should be set", + "translation": "参数为空" + }, + { + "id": "invalid commit spec's content id", + "message": "invalid commit spec's content id", + "translation": "无法验证参数" + }, + { + "id": "commit spec's content is empty", + "message": "commit spec's content is empty", + "translation": "参数为空" + }, + { + "id": "verify Windows file paths failed, path: {Path}, err: {Err}", + "message": "verify Windows file paths failed, path: {Path}, err: {Err}", + "translation": "验证 Windows 文件路径失败, path: {Path}, err: {Err}", + "placeholders": [ + { + "id": "Path", "string": "%[1]s", "type": "string", "underlyingType": "string", "argNum": 1, - "expr": "name" + "expr": "path" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" } ] }, { - "id": "hook is nil", - "message": "hook is nil", - "translation": "脚本不存在" + "id": "verify Unix file paths failed, path: {Path}, err: {Err}", + "message": "verify Unix file paths failed, path: {Path}, err: {Err}", + "translation": "验证 Unix 文件路径失败, path: {Path}, err: {Err}", + "placeholders": [ + { + "id": "Path", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path" + }, + { + "id": "Err", + "string": "%[2]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 2, + "expr": "err" + } + ] }, { - "id": "Unnamed Version", - "message": "Unnamed Version", - "translation": "未命名版本" + "id": "unsupported file format: {FileFormat}", + "message": "unsupported file format: {FileFormat}", + "translation": "不支持的文件格式:{FileFormat}", + "placeholders": [ + { + "id": "FileFormat", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.FileFormat", + "underlyingType": "string", + "argNum": 1, + "expr": "f" + } + ] + }, + { + "id": "unsupported file mode: {FileMode}", + "message": "unsupported file mode: {FileMode}", + "translation": "不支持的文件模式:{FileMode}", + "placeholders": [ + { + "id": "FileMode", + "string": "%[1]s", + "type": "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table.FileMode", + "underlyingType": "string", + "argNum": 1, + "expr": "f" + } + ] + }, + { + "id": "content id can not set", + "message": "content id can not set", + "translation": "参数为空" + }, + { + "id": "invalid content signature, should be config's sha256 value", + "message": "invalid content signature, should be config's sha256 value", + "translation": "内容签名无效, 应为配置的 sha256 值" + }, + { + "id": "content signature should be lowercase", + "message": "content signature should be lowercase", + "translation": "内容签名应小写" + }, + { + "id": "invalid origin content signature, should be config's sha256 value", + "message": "invalid origin content signature, should be config's sha256 value", + "translation": "无效的原始内容签名, 应为配置的 sha256 值" + }, + { + "id": "origin content signature should be lowercase", + "message": "origin content signature should be lowercase", + "translation": "原始内容签名应小写" + }, + { + "id": "invalid app id", + "message": "invalid app id", + "translation": "无效的服务ID" + }, + { + "id": "invalid config item id", + "message": "invalid config item id", + "translation": "无效的配置项ID" }, { "id": "default_val {DefaultVal} is not a number type", @@ -662,6 +2044,94 @@ "expr": "t" } ] + }, + { + "id": "get 'kv_type' as a string \n\t\tfrom kv.Data failed, err: {Err}", + "message": "get 'kv_type' as a string \n\t\tfrom kv.Data failed, err: {Err}", + "translation": "从 kv.Data 获取“kv_type”作为字符串失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "value type assertion failed, err: {Err}", + "message": "value type assertion failed, err: {Err}", + "translation": "值类型断言失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "authorize failed", + "message": "authorize failed", + "translation": "授权失败" + }, + { + "id": "get permission to apply failed, err: {Err}", + "message": "get permission to apply failed, err: {Err}", + "translation": "获取权限失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "grpc status with details failed, err: {Err}", + "message": "grpc status with details failed, err: {Err}", + "translation": "grpc 状态详细信息失败, err: {Err}", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "{Path2} and {Path1} path file conflict", + "message": "{Path2} and {Path1} path file conflict", + "translation": "{Path2} 与 {Path1} 路径文件冲突", + "placeholders": [ + { + "id": "Path2", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "path2" + }, + { + "id": "Path1", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "path1" + } + ] } ] } \ No newline at end of file diff --git a/bcs-services/bcs-bscp/pkg/iam/auth/auth.go b/bcs-services/bcs-bscp/pkg/iam/auth/auth.go index 52e54c308e..700a2ae422 100644 --- a/bcs-services/bcs-bscp/pkg/iam/auth/auth.go +++ b/bcs-services/bcs-bscp/pkg/iam/auth/auth.go @@ -30,6 +30,7 @@ import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/cc" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/components/bkpaas" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/errf" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/iam/client" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/iam/meta" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" @@ -196,7 +197,7 @@ func (a authorizer) AuthorizeDecision(kt *kit.Kit, resources ...*meta.ResourceAt func (a authorizer) Authorize(kt *kit.Kit, resources ...*meta.ResourceAttribute) error { _, authorized, err := a.AuthorizeDecision(kt, resources...) if err != nil { - return errf.New(errf.DoAuthorizeFailed, "authorize failed") + return errf.New(errf.DoAuthorizeFailed, i18n.T(kt, "authorize failed")) } if authorized { @@ -210,7 +211,7 @@ func (a authorizer) Authorize(kt *kit.Kit, resources ...*meta.ResourceAttribute) permResp, err := a.authClient.GetPermissionToApply(kt.RpcCtx(), req) if err != nil { logs.Errorf("get permission to apply failed, req: %#v, err: %v, rid: %s", req, err, kt.Rid) - return errf.New(errf.DoAuthorizeFailed, "get permission to apply failed") + return errf.New(errf.DoAuthorizeFailed, i18n.T(kt, "get permission to apply failed, err: %v", err)) } st := status.New(codes.PermissionDenied, "permission denied") @@ -240,7 +241,7 @@ func (a authorizer) Authorize(kt *kit.Kit, resources ...*meta.ResourceAttribute) st, err = st.WithDetails(&details) if err != nil { logs.Errorf("with details failed, err: %v", err) - return errf.New(errf.PermissionDenied, "grpc status with details failed") + return errf.New(errf.PermissionDenied, i18n.T(kt, "grpc status with details failed, err: %v", err)) } return st.Err() } diff --git a/bcs-services/bcs-bscp/pkg/protocol/auth-server/auth_server.pb.go b/bcs-services/bcs-bscp/pkg/protocol/auth-server/auth_server.pb.go index d6ca1a43a4..ec9ee5d0ba 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/auth-server/auth_server.pb.go +++ b/bcs-services/bcs-bscp/pkg/protocol/auth-server/auth_server.pb.go @@ -1896,6 +1896,7 @@ type Space struct { SpaceTypeId string `protobuf:"bytes,3,opt,name=space_type_id,json=spaceTypeId,proto3" json:"space_type_id,omitempty"` SpaceTypeName string `protobuf:"bytes,4,opt,name=space_type_name,json=spaceTypeName,proto3" json:"space_type_name,omitempty"` SpaceUid string `protobuf:"bytes,5,opt,name=space_uid,json=spaceUid,proto3" json:"space_uid,omitempty"` + SpaceEnName string `protobuf:"bytes,6,opt,name=space_en_name,json=spaceEnName,proto3" json:"space_en_name,omitempty"` } func (x *Space) Reset() { @@ -1965,6 +1966,13 @@ func (x *Space) GetSpaceUid() string { return "" } +func (x *Space) GetSpaceEnName() string { + if x != nil { + return x.SpaceEnName + } + return "" +} + type ListUserSpaceResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2515,7 +2523,7 @@ var file_auth_server_proto_rawDesc = []byte{ 0x9f, 0xa5, 0xe8, 0xaf, 0xa2, 0xe7, 0x94, 0xa8, 0xe6, 0x88, 0xb7, 0xe6, 0x9c, 0x89, 0xe6, 0x9d, 0x83, 0xe9, 0x99, 0x90, 0xe7, 0x9a, 0x84, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x2c, 0x20, 0xe5, 0x90, 0xab, 0xe4, 0xb8, 0x9a, 0xe5, 0x8a, 0xa1, 0xe5, 0x92, - 0x8c, 0x42, 0x43, 0x53, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0x22, 0xaa, 0x01, 0x0a, 0x05, 0x53, + 0x8c, 0x42, 0x43, 0x53, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0x22, 0xce, 0x01, 0x0a, 0x05, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, @@ -2526,115 +2534,117 @@ var file_auth_server_proto_rawDesc = []byte{ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x55, 0x69, 0x64, 0x22, 0x36, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x05, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, - 0x61, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, - 0x5e, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x55, 0x69, 0x64, 0x3a, 0x30, 0x92, - 0x41, 0x2d, 0x0a, 0x2b, 0x2a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, - 0x32, 0x1d, 0xe6, 0x9f, 0xa5, 0xe8, 0xaf, 0xa2, 0xe7, 0x94, 0xa8, 0xe6, 0x88, 0xb7, 0x53, 0x70, - 0x61, 0x63, 0x65, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x22, - 0x33, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x21, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x22, 0x63, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, - 0x63, 0x65, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, - 0x70, 0x49, 0x64, 0x3a, 0x34, 0x92, 0x41, 0x31, 0x0a, 0x2f, 0x2a, 0x11, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, 0x44, 0x32, 0x1a, 0xe9, - 0x80, 0x9a, 0xe8, 0xbf, 0x87, 0x20, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x20, 0xe6, 0x9f, 0xa5, - 0xe8, 0xaf, 0xa2, 0x20, 0x53, 0x70, 0x61, 0x63, 0x65, 0x22, 0xe0, 0x02, 0x0a, 0x1d, 0x47, 0x72, - 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x09, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, - 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x2e, 0x41, 0x6e, - 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x73, 0x1a, 0x46, 0x0a, 0x08, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x41, 0x92, 0x41, 0x3e, 0x0a, 0x3c, - 0x2a, 0x1d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x32, - 0x1b, 0xe6, 0x8e, 0x88, 0xe6, 0x9d, 0x83, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, 0x88, 0x9b, - 0xe5, 0xbb, 0xba, 0xe8, 0x80, 0x85, 0xe6, 0x9d, 0x83, 0xe9, 0x99, 0x90, 0x32, 0xc6, 0x07, 0x0a, - 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x6c, 0x0a, 0x0e, 0x49, 0x6e, 0x69, 0x74, 0x41, 0x75, 0x74, - 0x68, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x49, - 0x6e, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, - 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, - 0x75, 0x74, 0x68, 0x2f, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, - 0x61, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, - 0x62, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x16, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, 0x44, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, + 0x70, 0x61, 0x63, 0x65, 0x55, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x65, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x36, 0x0a, 0x11, 0x4c, + 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x21, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x05, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x22, 0x5e, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x61, 0x63, 0x65, 0x55, 0x69, + 0x64, 0x3a, 0x30, 0x92, 0x41, 0x2d, 0x0a, 0x2b, 0x2a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x32, 0x1d, 0xe6, 0x9f, 0xa5, 0xe8, 0xaf, 0xa2, 0xe7, 0x94, 0xa8, 0xe6, + 0x88, 0xb7, 0x53, 0x70, 0x61, 0x63, 0x65, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xe4, 0xbf, 0xa1, + 0xe6, 0x81, 0xaf, 0x22, 0x33, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x21, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x63, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65, 0x71, + 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x3a, 0x34, 0x92, 0x41, 0x31, 0x0a, 0x2f, 0x2a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, - 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x50, 0x75, 0x6c, 0x6c, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x69, 0x61, 0x6d, - 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x74, - 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x62, - 0x61, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, - 0x2a, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, - 0x69, 0x61, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x1a, - 0x18, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x14, 0x47, + 0x44, 0x32, 0x1a, 0xe9, 0x80, 0x9a, 0xe8, 0xbf, 0x87, 0x20, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x20, 0xe6, 0x9f, 0xa5, 0xe8, 0xaf, 0xa2, 0x20, 0x53, 0x70, 0x61, 0x63, 0x65, 0x22, 0xe0, 0x02, + 0x0a, 0x1d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x09, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, + 0x62, 0x61, 0x73, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x2e, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x46, 0x0a, 0x08, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x41, 0x92, + 0x41, 0x3e, 0x0a, 0x3c, 0x2a, 0x1d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x32, 0x1b, 0xe6, 0x8e, 0x88, 0xe6, 0x9d, 0x83, 0xe8, 0xb5, 0x84, 0xe6, 0xba, + 0x90, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe8, 0x80, 0x85, 0xe6, 0x9d, 0x83, 0xe9, 0x99, 0x90, + 0x32, 0xc6, 0x07, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x12, 0x6c, 0x0a, 0x0e, 0x49, 0x6e, 0x69, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x70, 0x62, + 0x61, 0x73, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x49, 0x6e, 0x69, 0x74, + 0x41, 0x75, 0x74, 0x68, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x27, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x69, 0x6e, 0x69, 0x74, 0x2f, 0x61, 0x75, 0x74, + 0x68, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x1a, + 0x12, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x69, + 0x6e, 0x66, 0x6f, 0x12, 0x62, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, + 0x62, 0x61, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x75, 0x73, 0x65, 0x72, + 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x42, 0x79, 0x41, 0x70, 0x70, 0x49, 0x44, 0x12, 0x1a, 0x2e, 0x70, + 0x62, 0x61, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x42, 0x79, + 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0b, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x50, 0x75, 0x6c, 0x6c, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x50, + 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, + 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, + 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x74, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, + 0x19, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x61, + 0x75, 0x74, 0x68, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x61, + 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x57, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x54, 0x6f, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x41, 0x70, - 0x70, 0x6c, 0x79, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, - 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x3c, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x14, - 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, - 0x66, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x56, 0x0a, - 0x1a, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x70, 0x62, - 0x61, 0x73, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x57, 0x5a, 0x55, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x4b, - 0x69, 0x6e, 0x67, 0x2f, 0x62, 0x6b, 0x2d, 0x62, 0x63, 0x73, 0x2f, 0x62, 0x63, 0x73, 0x2d, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x62, 0x63, 0x73, 0x2d, 0x62, 0x73, 0x63, 0x70, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x75, - 0x74, 0x68, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3b, 0x70, 0x62, 0x61, 0x73, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x41, 0x70, 0x70, + 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, + 0x61, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x56, 0x0a, 0x1a, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x23, 0x2e, 0x70, 0x62, 0x61, 0x73, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x57, 0x5a, 0x55, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x42, + 0x6c, 0x75, 0x65, 0x4b, 0x69, 0x6e, 0x67, 0x2f, 0x62, 0x6b, 0x2d, 0x62, 0x63, 0x73, 0x2f, 0x62, + 0x63, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x62, 0x63, 0x73, 0x2d, + 0x62, 0x73, 0x63, 0x70, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3b, 0x70, 0x62, + 0x61, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/bcs-services/bcs-bscp/pkg/protocol/auth-server/auth_server.proto b/bcs-services/bcs-bscp/pkg/protocol/auth-server/auth_server.proto index 94a25e3d5b..c167689f3a 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/auth-server/auth_server.proto +++ b/bcs-services/bcs-bscp/pkg/protocol/auth-server/auth_server.proto @@ -245,6 +245,7 @@ message Space { string space_type_id = 3; string space_type_name = 4; string space_uid = 5; + string space_en_name = 6; } message ListUserSpaceResp { diff --git a/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.pb.go b/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.pb.go index c8af2b9108..7a7657b4c2 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.pb.go +++ b/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.pb.go @@ -2788,15 +2788,15 @@ type ListConfigItemsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` - AppId uint32 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` - SearchFields string `protobuf:"bytes,3,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` - SearchValue string `protobuf:"bytes,4,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` - Start uint32 `protobuf:"varint,5,opt,name=start,proto3" json:"start,omitempty"` - Limit uint32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` - Ids string `protobuf:"bytes,7,opt,name=ids,proto3" json:"ids,omitempty"` - All bool `protobuf:"varint,8,opt,name=all,proto3" json:"all,omitempty"` - WithStatus bool `protobuf:"varint,9,opt,name=with_status,json=withStatus,proto3" json:"with_status,omitempty"` + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + AppId uint32 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + SearchFields string `protobuf:"bytes,3,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` + SearchValue string `protobuf:"bytes,4,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` + Start uint32 `protobuf:"varint,5,opt,name=start,proto3" json:"start,omitempty"` + Limit uint32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` + Ids []uint32 `protobuf:"varint,7,rep,packed,name=ids,proto3" json:"ids,omitempty"` + All bool `protobuf:"varint,8,opt,name=all,proto3" json:"all,omitempty"` + WithStatus bool `protobuf:"varint,9,opt,name=with_status,json=withStatus,proto3" json:"with_status,omitempty"` // ADD、REVISE、DELETE、UNCHANGE Status []string `protobuf:"bytes,10,rep,name=status,proto3" json:"status,omitempty"` } @@ -2875,11 +2875,11 @@ func (x *ListConfigItemsReq) GetLimit() uint32 { return 0 } -func (x *ListConfigItemsReq) GetIds() string { +func (x *ListConfigItemsReq) GetIds() []uint32 { if x != nil { return x.Ids } - return "" + return nil } func (x *ListConfigItemsReq) GetAll() bool { @@ -7751,14 +7751,14 @@ type ListTemplatesReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` - TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` - SearchFields string `protobuf:"bytes,3,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` - SearchValue string `protobuf:"bytes,4,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` - Start uint32 `protobuf:"varint,5,opt,name=start,proto3" json:"start,omitempty"` - Limit uint32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` - Ids string `protobuf:"bytes,7,opt,name=ids,proto3" json:"ids,omitempty"` - All bool `protobuf:"varint,8,opt,name=all,proto3" json:"all,omitempty"` + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` + SearchFields string `protobuf:"bytes,3,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` + SearchValue string `protobuf:"bytes,4,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` + Start uint32 `protobuf:"varint,5,opt,name=start,proto3" json:"start,omitempty"` + Limit uint32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` + Ids []uint32 `protobuf:"varint,7,rep,packed,name=ids,proto3" json:"ids,omitempty"` + All bool `protobuf:"varint,8,opt,name=all,proto3" json:"all,omitempty"` } func (x *ListTemplatesReq) Reset() { @@ -7835,11 +7835,11 @@ func (x *ListTemplatesReq) GetLimit() uint32 { return 0 } -func (x *ListTemplatesReq) GetIds() string { +func (x *ListTemplatesReq) GetIds() []uint32 { if x != nil { return x.Ids } - return "" + return nil } func (x *ListTemplatesReq) GetAll() bool { @@ -8821,15 +8821,15 @@ type ListTmplsOfTmplSetReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` - TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` - TemplateSetId uint32 `protobuf:"varint,3,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` - SearchFields string `protobuf:"bytes,4,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` - SearchValue string `protobuf:"bytes,5,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` - Start uint32 `protobuf:"varint,6,opt,name=start,proto3" json:"start,omitempty"` - Limit uint32 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"` - Ids string `protobuf:"bytes,8,opt,name=ids,proto3" json:"ids,omitempty"` - All bool `protobuf:"varint,9,opt,name=all,proto3" json:"all,omitempty"` + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` + TemplateSetId uint32 `protobuf:"varint,3,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` + SearchFields string `protobuf:"bytes,4,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` + SearchValue string `protobuf:"bytes,5,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` + Start uint32 `protobuf:"varint,6,opt,name=start,proto3" json:"start,omitempty"` + Limit uint32 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"` + Ids []uint32 `protobuf:"varint,8,rep,packed,name=ids,proto3" json:"ids,omitempty"` + All bool `protobuf:"varint,9,opt,name=all,proto3" json:"all,omitempty"` } func (x *ListTmplsOfTmplSetReq) Reset() { @@ -8913,11 +8913,11 @@ func (x *ListTmplsOfTmplSetReq) GetLimit() uint32 { return 0 } -func (x *ListTmplsOfTmplSetReq) GetIds() string { +func (x *ListTmplsOfTmplSetReq) GetIds() []uint32 { if x != nil { return x.Ids } - return "" + return nil } func (x *ListTmplsOfTmplSetReq) GetAll() bool { @@ -8982,6 +8982,108 @@ func (x *ListTmplsOfTmplSetResp) GetDetails() []*template.Template { return nil } +type ListTemplateSetsAndRevisionsReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + TemplateSetId uint32 `protobuf:"varint,2,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` +} + +func (x *ListTemplateSetsAndRevisionsReq) Reset() { + *x = ListTemplateSetsAndRevisionsReq{} + if protoimpl.UnsafeEnabled { + mi := &file_config_service_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTemplateSetsAndRevisionsReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTemplateSetsAndRevisionsReq) ProtoMessage() {} + +func (x *ListTemplateSetsAndRevisionsReq) ProtoReflect() protoreflect.Message { + mi := &file_config_service_proto_msgTypes[142] + 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 ListTemplateSetsAndRevisionsReq.ProtoReflect.Descriptor instead. +func (*ListTemplateSetsAndRevisionsReq) Descriptor() ([]byte, []int) { + return file_config_service_proto_rawDescGZIP(), []int{142} +} + +func (x *ListTemplateSetsAndRevisionsReq) GetBizId() uint32 { + if x != nil { + return x.BizId + } + return 0 +} + +func (x *ListTemplateSetsAndRevisionsReq) GetTemplateSetId() uint32 { + if x != nil { + return x.TemplateSetId + } + return 0 +} + +type ListTemplateSetsAndRevisionsResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Details []*ListTemplateSetsAndRevisionsResp_Detail `protobuf:"bytes,1,rep,name=details,proto3" json:"details,omitempty"` +} + +func (x *ListTemplateSetsAndRevisionsResp) Reset() { + *x = ListTemplateSetsAndRevisionsResp{} + if protoimpl.UnsafeEnabled { + mi := &file_config_service_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTemplateSetsAndRevisionsResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTemplateSetsAndRevisionsResp) ProtoMessage() {} + +func (x *ListTemplateSetsAndRevisionsResp) ProtoReflect() protoreflect.Message { + mi := &file_config_service_proto_msgTypes[143] + 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 ListTemplateSetsAndRevisionsResp.ProtoReflect.Descriptor instead. +func (*ListTemplateSetsAndRevisionsResp) Descriptor() ([]byte, []int) { + return file_config_service_proto_rawDescGZIP(), []int{143} +} + +func (x *ListTemplateSetsAndRevisionsResp) GetDetails() []*ListTemplateSetsAndRevisionsResp_Detail { + if x != nil { + return x.Details + } + return nil +} + type CreateTemplateRevisionReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -9006,7 +9108,7 @@ type CreateTemplateRevisionReq struct { func (x *CreateTemplateRevisionReq) Reset() { *x = CreateTemplateRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[142] + mi := &file_config_service_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9019,7 +9121,7 @@ func (x *CreateTemplateRevisionReq) String() string { func (*CreateTemplateRevisionReq) ProtoMessage() {} func (x *CreateTemplateRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[142] + mi := &file_config_service_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9032,7 +9134,7 @@ func (x *CreateTemplateRevisionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateRevisionReq.ProtoReflect.Descriptor instead. func (*CreateTemplateRevisionReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{142} + return file_config_service_proto_rawDescGZIP(), []int{144} } func (x *CreateTemplateRevisionReq) GetBizId() uint32 { @@ -9144,7 +9246,7 @@ type CreateTemplateRevisionResp struct { func (x *CreateTemplateRevisionResp) Reset() { *x = CreateTemplateRevisionResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[143] + mi := &file_config_service_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9157,7 +9259,7 @@ func (x *CreateTemplateRevisionResp) String() string { func (*CreateTemplateRevisionResp) ProtoMessage() {} func (x *CreateTemplateRevisionResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[143] + mi := &file_config_service_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9170,7 +9272,7 @@ func (x *CreateTemplateRevisionResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateRevisionResp.ProtoReflect.Descriptor instead. func (*CreateTemplateRevisionResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{143} + return file_config_service_proto_rawDescGZIP(), []int{145} } func (x *CreateTemplateRevisionResp) GetId() uint32 { @@ -9205,7 +9307,7 @@ type UpdateTemplateRevisionReq struct { func (x *UpdateTemplateRevisionReq) Reset() { *x = UpdateTemplateRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[144] + mi := &file_config_service_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9218,7 +9320,7 @@ func (x *UpdateTemplateRevisionReq) String() string { func (*UpdateTemplateRevisionReq) ProtoMessage() {} func (x *UpdateTemplateRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[144] + mi := &file_config_service_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9231,7 +9333,7 @@ func (x *UpdateTemplateRevisionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateRevisionReq.ProtoReflect.Descriptor instead. func (*UpdateTemplateRevisionReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{144} + return file_config_service_proto_rawDescGZIP(), []int{146} } func (x *UpdateTemplateRevisionReq) GetBizId() uint32 { @@ -9350,7 +9452,7 @@ type UpdateTemplateRevisionResp struct { func (x *UpdateTemplateRevisionResp) Reset() { *x = UpdateTemplateRevisionResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[145] + mi := &file_config_service_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9363,7 +9465,7 @@ func (x *UpdateTemplateRevisionResp) String() string { func (*UpdateTemplateRevisionResp) ProtoMessage() {} func (x *UpdateTemplateRevisionResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[145] + mi := &file_config_service_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9376,7 +9478,7 @@ func (x *UpdateTemplateRevisionResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateRevisionResp.ProtoReflect.Descriptor instead. func (*UpdateTemplateRevisionResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{145} + return file_config_service_proto_rawDescGZIP(), []int{147} } func (x *UpdateTemplateRevisionResp) GetId() uint32 { @@ -9404,7 +9506,7 @@ type ListTemplateRevisionsReq struct { func (x *ListTemplateRevisionsReq) Reset() { *x = ListTemplateRevisionsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[146] + mi := &file_config_service_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9417,7 +9519,7 @@ func (x *ListTemplateRevisionsReq) String() string { func (*ListTemplateRevisionsReq) ProtoMessage() {} func (x *ListTemplateRevisionsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[146] + mi := &file_config_service_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9430,7 +9532,7 @@ func (x *ListTemplateRevisionsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateRevisionsReq.ProtoReflect.Descriptor instead. func (*ListTemplateRevisionsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{146} + return file_config_service_proto_rawDescGZIP(), []int{148} } func (x *ListTemplateRevisionsReq) GetBizId() uint32 { @@ -9501,7 +9603,7 @@ type ListTemplateRevisionsResp struct { func (x *ListTemplateRevisionsResp) Reset() { *x = ListTemplateRevisionsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[147] + mi := &file_config_service_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9514,7 +9616,7 @@ func (x *ListTemplateRevisionsResp) String() string { func (*ListTemplateRevisionsResp) ProtoMessage() {} func (x *ListTemplateRevisionsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[147] + mi := &file_config_service_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9527,7 +9629,7 @@ func (x *ListTemplateRevisionsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateRevisionsResp.ProtoReflect.Descriptor instead. func (*ListTemplateRevisionsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{147} + return file_config_service_proto_rawDescGZIP(), []int{149} } func (x *ListTemplateRevisionsResp) GetCount() uint32 { @@ -9557,7 +9659,7 @@ type GetTemplateRevisionReq struct { func (x *GetTemplateRevisionReq) Reset() { *x = GetTemplateRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[148] + mi := &file_config_service_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9570,7 +9672,7 @@ func (x *GetTemplateRevisionReq) String() string { func (*GetTemplateRevisionReq) ProtoMessage() {} func (x *GetTemplateRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[148] + mi := &file_config_service_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9583,7 +9685,7 @@ func (x *GetTemplateRevisionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTemplateRevisionReq.ProtoReflect.Descriptor instead. func (*GetTemplateRevisionReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{148} + return file_config_service_proto_rawDescGZIP(), []int{150} } func (x *GetTemplateRevisionReq) GetBizId() uint32 { @@ -9618,7 +9720,7 @@ type GetTemplateRevisionResp struct { func (x *GetTemplateRevisionResp) Reset() { *x = GetTemplateRevisionResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[149] + mi := &file_config_service_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9631,7 +9733,7 @@ func (x *GetTemplateRevisionResp) String() string { func (*GetTemplateRevisionResp) ProtoMessage() {} func (x *GetTemplateRevisionResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[149] + mi := &file_config_service_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9644,7 +9746,7 @@ func (x *GetTemplateRevisionResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTemplateRevisionResp.ProtoReflect.Descriptor instead. func (*GetTemplateRevisionResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{149} + return file_config_service_proto_rawDescGZIP(), []int{151} } func (x *GetTemplateRevisionResp) GetDetail() *GetTemplateRevisionResp_TemplateRevision { @@ -9668,7 +9770,7 @@ type DeleteTemplateRevisionReq struct { func (x *DeleteTemplateRevisionReq) Reset() { *x = DeleteTemplateRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[150] + mi := &file_config_service_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9681,7 +9783,7 @@ func (x *DeleteTemplateRevisionReq) String() string { func (*DeleteTemplateRevisionReq) ProtoMessage() {} func (x *DeleteTemplateRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[150] + mi := &file_config_service_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9694,7 +9796,7 @@ func (x *DeleteTemplateRevisionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateRevisionReq.ProtoReflect.Descriptor instead. func (*DeleteTemplateRevisionReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{150} + return file_config_service_proto_rawDescGZIP(), []int{152} } func (x *DeleteTemplateRevisionReq) GetBizId() uint32 { @@ -9734,7 +9836,7 @@ type DeleteTemplateRevisionResp struct { func (x *DeleteTemplateRevisionResp) Reset() { *x = DeleteTemplateRevisionResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[151] + mi := &file_config_service_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9747,7 +9849,7 @@ func (x *DeleteTemplateRevisionResp) String() string { func (*DeleteTemplateRevisionResp) ProtoMessage() {} func (x *DeleteTemplateRevisionResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[151] + mi := &file_config_service_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9760,7 +9862,7 @@ func (x *DeleteTemplateRevisionResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateRevisionResp.ProtoReflect.Descriptor instead. func (*DeleteTemplateRevisionResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{151} + return file_config_service_proto_rawDescGZIP(), []int{153} } type ListTemplateRevisionsByIDsReq struct { @@ -9775,7 +9877,7 @@ type ListTemplateRevisionsByIDsReq struct { func (x *ListTemplateRevisionsByIDsReq) Reset() { *x = ListTemplateRevisionsByIDsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[152] + mi := &file_config_service_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9788,7 +9890,7 @@ func (x *ListTemplateRevisionsByIDsReq) String() string { func (*ListTemplateRevisionsByIDsReq) ProtoMessage() {} func (x *ListTemplateRevisionsByIDsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[152] + mi := &file_config_service_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9801,7 +9903,7 @@ func (x *ListTemplateRevisionsByIDsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateRevisionsByIDsReq.ProtoReflect.Descriptor instead. func (*ListTemplateRevisionsByIDsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{152} + return file_config_service_proto_rawDescGZIP(), []int{154} } func (x *ListTemplateRevisionsByIDsReq) GetBizId() uint32 { @@ -9829,7 +9931,7 @@ type ListTemplateRevisionsByIDsResp struct { func (x *ListTemplateRevisionsByIDsResp) Reset() { *x = ListTemplateRevisionsByIDsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[153] + mi := &file_config_service_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9842,7 +9944,7 @@ func (x *ListTemplateRevisionsByIDsResp) String() string { func (*ListTemplateRevisionsByIDsResp) ProtoMessage() {} func (x *ListTemplateRevisionsByIDsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[153] + mi := &file_config_service_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9855,7 +9957,7 @@ func (x *ListTemplateRevisionsByIDsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateRevisionsByIDsResp.ProtoReflect.Descriptor instead. func (*ListTemplateRevisionsByIDsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{153} + return file_config_service_proto_rawDescGZIP(), []int{155} } func (x *ListTemplateRevisionsByIDsResp) GetDetails() []*template_revision.TemplateRevision { @@ -9877,7 +9979,7 @@ type ListTmplRevisionNamesByTmplIDsReq struct { func (x *ListTmplRevisionNamesByTmplIDsReq) Reset() { *x = ListTmplRevisionNamesByTmplIDsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[154] + mi := &file_config_service_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9890,7 +9992,7 @@ func (x *ListTmplRevisionNamesByTmplIDsReq) String() string { func (*ListTmplRevisionNamesByTmplIDsReq) ProtoMessage() {} func (x *ListTmplRevisionNamesByTmplIDsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[154] + mi := &file_config_service_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9903,7 +10005,7 @@ func (x *ListTmplRevisionNamesByTmplIDsReq) ProtoReflect() protoreflect.Message // Deprecated: Use ListTmplRevisionNamesByTmplIDsReq.ProtoReflect.Descriptor instead. func (*ListTmplRevisionNamesByTmplIDsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{154} + return file_config_service_proto_rawDescGZIP(), []int{156} } func (x *ListTmplRevisionNamesByTmplIDsReq) GetBizId() uint32 { @@ -9931,7 +10033,7 @@ type ListTmplRevisionNamesByTmplIDsResp struct { func (x *ListTmplRevisionNamesByTmplIDsResp) Reset() { *x = ListTmplRevisionNamesByTmplIDsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[155] + mi := &file_config_service_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9944,7 +10046,7 @@ func (x *ListTmplRevisionNamesByTmplIDsResp) String() string { func (*ListTmplRevisionNamesByTmplIDsResp) ProtoMessage() {} func (x *ListTmplRevisionNamesByTmplIDsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[155] + mi := &file_config_service_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9957,7 +10059,7 @@ func (x *ListTmplRevisionNamesByTmplIDsResp) ProtoReflect() protoreflect.Message // Deprecated: Use ListTmplRevisionNamesByTmplIDsResp.ProtoReflect.Descriptor instead. func (*ListTmplRevisionNamesByTmplIDsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{155} + return file_config_service_proto_rawDescGZIP(), []int{157} } func (x *ListTmplRevisionNamesByTmplIDsResp) GetDetails() []*template_revision.TemplateRevisionNamesDetail { @@ -9984,7 +10086,7 @@ type CreateTemplateSetReq struct { func (x *CreateTemplateSetReq) Reset() { *x = CreateTemplateSetReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[156] + mi := &file_config_service_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9997,7 +10099,7 @@ func (x *CreateTemplateSetReq) String() string { func (*CreateTemplateSetReq) ProtoMessage() {} func (x *CreateTemplateSetReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[156] + mi := &file_config_service_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10010,7 +10112,7 @@ func (x *CreateTemplateSetReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateSetReq.ProtoReflect.Descriptor instead. func (*CreateTemplateSetReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{156} + return file_config_service_proto_rawDescGZIP(), []int{158} } func (x *CreateTemplateSetReq) GetBizId() uint32 { @@ -10073,7 +10175,7 @@ type CreateTemplateSetResp struct { func (x *CreateTemplateSetResp) Reset() { *x = CreateTemplateSetResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[157] + mi := &file_config_service_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10086,7 +10188,7 @@ func (x *CreateTemplateSetResp) String() string { func (*CreateTemplateSetResp) ProtoMessage() {} func (x *CreateTemplateSetResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[157] + mi := &file_config_service_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10099,7 +10201,7 @@ func (x *CreateTemplateSetResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateSetResp.ProtoReflect.Descriptor instead. func (*CreateTemplateSetResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{157} + return file_config_service_proto_rawDescGZIP(), []int{159} } func (x *CreateTemplateSetResp) GetId() uint32 { @@ -10128,7 +10230,7 @@ type UpdateTemplateSetReq struct { func (x *UpdateTemplateSetReq) Reset() { *x = UpdateTemplateSetReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[158] + mi := &file_config_service_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10141,7 +10243,7 @@ func (x *UpdateTemplateSetReq) String() string { func (*UpdateTemplateSetReq) ProtoMessage() {} func (x *UpdateTemplateSetReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[158] + mi := &file_config_service_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10154,7 +10256,7 @@ func (x *UpdateTemplateSetReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateSetReq.ProtoReflect.Descriptor instead. func (*UpdateTemplateSetReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{158} + return file_config_service_proto_rawDescGZIP(), []int{160} } func (x *UpdateTemplateSetReq) GetBizId() uint32 { @@ -10229,7 +10331,7 @@ type UpdateTemplateSetResp struct { func (x *UpdateTemplateSetResp) Reset() { *x = UpdateTemplateSetResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[159] + mi := &file_config_service_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10242,7 +10344,7 @@ func (x *UpdateTemplateSetResp) String() string { func (*UpdateTemplateSetResp) ProtoMessage() {} func (x *UpdateTemplateSetResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[159] + mi := &file_config_service_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10255,7 +10357,7 @@ func (x *UpdateTemplateSetResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateSetResp.ProtoReflect.Descriptor instead. func (*UpdateTemplateSetResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{159} + return file_config_service_proto_rawDescGZIP(), []int{161} } type DeleteTemplateSetReq struct { @@ -10272,7 +10374,7 @@ type DeleteTemplateSetReq struct { func (x *DeleteTemplateSetReq) Reset() { *x = DeleteTemplateSetReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[160] + mi := &file_config_service_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10285,7 +10387,7 @@ func (x *DeleteTemplateSetReq) String() string { func (*DeleteTemplateSetReq) ProtoMessage() {} func (x *DeleteTemplateSetReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[160] + mi := &file_config_service_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10298,7 +10400,7 @@ func (x *DeleteTemplateSetReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateSetReq.ProtoReflect.Descriptor instead. func (*DeleteTemplateSetReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{160} + return file_config_service_proto_rawDescGZIP(), []int{162} } func (x *DeleteTemplateSetReq) GetBizId() uint32 { @@ -10338,7 +10440,7 @@ type DeleteTemplateSetResp struct { func (x *DeleteTemplateSetResp) Reset() { *x = DeleteTemplateSetResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[161] + mi := &file_config_service_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10351,7 +10453,7 @@ func (x *DeleteTemplateSetResp) String() string { func (*DeleteTemplateSetResp) ProtoMessage() {} func (x *DeleteTemplateSetResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[161] + mi := &file_config_service_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10364,7 +10466,7 @@ func (x *DeleteTemplateSetResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateSetResp.ProtoReflect.Descriptor instead. func (*DeleteTemplateSetResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{161} + return file_config_service_proto_rawDescGZIP(), []int{163} } type ListTemplateSetsReq struct { @@ -10384,7 +10486,7 @@ type ListTemplateSetsReq struct { func (x *ListTemplateSetsReq) Reset() { *x = ListTemplateSetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[162] + mi := &file_config_service_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10397,7 +10499,7 @@ func (x *ListTemplateSetsReq) String() string { func (*ListTemplateSetsReq) ProtoMessage() {} func (x *ListTemplateSetsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[162] + mi := &file_config_service_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10410,7 +10512,7 @@ func (x *ListTemplateSetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateSetsReq.ProtoReflect.Descriptor instead. func (*ListTemplateSetsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{162} + return file_config_service_proto_rawDescGZIP(), []int{164} } func (x *ListTemplateSetsReq) GetBizId() uint32 { @@ -10474,7 +10576,7 @@ type ListTemplateSetsResp struct { func (x *ListTemplateSetsResp) Reset() { *x = ListTemplateSetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[163] + mi := &file_config_service_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10487,7 +10589,7 @@ func (x *ListTemplateSetsResp) String() string { func (*ListTemplateSetsResp) ProtoMessage() {} func (x *ListTemplateSetsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[163] + mi := &file_config_service_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10500,7 +10602,7 @@ func (x *ListTemplateSetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateSetsResp.ProtoReflect.Descriptor instead. func (*ListTemplateSetsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{163} + return file_config_service_proto_rawDescGZIP(), []int{165} } func (x *ListTemplateSetsResp) GetCount() uint32 { @@ -10529,7 +10631,7 @@ type ListAppTemplateSetsReq struct { func (x *ListAppTemplateSetsReq) Reset() { *x = ListAppTemplateSetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[164] + mi := &file_config_service_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10542,7 +10644,7 @@ func (x *ListAppTemplateSetsReq) String() string { func (*ListAppTemplateSetsReq) ProtoMessage() {} func (x *ListAppTemplateSetsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[164] + mi := &file_config_service_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10555,7 +10657,7 @@ func (x *ListAppTemplateSetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTemplateSetsReq.ProtoReflect.Descriptor instead. func (*ListAppTemplateSetsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{164} + return file_config_service_proto_rawDescGZIP(), []int{166} } func (x *ListAppTemplateSetsReq) GetBizId() uint32 { @@ -10583,7 +10685,7 @@ type ListAppTemplateSetsResp struct { func (x *ListAppTemplateSetsResp) Reset() { *x = ListAppTemplateSetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[165] + mi := &file_config_service_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10596,7 +10698,7 @@ func (x *ListAppTemplateSetsResp) String() string { func (*ListAppTemplateSetsResp) ProtoMessage() {} func (x *ListAppTemplateSetsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[165] + mi := &file_config_service_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10609,7 +10711,7 @@ func (x *ListAppTemplateSetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTemplateSetsResp.ProtoReflect.Descriptor instead. func (*ListAppTemplateSetsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{165} + return file_config_service_proto_rawDescGZIP(), []int{167} } func (x *ListAppTemplateSetsResp) GetDetails() []*template_set.TemplateSet { @@ -10631,7 +10733,7 @@ type ListTemplateSetsByIDsReq struct { func (x *ListTemplateSetsByIDsReq) Reset() { *x = ListTemplateSetsByIDsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[166] + mi := &file_config_service_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10644,7 +10746,7 @@ func (x *ListTemplateSetsByIDsReq) String() string { func (*ListTemplateSetsByIDsReq) ProtoMessage() {} func (x *ListTemplateSetsByIDsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[166] + mi := &file_config_service_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10657,7 +10759,7 @@ func (x *ListTemplateSetsByIDsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateSetsByIDsReq.ProtoReflect.Descriptor instead. func (*ListTemplateSetsByIDsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{166} + return file_config_service_proto_rawDescGZIP(), []int{168} } func (x *ListTemplateSetsByIDsReq) GetBizId() uint32 { @@ -10685,7 +10787,7 @@ type ListTemplateSetsByIDsResp struct { func (x *ListTemplateSetsByIDsResp) Reset() { *x = ListTemplateSetsByIDsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[167] + mi := &file_config_service_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10698,7 +10800,7 @@ func (x *ListTemplateSetsByIDsResp) String() string { func (*ListTemplateSetsByIDsResp) ProtoMessage() {} func (x *ListTemplateSetsByIDsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[167] + mi := &file_config_service_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10711,7 +10813,7 @@ func (x *ListTemplateSetsByIDsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateSetsByIDsResp.ProtoReflect.Descriptor instead. func (*ListTemplateSetsByIDsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{167} + return file_config_service_proto_rawDescGZIP(), []int{169} } func (x *ListTemplateSetsByIDsResp) GetDetails() []*template_set.TemplateSet { @@ -10733,7 +10835,7 @@ type ListTmplSetsOfBizReq struct { func (x *ListTmplSetsOfBizReq) Reset() { *x = ListTmplSetsOfBizReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[168] + mi := &file_config_service_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10746,7 +10848,7 @@ func (x *ListTmplSetsOfBizReq) String() string { func (*ListTmplSetsOfBizReq) ProtoMessage() {} func (x *ListTmplSetsOfBizReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[168] + mi := &file_config_service_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10759,7 +10861,7 @@ func (x *ListTmplSetsOfBizReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetsOfBizReq.ProtoReflect.Descriptor instead. func (*ListTmplSetsOfBizReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{168} + return file_config_service_proto_rawDescGZIP(), []int{170} } func (x *ListTmplSetsOfBizReq) GetBizId() uint32 { @@ -10787,7 +10889,7 @@ type ListTmplSetsOfBizResp struct { func (x *ListTmplSetsOfBizResp) Reset() { *x = ListTmplSetsOfBizResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[169] + mi := &file_config_service_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10800,7 +10902,7 @@ func (x *ListTmplSetsOfBizResp) String() string { func (*ListTmplSetsOfBizResp) ProtoMessage() {} func (x *ListTmplSetsOfBizResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[169] + mi := &file_config_service_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10813,7 +10915,7 @@ func (x *ListTmplSetsOfBizResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetsOfBizResp.ProtoReflect.Descriptor instead. func (*ListTmplSetsOfBizResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{169} + return file_config_service_proto_rawDescGZIP(), []int{171} } func (x *ListTmplSetsOfBizResp) GetDetails() []*template_set.TemplateSetOfBizDetail { @@ -10836,7 +10938,7 @@ type CreateAppTemplateBindingReq struct { func (x *CreateAppTemplateBindingReq) Reset() { *x = CreateAppTemplateBindingReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[170] + mi := &file_config_service_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10849,7 +10951,7 @@ func (x *CreateAppTemplateBindingReq) String() string { func (*CreateAppTemplateBindingReq) ProtoMessage() {} func (x *CreateAppTemplateBindingReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[170] + mi := &file_config_service_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10862,7 +10964,7 @@ func (x *CreateAppTemplateBindingReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAppTemplateBindingReq.ProtoReflect.Descriptor instead. func (*CreateAppTemplateBindingReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{170} + return file_config_service_proto_rawDescGZIP(), []int{172} } func (x *CreateAppTemplateBindingReq) GetBizId() uint32 { @@ -10897,7 +10999,7 @@ type CreateAppTemplateBindingResp struct { func (x *CreateAppTemplateBindingResp) Reset() { *x = CreateAppTemplateBindingResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[171] + mi := &file_config_service_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10910,7 +11012,7 @@ func (x *CreateAppTemplateBindingResp) String() string { func (*CreateAppTemplateBindingResp) ProtoMessage() {} func (x *CreateAppTemplateBindingResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[171] + mi := &file_config_service_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10923,7 +11025,7 @@ func (x *CreateAppTemplateBindingResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAppTemplateBindingResp.ProtoReflect.Descriptor instead. func (*CreateAppTemplateBindingResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{171} + return file_config_service_proto_rawDescGZIP(), []int{173} } func (x *CreateAppTemplateBindingResp) GetId() uint32 { @@ -10947,7 +11049,7 @@ type UpdateAppTemplateBindingReq struct { func (x *UpdateAppTemplateBindingReq) Reset() { *x = UpdateAppTemplateBindingReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[172] + mi := &file_config_service_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10960,7 +11062,7 @@ func (x *UpdateAppTemplateBindingReq) String() string { func (*UpdateAppTemplateBindingReq) ProtoMessage() {} func (x *UpdateAppTemplateBindingReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[172] + mi := &file_config_service_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10973,7 +11075,7 @@ func (x *UpdateAppTemplateBindingReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppTemplateBindingReq.ProtoReflect.Descriptor instead. func (*UpdateAppTemplateBindingReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{172} + return file_config_service_proto_rawDescGZIP(), []int{174} } func (x *UpdateAppTemplateBindingReq) GetBizId() uint32 { @@ -11013,7 +11115,7 @@ type UpdateAppTemplateBindingResp struct { func (x *UpdateAppTemplateBindingResp) Reset() { *x = UpdateAppTemplateBindingResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[173] + mi := &file_config_service_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11026,7 +11128,7 @@ func (x *UpdateAppTemplateBindingResp) String() string { func (*UpdateAppTemplateBindingResp) ProtoMessage() {} func (x *UpdateAppTemplateBindingResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[173] + mi := &file_config_service_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11039,7 +11141,7 @@ func (x *UpdateAppTemplateBindingResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppTemplateBindingResp.ProtoReflect.Descriptor instead. func (*UpdateAppTemplateBindingResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{173} + return file_config_service_proto_rawDescGZIP(), []int{175} } type DeleteAppTemplateBindingReq struct { @@ -11055,7 +11157,7 @@ type DeleteAppTemplateBindingReq struct { func (x *DeleteAppTemplateBindingReq) Reset() { *x = DeleteAppTemplateBindingReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[174] + mi := &file_config_service_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11068,7 +11170,7 @@ func (x *DeleteAppTemplateBindingReq) String() string { func (*DeleteAppTemplateBindingReq) ProtoMessage() {} func (x *DeleteAppTemplateBindingReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[174] + mi := &file_config_service_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11081,7 +11183,7 @@ func (x *DeleteAppTemplateBindingReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAppTemplateBindingReq.ProtoReflect.Descriptor instead. func (*DeleteAppTemplateBindingReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{174} + return file_config_service_proto_rawDescGZIP(), []int{176} } func (x *DeleteAppTemplateBindingReq) GetBizId() uint32 { @@ -11114,7 +11216,7 @@ type DeleteAppTemplateBindingResp struct { func (x *DeleteAppTemplateBindingResp) Reset() { *x = DeleteAppTemplateBindingResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[175] + mi := &file_config_service_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11127,7 +11229,7 @@ func (x *DeleteAppTemplateBindingResp) String() string { func (*DeleteAppTemplateBindingResp) ProtoMessage() {} func (x *DeleteAppTemplateBindingResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[175] + mi := &file_config_service_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11140,7 +11242,7 @@ func (x *DeleteAppTemplateBindingResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAppTemplateBindingResp.ProtoReflect.Descriptor instead. func (*DeleteAppTemplateBindingResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{175} + return file_config_service_proto_rawDescGZIP(), []int{177} } type ListAppTemplateBindingsReq struct { @@ -11155,7 +11257,7 @@ type ListAppTemplateBindingsReq struct { func (x *ListAppTemplateBindingsReq) Reset() { *x = ListAppTemplateBindingsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[176] + mi := &file_config_service_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11168,7 +11270,7 @@ func (x *ListAppTemplateBindingsReq) String() string { func (*ListAppTemplateBindingsReq) ProtoMessage() {} func (x *ListAppTemplateBindingsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[176] + mi := &file_config_service_proto_msgTypes[178] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11181,7 +11283,7 @@ func (x *ListAppTemplateBindingsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTemplateBindingsReq.ProtoReflect.Descriptor instead. func (*ListAppTemplateBindingsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{176} + return file_config_service_proto_rawDescGZIP(), []int{178} } func (x *ListAppTemplateBindingsReq) GetBizId() uint32 { @@ -11210,7 +11312,7 @@ type ListAppTemplateBindingsResp struct { func (x *ListAppTemplateBindingsResp) Reset() { *x = ListAppTemplateBindingsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[177] + mi := &file_config_service_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11223,7 +11325,7 @@ func (x *ListAppTemplateBindingsResp) String() string { func (*ListAppTemplateBindingsResp) ProtoMessage() {} func (x *ListAppTemplateBindingsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[177] + mi := &file_config_service_proto_msgTypes[179] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11236,7 +11338,7 @@ func (x *ListAppTemplateBindingsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTemplateBindingsResp.ProtoReflect.Descriptor instead. func (*ListAppTemplateBindingsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{177} + return file_config_service_proto_rawDescGZIP(), []int{179} } func (x *ListAppTemplateBindingsResp) GetCount() uint32 { @@ -11270,7 +11372,7 @@ type ListAppBoundTmplRevisionsReq struct { func (x *ListAppBoundTmplRevisionsReq) Reset() { *x = ListAppBoundTmplRevisionsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[178] + mi := &file_config_service_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11283,7 +11385,7 @@ func (x *ListAppBoundTmplRevisionsReq) String() string { func (*ListAppBoundTmplRevisionsReq) ProtoMessage() {} func (x *ListAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[178] + mi := &file_config_service_proto_msgTypes[180] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11296,7 +11398,7 @@ func (x *ListAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppBoundTmplRevisionsReq.ProtoReflect.Descriptor instead. func (*ListAppBoundTmplRevisionsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{178} + return file_config_service_proto_rawDescGZIP(), []int{180} } func (x *ListAppBoundTmplRevisionsReq) GetBizId() uint32 { @@ -11352,7 +11454,7 @@ type ListAppBoundTmplRevisionsResp struct { func (x *ListAppBoundTmplRevisionsResp) Reset() { *x = ListAppBoundTmplRevisionsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[179] + mi := &file_config_service_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11365,7 +11467,7 @@ func (x *ListAppBoundTmplRevisionsResp) String() string { func (*ListAppBoundTmplRevisionsResp) ProtoMessage() {} func (x *ListAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[179] + mi := &file_config_service_proto_msgTypes[181] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11378,7 +11480,7 @@ func (x *ListAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppBoundTmplRevisionsResp.ProtoReflect.Descriptor instead. func (*ListAppBoundTmplRevisionsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{179} + return file_config_service_proto_rawDescGZIP(), []int{181} } func (x *ListAppBoundTmplRevisionsResp) GetDetails() []*app_template_binding.AppBoundTmplRevisionGroupBySet { @@ -11403,7 +11505,7 @@ type ListReleasedAppBoundTmplRevisionsReq struct { func (x *ListReleasedAppBoundTmplRevisionsReq) Reset() { *x = ListReleasedAppBoundTmplRevisionsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[180] + mi := &file_config_service_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11416,7 +11518,7 @@ func (x *ListReleasedAppBoundTmplRevisionsReq) String() string { func (*ListReleasedAppBoundTmplRevisionsReq) ProtoMessage() {} func (x *ListReleasedAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[180] + mi := &file_config_service_proto_msgTypes[182] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11429,7 +11531,7 @@ func (x *ListReleasedAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Messa // Deprecated: Use ListReleasedAppBoundTmplRevisionsReq.ProtoReflect.Descriptor instead. func (*ListReleasedAppBoundTmplRevisionsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{180} + return file_config_service_proto_rawDescGZIP(), []int{182} } func (x *ListReleasedAppBoundTmplRevisionsReq) GetBizId() uint32 { @@ -11478,7 +11580,7 @@ type ListReleasedAppBoundTmplRevisionsResp struct { func (x *ListReleasedAppBoundTmplRevisionsResp) Reset() { *x = ListReleasedAppBoundTmplRevisionsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[181] + mi := &file_config_service_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11491,7 +11593,7 @@ func (x *ListReleasedAppBoundTmplRevisionsResp) String() string { func (*ListReleasedAppBoundTmplRevisionsResp) ProtoMessage() {} func (x *ListReleasedAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[181] + mi := &file_config_service_proto_msgTypes[183] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11504,7 +11606,7 @@ func (x *ListReleasedAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Mess // Deprecated: Use ListReleasedAppBoundTmplRevisionsResp.ProtoReflect.Descriptor instead. func (*ListReleasedAppBoundTmplRevisionsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{181} + return file_config_service_proto_rawDescGZIP(), []int{183} } func (x *ListReleasedAppBoundTmplRevisionsResp) GetDetails() []*app_template_binding.ReleasedAppBoundTmplRevisionGroupBySet { @@ -11528,7 +11630,7 @@ type GetReleasedAppBoundTmplRevisionReq struct { func (x *GetReleasedAppBoundTmplRevisionReq) Reset() { *x = GetReleasedAppBoundTmplRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[182] + mi := &file_config_service_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11541,7 +11643,7 @@ func (x *GetReleasedAppBoundTmplRevisionReq) String() string { func (*GetReleasedAppBoundTmplRevisionReq) ProtoMessage() {} func (x *GetReleasedAppBoundTmplRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[182] + mi := &file_config_service_proto_msgTypes[184] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11554,7 +11656,7 @@ func (x *GetReleasedAppBoundTmplRevisionReq) ProtoReflect() protoreflect.Message // Deprecated: Use GetReleasedAppBoundTmplRevisionReq.ProtoReflect.Descriptor instead. func (*GetReleasedAppBoundTmplRevisionReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{182} + return file_config_service_proto_rawDescGZIP(), []int{184} } func (x *GetReleasedAppBoundTmplRevisionReq) GetBizId() uint32 { @@ -11596,7 +11698,7 @@ type GetReleasedAppBoundTmplRevisionResp struct { func (x *GetReleasedAppBoundTmplRevisionResp) Reset() { *x = GetReleasedAppBoundTmplRevisionResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[183] + mi := &file_config_service_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11609,7 +11711,7 @@ func (x *GetReleasedAppBoundTmplRevisionResp) String() string { func (*GetReleasedAppBoundTmplRevisionResp) ProtoMessage() {} func (x *GetReleasedAppBoundTmplRevisionResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[183] + mi := &file_config_service_proto_msgTypes[185] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11622,7 +11724,7 @@ func (x *GetReleasedAppBoundTmplRevisionResp) ProtoReflect() protoreflect.Messag // Deprecated: Use GetReleasedAppBoundTmplRevisionResp.ProtoReflect.Descriptor instead. func (*GetReleasedAppBoundTmplRevisionResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{183} + return file_config_service_proto_rawDescGZIP(), []int{185} } func (x *GetReleasedAppBoundTmplRevisionResp) GetDetail() *app_template_binding.ReleasedAppBoundTmplRevision { @@ -11646,7 +11748,7 @@ type UpdateAppBoundTmplRevisionsReq struct { func (x *UpdateAppBoundTmplRevisionsReq) Reset() { *x = UpdateAppBoundTmplRevisionsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[184] + mi := &file_config_service_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11659,7 +11761,7 @@ func (x *UpdateAppBoundTmplRevisionsReq) String() string { func (*UpdateAppBoundTmplRevisionsReq) ProtoMessage() {} func (x *UpdateAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[184] + mi := &file_config_service_proto_msgTypes[186] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11672,7 +11774,7 @@ func (x *UpdateAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppBoundTmplRevisionsReq.ProtoReflect.Descriptor instead. func (*UpdateAppBoundTmplRevisionsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{184} + return file_config_service_proto_rawDescGZIP(), []int{186} } func (x *UpdateAppBoundTmplRevisionsReq) GetBizId() uint32 { @@ -11712,7 +11814,7 @@ type UpdateAppBoundTmplRevisionsResp struct { func (x *UpdateAppBoundTmplRevisionsResp) Reset() { *x = UpdateAppBoundTmplRevisionsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[185] + mi := &file_config_service_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11725,7 +11827,7 @@ func (x *UpdateAppBoundTmplRevisionsResp) String() string { func (*UpdateAppBoundTmplRevisionsResp) ProtoMessage() {} func (x *UpdateAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[185] + mi := &file_config_service_proto_msgTypes[187] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11738,7 +11840,7 @@ func (x *UpdateAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppBoundTmplRevisionsResp.ProtoReflect.Descriptor instead. func (*UpdateAppBoundTmplRevisionsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{185} + return file_config_service_proto_rawDescGZIP(), []int{187} } type DeleteAppBoundTmplSetsReq struct { @@ -11755,7 +11857,7 @@ type DeleteAppBoundTmplSetsReq struct { func (x *DeleteAppBoundTmplSetsReq) Reset() { *x = DeleteAppBoundTmplSetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[186] + mi := &file_config_service_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11768,7 +11870,7 @@ func (x *DeleteAppBoundTmplSetsReq) String() string { func (*DeleteAppBoundTmplSetsReq) ProtoMessage() {} func (x *DeleteAppBoundTmplSetsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[186] + mi := &file_config_service_proto_msgTypes[188] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11781,7 +11883,7 @@ func (x *DeleteAppBoundTmplSetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAppBoundTmplSetsReq.ProtoReflect.Descriptor instead. func (*DeleteAppBoundTmplSetsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{186} + return file_config_service_proto_rawDescGZIP(), []int{188} } func (x *DeleteAppBoundTmplSetsReq) GetBizId() uint32 { @@ -11821,7 +11923,7 @@ type DeleteAppBoundTmplSetsResp struct { func (x *DeleteAppBoundTmplSetsResp) Reset() { *x = DeleteAppBoundTmplSetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[187] + mi := &file_config_service_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11834,7 +11936,7 @@ func (x *DeleteAppBoundTmplSetsResp) String() string { func (*DeleteAppBoundTmplSetsResp) ProtoMessage() {} func (x *DeleteAppBoundTmplSetsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[187] + mi := &file_config_service_proto_msgTypes[189] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11847,7 +11949,7 @@ func (x *DeleteAppBoundTmplSetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAppBoundTmplSetsResp.ProtoReflect.Descriptor instead. func (*DeleteAppBoundTmplSetsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{187} + return file_config_service_proto_rawDescGZIP(), []int{189} } type RemoveAppBoundTmplSetReq struct { @@ -11863,7 +11965,7 @@ type RemoveAppBoundTmplSetReq struct { func (x *RemoveAppBoundTmplSetReq) Reset() { *x = RemoveAppBoundTmplSetReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[188] + mi := &file_config_service_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11876,7 +11978,7 @@ func (x *RemoveAppBoundTmplSetReq) String() string { func (*RemoveAppBoundTmplSetReq) ProtoMessage() {} func (x *RemoveAppBoundTmplSetReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[188] + mi := &file_config_service_proto_msgTypes[190] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11889,7 +11991,7 @@ func (x *RemoveAppBoundTmplSetReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveAppBoundTmplSetReq.ProtoReflect.Descriptor instead. func (*RemoveAppBoundTmplSetReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{188} + return file_config_service_proto_rawDescGZIP(), []int{190} } func (x *RemoveAppBoundTmplSetReq) GetBizId() uint32 { @@ -11922,7 +12024,7 @@ type RemoveAppBoundTmplSetResp struct { func (x *RemoveAppBoundTmplSetResp) Reset() { *x = RemoveAppBoundTmplSetResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[189] + mi := &file_config_service_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11935,7 +12037,7 @@ func (x *RemoveAppBoundTmplSetResp) String() string { func (*RemoveAppBoundTmplSetResp) ProtoMessage() {} func (x *RemoveAppBoundTmplSetResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[189] + mi := &file_config_service_proto_msgTypes[191] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11948,7 +12050,7 @@ func (x *RemoveAppBoundTmplSetResp) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveAppBoundTmplSetResp.ProtoReflect.Descriptor instead. func (*RemoveAppBoundTmplSetResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{189} + return file_config_service_proto_rawDescGZIP(), []int{191} } type CheckAppTemplateBindingReq struct { @@ -11964,7 +12066,7 @@ type CheckAppTemplateBindingReq struct { func (x *CheckAppTemplateBindingReq) Reset() { *x = CheckAppTemplateBindingReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[190] + mi := &file_config_service_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11977,7 +12079,7 @@ func (x *CheckAppTemplateBindingReq) String() string { func (*CheckAppTemplateBindingReq) ProtoMessage() {} func (x *CheckAppTemplateBindingReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[190] + mi := &file_config_service_proto_msgTypes[192] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11990,7 +12092,7 @@ func (x *CheckAppTemplateBindingReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckAppTemplateBindingReq.ProtoReflect.Descriptor instead. func (*CheckAppTemplateBindingReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{190} + return file_config_service_proto_rawDescGZIP(), []int{192} } func (x *CheckAppTemplateBindingReq) GetBizId() uint32 { @@ -12025,7 +12127,7 @@ type CheckAppTemplateBindingResp struct { func (x *CheckAppTemplateBindingResp) Reset() { *x = CheckAppTemplateBindingResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[191] + mi := &file_config_service_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12038,7 +12140,7 @@ func (x *CheckAppTemplateBindingResp) String() string { func (*CheckAppTemplateBindingResp) ProtoMessage() {} func (x *CheckAppTemplateBindingResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[191] + mi := &file_config_service_proto_msgTypes[193] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12051,7 +12153,7 @@ func (x *CheckAppTemplateBindingResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckAppTemplateBindingResp.ProtoReflect.Descriptor instead. func (*CheckAppTemplateBindingResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{191} + return file_config_service_proto_rawDescGZIP(), []int{193} } func (x *CheckAppTemplateBindingResp) GetDetails() []*app_template_binding.Conflict { @@ -12061,6 +12163,107 @@ func (x *CheckAppTemplateBindingResp) GetDetails() []*app_template_binding.Confl return nil } +type ImportFromTemplateSetToAppReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + AppId uint32 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + Bindings []*ImportFromTemplateSetToAppReq_Binding `protobuf:"bytes,3,rep,name=bindings,proto3" json:"bindings,omitempty"` +} + +func (x *ImportFromTemplateSetToAppReq) Reset() { + *x = ImportFromTemplateSetToAppReq{} + if protoimpl.UnsafeEnabled { + mi := &file_config_service_proto_msgTypes[194] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportFromTemplateSetToAppReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportFromTemplateSetToAppReq) ProtoMessage() {} + +func (x *ImportFromTemplateSetToAppReq) ProtoReflect() protoreflect.Message { + mi := &file_config_service_proto_msgTypes[194] + 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 ImportFromTemplateSetToAppReq.ProtoReflect.Descriptor instead. +func (*ImportFromTemplateSetToAppReq) Descriptor() ([]byte, []int) { + return file_config_service_proto_rawDescGZIP(), []int{194} +} + +func (x *ImportFromTemplateSetToAppReq) GetBizId() uint32 { + if x != nil { + return x.BizId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq) GetAppId() uint32 { + if x != nil { + return x.AppId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq) GetBindings() []*ImportFromTemplateSetToAppReq_Binding { + if x != nil { + return x.Bindings + } + return nil +} + +type ImportFromTemplateSetToAppResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ImportFromTemplateSetToAppResp) Reset() { + *x = ImportFromTemplateSetToAppResp{} + if protoimpl.UnsafeEnabled { + mi := &file_config_service_proto_msgTypes[195] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportFromTemplateSetToAppResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportFromTemplateSetToAppResp) ProtoMessage() {} + +func (x *ImportFromTemplateSetToAppResp) ProtoReflect() protoreflect.Message { + mi := &file_config_service_proto_msgTypes[195] + 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 ImportFromTemplateSetToAppResp.ProtoReflect.Descriptor instead. +func (*ImportFromTemplateSetToAppResp) Descriptor() ([]byte, []int) { + return file_config_service_proto_rawDescGZIP(), []int{195} +} + type ListTmplBoundCountsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -12074,7 +12277,7 @@ type ListTmplBoundCountsReq struct { func (x *ListTmplBoundCountsReq) Reset() { *x = ListTmplBoundCountsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[192] + mi := &file_config_service_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12087,7 +12290,7 @@ func (x *ListTmplBoundCountsReq) String() string { func (*ListTmplBoundCountsReq) ProtoMessage() {} func (x *ListTmplBoundCountsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[192] + mi := &file_config_service_proto_msgTypes[196] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12100,7 +12303,7 @@ func (x *ListTmplBoundCountsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundCountsReq.ProtoReflect.Descriptor instead. func (*ListTmplBoundCountsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{192} + return file_config_service_proto_rawDescGZIP(), []int{196} } func (x *ListTmplBoundCountsReq) GetBizId() uint32 { @@ -12135,7 +12338,7 @@ type ListTmplBoundCountsResp struct { func (x *ListTmplBoundCountsResp) Reset() { *x = ListTmplBoundCountsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[193] + mi := &file_config_service_proto_msgTypes[197] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12148,7 +12351,7 @@ func (x *ListTmplBoundCountsResp) String() string { func (*ListTmplBoundCountsResp) ProtoMessage() {} func (x *ListTmplBoundCountsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[193] + mi := &file_config_service_proto_msgTypes[197] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12161,7 +12364,7 @@ func (x *ListTmplBoundCountsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundCountsResp.ProtoReflect.Descriptor instead. func (*ListTmplBoundCountsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{193} + return file_config_service_proto_rawDescGZIP(), []int{197} } func (x *ListTmplBoundCountsResp) GetDetails() []*template_binding_relation.TemplateBoundCounts { @@ -12185,7 +12388,7 @@ type ListTmplRevisionBoundCountsReq struct { func (x *ListTmplRevisionBoundCountsReq) Reset() { *x = ListTmplRevisionBoundCountsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[194] + mi := &file_config_service_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12198,7 +12401,7 @@ func (x *ListTmplRevisionBoundCountsReq) String() string { func (*ListTmplRevisionBoundCountsReq) ProtoMessage() {} func (x *ListTmplRevisionBoundCountsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[194] + mi := &file_config_service_proto_msgTypes[198] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12211,7 +12414,7 @@ func (x *ListTmplRevisionBoundCountsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplRevisionBoundCountsReq.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundCountsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{194} + return file_config_service_proto_rawDescGZIP(), []int{198} } func (x *ListTmplRevisionBoundCountsReq) GetBizId() uint32 { @@ -12253,7 +12456,7 @@ type ListTmplRevisionBoundCountsResp struct { func (x *ListTmplRevisionBoundCountsResp) Reset() { *x = ListTmplRevisionBoundCountsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[195] + mi := &file_config_service_proto_msgTypes[199] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12266,7 +12469,7 @@ func (x *ListTmplRevisionBoundCountsResp) String() string { func (*ListTmplRevisionBoundCountsResp) ProtoMessage() {} func (x *ListTmplRevisionBoundCountsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[195] + mi := &file_config_service_proto_msgTypes[199] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12279,7 +12482,7 @@ func (x *ListTmplRevisionBoundCountsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplRevisionBoundCountsResp.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundCountsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{195} + return file_config_service_proto_rawDescGZIP(), []int{199} } func (x *ListTmplRevisionBoundCountsResp) GetDetails() []*template_binding_relation.TemplateRevisionBoundCounts { @@ -12302,7 +12505,7 @@ type ListTmplSetBoundCountsReq struct { func (x *ListTmplSetBoundCountsReq) Reset() { *x = ListTmplSetBoundCountsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[196] + mi := &file_config_service_proto_msgTypes[200] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12315,7 +12518,7 @@ func (x *ListTmplSetBoundCountsReq) String() string { func (*ListTmplSetBoundCountsReq) ProtoMessage() {} func (x *ListTmplSetBoundCountsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[196] + mi := &file_config_service_proto_msgTypes[200] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12328,7 +12531,7 @@ func (x *ListTmplSetBoundCountsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundCountsReq.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundCountsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{196} + return file_config_service_proto_rawDescGZIP(), []int{200} } func (x *ListTmplSetBoundCountsReq) GetBizId() uint32 { @@ -12363,7 +12566,7 @@ type ListTmplSetBoundCountsResp struct { func (x *ListTmplSetBoundCountsResp) Reset() { *x = ListTmplSetBoundCountsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[197] + mi := &file_config_service_proto_msgTypes[201] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12376,7 +12579,7 @@ func (x *ListTmplSetBoundCountsResp) String() string { func (*ListTmplSetBoundCountsResp) ProtoMessage() {} func (x *ListTmplSetBoundCountsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[197] + mi := &file_config_service_proto_msgTypes[201] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12389,7 +12592,7 @@ func (x *ListTmplSetBoundCountsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundCountsResp.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundCountsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{197} + return file_config_service_proto_rawDescGZIP(), []int{201} } func (x *ListTmplSetBoundCountsResp) GetDetails() []*template_binding_relation.TemplateSetBoundCounts { @@ -12417,7 +12620,7 @@ type ListTmplBoundUnnamedAppsReq struct { func (x *ListTmplBoundUnnamedAppsReq) Reset() { *x = ListTmplBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[198] + mi := &file_config_service_proto_msgTypes[202] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12430,7 +12633,7 @@ func (x *ListTmplBoundUnnamedAppsReq) String() string { func (*ListTmplBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListTmplBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[198] + mi := &file_config_service_proto_msgTypes[202] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12443,7 +12646,7 @@ func (x *ListTmplBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{198} + return file_config_service_proto_rawDescGZIP(), []int{202} } func (x *ListTmplBoundUnnamedAppsReq) GetBizId() uint32 { @@ -12514,7 +12717,7 @@ type ListTmplBoundUnnamedAppsResp struct { func (x *ListTmplBoundUnnamedAppsResp) Reset() { *x = ListTmplBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[199] + mi := &file_config_service_proto_msgTypes[203] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12527,7 +12730,7 @@ func (x *ListTmplBoundUnnamedAppsResp) String() string { func (*ListTmplBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListTmplBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[199] + mi := &file_config_service_proto_msgTypes[203] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12540,7 +12743,7 @@ func (x *ListTmplBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{199} + return file_config_service_proto_rawDescGZIP(), []int{203} } func (x *ListTmplBoundUnnamedAppsResp) GetCount() uint32 { @@ -12575,7 +12778,7 @@ type ListTmplBoundNamedAppsReq struct { func (x *ListTmplBoundNamedAppsReq) Reset() { *x = ListTmplBoundNamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[200] + mi := &file_config_service_proto_msgTypes[204] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12588,7 +12791,7 @@ func (x *ListTmplBoundNamedAppsReq) String() string { func (*ListTmplBoundNamedAppsReq) ProtoMessage() {} func (x *ListTmplBoundNamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[200] + mi := &file_config_service_proto_msgTypes[204] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12601,7 +12804,7 @@ func (x *ListTmplBoundNamedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundNamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplBoundNamedAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{200} + return file_config_service_proto_rawDescGZIP(), []int{204} } func (x *ListTmplBoundNamedAppsReq) GetBizId() uint32 { @@ -12672,7 +12875,7 @@ type ListTmplBoundNamedAppsResp struct { func (x *ListTmplBoundNamedAppsResp) Reset() { *x = ListTmplBoundNamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[201] + mi := &file_config_service_proto_msgTypes[205] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12685,7 +12888,7 @@ func (x *ListTmplBoundNamedAppsResp) String() string { func (*ListTmplBoundNamedAppsResp) ProtoMessage() {} func (x *ListTmplBoundNamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[201] + mi := &file_config_service_proto_msgTypes[205] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12698,7 +12901,7 @@ func (x *ListTmplBoundNamedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundNamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplBoundNamedAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{201} + return file_config_service_proto_rawDescGZIP(), []int{205} } func (x *ListTmplBoundNamedAppsResp) GetCount() uint32 { @@ -12731,7 +12934,7 @@ type ListTmplBoundTmplSetsReq struct { func (x *ListTmplBoundTmplSetsReq) Reset() { *x = ListTmplBoundTmplSetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[202] + mi := &file_config_service_proto_msgTypes[206] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12744,7 +12947,7 @@ func (x *ListTmplBoundTmplSetsReq) String() string { func (*ListTmplBoundTmplSetsReq) ProtoMessage() {} func (x *ListTmplBoundTmplSetsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[202] + mi := &file_config_service_proto_msgTypes[206] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12757,7 +12960,7 @@ func (x *ListTmplBoundTmplSetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundTmplSetsReq.ProtoReflect.Descriptor instead. func (*ListTmplBoundTmplSetsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{202} + return file_config_service_proto_rawDescGZIP(), []int{206} } func (x *ListTmplBoundTmplSetsReq) GetBizId() uint32 { @@ -12814,7 +13017,7 @@ type ListTmplBoundTmplSetsResp struct { func (x *ListTmplBoundTmplSetsResp) Reset() { *x = ListTmplBoundTmplSetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[203] + mi := &file_config_service_proto_msgTypes[207] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12827,7 +13030,7 @@ func (x *ListTmplBoundTmplSetsResp) String() string { func (*ListTmplBoundTmplSetsResp) ProtoMessage() {} func (x *ListTmplBoundTmplSetsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[203] + mi := &file_config_service_proto_msgTypes[207] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12840,7 +13043,7 @@ func (x *ListTmplBoundTmplSetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundTmplSetsResp.ProtoReflect.Descriptor instead. func (*ListTmplBoundTmplSetsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{203} + return file_config_service_proto_rawDescGZIP(), []int{207} } func (x *ListTmplBoundTmplSetsResp) GetCount() uint32 { @@ -12873,7 +13076,7 @@ type ListMultiTmplBoundTmplSetsReq struct { func (x *ListMultiTmplBoundTmplSetsReq) Reset() { *x = ListMultiTmplBoundTmplSetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[204] + mi := &file_config_service_proto_msgTypes[208] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12886,7 +13089,7 @@ func (x *ListMultiTmplBoundTmplSetsReq) String() string { func (*ListMultiTmplBoundTmplSetsReq) ProtoMessage() {} func (x *ListMultiTmplBoundTmplSetsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[204] + mi := &file_config_service_proto_msgTypes[208] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12899,7 +13102,7 @@ func (x *ListMultiTmplBoundTmplSetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMultiTmplBoundTmplSetsReq.ProtoReflect.Descriptor instead. func (*ListMultiTmplBoundTmplSetsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{204} + return file_config_service_proto_rawDescGZIP(), []int{208} } func (x *ListMultiTmplBoundTmplSetsReq) GetBizId() uint32 { @@ -12956,7 +13159,7 @@ type ListMultiTmplBoundTmplSetsResp struct { func (x *ListMultiTmplBoundTmplSetsResp) Reset() { *x = ListMultiTmplBoundTmplSetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[205] + mi := &file_config_service_proto_msgTypes[209] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12969,7 +13172,7 @@ func (x *ListMultiTmplBoundTmplSetsResp) String() string { func (*ListMultiTmplBoundTmplSetsResp) ProtoMessage() {} func (x *ListMultiTmplBoundTmplSetsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[205] + mi := &file_config_service_proto_msgTypes[209] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12982,7 +13185,7 @@ func (x *ListMultiTmplBoundTmplSetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMultiTmplBoundTmplSetsResp.ProtoReflect.Descriptor instead. func (*ListMultiTmplBoundTmplSetsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{205} + return file_config_service_proto_rawDescGZIP(), []int{209} } func (x *ListMultiTmplBoundTmplSetsResp) GetCount() uint32 { @@ -13018,7 +13221,7 @@ type ListTmplRevisionBoundUnnamedAppsReq struct { func (x *ListTmplRevisionBoundUnnamedAppsReq) Reset() { *x = ListTmplRevisionBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[206] + mi := &file_config_service_proto_msgTypes[210] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13031,7 +13234,7 @@ func (x *ListTmplRevisionBoundUnnamedAppsReq) String() string { func (*ListTmplRevisionBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListTmplRevisionBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[206] + mi := &file_config_service_proto_msgTypes[210] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13044,7 +13247,7 @@ func (x *ListTmplRevisionBoundUnnamedAppsReq) ProtoReflect() protoreflect.Messag // Deprecated: Use ListTmplRevisionBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{206} + return file_config_service_proto_rawDescGZIP(), []int{210} } func (x *ListTmplRevisionBoundUnnamedAppsReq) GetBizId() uint32 { @@ -13122,7 +13325,7 @@ type ListTmplRevisionBoundUnnamedAppsResp struct { func (x *ListTmplRevisionBoundUnnamedAppsResp) Reset() { *x = ListTmplRevisionBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[207] + mi := &file_config_service_proto_msgTypes[211] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13135,7 +13338,7 @@ func (x *ListTmplRevisionBoundUnnamedAppsResp) String() string { func (*ListTmplRevisionBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListTmplRevisionBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[207] + mi := &file_config_service_proto_msgTypes[211] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13148,7 +13351,7 @@ func (x *ListTmplRevisionBoundUnnamedAppsResp) ProtoReflect() protoreflect.Messa // Deprecated: Use ListTmplRevisionBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{207} + return file_config_service_proto_rawDescGZIP(), []int{211} } func (x *ListTmplRevisionBoundUnnamedAppsResp) GetCount() uint32 { @@ -13184,7 +13387,7 @@ type ListTmplRevisionBoundNamedAppsReq struct { func (x *ListTmplRevisionBoundNamedAppsReq) Reset() { *x = ListTmplRevisionBoundNamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[208] + mi := &file_config_service_proto_msgTypes[212] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13197,7 +13400,7 @@ func (x *ListTmplRevisionBoundNamedAppsReq) String() string { func (*ListTmplRevisionBoundNamedAppsReq) ProtoMessage() {} func (x *ListTmplRevisionBoundNamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[208] + mi := &file_config_service_proto_msgTypes[212] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13210,7 +13413,7 @@ func (x *ListTmplRevisionBoundNamedAppsReq) ProtoReflect() protoreflect.Message // Deprecated: Use ListTmplRevisionBoundNamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundNamedAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{208} + return file_config_service_proto_rawDescGZIP(), []int{212} } func (x *ListTmplRevisionBoundNamedAppsReq) GetBizId() uint32 { @@ -13288,7 +13491,7 @@ type ListTmplRevisionBoundNamedAppsResp struct { func (x *ListTmplRevisionBoundNamedAppsResp) Reset() { *x = ListTmplRevisionBoundNamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[209] + mi := &file_config_service_proto_msgTypes[213] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13301,7 +13504,7 @@ func (x *ListTmplRevisionBoundNamedAppsResp) String() string { func (*ListTmplRevisionBoundNamedAppsResp) ProtoMessage() {} func (x *ListTmplRevisionBoundNamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[209] + mi := &file_config_service_proto_msgTypes[213] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13314,7 +13517,7 @@ func (x *ListTmplRevisionBoundNamedAppsResp) ProtoReflect() protoreflect.Message // Deprecated: Use ListTmplRevisionBoundNamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundNamedAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{209} + return file_config_service_proto_rawDescGZIP(), []int{213} } func (x *ListTmplRevisionBoundNamedAppsResp) GetCount() uint32 { @@ -13347,7 +13550,7 @@ type ListTmplSetBoundUnnamedAppsReq struct { func (x *ListTmplSetBoundUnnamedAppsReq) Reset() { *x = ListTmplSetBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[210] + mi := &file_config_service_proto_msgTypes[214] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13360,7 +13563,7 @@ func (x *ListTmplSetBoundUnnamedAppsReq) String() string { func (*ListTmplSetBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListTmplSetBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[210] + mi := &file_config_service_proto_msgTypes[214] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13373,7 +13576,7 @@ func (x *ListTmplSetBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{210} + return file_config_service_proto_rawDescGZIP(), []int{214} } func (x *ListTmplSetBoundUnnamedAppsReq) GetBizId() uint32 { @@ -13430,7 +13633,7 @@ type ListTmplSetBoundUnnamedAppsResp struct { func (x *ListTmplSetBoundUnnamedAppsResp) Reset() { *x = ListTmplSetBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[211] + mi := &file_config_service_proto_msgTypes[215] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13443,7 +13646,7 @@ func (x *ListTmplSetBoundUnnamedAppsResp) String() string { func (*ListTmplSetBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListTmplSetBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[211] + mi := &file_config_service_proto_msgTypes[215] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13456,7 +13659,7 @@ func (x *ListTmplSetBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{211} + return file_config_service_proto_rawDescGZIP(), []int{215} } func (x *ListTmplSetBoundUnnamedAppsResp) GetCount() uint32 { @@ -13489,7 +13692,7 @@ type ListMultiTmplSetBoundUnnamedAppsReq struct { func (x *ListMultiTmplSetBoundUnnamedAppsReq) Reset() { *x = ListMultiTmplSetBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[212] + mi := &file_config_service_proto_msgTypes[216] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13502,7 +13705,7 @@ func (x *ListMultiTmplSetBoundUnnamedAppsReq) String() string { func (*ListMultiTmplSetBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListMultiTmplSetBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[212] + mi := &file_config_service_proto_msgTypes[216] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13515,7 +13718,7 @@ func (x *ListMultiTmplSetBoundUnnamedAppsReq) ProtoReflect() protoreflect.Messag // Deprecated: Use ListMultiTmplSetBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListMultiTmplSetBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{212} + return file_config_service_proto_rawDescGZIP(), []int{216} } func (x *ListMultiTmplSetBoundUnnamedAppsReq) GetBizId() uint32 { @@ -13572,7 +13775,7 @@ type ListMultiTmplSetBoundUnnamedAppsResp struct { func (x *ListMultiTmplSetBoundUnnamedAppsResp) Reset() { *x = ListMultiTmplSetBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[213] + mi := &file_config_service_proto_msgTypes[217] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13585,7 +13788,7 @@ func (x *ListMultiTmplSetBoundUnnamedAppsResp) String() string { func (*ListMultiTmplSetBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListMultiTmplSetBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[213] + mi := &file_config_service_proto_msgTypes[217] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13598,7 +13801,7 @@ func (x *ListMultiTmplSetBoundUnnamedAppsResp) ProtoReflect() protoreflect.Messa // Deprecated: Use ListMultiTmplSetBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListMultiTmplSetBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{213} + return file_config_service_proto_rawDescGZIP(), []int{217} } func (x *ListMultiTmplSetBoundUnnamedAppsResp) GetCount() uint32 { @@ -13629,7 +13832,7 @@ type CheckTemplateSetReferencesAppsReq struct { func (x *CheckTemplateSetReferencesAppsReq) Reset() { *x = CheckTemplateSetReferencesAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[214] + mi := &file_config_service_proto_msgTypes[218] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13642,7 +13845,7 @@ func (x *CheckTemplateSetReferencesAppsReq) String() string { func (*CheckTemplateSetReferencesAppsReq) ProtoMessage() {} func (x *CheckTemplateSetReferencesAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[214] + mi := &file_config_service_proto_msgTypes[218] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13655,7 +13858,7 @@ func (x *CheckTemplateSetReferencesAppsReq) ProtoReflect() protoreflect.Message // Deprecated: Use CheckTemplateSetReferencesAppsReq.ProtoReflect.Descriptor instead. func (*CheckTemplateSetReferencesAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{214} + return file_config_service_proto_rawDescGZIP(), []int{218} } func (x *CheckTemplateSetReferencesAppsReq) GetBizId() uint32 { @@ -13697,7 +13900,7 @@ type CheckTemplateSetReferencesAppsResp struct { func (x *CheckTemplateSetReferencesAppsResp) Reset() { *x = CheckTemplateSetReferencesAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[215] + mi := &file_config_service_proto_msgTypes[219] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13710,7 +13913,7 @@ func (x *CheckTemplateSetReferencesAppsResp) String() string { func (*CheckTemplateSetReferencesAppsResp) ProtoMessage() {} func (x *CheckTemplateSetReferencesAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[215] + mi := &file_config_service_proto_msgTypes[219] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13723,7 +13926,7 @@ func (x *CheckTemplateSetReferencesAppsResp) ProtoReflect() protoreflect.Message // Deprecated: Use CheckTemplateSetReferencesAppsResp.ProtoReflect.Descriptor instead. func (*CheckTemplateSetReferencesAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{215} + return file_config_service_proto_rawDescGZIP(), []int{219} } func (x *CheckTemplateSetReferencesAppsResp) GetItems() []*CheckTemplateSetReferencesAppsResp_Item { @@ -13749,7 +13952,7 @@ type ListTmplSetBoundNamedAppsReq struct { func (x *ListTmplSetBoundNamedAppsReq) Reset() { *x = ListTmplSetBoundNamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[216] + mi := &file_config_service_proto_msgTypes[220] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13762,7 +13965,7 @@ func (x *ListTmplSetBoundNamedAppsReq) String() string { func (*ListTmplSetBoundNamedAppsReq) ProtoMessage() {} func (x *ListTmplSetBoundNamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[216] + mi := &file_config_service_proto_msgTypes[220] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13775,7 +13978,7 @@ func (x *ListTmplSetBoundNamedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundNamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundNamedAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{216} + return file_config_service_proto_rawDescGZIP(), []int{220} } func (x *ListTmplSetBoundNamedAppsReq) GetBizId() uint32 { @@ -13832,7 +14035,7 @@ type ListTmplSetBoundNamedAppsResp struct { func (x *ListTmplSetBoundNamedAppsResp) Reset() { *x = ListTmplSetBoundNamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[217] + mi := &file_config_service_proto_msgTypes[221] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13845,7 +14048,7 @@ func (x *ListTmplSetBoundNamedAppsResp) String() string { func (*ListTmplSetBoundNamedAppsResp) ProtoMessage() {} func (x *ListTmplSetBoundNamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[217] + mi := &file_config_service_proto_msgTypes[221] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13858,7 +14061,7 @@ func (x *ListTmplSetBoundNamedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundNamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundNamedAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{217} + return file_config_service_proto_rawDescGZIP(), []int{221} } func (x *ListTmplSetBoundNamedAppsResp) GetCount() uint32 { @@ -13891,7 +14094,7 @@ type ListLatestTmplBoundUnnamedAppsReq struct { func (x *ListLatestTmplBoundUnnamedAppsReq) Reset() { *x = ListLatestTmplBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[218] + mi := &file_config_service_proto_msgTypes[222] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13904,7 +14107,7 @@ func (x *ListLatestTmplBoundUnnamedAppsReq) String() string { func (*ListLatestTmplBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListLatestTmplBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[218] + mi := &file_config_service_proto_msgTypes[222] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13917,7 +14120,7 @@ func (x *ListLatestTmplBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message // Deprecated: Use ListLatestTmplBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListLatestTmplBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{218} + return file_config_service_proto_rawDescGZIP(), []int{222} } func (x *ListLatestTmplBoundUnnamedAppsReq) GetBizId() uint32 { @@ -13974,7 +14177,7 @@ type ListLatestTmplBoundUnnamedAppsResp struct { func (x *ListLatestTmplBoundUnnamedAppsResp) Reset() { *x = ListLatestTmplBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[219] + mi := &file_config_service_proto_msgTypes[223] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13987,7 +14190,7 @@ func (x *ListLatestTmplBoundUnnamedAppsResp) String() string { func (*ListLatestTmplBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListLatestTmplBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[219] + mi := &file_config_service_proto_msgTypes[223] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14000,7 +14203,7 @@ func (x *ListLatestTmplBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message // Deprecated: Use ListLatestTmplBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListLatestTmplBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{219} + return file_config_service_proto_rawDescGZIP(), []int{223} } func (x *ListLatestTmplBoundUnnamedAppsResp) GetCount() uint32 { @@ -14032,7 +14235,7 @@ type CreateTemplateVariableReq struct { func (x *CreateTemplateVariableReq) Reset() { *x = CreateTemplateVariableReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[220] + mi := &file_config_service_proto_msgTypes[224] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14045,7 +14248,7 @@ func (x *CreateTemplateVariableReq) String() string { func (*CreateTemplateVariableReq) ProtoMessage() {} func (x *CreateTemplateVariableReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[220] + mi := &file_config_service_proto_msgTypes[224] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14058,7 +14261,7 @@ func (x *CreateTemplateVariableReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateVariableReq.ProtoReflect.Descriptor instead. func (*CreateTemplateVariableReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{220} + return file_config_service_proto_rawDescGZIP(), []int{224} } func (x *CreateTemplateVariableReq) GetBizId() uint32 { @@ -14107,7 +14310,7 @@ type CreateTemplateVariableResp struct { func (x *CreateTemplateVariableResp) Reset() { *x = CreateTemplateVariableResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[221] + mi := &file_config_service_proto_msgTypes[225] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14120,7 +14323,7 @@ func (x *CreateTemplateVariableResp) String() string { func (*CreateTemplateVariableResp) ProtoMessage() {} func (x *CreateTemplateVariableResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[221] + mi := &file_config_service_proto_msgTypes[225] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14133,7 +14336,7 @@ func (x *CreateTemplateVariableResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateVariableResp.ProtoReflect.Descriptor instead. func (*CreateTemplateVariableResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{221} + return file_config_service_proto_rawDescGZIP(), []int{225} } func (x *CreateTemplateVariableResp) GetId() uint32 { @@ -14157,7 +14360,7 @@ type UpdateTemplateVariableReq struct { func (x *UpdateTemplateVariableReq) Reset() { *x = UpdateTemplateVariableReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[222] + mi := &file_config_service_proto_msgTypes[226] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14170,7 +14373,7 @@ func (x *UpdateTemplateVariableReq) String() string { func (*UpdateTemplateVariableReq) ProtoMessage() {} func (x *UpdateTemplateVariableReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[222] + mi := &file_config_service_proto_msgTypes[226] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14183,7 +14386,7 @@ func (x *UpdateTemplateVariableReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateVariableReq.ProtoReflect.Descriptor instead. func (*UpdateTemplateVariableReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{222} + return file_config_service_proto_rawDescGZIP(), []int{226} } func (x *UpdateTemplateVariableReq) GetBizId() uint32 { @@ -14223,7 +14426,7 @@ type UpdateTemplateVariableResp struct { func (x *UpdateTemplateVariableResp) Reset() { *x = UpdateTemplateVariableResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[223] + mi := &file_config_service_proto_msgTypes[227] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14236,7 +14439,7 @@ func (x *UpdateTemplateVariableResp) String() string { func (*UpdateTemplateVariableResp) ProtoMessage() {} func (x *UpdateTemplateVariableResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[223] + mi := &file_config_service_proto_msgTypes[227] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14249,7 +14452,7 @@ func (x *UpdateTemplateVariableResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateVariableResp.ProtoReflect.Descriptor instead. func (*UpdateTemplateVariableResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{223} + return file_config_service_proto_rawDescGZIP(), []int{227} } type DeleteTemplateVariableReq struct { @@ -14264,7 +14467,7 @@ type DeleteTemplateVariableReq struct { func (x *DeleteTemplateVariableReq) Reset() { *x = DeleteTemplateVariableReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[224] + mi := &file_config_service_proto_msgTypes[228] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14277,7 +14480,7 @@ func (x *DeleteTemplateVariableReq) String() string { func (*DeleteTemplateVariableReq) ProtoMessage() {} func (x *DeleteTemplateVariableReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[224] + mi := &file_config_service_proto_msgTypes[228] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14290,7 +14493,7 @@ func (x *DeleteTemplateVariableReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateVariableReq.ProtoReflect.Descriptor instead. func (*DeleteTemplateVariableReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{224} + return file_config_service_proto_rawDescGZIP(), []int{228} } func (x *DeleteTemplateVariableReq) GetBizId() uint32 { @@ -14316,7 +14519,7 @@ type DeleteTemplateVariableResp struct { func (x *DeleteTemplateVariableResp) Reset() { *x = DeleteTemplateVariableResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[225] + mi := &file_config_service_proto_msgTypes[229] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14329,7 +14532,7 @@ func (x *DeleteTemplateVariableResp) String() string { func (*DeleteTemplateVariableResp) ProtoMessage() {} func (x *DeleteTemplateVariableResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[225] + mi := &file_config_service_proto_msgTypes[229] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14342,7 +14545,7 @@ func (x *DeleteTemplateVariableResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateVariableResp.ProtoReflect.Descriptor instead. func (*DeleteTemplateVariableResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{225} + return file_config_service_proto_rawDescGZIP(), []int{229} } type ListTemplateVariablesReq struct { @@ -14361,7 +14564,7 @@ type ListTemplateVariablesReq struct { func (x *ListTemplateVariablesReq) Reset() { *x = ListTemplateVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[226] + mi := &file_config_service_proto_msgTypes[230] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14374,7 +14577,7 @@ func (x *ListTemplateVariablesReq) String() string { func (*ListTemplateVariablesReq) ProtoMessage() {} func (x *ListTemplateVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[226] + mi := &file_config_service_proto_msgTypes[230] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14387,7 +14590,7 @@ func (x *ListTemplateVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateVariablesReq.ProtoReflect.Descriptor instead. func (*ListTemplateVariablesReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{226} + return file_config_service_proto_rawDescGZIP(), []int{230} } func (x *ListTemplateVariablesReq) GetBizId() uint32 { @@ -14444,7 +14647,7 @@ type ListTemplateVariablesResp struct { func (x *ListTemplateVariablesResp) Reset() { *x = ListTemplateVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[227] + mi := &file_config_service_proto_msgTypes[231] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14457,7 +14660,7 @@ func (x *ListTemplateVariablesResp) String() string { func (*ListTemplateVariablesResp) ProtoMessage() {} func (x *ListTemplateVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[227] + mi := &file_config_service_proto_msgTypes[231] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14470,7 +14673,7 @@ func (x *ListTemplateVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateVariablesResp.ProtoReflect.Descriptor instead. func (*ListTemplateVariablesResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{227} + return file_config_service_proto_rawDescGZIP(), []int{231} } func (x *ListTemplateVariablesResp) GetCount() uint32 { @@ -14500,7 +14703,7 @@ type ImportTemplateVariablesReq struct { func (x *ImportTemplateVariablesReq) Reset() { *x = ImportTemplateVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[228] + mi := &file_config_service_proto_msgTypes[232] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14513,7 +14716,7 @@ func (x *ImportTemplateVariablesReq) String() string { func (*ImportTemplateVariablesReq) ProtoMessage() {} func (x *ImportTemplateVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[228] + mi := &file_config_service_proto_msgTypes[232] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14526,7 +14729,7 @@ func (x *ImportTemplateVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportTemplateVariablesReq.ProtoReflect.Descriptor instead. func (*ImportTemplateVariablesReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{228} + return file_config_service_proto_rawDescGZIP(), []int{232} } func (x *ImportTemplateVariablesReq) GetBizId() uint32 { @@ -14561,7 +14764,7 @@ type ImportTemplateVariablesResp struct { func (x *ImportTemplateVariablesResp) Reset() { *x = ImportTemplateVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[229] + mi := &file_config_service_proto_msgTypes[233] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14574,7 +14777,7 @@ func (x *ImportTemplateVariablesResp) String() string { func (*ImportTemplateVariablesResp) ProtoMessage() {} func (x *ImportTemplateVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[229] + mi := &file_config_service_proto_msgTypes[233] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14587,7 +14790,7 @@ func (x *ImportTemplateVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportTemplateVariablesResp.ProtoReflect.Descriptor instead. func (*ImportTemplateVariablesResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{229} + return file_config_service_proto_rawDescGZIP(), []int{233} } func (x *ImportTemplateVariablesResp) GetVariableCount() uint32 { @@ -14609,7 +14812,7 @@ type ExtractAppTmplVariablesReq struct { func (x *ExtractAppTmplVariablesReq) Reset() { *x = ExtractAppTmplVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[230] + mi := &file_config_service_proto_msgTypes[234] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14622,7 +14825,7 @@ func (x *ExtractAppTmplVariablesReq) String() string { func (*ExtractAppTmplVariablesReq) ProtoMessage() {} func (x *ExtractAppTmplVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[230] + mi := &file_config_service_proto_msgTypes[234] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14635,7 +14838,7 @@ func (x *ExtractAppTmplVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtractAppTmplVariablesReq.ProtoReflect.Descriptor instead. func (*ExtractAppTmplVariablesReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{230} + return file_config_service_proto_rawDescGZIP(), []int{234} } func (x *ExtractAppTmplVariablesReq) GetBizId() uint32 { @@ -14663,7 +14866,7 @@ type ExtractAppTmplVariablesResp struct { func (x *ExtractAppTmplVariablesResp) Reset() { *x = ExtractAppTmplVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[231] + mi := &file_config_service_proto_msgTypes[235] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14676,7 +14879,7 @@ func (x *ExtractAppTmplVariablesResp) String() string { func (*ExtractAppTmplVariablesResp) ProtoMessage() {} func (x *ExtractAppTmplVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[231] + mi := &file_config_service_proto_msgTypes[235] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14689,7 +14892,7 @@ func (x *ExtractAppTmplVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtractAppTmplVariablesResp.ProtoReflect.Descriptor instead. func (*ExtractAppTmplVariablesResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{231} + return file_config_service_proto_rawDescGZIP(), []int{235} } func (x *ExtractAppTmplVariablesResp) GetDetails() []string { @@ -14711,7 +14914,7 @@ type GetAppTmplVariableRefsReq struct { func (x *GetAppTmplVariableRefsReq) Reset() { *x = GetAppTmplVariableRefsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[232] + mi := &file_config_service_proto_msgTypes[236] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14724,7 +14927,7 @@ func (x *GetAppTmplVariableRefsReq) String() string { func (*GetAppTmplVariableRefsReq) ProtoMessage() {} func (x *GetAppTmplVariableRefsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[232] + mi := &file_config_service_proto_msgTypes[236] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14737,7 +14940,7 @@ func (x *GetAppTmplVariableRefsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAppTmplVariableRefsReq.ProtoReflect.Descriptor instead. func (*GetAppTmplVariableRefsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{232} + return file_config_service_proto_rawDescGZIP(), []int{236} } func (x *GetAppTmplVariableRefsReq) GetBizId() uint32 { @@ -14765,7 +14968,7 @@ type GetAppTmplVariableRefsResp struct { func (x *GetAppTmplVariableRefsResp) Reset() { *x = GetAppTmplVariableRefsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[233] + mi := &file_config_service_proto_msgTypes[237] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14778,7 +14981,7 @@ func (x *GetAppTmplVariableRefsResp) String() string { func (*GetAppTmplVariableRefsResp) ProtoMessage() {} func (x *GetAppTmplVariableRefsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[233] + mi := &file_config_service_proto_msgTypes[237] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14791,7 +14994,7 @@ func (x *GetAppTmplVariableRefsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAppTmplVariableRefsResp.ProtoReflect.Descriptor instead. func (*GetAppTmplVariableRefsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{233} + return file_config_service_proto_rawDescGZIP(), []int{237} } func (x *GetAppTmplVariableRefsResp) GetDetails() []*app_template_variable.AppTemplateVariableReference { @@ -14814,7 +15017,7 @@ type GetReleasedAppTmplVariableRefsReq struct { func (x *GetReleasedAppTmplVariableRefsReq) Reset() { *x = GetReleasedAppTmplVariableRefsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[234] + mi := &file_config_service_proto_msgTypes[238] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14827,7 +15030,7 @@ func (x *GetReleasedAppTmplVariableRefsReq) String() string { func (*GetReleasedAppTmplVariableRefsReq) ProtoMessage() {} func (x *GetReleasedAppTmplVariableRefsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[234] + mi := &file_config_service_proto_msgTypes[238] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14840,7 +15043,7 @@ func (x *GetReleasedAppTmplVariableRefsReq) ProtoReflect() protoreflect.Message // Deprecated: Use GetReleasedAppTmplVariableRefsReq.ProtoReflect.Descriptor instead. func (*GetReleasedAppTmplVariableRefsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{234} + return file_config_service_proto_rawDescGZIP(), []int{238} } func (x *GetReleasedAppTmplVariableRefsReq) GetBizId() uint32 { @@ -14875,7 +15078,7 @@ type GetReleasedAppTmplVariableRefsResp struct { func (x *GetReleasedAppTmplVariableRefsResp) Reset() { *x = GetReleasedAppTmplVariableRefsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[235] + mi := &file_config_service_proto_msgTypes[239] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14888,7 +15091,7 @@ func (x *GetReleasedAppTmplVariableRefsResp) String() string { func (*GetReleasedAppTmplVariableRefsResp) ProtoMessage() {} func (x *GetReleasedAppTmplVariableRefsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[235] + mi := &file_config_service_proto_msgTypes[239] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14901,7 +15104,7 @@ func (x *GetReleasedAppTmplVariableRefsResp) ProtoReflect() protoreflect.Message // Deprecated: Use GetReleasedAppTmplVariableRefsResp.ProtoReflect.Descriptor instead. func (*GetReleasedAppTmplVariableRefsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{235} + return file_config_service_proto_rawDescGZIP(), []int{239} } func (x *GetReleasedAppTmplVariableRefsResp) GetDetails() []*app_template_variable.AppTemplateVariableReference { @@ -14924,7 +15127,7 @@ type UpdateAppTmplVariablesReq struct { func (x *UpdateAppTmplVariablesReq) Reset() { *x = UpdateAppTmplVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[236] + mi := &file_config_service_proto_msgTypes[240] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14937,7 +15140,7 @@ func (x *UpdateAppTmplVariablesReq) String() string { func (*UpdateAppTmplVariablesReq) ProtoMessage() {} func (x *UpdateAppTmplVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[236] + mi := &file_config_service_proto_msgTypes[240] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14950,7 +15153,7 @@ func (x *UpdateAppTmplVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppTmplVariablesReq.ProtoReflect.Descriptor instead. func (*UpdateAppTmplVariablesReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{236} + return file_config_service_proto_rawDescGZIP(), []int{240} } func (x *UpdateAppTmplVariablesReq) GetBizId() uint32 { @@ -14983,7 +15186,7 @@ type UpdateAppTmplVariablesResp struct { func (x *UpdateAppTmplVariablesResp) Reset() { *x = UpdateAppTmplVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[237] + mi := &file_config_service_proto_msgTypes[241] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14996,7 +15199,7 @@ func (x *UpdateAppTmplVariablesResp) String() string { func (*UpdateAppTmplVariablesResp) ProtoMessage() {} func (x *UpdateAppTmplVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[237] + mi := &file_config_service_proto_msgTypes[241] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15009,7 +15212,7 @@ func (x *UpdateAppTmplVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppTmplVariablesResp.ProtoReflect.Descriptor instead. func (*UpdateAppTmplVariablesResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{237} + return file_config_service_proto_rawDescGZIP(), []int{241} } type ListAppTmplVariablesReq struct { @@ -15024,7 +15227,7 @@ type ListAppTmplVariablesReq struct { func (x *ListAppTmplVariablesReq) Reset() { *x = ListAppTmplVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[238] + mi := &file_config_service_proto_msgTypes[242] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15037,7 +15240,7 @@ func (x *ListAppTmplVariablesReq) String() string { func (*ListAppTmplVariablesReq) ProtoMessage() {} func (x *ListAppTmplVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[238] + mi := &file_config_service_proto_msgTypes[242] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15050,7 +15253,7 @@ func (x *ListAppTmplVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTmplVariablesReq.ProtoReflect.Descriptor instead. func (*ListAppTmplVariablesReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{238} + return file_config_service_proto_rawDescGZIP(), []int{242} } func (x *ListAppTmplVariablesReq) GetBizId() uint32 { @@ -15078,7 +15281,7 @@ type ListAppTmplVariablesResp struct { func (x *ListAppTmplVariablesResp) Reset() { *x = ListAppTmplVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[239] + mi := &file_config_service_proto_msgTypes[243] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15091,7 +15294,7 @@ func (x *ListAppTmplVariablesResp) String() string { func (*ListAppTmplVariablesResp) ProtoMessage() {} func (x *ListAppTmplVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[239] + mi := &file_config_service_proto_msgTypes[243] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15104,7 +15307,7 @@ func (x *ListAppTmplVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTmplVariablesResp.ProtoReflect.Descriptor instead. func (*ListAppTmplVariablesResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{239} + return file_config_service_proto_rawDescGZIP(), []int{243} } func (x *ListAppTmplVariablesResp) GetDetails() []*template_variable.TemplateVariableSpec { @@ -15127,7 +15330,7 @@ type ListReleasedAppTmplVariablesReq struct { func (x *ListReleasedAppTmplVariablesReq) Reset() { *x = ListReleasedAppTmplVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[240] + mi := &file_config_service_proto_msgTypes[244] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15140,7 +15343,7 @@ func (x *ListReleasedAppTmplVariablesReq) String() string { func (*ListReleasedAppTmplVariablesReq) ProtoMessage() {} func (x *ListReleasedAppTmplVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[240] + mi := &file_config_service_proto_msgTypes[244] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15153,7 +15356,7 @@ func (x *ListReleasedAppTmplVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReleasedAppTmplVariablesReq.ProtoReflect.Descriptor instead. func (*ListReleasedAppTmplVariablesReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{240} + return file_config_service_proto_rawDescGZIP(), []int{244} } func (x *ListReleasedAppTmplVariablesReq) GetBizId() uint32 { @@ -15188,7 +15391,7 @@ type ListReleasedAppTmplVariablesResp struct { func (x *ListReleasedAppTmplVariablesResp) Reset() { *x = ListReleasedAppTmplVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[241] + mi := &file_config_service_proto_msgTypes[245] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15201,7 +15404,7 @@ func (x *ListReleasedAppTmplVariablesResp) String() string { func (*ListReleasedAppTmplVariablesResp) ProtoMessage() {} func (x *ListReleasedAppTmplVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[241] + mi := &file_config_service_proto_msgTypes[245] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15214,7 +15417,7 @@ func (x *ListReleasedAppTmplVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReleasedAppTmplVariablesResp.ProtoReflect.Descriptor instead. func (*ListReleasedAppTmplVariablesResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{241} + return file_config_service_proto_rawDescGZIP(), []int{245} } func (x *ListReleasedAppTmplVariablesResp) GetDetails() []*template_variable.TemplateVariableSpec { @@ -15241,7 +15444,7 @@ type CreateGroupReq struct { func (x *CreateGroupReq) Reset() { *x = CreateGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[242] + mi := &file_config_service_proto_msgTypes[246] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15254,7 +15457,7 @@ func (x *CreateGroupReq) String() string { func (*CreateGroupReq) ProtoMessage() {} func (x *CreateGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[242] + mi := &file_config_service_proto_msgTypes[246] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15267,7 +15470,7 @@ func (x *CreateGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGroupReq.ProtoReflect.Descriptor instead. func (*CreateGroupReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{242} + return file_config_service_proto_rawDescGZIP(), []int{246} } func (x *CreateGroupReq) GetBizId() uint32 { @@ -15330,7 +15533,7 @@ type CreateGroupResp struct { func (x *CreateGroupResp) Reset() { *x = CreateGroupResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[243] + mi := &file_config_service_proto_msgTypes[247] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15343,7 +15546,7 @@ func (x *CreateGroupResp) String() string { func (*CreateGroupResp) ProtoMessage() {} func (x *CreateGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[243] + mi := &file_config_service_proto_msgTypes[247] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15356,7 +15559,7 @@ func (x *CreateGroupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGroupResp.ProtoReflect.Descriptor instead. func (*CreateGroupResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{243} + return file_config_service_proto_rawDescGZIP(), []int{247} } func (x *CreateGroupResp) GetId() uint32 { @@ -15384,7 +15587,7 @@ type UpdateGroupReq struct { func (x *UpdateGroupReq) Reset() { *x = UpdateGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[244] + mi := &file_config_service_proto_msgTypes[248] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15397,7 +15600,7 @@ func (x *UpdateGroupReq) String() string { func (*UpdateGroupReq) ProtoMessage() {} func (x *UpdateGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[244] + mi := &file_config_service_proto_msgTypes[248] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15410,7 +15613,7 @@ func (x *UpdateGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGroupReq.ProtoReflect.Descriptor instead. func (*UpdateGroupReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{244} + return file_config_service_proto_rawDescGZIP(), []int{248} } func (x *UpdateGroupReq) GetBizId() uint32 { @@ -15478,7 +15681,7 @@ type UpdateGroupResp struct { func (x *UpdateGroupResp) Reset() { *x = UpdateGroupResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[245] + mi := &file_config_service_proto_msgTypes[249] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15491,7 +15694,7 @@ func (x *UpdateGroupResp) String() string { func (*UpdateGroupResp) ProtoMessage() {} func (x *UpdateGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[245] + mi := &file_config_service_proto_msgTypes[249] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15504,7 +15707,7 @@ func (x *UpdateGroupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGroupResp.ProtoReflect.Descriptor instead. func (*UpdateGroupResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{245} + return file_config_service_proto_rawDescGZIP(), []int{249} } type DeleteGroupReq struct { @@ -15519,7 +15722,7 @@ type DeleteGroupReq struct { func (x *DeleteGroupReq) Reset() { *x = DeleteGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[246] + mi := &file_config_service_proto_msgTypes[250] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15532,7 +15735,7 @@ func (x *DeleteGroupReq) String() string { func (*DeleteGroupReq) ProtoMessage() {} func (x *DeleteGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[246] + mi := &file_config_service_proto_msgTypes[250] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15545,7 +15748,7 @@ func (x *DeleteGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGroupReq.ProtoReflect.Descriptor instead. func (*DeleteGroupReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{246} + return file_config_service_proto_rawDescGZIP(), []int{250} } func (x *DeleteGroupReq) GetBizId() uint32 { @@ -15571,7 +15774,7 @@ type DeleteGroupResp struct { func (x *DeleteGroupResp) Reset() { *x = DeleteGroupResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[247] + mi := &file_config_service_proto_msgTypes[251] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15584,7 +15787,7 @@ func (x *DeleteGroupResp) String() string { func (*DeleteGroupResp) ProtoMessage() {} func (x *DeleteGroupResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[247] + mi := &file_config_service_proto_msgTypes[251] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15597,7 +15800,7 @@ func (x *DeleteGroupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGroupResp.ProtoReflect.Descriptor instead. func (*DeleteGroupResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{247} + return file_config_service_proto_rawDescGZIP(), []int{251} } type ListAllGroupsReq struct { @@ -15611,7 +15814,7 @@ type ListAllGroupsReq struct { func (x *ListAllGroupsReq) Reset() { *x = ListAllGroupsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[248] + mi := &file_config_service_proto_msgTypes[252] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15624,7 +15827,7 @@ func (x *ListAllGroupsReq) String() string { func (*ListAllGroupsReq) ProtoMessage() {} func (x *ListAllGroupsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[248] + mi := &file_config_service_proto_msgTypes[252] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15637,7 +15840,7 @@ func (x *ListAllGroupsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAllGroupsReq.ProtoReflect.Descriptor instead. func (*ListAllGroupsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{248} + return file_config_service_proto_rawDescGZIP(), []int{252} } func (x *ListAllGroupsReq) GetBizId() uint32 { @@ -15658,7 +15861,7 @@ type ListAllGroupsResp struct { func (x *ListAllGroupsResp) Reset() { *x = ListAllGroupsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[249] + mi := &file_config_service_proto_msgTypes[253] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15671,7 +15874,7 @@ func (x *ListAllGroupsResp) String() string { func (*ListAllGroupsResp) ProtoMessage() {} func (x *ListAllGroupsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[249] + mi := &file_config_service_proto_msgTypes[253] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15684,7 +15887,7 @@ func (x *ListAllGroupsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAllGroupsResp.ProtoReflect.Descriptor instead. func (*ListAllGroupsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{249} + return file_config_service_proto_rawDescGZIP(), []int{253} } func (x *ListAllGroupsResp) GetDetails() []*ListAllGroupsResp_ListAllGroupsData { @@ -15706,7 +15909,7 @@ type ListAppGroupsReq struct { func (x *ListAppGroupsReq) Reset() { *x = ListAppGroupsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[250] + mi := &file_config_service_proto_msgTypes[254] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15719,7 +15922,7 @@ func (x *ListAppGroupsReq) String() string { func (*ListAppGroupsReq) ProtoMessage() {} func (x *ListAppGroupsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[250] + mi := &file_config_service_proto_msgTypes[254] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15732,7 +15935,7 @@ func (x *ListAppGroupsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppGroupsReq.ProtoReflect.Descriptor instead. func (*ListAppGroupsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{250} + return file_config_service_proto_rawDescGZIP(), []int{254} } func (x *ListAppGroupsReq) GetBizId() uint32 { @@ -15760,7 +15963,7 @@ type ListAppGroupsResp struct { func (x *ListAppGroupsResp) Reset() { *x = ListAppGroupsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[251] + mi := &file_config_service_proto_msgTypes[255] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15773,7 +15976,7 @@ func (x *ListAppGroupsResp) String() string { func (*ListAppGroupsResp) ProtoMessage() {} func (x *ListAppGroupsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[251] + mi := &file_config_service_proto_msgTypes[255] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15786,7 +15989,7 @@ func (x *ListAppGroupsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppGroupsResp.ProtoReflect.Descriptor instead. func (*ListAppGroupsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{251} + return file_config_service_proto_rawDescGZIP(), []int{255} } func (x *ListAppGroupsResp) GetDetails() []*ListAppGroupsResp_ListAppGroupsData { @@ -15811,7 +16014,7 @@ type ListGroupReleasedAppsReq struct { func (x *ListGroupReleasedAppsReq) Reset() { *x = ListGroupReleasedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[252] + mi := &file_config_service_proto_msgTypes[256] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15824,7 +16027,7 @@ func (x *ListGroupReleasedAppsReq) String() string { func (*ListGroupReleasedAppsReq) ProtoMessage() {} func (x *ListGroupReleasedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[252] + mi := &file_config_service_proto_msgTypes[256] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15837,7 +16040,7 @@ func (x *ListGroupReleasedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGroupReleasedAppsReq.ProtoReflect.Descriptor instead. func (*ListGroupReleasedAppsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{252} + return file_config_service_proto_rawDescGZIP(), []int{256} } func (x *ListGroupReleasedAppsReq) GetBizId() uint32 { @@ -15887,7 +16090,7 @@ type ListGroupReleasedAppsResp struct { func (x *ListGroupReleasedAppsResp) Reset() { *x = ListGroupReleasedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[253] + mi := &file_config_service_proto_msgTypes[257] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15900,7 +16103,7 @@ func (x *ListGroupReleasedAppsResp) String() string { func (*ListGroupReleasedAppsResp) ProtoMessage() {} func (x *ListGroupReleasedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[253] + mi := &file_config_service_proto_msgTypes[257] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15913,7 +16116,7 @@ func (x *ListGroupReleasedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGroupReleasedAppsResp.ProtoReflect.Descriptor instead. func (*ListGroupReleasedAppsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{253} + return file_config_service_proto_rawDescGZIP(), []int{257} } func (x *ListGroupReleasedAppsResp) GetCount() uint32 { @@ -15942,7 +16145,7 @@ type GetGroupByNameReq struct { func (x *GetGroupByNameReq) Reset() { *x = GetGroupByNameReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[254] + mi := &file_config_service_proto_msgTypes[258] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15955,7 +16158,7 @@ func (x *GetGroupByNameReq) String() string { func (*GetGroupByNameReq) ProtoMessage() {} func (x *GetGroupByNameReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[254] + mi := &file_config_service_proto_msgTypes[258] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15968,7 +16171,7 @@ func (x *GetGroupByNameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupByNameReq.ProtoReflect.Descriptor instead. func (*GetGroupByNameReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{254} + return file_config_service_proto_rawDescGZIP(), []int{258} } func (x *GetGroupByNameReq) GetBizId() uint32 { @@ -16005,7 +16208,7 @@ type PublishReq struct { func (x *PublishReq) Reset() { *x = PublishReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[255] + mi := &file_config_service_proto_msgTypes[259] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16018,7 +16221,7 @@ func (x *PublishReq) String() string { func (*PublishReq) ProtoMessage() {} func (x *PublishReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[255] + mi := &file_config_service_proto_msgTypes[259] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16031,7 +16234,7 @@ func (x *PublishReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishReq.ProtoReflect.Descriptor instead. func (*PublishReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{255} + return file_config_service_proto_rawDescGZIP(), []int{259} } func (x *PublishReq) GetBizId() uint32 { @@ -16124,7 +16327,7 @@ type GenerateReleaseAndPublishReq struct { func (x *GenerateReleaseAndPublishReq) Reset() { *x = GenerateReleaseAndPublishReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[256] + mi := &file_config_service_proto_msgTypes[260] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16137,7 +16340,7 @@ func (x *GenerateReleaseAndPublishReq) String() string { func (*GenerateReleaseAndPublishReq) ProtoMessage() {} func (x *GenerateReleaseAndPublishReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[256] + mi := &file_config_service_proto_msgTypes[260] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16150,7 +16353,7 @@ func (x *GenerateReleaseAndPublishReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateReleaseAndPublishReq.ProtoReflect.Descriptor instead. func (*GenerateReleaseAndPublishReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{256} + return file_config_service_proto_rawDescGZIP(), []int{260} } func (x *GenerateReleaseAndPublishReq) GetBizId() uint32 { @@ -16234,7 +16437,7 @@ type GenerateReleaseAndPublishResp struct { func (x *GenerateReleaseAndPublishResp) Reset() { *x = GenerateReleaseAndPublishResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[257] + mi := &file_config_service_proto_msgTypes[261] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16247,7 +16450,7 @@ func (x *GenerateReleaseAndPublishResp) String() string { func (*GenerateReleaseAndPublishResp) ProtoMessage() {} func (x *GenerateReleaseAndPublishResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[257] + mi := &file_config_service_proto_msgTypes[261] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16260,7 +16463,7 @@ func (x *GenerateReleaseAndPublishResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateReleaseAndPublishResp.ProtoReflect.Descriptor instead. func (*GenerateReleaseAndPublishResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{257} + return file_config_service_proto_rawDescGZIP(), []int{261} } func (x *GenerateReleaseAndPublishResp) GetId() uint32 { @@ -16282,7 +16485,7 @@ type PublishResp struct { func (x *PublishResp) Reset() { *x = PublishResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[258] + mi := &file_config_service_proto_msgTypes[262] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16295,7 +16498,7 @@ func (x *PublishResp) String() string { func (*PublishResp) ProtoMessage() {} func (x *PublishResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[258] + mi := &file_config_service_proto_msgTypes[262] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16308,7 +16511,7 @@ func (x *PublishResp) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishResp.ProtoReflect.Descriptor instead. func (*PublishResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{258} + return file_config_service_proto_rawDescGZIP(), []int{262} } func (x *PublishResp) GetId() uint32 { @@ -16341,7 +16544,7 @@ type CreateKvReq struct { func (x *CreateKvReq) Reset() { *x = CreateKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[259] + mi := &file_config_service_proto_msgTypes[263] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16354,7 +16557,7 @@ func (x *CreateKvReq) String() string { func (*CreateKvReq) ProtoMessage() {} func (x *CreateKvReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[259] + mi := &file_config_service_proto_msgTypes[263] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16367,7 +16570,7 @@ func (x *CreateKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateKvReq.ProtoReflect.Descriptor instead. func (*CreateKvReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{259} + return file_config_service_proto_rawDescGZIP(), []int{263} } func (x *CreateKvReq) GetBizId() uint32 { @@ -16423,7 +16626,7 @@ type CreateKvResp struct { func (x *CreateKvResp) Reset() { *x = CreateKvResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[260] + mi := &file_config_service_proto_msgTypes[264] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16436,7 +16639,7 @@ func (x *CreateKvResp) String() string { func (*CreateKvResp) ProtoMessage() {} func (x *CreateKvResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[260] + mi := &file_config_service_proto_msgTypes[264] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16449,7 +16652,7 @@ func (x *CreateKvResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateKvResp.ProtoReflect.Descriptor instead. func (*CreateKvResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{260} + return file_config_service_proto_rawDescGZIP(), []int{264} } func (x *CreateKvResp) GetId() uint32 { @@ -16474,7 +16677,7 @@ type UpdateKvReq struct { func (x *UpdateKvReq) Reset() { *x = UpdateKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[261] + mi := &file_config_service_proto_msgTypes[265] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16487,7 +16690,7 @@ func (x *UpdateKvReq) String() string { func (*UpdateKvReq) ProtoMessage() {} func (x *UpdateKvReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[261] + mi := &file_config_service_proto_msgTypes[265] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16500,7 +16703,7 @@ func (x *UpdateKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateKvReq.ProtoReflect.Descriptor instead. func (*UpdateKvReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{261} + return file_config_service_proto_rawDescGZIP(), []int{265} } func (x *UpdateKvReq) GetBizId() uint32 { @@ -16547,7 +16750,7 @@ type UpdateKvResp struct { func (x *UpdateKvResp) Reset() { *x = UpdateKvResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[262] + mi := &file_config_service_proto_msgTypes[266] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16560,7 +16763,7 @@ func (x *UpdateKvResp) String() string { func (*UpdateKvResp) ProtoMessage() {} func (x *UpdateKvResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[262] + mi := &file_config_service_proto_msgTypes[266] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16573,7 +16776,7 @@ func (x *UpdateKvResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateKvResp.ProtoReflect.Descriptor instead. func (*UpdateKvResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{262} + return file_config_service_proto_rawDescGZIP(), []int{266} } type ListKvsReq struct { @@ -16602,7 +16805,7 @@ type ListKvsReq struct { func (x *ListKvsReq) Reset() { *x = ListKvsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[263] + mi := &file_config_service_proto_msgTypes[267] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16615,7 +16818,7 @@ func (x *ListKvsReq) String() string { func (*ListKvsReq) ProtoMessage() {} func (x *ListKvsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[263] + mi := &file_config_service_proto_msgTypes[267] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16628,7 +16831,7 @@ func (x *ListKvsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListKvsReq.ProtoReflect.Descriptor instead. func (*ListKvsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{263} + return file_config_service_proto_rawDescGZIP(), []int{267} } func (x *ListKvsReq) GetBizId() uint32 { @@ -16749,7 +16952,7 @@ type ListKvsResp struct { func (x *ListKvsResp) Reset() { *x = ListKvsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[264] + mi := &file_config_service_proto_msgTypes[268] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16762,7 +16965,7 @@ func (x *ListKvsResp) String() string { func (*ListKvsResp) ProtoMessage() {} func (x *ListKvsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[264] + mi := &file_config_service_proto_msgTypes[268] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16775,7 +16978,7 @@ func (x *ListKvsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListKvsResp.ProtoReflect.Descriptor instead. func (*ListKvsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{264} + return file_config_service_proto_rawDescGZIP(), []int{268} } func (x *ListKvsResp) GetCount() uint32 { @@ -16812,7 +17015,7 @@ type DeleteKvReq struct { func (x *DeleteKvReq) Reset() { *x = DeleteKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[265] + mi := &file_config_service_proto_msgTypes[269] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16825,7 +17028,7 @@ func (x *DeleteKvReq) String() string { func (*DeleteKvReq) ProtoMessage() {} func (x *DeleteKvReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[265] + mi := &file_config_service_proto_msgTypes[269] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16838,7 +17041,7 @@ func (x *DeleteKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteKvReq.ProtoReflect.Descriptor instead. func (*DeleteKvReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{265} + return file_config_service_proto_rawDescGZIP(), []int{269} } func (x *DeleteKvReq) GetBizId() uint32 { @@ -16871,7 +17074,7 @@ type DeleteKvResp struct { func (x *DeleteKvResp) Reset() { *x = DeleteKvResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[266] + mi := &file_config_service_proto_msgTypes[270] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16884,7 +17087,7 @@ func (x *DeleteKvResp) String() string { func (*DeleteKvResp) ProtoMessage() {} func (x *DeleteKvResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[266] + mi := &file_config_service_proto_msgTypes[270] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16897,7 +17100,7 @@ func (x *DeleteKvResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteKvResp.ProtoReflect.Descriptor instead. func (*DeleteKvResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{266} + return file_config_service_proto_rawDescGZIP(), []int{270} } type BatchDeleteBizResourcesReq struct { @@ -16913,7 +17116,7 @@ type BatchDeleteBizResourcesReq struct { func (x *BatchDeleteBizResourcesReq) Reset() { *x = BatchDeleteBizResourcesReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[267] + mi := &file_config_service_proto_msgTypes[271] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16926,7 +17129,7 @@ func (x *BatchDeleteBizResourcesReq) String() string { func (*BatchDeleteBizResourcesReq) ProtoMessage() {} func (x *BatchDeleteBizResourcesReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[267] + mi := &file_config_service_proto_msgTypes[271] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16939,7 +17142,7 @@ func (x *BatchDeleteBizResourcesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchDeleteBizResourcesReq.ProtoReflect.Descriptor instead. func (*BatchDeleteBizResourcesReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{267} + return file_config_service_proto_rawDescGZIP(), []int{271} } func (x *BatchDeleteBizResourcesReq) GetBizId() uint32 { @@ -16977,7 +17180,7 @@ type BatchDeleteAppResourcesReq struct { func (x *BatchDeleteAppResourcesReq) Reset() { *x = BatchDeleteAppResourcesReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[268] + mi := &file_config_service_proto_msgTypes[272] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16990,7 +17193,7 @@ func (x *BatchDeleteAppResourcesReq) String() string { func (*BatchDeleteAppResourcesReq) ProtoMessage() {} func (x *BatchDeleteAppResourcesReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[268] + mi := &file_config_service_proto_msgTypes[272] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17003,7 +17206,7 @@ func (x *BatchDeleteAppResourcesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchDeleteAppResourcesReq.ProtoReflect.Descriptor instead. func (*BatchDeleteAppResourcesReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{268} + return file_config_service_proto_rawDescGZIP(), []int{272} } func (x *BatchDeleteAppResourcesReq) GetBizId() uint32 { @@ -17046,7 +17249,7 @@ type BatchDeleteResp struct { func (x *BatchDeleteResp) Reset() { *x = BatchDeleteResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[269] + mi := &file_config_service_proto_msgTypes[273] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17059,7 +17262,7 @@ func (x *BatchDeleteResp) String() string { func (*BatchDeleteResp) ProtoMessage() {} func (x *BatchDeleteResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[269] + mi := &file_config_service_proto_msgTypes[273] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17072,7 +17275,7 @@ func (x *BatchDeleteResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchDeleteResp.ProtoReflect.Descriptor instead. func (*BatchDeleteResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{269} + return file_config_service_proto_rawDescGZIP(), []int{273} } func (x *BatchDeleteResp) GetSuccessfulIds() []uint32 { @@ -17103,7 +17306,7 @@ type BatchUpsertKvsReq struct { func (x *BatchUpsertKvsReq) Reset() { *x = BatchUpsertKvsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[270] + mi := &file_config_service_proto_msgTypes[274] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17116,7 +17319,7 @@ func (x *BatchUpsertKvsReq) String() string { func (*BatchUpsertKvsReq) ProtoMessage() {} func (x *BatchUpsertKvsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[270] + mi := &file_config_service_proto_msgTypes[274] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17129,7 +17332,7 @@ func (x *BatchUpsertKvsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertKvsReq.ProtoReflect.Descriptor instead. func (*BatchUpsertKvsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{270} + return file_config_service_proto_rawDescGZIP(), []int{274} } func (x *BatchUpsertKvsReq) GetBizId() uint32 { @@ -17171,7 +17374,7 @@ type BatchUpsertKvsResp struct { func (x *BatchUpsertKvsResp) Reset() { *x = BatchUpsertKvsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[271] + mi := &file_config_service_proto_msgTypes[275] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17184,7 +17387,7 @@ func (x *BatchUpsertKvsResp) String() string { func (*BatchUpsertKvsResp) ProtoMessage() {} func (x *BatchUpsertKvsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[271] + mi := &file_config_service_proto_msgTypes[275] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17197,7 +17400,7 @@ func (x *BatchUpsertKvsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertKvsResp.ProtoReflect.Descriptor instead. func (*BatchUpsertKvsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{271} + return file_config_service_proto_rawDescGZIP(), []int{275} } func (x *BatchUpsertKvsResp) GetIds() []uint32 { @@ -17220,7 +17423,7 @@ type UnDeleteKvReq struct { func (x *UnDeleteKvReq) Reset() { *x = UnDeleteKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[272] + mi := &file_config_service_proto_msgTypes[276] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17233,7 +17436,7 @@ func (x *UnDeleteKvReq) String() string { func (*UnDeleteKvReq) ProtoMessage() {} func (x *UnDeleteKvReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[272] + mi := &file_config_service_proto_msgTypes[276] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17246,7 +17449,7 @@ func (x *UnDeleteKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UnDeleteKvReq.ProtoReflect.Descriptor instead. func (*UnDeleteKvReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{272} + return file_config_service_proto_rawDescGZIP(), []int{276} } func (x *UnDeleteKvReq) GetBizId() uint32 { @@ -17279,7 +17482,7 @@ type UnDeleteKvResp struct { func (x *UnDeleteKvResp) Reset() { *x = UnDeleteKvResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[273] + mi := &file_config_service_proto_msgTypes[277] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17292,7 +17495,7 @@ func (x *UnDeleteKvResp) String() string { func (*UnDeleteKvResp) ProtoMessage() {} func (x *UnDeleteKvResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[273] + mi := &file_config_service_proto_msgTypes[277] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17305,7 +17508,7 @@ func (x *UnDeleteKvResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UnDeleteKvResp.ProtoReflect.Descriptor instead. func (*UnDeleteKvResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{273} + return file_config_service_proto_rawDescGZIP(), []int{277} } type UndoKvReq struct { @@ -17321,7 +17524,7 @@ type UndoKvReq struct { func (x *UndoKvReq) Reset() { *x = UndoKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[274] + mi := &file_config_service_proto_msgTypes[278] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17334,7 +17537,7 @@ func (x *UndoKvReq) String() string { func (*UndoKvReq) ProtoMessage() {} func (x *UndoKvReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[274] + mi := &file_config_service_proto_msgTypes[278] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17347,7 +17550,7 @@ func (x *UndoKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UndoKvReq.ProtoReflect.Descriptor instead. func (*UndoKvReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{274} + return file_config_service_proto_rawDescGZIP(), []int{278} } func (x *UndoKvReq) GetBizId() uint32 { @@ -17380,7 +17583,7 @@ type UndoKvResp struct { func (x *UndoKvResp) Reset() { *x = UndoKvResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[275] + mi := &file_config_service_proto_msgTypes[279] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17393,7 +17596,7 @@ func (x *UndoKvResp) String() string { func (*UndoKvResp) ProtoMessage() {} func (x *UndoKvResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[275] + mi := &file_config_service_proto_msgTypes[279] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17406,7 +17609,7 @@ func (x *UndoKvResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UndoKvResp.ProtoReflect.Descriptor instead. func (*UndoKvResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{275} + return file_config_service_proto_rawDescGZIP(), []int{279} } type ImportKvsReq struct { @@ -17423,7 +17626,7 @@ type ImportKvsReq struct { func (x *ImportKvsReq) Reset() { *x = ImportKvsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[276] + mi := &file_config_service_proto_msgTypes[280] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17436,7 +17639,7 @@ func (x *ImportKvsReq) String() string { func (*ImportKvsReq) ProtoMessage() {} func (x *ImportKvsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[276] + mi := &file_config_service_proto_msgTypes[280] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17449,7 +17652,7 @@ func (x *ImportKvsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportKvsReq.ProtoReflect.Descriptor instead. func (*ImportKvsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{276} + return file_config_service_proto_rawDescGZIP(), []int{280} } func (x *ImportKvsReq) GetBizId() uint32 { @@ -17489,7 +17692,7 @@ type ImportKvsResp struct { func (x *ImportKvsResp) Reset() { *x = ImportKvsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[277] + mi := &file_config_service_proto_msgTypes[281] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17502,7 +17705,7 @@ func (x *ImportKvsResp) String() string { func (*ImportKvsResp) ProtoMessage() {} func (x *ImportKvsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[277] + mi := &file_config_service_proto_msgTypes[281] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17515,7 +17718,7 @@ func (x *ImportKvsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportKvsResp.ProtoReflect.Descriptor instead. func (*ImportKvsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{277} + return file_config_service_proto_rawDescGZIP(), []int{281} } type ListClientsReq struct { @@ -17536,7 +17739,7 @@ type ListClientsReq struct { func (x *ListClientsReq) Reset() { *x = ListClientsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[278] + mi := &file_config_service_proto_msgTypes[282] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17549,7 +17752,7 @@ func (x *ListClientsReq) String() string { func (*ListClientsReq) ProtoMessage() {} func (x *ListClientsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[278] + mi := &file_config_service_proto_msgTypes[282] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17562,7 +17765,7 @@ func (x *ListClientsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientsReq.ProtoReflect.Descriptor instead. func (*ListClientsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{278} + return file_config_service_proto_rawDescGZIP(), []int{282} } func (x *ListClientsReq) GetBizId() uint32 { @@ -17634,7 +17837,7 @@ type ListClientsResp struct { func (x *ListClientsResp) Reset() { *x = ListClientsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[279] + mi := &file_config_service_proto_msgTypes[283] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17647,7 +17850,7 @@ func (x *ListClientsResp) String() string { func (*ListClientsResp) ProtoMessage() {} func (x *ListClientsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[279] + mi := &file_config_service_proto_msgTypes[283] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17660,7 +17863,7 @@ func (x *ListClientsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientsResp.ProtoReflect.Descriptor instead. func (*ListClientsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{279} + return file_config_service_proto_rawDescGZIP(), []int{283} } func (x *ListClientsResp) GetCount() uint32 { @@ -17704,7 +17907,7 @@ type ListClientEventsReq struct { func (x *ListClientEventsReq) Reset() { *x = ListClientEventsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[280] + mi := &file_config_service_proto_msgTypes[284] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17717,7 +17920,7 @@ func (x *ListClientEventsReq) String() string { func (*ListClientEventsReq) ProtoMessage() {} func (x *ListClientEventsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[280] + mi := &file_config_service_proto_msgTypes[284] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17730,7 +17933,7 @@ func (x *ListClientEventsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientEventsReq.ProtoReflect.Descriptor instead. func (*ListClientEventsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{280} + return file_config_service_proto_rawDescGZIP(), []int{284} } func (x *ListClientEventsReq) GetBizId() uint32 { @@ -17815,7 +18018,7 @@ type ListClientEventsResp struct { func (x *ListClientEventsResp) Reset() { *x = ListClientEventsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[281] + mi := &file_config_service_proto_msgTypes[285] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17828,7 +18031,7 @@ func (x *ListClientEventsResp) String() string { func (*ListClientEventsResp) ProtoMessage() {} func (x *ListClientEventsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[281] + mi := &file_config_service_proto_msgTypes[285] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17841,7 +18044,7 @@ func (x *ListClientEventsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientEventsResp.ProtoReflect.Descriptor instead. func (*ListClientEventsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{281} + return file_config_service_proto_rawDescGZIP(), []int{285} } func (x *ListClientEventsResp) GetCount() uint32 { @@ -17873,7 +18076,7 @@ type RetryClientsReq struct { func (x *RetryClientsReq) Reset() { *x = RetryClientsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[282] + mi := &file_config_service_proto_msgTypes[286] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17886,7 +18089,7 @@ func (x *RetryClientsReq) String() string { func (*RetryClientsReq) ProtoMessage() {} func (x *RetryClientsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[282] + mi := &file_config_service_proto_msgTypes[286] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17899,7 +18102,7 @@ func (x *RetryClientsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryClientsReq.ProtoReflect.Descriptor instead. func (*RetryClientsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{282} + return file_config_service_proto_rawDescGZIP(), []int{286} } func (x *RetryClientsReq) GetBizId() uint32 { @@ -17946,7 +18149,7 @@ type RetryClientsResp struct { func (x *RetryClientsResp) Reset() { *x = RetryClientsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[283] + mi := &file_config_service_proto_msgTypes[287] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17959,7 +18162,7 @@ func (x *RetryClientsResp) String() string { func (*RetryClientsResp) ProtoMessage() {} func (x *RetryClientsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[283] + mi := &file_config_service_proto_msgTypes[287] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17972,7 +18175,7 @@ func (x *RetryClientsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryClientsResp.ProtoReflect.Descriptor instead. func (*RetryClientsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{283} + return file_config_service_proto_rawDescGZIP(), []int{287} } type ListClientQuerysReq struct { @@ -17991,7 +18194,7 @@ type ListClientQuerysReq struct { func (x *ListClientQuerysReq) Reset() { *x = ListClientQuerysReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[284] + mi := &file_config_service_proto_msgTypes[288] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18004,7 +18207,7 @@ func (x *ListClientQuerysReq) String() string { func (*ListClientQuerysReq) ProtoMessage() {} func (x *ListClientQuerysReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[284] + mi := &file_config_service_proto_msgTypes[288] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18017,7 +18220,7 @@ func (x *ListClientQuerysReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientQuerysReq.ProtoReflect.Descriptor instead. func (*ListClientQuerysReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{284} + return file_config_service_proto_rawDescGZIP(), []int{288} } func (x *ListClientQuerysReq) GetBizId() uint32 { @@ -18074,7 +18277,7 @@ type ListClientQuerysResp struct { func (x *ListClientQuerysResp) Reset() { *x = ListClientQuerysResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[285] + mi := &file_config_service_proto_msgTypes[289] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18087,7 +18290,7 @@ func (x *ListClientQuerysResp) String() string { func (*ListClientQuerysResp) ProtoMessage() {} func (x *ListClientQuerysResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[285] + mi := &file_config_service_proto_msgTypes[289] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18100,7 +18303,7 @@ func (x *ListClientQuerysResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientQuerysResp.ProtoReflect.Descriptor instead. func (*ListClientQuerysResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{285} + return file_config_service_proto_rawDescGZIP(), []int{289} } func (x *ListClientQuerysResp) GetCount() uint32 { @@ -18132,7 +18335,7 @@ type CreateClientQueryReq struct { func (x *CreateClientQueryReq) Reset() { *x = CreateClientQueryReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[286] + mi := &file_config_service_proto_msgTypes[290] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18145,7 +18348,7 @@ func (x *CreateClientQueryReq) String() string { func (*CreateClientQueryReq) ProtoMessage() {} func (x *CreateClientQueryReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[286] + mi := &file_config_service_proto_msgTypes[290] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18158,7 +18361,7 @@ func (x *CreateClientQueryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateClientQueryReq.ProtoReflect.Descriptor instead. func (*CreateClientQueryReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{286} + return file_config_service_proto_rawDescGZIP(), []int{290} } func (x *CreateClientQueryReq) GetBizId() uint32 { @@ -18207,7 +18410,7 @@ type CreateClientQueryResp struct { func (x *CreateClientQueryResp) Reset() { *x = CreateClientQueryResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[287] + mi := &file_config_service_proto_msgTypes[291] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18220,7 +18423,7 @@ func (x *CreateClientQueryResp) String() string { func (*CreateClientQueryResp) ProtoMessage() {} func (x *CreateClientQueryResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[287] + mi := &file_config_service_proto_msgTypes[291] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18233,7 +18436,7 @@ func (x *CreateClientQueryResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateClientQueryResp.ProtoReflect.Descriptor instead. func (*CreateClientQueryResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{287} + return file_config_service_proto_rawDescGZIP(), []int{291} } func (x *CreateClientQueryResp) GetId() uint32 { @@ -18258,7 +18461,7 @@ type UpdateClientQueryReq struct { func (x *UpdateClientQueryReq) Reset() { *x = UpdateClientQueryReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[288] + mi := &file_config_service_proto_msgTypes[292] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18271,7 +18474,7 @@ func (x *UpdateClientQueryReq) String() string { func (*UpdateClientQueryReq) ProtoMessage() {} func (x *UpdateClientQueryReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[288] + mi := &file_config_service_proto_msgTypes[292] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18284,7 +18487,7 @@ func (x *UpdateClientQueryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateClientQueryReq.ProtoReflect.Descriptor instead. func (*UpdateClientQueryReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{288} + return file_config_service_proto_rawDescGZIP(), []int{292} } func (x *UpdateClientQueryReq) GetId() uint32 { @@ -18331,7 +18534,7 @@ type UpdateClientQueryResp struct { func (x *UpdateClientQueryResp) Reset() { *x = UpdateClientQueryResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[289] + mi := &file_config_service_proto_msgTypes[293] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18344,7 +18547,7 @@ func (x *UpdateClientQueryResp) String() string { func (*UpdateClientQueryResp) ProtoMessage() {} func (x *UpdateClientQueryResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[289] + mi := &file_config_service_proto_msgTypes[293] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18357,7 +18560,7 @@ func (x *UpdateClientQueryResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateClientQueryResp.ProtoReflect.Descriptor instead. func (*UpdateClientQueryResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{289} + return file_config_service_proto_rawDescGZIP(), []int{293} } type DeleteClientQueryReq struct { @@ -18373,7 +18576,7 @@ type DeleteClientQueryReq struct { func (x *DeleteClientQueryReq) Reset() { *x = DeleteClientQueryReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[290] + mi := &file_config_service_proto_msgTypes[294] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18386,7 +18589,7 @@ func (x *DeleteClientQueryReq) String() string { func (*DeleteClientQueryReq) ProtoMessage() {} func (x *DeleteClientQueryReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[290] + mi := &file_config_service_proto_msgTypes[294] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18399,7 +18602,7 @@ func (x *DeleteClientQueryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteClientQueryReq.ProtoReflect.Descriptor instead. func (*DeleteClientQueryReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{290} + return file_config_service_proto_rawDescGZIP(), []int{294} } func (x *DeleteClientQueryReq) GetId() uint32 { @@ -18432,7 +18635,7 @@ type DeleteClientQueryResp struct { func (x *DeleteClientQueryResp) Reset() { *x = DeleteClientQueryResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[291] + mi := &file_config_service_proto_msgTypes[295] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18445,7 +18648,7 @@ func (x *DeleteClientQueryResp) String() string { func (*DeleteClientQueryResp) ProtoMessage() {} func (x *DeleteClientQueryResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[291] + mi := &file_config_service_proto_msgTypes[295] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18458,7 +18661,7 @@ func (x *DeleteClientQueryResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteClientQueryResp.ProtoReflect.Descriptor instead. func (*DeleteClientQueryResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{291} + return file_config_service_proto_rawDescGZIP(), []int{295} } type CheckClientQueryNameReq struct { @@ -18474,7 +18677,7 @@ type CheckClientQueryNameReq struct { func (x *CheckClientQueryNameReq) Reset() { *x = CheckClientQueryNameReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[292] + mi := &file_config_service_proto_msgTypes[296] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18487,7 +18690,7 @@ func (x *CheckClientQueryNameReq) String() string { func (*CheckClientQueryNameReq) ProtoMessage() {} func (x *CheckClientQueryNameReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[292] + mi := &file_config_service_proto_msgTypes[296] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18500,7 +18703,7 @@ func (x *CheckClientQueryNameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckClientQueryNameReq.ProtoReflect.Descriptor instead. func (*CheckClientQueryNameReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{292} + return file_config_service_proto_rawDescGZIP(), []int{296} } func (x *CheckClientQueryNameReq) GetName() string { @@ -18535,7 +18738,7 @@ type CheckClientQueryNameResp struct { func (x *CheckClientQueryNameResp) Reset() { *x = CheckClientQueryNameResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[293] + mi := &file_config_service_proto_msgTypes[297] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18548,7 +18751,7 @@ func (x *CheckClientQueryNameResp) String() string { func (*CheckClientQueryNameResp) ProtoMessage() {} func (x *CheckClientQueryNameResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[293] + mi := &file_config_service_proto_msgTypes[297] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18561,7 +18764,7 @@ func (x *CheckClientQueryNameResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckClientQueryNameResp.ProtoReflect.Descriptor instead. func (*CheckClientQueryNameResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{293} + return file_config_service_proto_rawDescGZIP(), []int{297} } func (x *CheckClientQueryNameResp) GetExist() bool { @@ -18584,7 +18787,7 @@ type ListClientLabelAndAnnotationReq struct { func (x *ListClientLabelAndAnnotationReq) Reset() { *x = ListClientLabelAndAnnotationReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[294] + mi := &file_config_service_proto_msgTypes[298] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18597,7 +18800,7 @@ func (x *ListClientLabelAndAnnotationReq) String() string { func (*ListClientLabelAndAnnotationReq) ProtoMessage() {} func (x *ListClientLabelAndAnnotationReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[294] + mi := &file_config_service_proto_msgTypes[298] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18610,7 +18813,7 @@ func (x *ListClientLabelAndAnnotationReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientLabelAndAnnotationReq.ProtoReflect.Descriptor instead. func (*ListClientLabelAndAnnotationReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{294} + return file_config_service_proto_rawDescGZIP(), []int{298} } func (x *ListClientLabelAndAnnotationReq) GetBizId() uint32 { @@ -18648,7 +18851,7 @@ type CompareConfigItemConflictsReq struct { func (x *CompareConfigItemConflictsReq) Reset() { *x = CompareConfigItemConflictsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[295] + mi := &file_config_service_proto_msgTypes[299] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18661,7 +18864,7 @@ func (x *CompareConfigItemConflictsReq) String() string { func (*CompareConfigItemConflictsReq) ProtoMessage() {} func (x *CompareConfigItemConflictsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[295] + mi := &file_config_service_proto_msgTypes[299] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18674,7 +18877,7 @@ func (x *CompareConfigItemConflictsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CompareConfigItemConflictsReq.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{295} + return file_config_service_proto_rawDescGZIP(), []int{299} } func (x *CompareConfigItemConflictsReq) GetBizId() uint32 { @@ -18717,7 +18920,7 @@ type CompareConfigItemConflictsResp struct { func (x *CompareConfigItemConflictsResp) Reset() { *x = CompareConfigItemConflictsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[296] + mi := &file_config_service_proto_msgTypes[300] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18730,7 +18933,7 @@ func (x *CompareConfigItemConflictsResp) String() string { func (*CompareConfigItemConflictsResp) ProtoMessage() {} func (x *CompareConfigItemConflictsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[296] + mi := &file_config_service_proto_msgTypes[300] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18743,7 +18946,7 @@ func (x *CompareConfigItemConflictsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CompareConfigItemConflictsResp.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{296} + return file_config_service_proto_rawDescGZIP(), []int{300} } func (x *CompareConfigItemConflictsResp) GetNonTemplateConfigs() []*CompareConfigItemConflictsResp_NonTemplateConfig { @@ -18774,7 +18977,7 @@ type CompareKvConflictsReq struct { func (x *CompareKvConflictsReq) Reset() { *x = CompareKvConflictsReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[297] + mi := &file_config_service_proto_msgTypes[301] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18787,7 +18990,7 @@ func (x *CompareKvConflictsReq) String() string { func (*CompareKvConflictsReq) ProtoMessage() {} func (x *CompareKvConflictsReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[297] + mi := &file_config_service_proto_msgTypes[301] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18800,7 +19003,7 @@ func (x *CompareKvConflictsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CompareKvConflictsReq.ProtoReflect.Descriptor instead. func (*CompareKvConflictsReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{297} + return file_config_service_proto_rawDescGZIP(), []int{301} } func (x *CompareKvConflictsReq) GetBizId() uint32 { @@ -18843,7 +19046,7 @@ type CompareKvConflictsResp struct { func (x *CompareKvConflictsResp) Reset() { *x = CompareKvConflictsResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[298] + mi := &file_config_service_proto_msgTypes[302] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18856,7 +19059,7 @@ func (x *CompareKvConflictsResp) String() string { func (*CompareKvConflictsResp) ProtoMessage() {} func (x *CompareKvConflictsResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[298] + mi := &file_config_service_proto_msgTypes[302] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18869,7 +19072,7 @@ func (x *CompareKvConflictsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CompareKvConflictsResp.ProtoReflect.Descriptor instead. func (*CompareKvConflictsResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{298} + return file_config_service_proto_rawDescGZIP(), []int{302} } func (x *CompareKvConflictsResp) GetExist() []*CompareKvConflictsResp_Kv { @@ -18898,7 +19101,7 @@ type GetTemplateAndNonTemplateCICountReq struct { func (x *GetTemplateAndNonTemplateCICountReq) Reset() { *x = GetTemplateAndNonTemplateCICountReq{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[299] + mi := &file_config_service_proto_msgTypes[303] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18911,7 +19114,7 @@ func (x *GetTemplateAndNonTemplateCICountReq) String() string { func (*GetTemplateAndNonTemplateCICountReq) ProtoMessage() {} func (x *GetTemplateAndNonTemplateCICountReq) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[299] + mi := &file_config_service_proto_msgTypes[303] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18924,7 +19127,7 @@ func (x *GetTemplateAndNonTemplateCICountReq) ProtoReflect() protoreflect.Messag // Deprecated: Use GetTemplateAndNonTemplateCICountReq.ProtoReflect.Descriptor instead. func (*GetTemplateAndNonTemplateCICountReq) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{299} + return file_config_service_proto_rawDescGZIP(), []int{303} } func (x *GetTemplateAndNonTemplateCICountReq) GetBizId() uint32 { @@ -18953,7 +19156,7 @@ type GetTemplateAndNonTemplateCICountResp struct { func (x *GetTemplateAndNonTemplateCICountResp) Reset() { *x = GetTemplateAndNonTemplateCICountResp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[300] + mi := &file_config_service_proto_msgTypes[304] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18966,7 +19169,7 @@ func (x *GetTemplateAndNonTemplateCICountResp) String() string { func (*GetTemplateAndNonTemplateCICountResp) ProtoMessage() {} func (x *GetTemplateAndNonTemplateCICountResp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[300] + mi := &file_config_service_proto_msgTypes[304] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18979,7 +19182,7 @@ func (x *GetTemplateAndNonTemplateCICountResp) ProtoReflect() protoreflect.Messa // Deprecated: Use GetTemplateAndNonTemplateCICountResp.ProtoReflect.Descriptor instead. func (*GetTemplateAndNonTemplateCICountResp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{300} + return file_config_service_proto_rawDescGZIP(), []int{304} } func (x *GetTemplateAndNonTemplateCICountResp) GetConfigItemCount() uint64 { @@ -19008,7 +19211,7 @@ type CredentialScopePreviewResp_Detail struct { func (x *CredentialScopePreviewResp_Detail) Reset() { *x = CredentialScopePreviewResp_Detail{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[301] + mi := &file_config_service_proto_msgTypes[305] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19021,7 +19224,7 @@ func (x *CredentialScopePreviewResp_Detail) String() string { func (*CredentialScopePreviewResp_Detail) ProtoMessage() {} func (x *CredentialScopePreviewResp_Detail) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[301] + mi := &file_config_service_proto_msgTypes[305] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19074,7 +19277,7 @@ type BatchUpsertConfigItemsReq_ConfigItem struct { func (x *BatchUpsertConfigItemsReq_ConfigItem) Reset() { *x = BatchUpsertConfigItemsReq_ConfigItem{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[302] + mi := &file_config_service_proto_msgTypes[306] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19087,7 +19290,7 @@ func (x *BatchUpsertConfigItemsReq_ConfigItem) String() string { func (*BatchUpsertConfigItemsReq_ConfigItem) ProtoMessage() {} func (x *BatchUpsertConfigItemsReq_ConfigItem) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[302] + mi := &file_config_service_proto_msgTypes[306] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19192,7 +19395,7 @@ type BatchUpsertConfigItemsReq_TemplateBinding struct { func (x *BatchUpsertConfigItemsReq_TemplateBinding) Reset() { *x = BatchUpsertConfigItemsReq_TemplateBinding{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[303] + mi := &file_config_service_proto_msgTypes[307] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19205,7 +19408,7 @@ func (x *BatchUpsertConfigItemsReq_TemplateBinding) String() string { func (*BatchUpsertConfigItemsReq_TemplateBinding) ProtoMessage() {} func (x *BatchUpsertConfigItemsReq_TemplateBinding) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[303] + mi := &file_config_service_proto_msgTypes[307] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19247,7 +19450,7 @@ type ListConfigItemByTupleReq_Item struct { func (x *ListConfigItemByTupleReq_Item) Reset() { *x = ListConfigItemByTupleReq_Item{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[304] + mi := &file_config_service_proto_msgTypes[308] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19260,7 +19463,7 @@ func (x *ListConfigItemByTupleReq_Item) String() string { func (*ListConfigItemByTupleReq_Item) ProtoMessage() {} func (x *ListConfigItemByTupleReq_Item) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[304] + mi := &file_config_service_proto_msgTypes[308] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19304,7 +19507,7 @@ type ListHooksResp_Detail struct { func (x *ListHooksResp_Detail) Reset() { *x = ListHooksResp_Detail{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[305] + mi := &file_config_service_proto_msgTypes[309] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19317,7 +19520,7 @@ func (x *ListHooksResp_Detail) String() string { func (*ListHooksResp_Detail) ProtoMessage() {} func (x *ListHooksResp_Detail) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[305] + mi := &file_config_service_proto_msgTypes[309] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19374,7 +19577,7 @@ type ListHookRevisionsResp_ListHookRevisionsData struct { func (x *ListHookRevisionsResp_ListHookRevisionsData) Reset() { *x = ListHookRevisionsResp_ListHookRevisionsData{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[306] + mi := &file_config_service_proto_msgTypes[310] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19387,7 +19590,7 @@ func (x *ListHookRevisionsResp_ListHookRevisionsData) String() string { func (*ListHookRevisionsResp_ListHookRevisionsData) ProtoMessage() {} func (x *ListHookRevisionsResp_ListHookRevisionsData) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[306] + mi := &file_config_service_proto_msgTypes[310] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19435,7 +19638,7 @@ type GetHookInfoSpec_Releases struct { func (x *GetHookInfoSpec_Releases) Reset() { *x = GetHookInfoSpec_Releases{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[307] + mi := &file_config_service_proto_msgTypes[311] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19448,7 +19651,7 @@ func (x *GetHookInfoSpec_Releases) String() string { func (*GetHookInfoSpec_Releases) ProtoMessage() {} func (x *GetHookInfoSpec_Releases) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[307] + mi := &file_config_service_proto_msgTypes[311] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19489,7 +19692,7 @@ type ListHookRevisionReferencesResp_Detail struct { func (x *ListHookRevisionReferencesResp_Detail) Reset() { *x = ListHookRevisionReferencesResp_Detail{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[308] + mi := &file_config_service_proto_msgTypes[312] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19502,7 +19705,7 @@ func (x *ListHookRevisionReferencesResp_Detail) String() string { func (*ListHookRevisionReferencesResp_Detail) ProtoMessage() {} func (x *ListHookRevisionReferencesResp_Detail) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[308] + mi := &file_config_service_proto_msgTypes[312] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19592,7 +19795,7 @@ type ListHookReferencesResp_Detail struct { func (x *ListHookReferencesResp_Detail) Reset() { *x = ListHookReferencesResp_Detail{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[309] + mi := &file_config_service_proto_msgTypes[313] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19605,7 +19808,7 @@ func (x *ListHookReferencesResp_Detail) String() string { func (*ListHookReferencesResp_Detail) ProtoMessage() {} func (x *ListHookReferencesResp_Detail) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[309] + mi := &file_config_service_proto_msgTypes[313] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19693,7 +19896,7 @@ type GetReleaseHookResp_Hook struct { func (x *GetReleaseHookResp_Hook) Reset() { *x = GetReleaseHookResp_Hook{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[310] + mi := &file_config_service_proto_msgTypes[314] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19706,7 +19909,7 @@ func (x *GetReleaseHookResp_Hook) String() string { func (*GetReleaseHookResp_Hook) ProtoMessage() {} func (x *GetReleaseHookResp_Hook) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[310] + mi := &file_config_service_proto_msgTypes[314] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19788,7 +19991,7 @@ type BatchUpsertTemplatesReq_Item struct { func (x *BatchUpsertTemplatesReq_Item) Reset() { *x = BatchUpsertTemplatesReq_Item{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[311] + mi := &file_config_service_proto_msgTypes[315] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19801,7 +20004,7 @@ func (x *BatchUpsertTemplatesReq_Item) String() string { func (*BatchUpsertTemplatesReq_Item) ProtoMessage() {} func (x *BatchUpsertTemplatesReq_Item) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[311] + mi := &file_config_service_proto_msgTypes[315] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19913,7 +20116,7 @@ type ListTemplateByTupleReq_Item struct { func (x *ListTemplateByTupleReq_Item) Reset() { *x = ListTemplateByTupleReq_Item{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[312] + mi := &file_config_service_proto_msgTypes[316] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19926,7 +20129,7 @@ func (x *ListTemplateByTupleReq_Item) String() string { func (*ListTemplateByTupleReq_Item) ProtoMessage() {} func (x *ListTemplateByTupleReq_Item) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[312] + mi := &file_config_service_proto_msgTypes[316] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19968,7 +20171,7 @@ type ListTemplateByTupleResp_Item struct { func (x *ListTemplateByTupleResp_Item) Reset() { *x = ListTemplateByTupleResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[313] + mi := &file_config_service_proto_msgTypes[317] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -19981,7 +20184,7 @@ func (x *ListTemplateByTupleResp_Item) String() string { func (*ListTemplateByTupleResp_Item) ProtoMessage() {} func (x *ListTemplateByTupleResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[313] + mi := &file_config_service_proto_msgTypes[317] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20011,6 +20214,61 @@ func (x *ListTemplateByTupleResp_Item) GetTemplateRevision() *template_revision. return nil } +type ListTemplateSetsAndRevisionsResp_Detail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Template *template.Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + TemplateRevision []*template_revision.TemplateRevision `protobuf:"bytes,2,rep,name=template_revision,json=templateRevision,proto3" json:"template_revision,omitempty"` +} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) Reset() { + *x = ListTemplateSetsAndRevisionsResp_Detail{} + if protoimpl.UnsafeEnabled { + mi := &file_config_service_proto_msgTypes[318] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTemplateSetsAndRevisionsResp_Detail) ProtoMessage() {} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) ProtoReflect() protoreflect.Message { + mi := &file_config_service_proto_msgTypes[318] + 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 ListTemplateSetsAndRevisionsResp_Detail.ProtoReflect.Descriptor instead. +func (*ListTemplateSetsAndRevisionsResp_Detail) Descriptor() ([]byte, []int) { + return file_config_service_proto_rawDescGZIP(), []int{143, 0} +} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) GetTemplate() *template.Template { + if x != nil { + return x.Template + } + return nil +} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) GetTemplateRevision() []*template_revision.TemplateRevision { + if x != nil { + return x.TemplateRevision + } + return nil +} + type GetTemplateRevisionResp_TemplateRevision struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -20038,7 +20296,7 @@ type GetTemplateRevisionResp_TemplateRevision struct { func (x *GetTemplateRevisionResp_TemplateRevision) Reset() { *x = GetTemplateRevisionResp_TemplateRevision{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[314] + mi := &file_config_service_proto_msgTypes[319] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20051,7 +20309,7 @@ func (x *GetTemplateRevisionResp_TemplateRevision) String() string { func (*GetTemplateRevisionResp_TemplateRevision) ProtoMessage() {} func (x *GetTemplateRevisionResp_TemplateRevision) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[314] + mi := &file_config_service_proto_msgTypes[319] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20064,7 +20322,7 @@ func (x *GetTemplateRevisionResp_TemplateRevision) ProtoReflect() protoreflect.M // Deprecated: Use GetTemplateRevisionResp_TemplateRevision.ProtoReflect.Descriptor instead. func (*GetTemplateRevisionResp_TemplateRevision) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{149, 0} + return file_config_service_proto_rawDescGZIP(), []int{151, 0} } func (x *GetTemplateRevisionResp_TemplateRevision) GetTemplateId() uint32 { @@ -20186,32 +20444,35 @@ func (x *GetTemplateRevisionResp_TemplateRevision) GetIsLatest() bool { return false } -type CheckTemplateSetReferencesAppsReq_Item struct { +type ImportFromTemplateSetToAppReq_Binding struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + TemplateSetId uint32 `protobuf:"varint,1,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` + TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` + TemplateSpaceName string `protobuf:"bytes,3,opt,name=template_space_name,json=templateSpaceName,proto3" json:"template_space_name,omitempty"` + TemplateSetName string `protobuf:"bytes,4,opt,name=template_set_name,json=templateSetName,proto3" json:"template_set_name,omitempty"` + TemplateRevisions []*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding `protobuf:"bytes,5,rep,name=template_revisions,json=templateRevisions,proto3" json:"template_revisions,omitempty"` } -func (x *CheckTemplateSetReferencesAppsReq_Item) Reset() { - *x = CheckTemplateSetReferencesAppsReq_Item{} +func (x *ImportFromTemplateSetToAppReq_Binding) Reset() { + *x = ImportFromTemplateSetToAppReq_Binding{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[315] + mi := &file_config_service_proto_msgTypes[320] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CheckTemplateSetReferencesAppsReq_Item) String() string { +func (x *ImportFromTemplateSetToAppReq_Binding) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CheckTemplateSetReferencesAppsReq_Item) ProtoMessage() {} +func (*ImportFromTemplateSetToAppReq_Binding) ProtoMessage() {} -func (x *CheckTemplateSetReferencesAppsReq_Item) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[315] +func (x *ImportFromTemplateSetToAppReq_Binding) ProtoReflect() protoreflect.Message { + mi := &file_config_service_proto_msgTypes[320] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20222,44 +20483,201 @@ func (x *CheckTemplateSetReferencesAppsReq_Item) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use CheckTemplateSetReferencesAppsReq_Item.ProtoReflect.Descriptor instead. -func (*CheckTemplateSetReferencesAppsReq_Item) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{214, 0} +// Deprecated: Use ImportFromTemplateSetToAppReq_Binding.ProtoReflect.Descriptor instead. +func (*ImportFromTemplateSetToAppReq_Binding) Descriptor() ([]byte, []int) { + return file_config_service_proto_rawDescGZIP(), []int{194, 0} } -func (x *CheckTemplateSetReferencesAppsReq_Item) GetId() uint32 { +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateSetId() uint32 { if x != nil { - return x.Id + return x.TemplateSetId } return 0 } -func (x *CheckTemplateSetReferencesAppsReq_Item) GetName() string { +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateSpaceId() uint32 { if x != nil { - return x.Name + return x.TemplateSpaceId } - return "" + return 0 } -type CheckTemplateSetReferencesAppsResp_Item struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TemplateSetId uint32 `protobuf:"varint,1,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` - TemplateSetName string `protobuf:"bytes,2,opt,name=template_set_name,json=templateSetName,proto3" json:"template_set_name,omitempty"` - AppId uint32 `protobuf:"varint,3,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` - AppName string `protobuf:"bytes,4,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` - AppExceedsLimit bool `protobuf:"varint,5,opt,name=app_exceeds_limit,json=appExceedsLimit,proto3" json:"app_exceeds_limit,omitempty"` - TemplateSetExceedsLimit bool `protobuf:"varint,6,opt,name=template_set_exceeds_limit,json=templateSetExceedsLimit,proto3" json:"template_set_exceeds_limit,omitempty"` +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateSpaceName() string { + if x != nil { + return x.TemplateSpaceName + } + return "" } -func (x *CheckTemplateSetReferencesAppsResp_Item) Reset() { - *x = CheckTemplateSetReferencesAppsResp_Item{} - if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[316] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateSetName() string { + if x != nil { + return x.TemplateSetName + } + return "" +} + +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateRevisions() []*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding { + if x != nil { + return x.TemplateRevisions + } + return nil +} + +type ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TemplateId uint32 `protobuf:"varint,1,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` + TemplateRevisionId uint32 `protobuf:"varint,2,opt,name=template_revision_id,json=templateRevisionId,proto3" json:"template_revision_id,omitempty"` + IsLatest bool `protobuf:"varint,3,opt,name=is_latest,json=isLatest,proto3" json:"is_latest,omitempty"` + TemplateName string `protobuf:"bytes,4,opt,name=template_name,json=templateName,proto3" json:"template_name,omitempty"` + TemplateRevisionName string `protobuf:"bytes,5,opt,name=template_revision_name,json=templateRevisionName,proto3" json:"template_revision_name,omitempty"` +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) Reset() { + *x = ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding{} + if protoimpl.UnsafeEnabled { + mi := &file_config_service_proto_msgTypes[321] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) ProtoMessage() {} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) ProtoReflect() protoreflect.Message { + mi := &file_config_service_proto_msgTypes[321] + 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 ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding.ProtoReflect.Descriptor instead. +func (*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) Descriptor() ([]byte, []int) { + return file_config_service_proto_rawDescGZIP(), []int{194, 0, 0} +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetTemplateId() uint32 { + if x != nil { + return x.TemplateId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetTemplateRevisionId() uint32 { + if x != nil { + return x.TemplateRevisionId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetIsLatest() bool { + if x != nil { + return x.IsLatest + } + return false +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetTemplateName() string { + if x != nil { + return x.TemplateName + } + return "" +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetTemplateRevisionName() string { + if x != nil { + return x.TemplateRevisionName + } + return "" +} + +type CheckTemplateSetReferencesAppsReq_Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *CheckTemplateSetReferencesAppsReq_Item) Reset() { + *x = CheckTemplateSetReferencesAppsReq_Item{} + if protoimpl.UnsafeEnabled { + mi := &file_config_service_proto_msgTypes[322] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CheckTemplateSetReferencesAppsReq_Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CheckTemplateSetReferencesAppsReq_Item) ProtoMessage() {} + +func (x *CheckTemplateSetReferencesAppsReq_Item) ProtoReflect() protoreflect.Message { + mi := &file_config_service_proto_msgTypes[322] + 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 CheckTemplateSetReferencesAppsReq_Item.ProtoReflect.Descriptor instead. +func (*CheckTemplateSetReferencesAppsReq_Item) Descriptor() ([]byte, []int) { + return file_config_service_proto_rawDescGZIP(), []int{218, 0} +} + +func (x *CheckTemplateSetReferencesAppsReq_Item) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CheckTemplateSetReferencesAppsReq_Item) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type CheckTemplateSetReferencesAppsResp_Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TemplateSetId uint32 `protobuf:"varint,1,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` + TemplateSetName string `protobuf:"bytes,2,opt,name=template_set_name,json=templateSetName,proto3" json:"template_set_name,omitempty"` + AppId uint32 `protobuf:"varint,3,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + AppName string `protobuf:"bytes,4,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` + AppExceedsLimit bool `protobuf:"varint,5,opt,name=app_exceeds_limit,json=appExceedsLimit,proto3" json:"app_exceeds_limit,omitempty"` + TemplateSetExceedsLimit bool `protobuf:"varint,6,opt,name=template_set_exceeds_limit,json=templateSetExceedsLimit,proto3" json:"template_set_exceeds_limit,omitempty"` + AppExceedsQuantity uint32 `protobuf:"varint,7,opt,name=app_exceeds_quantity,json=appExceedsQuantity,proto3" json:"app_exceeds_quantity,omitempty"` + TemplateSetExceedsQuantity uint32 `protobuf:"varint,8,opt,name=template_set_exceeds_quantity,json=templateSetExceedsQuantity,proto3" json:"template_set_exceeds_quantity,omitempty"` +} + +func (x *CheckTemplateSetReferencesAppsResp_Item) Reset() { + *x = CheckTemplateSetReferencesAppsResp_Item{} + if protoimpl.UnsafeEnabled { + mi := &file_config_service_proto_msgTypes[323] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } } @@ -20270,7 +20688,7 @@ func (x *CheckTemplateSetReferencesAppsResp_Item) String() string { func (*CheckTemplateSetReferencesAppsResp_Item) ProtoMessage() {} func (x *CheckTemplateSetReferencesAppsResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[316] + mi := &file_config_service_proto_msgTypes[323] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20283,7 +20701,7 @@ func (x *CheckTemplateSetReferencesAppsResp_Item) ProtoReflect() protoreflect.Me // Deprecated: Use CheckTemplateSetReferencesAppsResp_Item.ProtoReflect.Descriptor instead. func (*CheckTemplateSetReferencesAppsResp_Item) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{215, 0} + return file_config_service_proto_rawDescGZIP(), []int{219, 0} } func (x *CheckTemplateSetReferencesAppsResp_Item) GetTemplateSetId() uint32 { @@ -20328,6 +20746,20 @@ func (x *CheckTemplateSetReferencesAppsResp_Item) GetTemplateSetExceedsLimit() b return false } +func (x *CheckTemplateSetReferencesAppsResp_Item) GetAppExceedsQuantity() uint32 { + if x != nil { + return x.AppExceedsQuantity + } + return 0 +} + +func (x *CheckTemplateSetReferencesAppsResp_Item) GetTemplateSetExceedsQuantity() uint32 { + if x != nil { + return x.TemplateSetExceedsQuantity + } + return 0 +} + type ListAllGroupsResp_ListAllGroupsData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -20345,7 +20777,7 @@ type ListAllGroupsResp_ListAllGroupsData struct { func (x *ListAllGroupsResp_ListAllGroupsData) Reset() { *x = ListAllGroupsResp_ListAllGroupsData{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[317] + mi := &file_config_service_proto_msgTypes[324] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20358,7 +20790,7 @@ func (x *ListAllGroupsResp_ListAllGroupsData) String() string { func (*ListAllGroupsResp_ListAllGroupsData) ProtoMessage() {} func (x *ListAllGroupsResp_ListAllGroupsData) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[317] + mi := &file_config_service_proto_msgTypes[324] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20371,7 +20803,7 @@ func (x *ListAllGroupsResp_ListAllGroupsData) ProtoReflect() protoreflect.Messag // Deprecated: Use ListAllGroupsResp_ListAllGroupsData.ProtoReflect.Descriptor instead. func (*ListAllGroupsResp_ListAllGroupsData) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{249, 0} + return file_config_service_proto_rawDescGZIP(), []int{253, 0} } func (x *ListAllGroupsResp_ListAllGroupsData) GetId() uint32 { @@ -20435,7 +20867,7 @@ type ListAllGroupsResp_ListAllGroupsData_BindApp struct { func (x *ListAllGroupsResp_ListAllGroupsData_BindApp) Reset() { *x = ListAllGroupsResp_ListAllGroupsData_BindApp{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[318] + mi := &file_config_service_proto_msgTypes[325] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20448,7 +20880,7 @@ func (x *ListAllGroupsResp_ListAllGroupsData_BindApp) String() string { func (*ListAllGroupsResp_ListAllGroupsData_BindApp) ProtoMessage() {} func (x *ListAllGroupsResp_ListAllGroupsData_BindApp) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[318] + mi := &file_config_service_proto_msgTypes[325] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20461,7 +20893,7 @@ func (x *ListAllGroupsResp_ListAllGroupsData_BindApp) ProtoReflect() protoreflec // Deprecated: Use ListAllGroupsResp_ListAllGroupsData_BindApp.ProtoReflect.Descriptor instead. func (*ListAllGroupsResp_ListAllGroupsData_BindApp) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{249, 0, 0} + return file_config_service_proto_rawDescGZIP(), []int{253, 0, 0} } func (x *ListAllGroupsResp_ListAllGroupsData_BindApp) GetId() uint32 { @@ -20495,7 +20927,7 @@ type ListAppGroupsResp_ListAppGroupsData struct { func (x *ListAppGroupsResp_ListAppGroupsData) Reset() { *x = ListAppGroupsResp_ListAppGroupsData{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[319] + mi := &file_config_service_proto_msgTypes[326] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20508,7 +20940,7 @@ func (x *ListAppGroupsResp_ListAppGroupsData) String() string { func (*ListAppGroupsResp_ListAppGroupsData) ProtoMessage() {} func (x *ListAppGroupsResp_ListAppGroupsData) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[319] + mi := &file_config_service_proto_msgTypes[326] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20521,7 +20953,7 @@ func (x *ListAppGroupsResp_ListAppGroupsData) ProtoReflect() protoreflect.Messag // Deprecated: Use ListAppGroupsResp_ListAppGroupsData.ProtoReflect.Descriptor instead. func (*ListAppGroupsResp_ListAppGroupsData) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{251, 0} + return file_config_service_proto_rawDescGZIP(), []int{255, 0} } func (x *ListAppGroupsResp_ListAppGroupsData) GetGroupId() uint32 { @@ -20588,7 +21020,7 @@ type ListGroupReleasedAppsResp_ListGroupReleasedAppsData struct { func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) Reset() { *x = ListGroupReleasedAppsResp_ListGroupReleasedAppsData{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[320] + mi := &file_config_service_proto_msgTypes[327] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20601,7 +21033,7 @@ func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) String() string { func (*ListGroupReleasedAppsResp_ListGroupReleasedAppsData) ProtoMessage() {} func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[320] + mi := &file_config_service_proto_msgTypes[327] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20614,7 +21046,7 @@ func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) ProtoReflect() pro // Deprecated: Use ListGroupReleasedAppsResp_ListGroupReleasedAppsData.ProtoReflect.Descriptor instead. func (*ListGroupReleasedAppsResp_ListGroupReleasedAppsData) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{253, 0} + return file_config_service_proto_rawDescGZIP(), []int{257, 0} } func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) GetAppId() uint32 { @@ -20666,7 +21098,7 @@ type BatchUpsertKvsReq_Kv struct { func (x *BatchUpsertKvsReq_Kv) Reset() { *x = BatchUpsertKvsReq_Kv{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[321] + mi := &file_config_service_proto_msgTypes[328] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20679,7 +21111,7 @@ func (x *BatchUpsertKvsReq_Kv) String() string { func (*BatchUpsertKvsReq_Kv) ProtoMessage() {} func (x *BatchUpsertKvsReq_Kv) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[321] + mi := &file_config_service_proto_msgTypes[328] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20692,7 +21124,7 @@ func (x *BatchUpsertKvsReq_Kv) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertKvsReq_Kv.ProtoReflect.Descriptor instead. func (*BatchUpsertKvsReq_Kv) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{270, 0} + return file_config_service_proto_rawDescGZIP(), []int{274, 0} } func (x *BatchUpsertKvsReq_Kv) GetKey() string { @@ -20735,7 +21167,7 @@ type ListClientsReq_Order struct { func (x *ListClientsReq_Order) Reset() { *x = ListClientsReq_Order{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[322] + mi := &file_config_service_proto_msgTypes[329] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20748,7 +21180,7 @@ func (x *ListClientsReq_Order) String() string { func (*ListClientsReq_Order) ProtoMessage() {} func (x *ListClientsReq_Order) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[322] + mi := &file_config_service_proto_msgTypes[329] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20761,7 +21193,7 @@ func (x *ListClientsReq_Order) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientsReq_Order.ProtoReflect.Descriptor instead. func (*ListClientsReq_Order) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{278, 0} + return file_config_service_proto_rawDescGZIP(), []int{282, 0} } func (x *ListClientsReq_Order) GetDesc() string { @@ -20793,7 +21225,7 @@ type ListClientsResp_Item struct { func (x *ListClientsResp_Item) Reset() { *x = ListClientsResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[323] + mi := &file_config_service_proto_msgTypes[330] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20806,7 +21238,7 @@ func (x *ListClientsResp_Item) String() string { func (*ListClientsResp_Item) ProtoMessage() {} func (x *ListClientsResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[323] + mi := &file_config_service_proto_msgTypes[330] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20819,7 +21251,7 @@ func (x *ListClientsResp_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientsResp_Item.ProtoReflect.Descriptor instead. func (*ListClientsResp_Item) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{279, 0} + return file_config_service_proto_rawDescGZIP(), []int{283, 0} } func (x *ListClientsResp_Item) GetClient() *client.Client { @@ -20869,7 +21301,7 @@ type ListClientEventsReq_Order struct { func (x *ListClientEventsReq_Order) Reset() { *x = ListClientEventsReq_Order{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[324] + mi := &file_config_service_proto_msgTypes[331] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20882,7 +21314,7 @@ func (x *ListClientEventsReq_Order) String() string { func (*ListClientEventsReq_Order) ProtoMessage() {} func (x *ListClientEventsReq_Order) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[324] + mi := &file_config_service_proto_msgTypes[331] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20895,7 +21327,7 @@ func (x *ListClientEventsReq_Order) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientEventsReq_Order.ProtoReflect.Descriptor instead. func (*ListClientEventsReq_Order) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{280, 0} + return file_config_service_proto_rawDescGZIP(), []int{284, 0} } func (x *ListClientEventsReq_Order) GetDesc() string { @@ -20929,7 +21361,7 @@ type CompareConfigItemConflictsResp_NonTemplateConfig struct { func (x *CompareConfigItemConflictsResp_NonTemplateConfig) Reset() { *x = CompareConfigItemConflictsResp_NonTemplateConfig{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[325] + mi := &file_config_service_proto_msgTypes[332] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -20942,7 +21374,7 @@ func (x *CompareConfigItemConflictsResp_NonTemplateConfig) String() string { func (*CompareConfigItemConflictsResp_NonTemplateConfig) ProtoMessage() {} func (x *CompareConfigItemConflictsResp_NonTemplateConfig) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[325] + mi := &file_config_service_proto_msgTypes[332] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20955,7 +21387,7 @@ func (x *CompareConfigItemConflictsResp_NonTemplateConfig) ProtoReflect() protor // Deprecated: Use CompareConfigItemConflictsResp_NonTemplateConfig.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsResp_NonTemplateConfig) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{296, 0} + return file_config_service_proto_rawDescGZIP(), []int{300, 0} } func (x *CompareConfigItemConflictsResp_NonTemplateConfig) GetId() uint32 { @@ -21026,7 +21458,7 @@ type CompareConfigItemConflictsResp_TemplateConfig struct { func (x *CompareConfigItemConflictsResp_TemplateConfig) Reset() { *x = CompareConfigItemConflictsResp_TemplateConfig{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[326] + mi := &file_config_service_proto_msgTypes[333] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21039,7 +21471,7 @@ func (x *CompareConfigItemConflictsResp_TemplateConfig) String() string { func (*CompareConfigItemConflictsResp_TemplateConfig) ProtoMessage() {} func (x *CompareConfigItemConflictsResp_TemplateConfig) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[326] + mi := &file_config_service_proto_msgTypes[333] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21052,7 +21484,7 @@ func (x *CompareConfigItemConflictsResp_TemplateConfig) ProtoReflect() protorefl // Deprecated: Use CompareConfigItemConflictsResp_TemplateConfig.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsResp_TemplateConfig) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{296, 1} + return file_config_service_proto_rawDescGZIP(), []int{300, 1} } func (x *CompareConfigItemConflictsResp_TemplateConfig) GetTemplateSpaceId() uint32 { @@ -21132,7 +21564,7 @@ type CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail struct func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) Reset() { *x = CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[327] + mi := &file_config_service_proto_msgTypes[334] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21145,7 +21577,7 @@ func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) S func (*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) ProtoMessage() {} func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[327] + mi := &file_config_service_proto_msgTypes[334] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21158,7 +21590,7 @@ func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) P // Deprecated: Use CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{296, 1, 0} + return file_config_service_proto_rawDescGZIP(), []int{300, 1, 0} } func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) GetTemplateId() uint32 { @@ -21203,7 +21635,7 @@ type CompareKvConflictsResp_Kv struct { func (x *CompareKvConflictsResp_Kv) Reset() { *x = CompareKvConflictsResp_Kv{} if protoimpl.UnsafeEnabled { - mi := &file_config_service_proto_msgTypes[328] + mi := &file_config_service_proto_msgTypes[335] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21216,7 +21648,7 @@ func (x *CompareKvConflictsResp_Kv) String() string { func (*CompareKvConflictsResp_Kv) ProtoMessage() {} func (x *CompareKvConflictsResp_Kv) ProtoReflect() protoreflect.Message { - mi := &file_config_service_proto_msgTypes[328] + mi := &file_config_service_proto_msgTypes[335] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21229,7 +21661,7 @@ func (x *CompareKvConflictsResp_Kv) ProtoReflect() protoreflect.Message { // Deprecated: Use CompareKvConflictsResp_Kv.ProtoReflect.Descriptor instead. func (*CompareKvConflictsResp_Kv) Descriptor() ([]byte, []int) { - return file_config_service_proto_rawDescGZIP(), []int{298, 0} + return file_config_service_proto_rawDescGZIP(), []int{302, 0} } func (x *CompareKvConflictsResp_Kv) GetKey() string { @@ -21664,7 +22096,7 @@ var file_config_service_proto_rawDesc = []byte{ 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, @@ -22256,8 +22688,8 @@ var file_config_service_proto_rawDesc = []byte{ 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x59, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, @@ -22437,7 +22869,7 @@ var file_config_service_proto_rawDesc = []byte{ 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, - 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x10, 0x0a, + 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x5e, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, @@ -22445,3089 +22877,3188 @@ var file_config_service_proto_rawDesc = []byte{ 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, - 0xad, 0x03, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, - 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, - 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, - 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, - 0x67, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, - 0x2c, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0xdf, 0x03, - 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x60, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, + 0x64, 0x22, 0xec, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x41, + 0x6e, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, + 0x7f, 0x0a, 0x06, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x30, 0x0a, 0x08, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0xad, 0x03, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, + 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, + 0x69, 0x67, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x22, 0x2c, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0xdf, + 0x03, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, + 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, + 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, + 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, + 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, + 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x22, 0x2c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x84, + 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, - 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, + 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x63, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x72, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x75, 0x0a, 0x16, 0x47, 0x65, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x89, 0x05, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, + 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0xa5, 0x04, 0x0a, 0x10, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, + 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x73, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0b, 0x20, + 0x73, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, + 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, - 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x73, 0x69, 0x67, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, - 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, - 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x2c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x84, 0x02, - 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, - 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, - 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, - 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x63, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x75, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x89, 0x05, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x06, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x1a, 0xa5, 0x04, 0x0a, 0x10, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, - 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, - 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, - 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x0a, - 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, - 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, - 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, - 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6d, 0x64, 0x35, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, - 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x22, 0xb1, 0x01, 0x0a, - 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, - 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, - 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, - 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x48, - 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, - 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x52, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, - 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x5d, 0x0a, 0x21, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, - 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x22, 0x61, 0x0a, 0x22, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xdb, - 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, - 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, - 0x6d, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x1d, 0x0a, - 0x0a, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x09, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x73, 0x22, 0x27, 0x0a, 0x15, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x99, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, - 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x09, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, - 0x65, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x97, 0x01, 0x0a, 0x14, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, - 0x6f, 0x72, 0x63, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xde, 0x01, - 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, - 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x61, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x5b, - 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x46, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, - 0x70, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, - 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x43, 0x0a, - 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, - 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, - 0x64, 0x73, 0x22, 0x4a, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x2d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x44, - 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, - 0x42, 0x69, 0x7a, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, + 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, + 0x79, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, + 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x22, 0xb1, 0x01, + 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, + 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, + 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x48, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, + 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x52, 0x0a, 0x1e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, + 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x5d, 0x0a, + 0x21, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, + 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x22, 0x61, 0x0a, 0x22, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, + 0xdb, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, + 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, + 0x65, 0x6d, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x1d, + 0x0a, 0x0a, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x09, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x73, 0x22, 0x27, 0x0a, + 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x99, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, + 0x6d, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x1d, 0x0a, + 0x0a, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x09, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, + 0x63, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x97, 0x01, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xde, + 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, + 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, + 0x5b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x65, 0x74, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x7f, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x46, 0x0a, 0x16, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, - 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2e, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, + 0x70, 0x70, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x2d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x43, + 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, + 0x69, 0x64, 0x73, 0x22, 0x4a, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x2d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, + 0x44, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, + 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, + 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x51, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x74, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x7f, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9e, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, - 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, + 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, + 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, - 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x64, + 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2e, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6a, 0x0a, 0x1b, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, - 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x49, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4a, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, - 0x64, 0x22, 0x68, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9e, 0x01, 0x0a, 0x1b, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6a, 0x0a, 0x1b, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x1c, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, - 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, - 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x60, 0x0a, 0x1d, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3f, 0x0a, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, - 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, - 0x79, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbb, 0x01, - 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x70, 0x0a, 0x25, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, - 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, - 0x79, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa3, 0x01, - 0x0a, 0x22, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4a, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, + 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, - 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x06, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, - 0x74, 0x62, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xa1, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, - 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x61, 0x74, - 0x62, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x21, 0x0a, 0x1f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, - 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x92, - 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, - 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, - 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, - 0x49, 0x64, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x70, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, + 0x49, 0x64, 0x22, 0x68, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, + 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xcd, 0x01, 0x0a, + 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, + 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x49, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x7e, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x60, 0x0a, 0x1d, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3f, 0x0a, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x42, 0x79, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbb, + 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, + 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x70, 0x0a, 0x25, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x42, 0x79, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa3, + 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x06, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, + 0x61, 0x74, 0x62, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xa1, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, + 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x61, + 0x74, 0x62, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x21, 0x0a, 0x1f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, + 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x92, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, + 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, + 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x09, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x49, 0x64, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, + 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x70, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, - 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x22, 0x48, 0x0a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x29, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, - 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x7e, 0x0a, 0x16, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x17, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x1e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x13, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x5f, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x74, - 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, - 0x64, 0x73, 0x22, 0x55, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, - 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x37, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x1b, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, - 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x61, 0x6c, 0x6c, 0x22, 0x74, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x62, 0x74, - 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x19, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x49, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, + 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x7e, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x32, 0x0a, + 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x73, 0x22, 0x48, 0x0a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x29, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xad, 0x05, 0x0a, 0x1d, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, + 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, + 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x08, 0x62, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x52, + 0x65, 0x71, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x94, 0x04, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x72, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x52, 0x65, + 0x71, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xe4, 0x01, 0x0a, 0x17, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, + 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x49, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7e, 0x0a, + 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, - 0x6c, 0x22, 0x70, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, - 0x6c, 0x6c, 0x22, 0x72, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, - 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x22, 0x4f, 0x0a, + 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x62, + 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xb8, + 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x13, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x5f, 0x0a, 0x1f, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x19, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, - 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x7c, 0x0a, 0x1e, - 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x23, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, - 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x61, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x84, - 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, - 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbf, 0x02, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, - 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, - 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, - 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x80, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x1e, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, - 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, - 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, - 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x7a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, - 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x41, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x55, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x87, 0x02, 0x0a, + 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, + 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, + 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, + 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x74, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, + 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x85, 0x02, 0x0a, + 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, - 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x70, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x74, 0x62, + 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x84, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, - 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x80, 0x02, 0x0a, - 0x21, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, - 0x42, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x1a, 0x2a, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0xe1, 0x02, 0x0a, 0x22, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xf5, 0x01, 0x0a, 0x04, - 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, - 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x70, - 0x70, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, - 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x22, 0xc7, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, - 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x76, 0x0a, - 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, - 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x72, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x62, 0x74, 0x62, + 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x1d, 0x4c, 0x69, + 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, - 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x80, 0x01, - 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x62, - 0x74, 0x62, 0x72, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x22, 0x8f, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x12, - 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, - 0x6d, 0x6f, 0x22, 0x2c, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x99, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, + 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, + 0x7c, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, + 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc1, 0x02, + 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, + 0x6c, 0x22, 0x84, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x46, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, + 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbf, 0x02, 0x0a, 0x21, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x22, 0x1c, 0x0a, 0x1a, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x64, 0x0a, 0x19, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x30, - 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, - 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb7, - 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, - 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x80, 0x01, 0x0a, 0x22, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc9, 0x01, + 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x7a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, + 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, + 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, + 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x63, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, + 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x84, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, + 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, + 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, + 0x80, 0x02, 0x0a, 0x21, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, + 0x64, 0x73, 0x12, 0x42, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x2a, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0xd6, 0x03, 0x0a, 0x22, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x05, 0x69, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xea, + 0x02, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x61, + 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, + 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, + 0x11, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x45, 0x78, 0x63, + 0x65, 0x65, 0x64, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, + 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, + 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x78, + 0x63, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x61, 0x70, 0x70, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, + 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x1d, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, + 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x63, 0x65, + 0x65, 0x64, 0x73, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xc7, 0x01, 0x0a, 0x1c, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, + 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x76, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc5, 0x01, + 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x80, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, + 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x22, 0x2c, 0x0a, 0x1a, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x99, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x30, 0x0a, + 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, + 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6d, 0x65, 0x6d, 0x6f, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x64, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb7, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, + 0x22, 0x63, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x6f, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, + 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x1b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x07, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, - 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x6f, 0x0a, - 0x1a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x44, - 0x0a, 0x1b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, - 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4a, 0x0a, 0x1a, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, - 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, - 0x22, 0x37, 0x0a, 0x1b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, - 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, - 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, - 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x76, 0x2e, 0x41, 0x70, 0x70, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x22, 0x70, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x49, 0x64, 0x22, 0x63, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, - 0x74, 0x76, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x1c, - 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, - 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, - 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x6e, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4a, 0x0a, 0x1a, + 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x07, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, - 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x64, 0x5f, - 0x61, 0x70, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, - 0x41, 0x70, 0x70, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 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, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, - 0x21, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, - 0x69, 0x64, 0x22, 0xe6, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x07, 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, - 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x42, - 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, - 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x29, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x22, 0xa2, 0x03, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0xc7, 0x02, 0x0a, 0x11, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x4e, 0x0a, - 0x09, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, - 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x42, 0x69, 0x6e, 0x64, - 0x41, 0x70, 0x70, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x33, 0x0a, - 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 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, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x61, - 0x70, 0x70, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x72, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x16, - 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x1a, 0x2d, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x70, - 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0xfa, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x1a, 0x9f, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, - 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 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, 0x0b, 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x12, 0x3a, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x18, 0x06, 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, - 0x0b, 0x6e, 0x65, 0x77, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, - 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x64, - 0x69, 0x74, 0x65, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, - 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb0, - 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0xa7, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x64, 0x69, - 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, - 0x64, 0x22, 0x49, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xad, 0x02, 0x0a, - 0x0a, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, - 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x10, 0x0a, 0x03, - 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2a, - 0x0a, 0x11, 0x67, 0x72, 0x61, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x79, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2f, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 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, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, - 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf2, 0x02, 0x0a, - 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x41, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, - 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, - 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x6d, - 0x6f, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, - 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2a, 0x0a, - 0x11, 0x67, 0x72, 0x61, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x79, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 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, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0x2f, 0x0a, 0x1d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x48, 0x0a, 0x0b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x61, 0x76, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x76, - 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x90, 0x01, 0x0a, - 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, - 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, - 0x6b, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, - 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, - 0x65, 0x6d, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x22, - 0x1e, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x77, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x1b, 0x45, 0x78, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, - 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, - 0x6d, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x86, 0x03, 0x0a, 0x0a, 0x4c, 0x69, 0x73, - 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, - 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x17, 0x0a, - 0x07, 0x6b, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, - 0x6b, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x70, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, - 0x76, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, - 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x4b, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, + 0x61, 0x74, 0x76, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x70, 0x0a, 0x21, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x22, 0x63, 0x0a, 0x22, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, + 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x76, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x22, 0x83, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, + 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, + 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x50, 0x0a, + 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, + 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, + 0x6e, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x0e, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x76, 0x0a, 0x1a, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, - 0x69, 0x7a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8d, 0x01, 0x0a, 0x1a, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, - 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x57, 0x0a, 0x0f, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x49, - 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x64, - 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x11, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, - 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x03, 0x6b, 0x76, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, - 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x76, 0x52, 0x03, - 0x6b, 0x76, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x61, - 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x41, 0x6c, 0x6c, 0x1a, 0x59, 0x0a, 0x02, 0x4b, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, - 0x6b, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, - 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, - 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x22, - 0x26, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x0d, 0x55, 0x6e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, + 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x22, + 0x58, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x0e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, + 0x7a, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, + 0x1b, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, + 0x12, 0x33, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 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, 0x08, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x21, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0xe6, 0x01, 0x0a, 0x0e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, + 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, + 0x69, 0x7a, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x1b, 0x0a, 0x09, 0x62, + 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, + 0x62, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x08, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 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, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x42, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, - 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x6e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4b, 0x0a, 0x09, 0x55, 0x6e, - 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, - 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x0c, 0x0a, 0x0a, 0x55, 0x6e, 0x64, 0x6f, 0x4b, - 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x68, 0x0a, 0x0c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, - 0x76, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, - 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x0f, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0xc5, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, + 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x29, 0x0a, + 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x22, 0xa2, 0x03, 0x0a, 0x11, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x1a, 0xc7, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x4e, 0x0a, 0x09, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, 0x70, + 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, + 0x61, 0x74, 0x61, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x52, 0x08, 0x62, 0x69, 0x6e, + 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x05, 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, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x1a, 0x2d, + 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, + 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, + 0xfa, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x9f, 0x02, 0x0a, 0x11, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, + 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0c, + 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 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, 0x0b, 0x6f, 0x6c, 0x64, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 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, 0x0b, 0x6e, 0x65, 0x77, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x22, 0x97, 0x01, 0x0a, + 0x18, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb0, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, + 0xa7, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x15, 0x0a, + 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, + 0x70, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x21, + 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x22, 0x49, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xad, 0x02, 0x0a, 0x0a, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x61, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x30, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, - 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, - 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x1a, 0x2d, 0x0a, 0x05, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x73, 0x63, 0x22, 0xe3, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, - 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x1a, 0xda, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x70, 0x75, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x12, 0x29, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, - 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x70, 0x75, 0x4d, 0x61, 0x78, 0x55, 0x73, 0x61, 0x67, 0x65, - 0x53, 0x74, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, - 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x12, 0x2f, 0x0a, - 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x6d, - 0x6f, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x22, 0xe1, - 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x61, 0x79, 0x5f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, + 0x20, 0x03, 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, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf2, 0x02, 0x0a, 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, + 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x61, 0x79, 0x5f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x67, 0x72, 0x61, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 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, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x1d, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, 0x6e, 0x64, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x48, 0x0a, 0x0b, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x61, 0x76, + 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x76, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, + 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, + 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x22, 0x1e, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x77, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x61, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x35, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x1a, 0x2d, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, - 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, - 0x73, 0x63, 0x22, 0x59, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x2b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa1, 0x01, - 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, - 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, - 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa2, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, + 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x0e, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x86, 0x03, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, + 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, + 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6f, + 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x70, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x49, 0x64, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x70, 0x0a, 0x0b, 0x4c, 0x69, 0x73, + 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x08, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4b, 0x0a, 0x0b, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, + 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x0e, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x76, 0x0a, 0x1a, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, + 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, + 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x8d, 0x01, 0x0a, 0x1a, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, + 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, + 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x57, 0x0a, 0x0f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, + 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0d, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x64, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x11, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x2c, 0x0a, + 0x03, 0x6b, 0x76, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, + 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x76, 0x52, 0x03, 0x6b, 0x76, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, + 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x41, 0x6c, 0x6c, 0x1a, 0x59, 0x0a, 0x02, + 0x4b, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x22, 0x26, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, + 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, + 0x4f, 0x0a, 0x0d, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, + 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x22, 0x10, 0x0a, 0x0e, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x4b, 0x0a, 0x09, 0x55, 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, + 0x0c, 0x0a, 0x0a, 0x55, 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x68, 0x0a, + 0x0c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x59, 0x0a, 0x14, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x71, - 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xca, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x0f, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, + 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xc5, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, + 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x1a, 0x2d, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, + 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x10, + 0x0a, 0x03, 0x61, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x73, 0x63, + 0x22, 0xe3, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, + 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xda, 0x01, 0x0a, 0x04, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, + 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, + 0x12, 0x29, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x70, 0x75, + 0x4d, 0x61, 0x78, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x6d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, + 0x67, 0x65, 0x53, 0x74, 0x72, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x55, 0x73, + 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x22, 0xe1, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, - 0x0a, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 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, 0x0f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x27, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb9, 0x01, 0x0a, 0x14, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, - 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 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, 0x0f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x54, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, - 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x5b, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x18, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x69, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x22, 0x7f, - 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x41, 0x6e, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, - 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, - 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, - 0x8e, 0x01, 0x0a, 0x1d, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x20, - 0x0a, 0x0c, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, - 0x22, 0xa3, 0x09, 0x0a, 0x1e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x14, 0x6e, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, - 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x6e, 0x6f, 0x6e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x5e, 0x0a, - 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, - 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x1a, 0x85, 0x02, - 0x0a, 0x11, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, - 0x65, 0x6d, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x70, 0x62, 0x63, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x19, 0x0a, - 0x08, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6d, 0x64, 0x35, 0x1a, 0xae, 0x05, 0x0a, 0x0e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, - 0x78, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x78, - 0x69, 0x73, 0x74, 0x12, 0x79, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x4a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, + 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x2d, 0x0a, 0x05, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x73, 0x63, 0x22, 0x59, 0x0a, 0x14, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x65, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, + 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x74, + 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa2, 0x01, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, + 0x6c, 0x6c, 0x22, 0x59, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x2b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x71, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xca, 0x01, + 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, + 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, + 0x70, 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 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, 0x0f, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x0a, 0x15, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x02, 0x69, 0x64, 0x22, 0xb9, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, + 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 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, 0x0f, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x17, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x54, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x17, + 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5b, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, + 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, + 0x70, 0x70, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x22, 0x7f, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x6e, 0x64, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x1d, 0x43, 0x6f, 0x6d, 0x70, + 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6f, 0x74, + 0x68, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x22, 0xa3, 0x09, 0x0a, 0x1e, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, + 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x14, 0x6e, + 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, + 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, + 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x12, 0x6e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x5e, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x11, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, - 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x31, - 0x0a, 0x15, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, - 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0xc2, 0x01, 0x0a, 0x16, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, - 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x09, - 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x70, 0x61, - 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, - 0x0c, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x22, - 0xe8, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, 0x6e, - 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x78, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, - 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4b, 0x76, 0x52, 0x05, 0x65, 0x78, 0x69, 0x73, - 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x6e, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x1a, 0x85, 0x02, 0x0a, 0x11, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x10, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x69, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, + 0x64, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x1a, 0xae, 0x05, + 0x0a, 0x0e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x79, 0x0a, 0x12, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, + 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0xc2, 0x01, 0x0a, 0x16, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x86, + 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, 0x6e, 0x66, + 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, + 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, + 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6f, 0x74, 0x68, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x22, 0xe8, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x2e, 0x4b, 0x76, 0x52, 0x08, 0x6e, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x1a, - 0x59, 0x0a, 0x02, 0x4b, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x76, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x22, 0x53, 0x0a, 0x23, 0x47, 0x65, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, - 0x8f, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, - 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x32, 0xc2, 0xd0, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6e, 0x0a, - 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x71, 0x0a, - 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0a, - 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x1a, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x70, - 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, - 0x12, 0x77, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x12, 0x12, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, - 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a, 0x39, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, - 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x58, 0x0a, 0x06, 0x47, 0x65, 0x74, - 0x41, 0x70, 0x70, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, - 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, - 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x71, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, - 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x61, - 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, - 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, - 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x61, 0x70, 0x70, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x63, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x12, 0x7c, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x42, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, - 0x70, 0x73, 0x42, 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x69, 0x73, - 0x74, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa3, 0x01, 0x0a, 0x10, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x3a, 0x01, 0x2a, - 0x22, 0x4d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, - 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0x9e, 0x01, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x41, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x1a, 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x12, 0xb7, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, - 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x66, 0x3a, 0x01, 0x2a, 0x1a, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, - 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, - 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xb4, 0x01, 0x0a, 0x10, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x69, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x2a, 0x61, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, - 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, - 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x73, 0x70, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, + 0x4b, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, + 0x4b, 0x76, 0x52, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x6e, 0x6f, 0x6e, + 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4b, 0x76, 0x52, 0x08, 0x6e, + 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x1a, 0x59, 0x0a, 0x02, 0x4b, 0x76, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x17, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6b, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, + 0x6d, 0x6f, 0x22, 0x53, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, + 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x1a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, + 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x17, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xde, 0xd3, 0x01, 0x0a, 0x06, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6e, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x38, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x70, + 0x70, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x71, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, + 0x70, 0x70, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x1a, 0x39, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x70, + 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, + 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x77, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x41, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2f, 0x61, 0x70, + 0x70, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x70, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, - 0x22, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x7d, 0x12, 0x58, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x12, 0x0f, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x70, + 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, + 0x12, 0x29, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, + 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x71, 0x0a, 0x0c, 0x47, + 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x3e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x6e, + 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x63, + 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x74, 0x12, 0x15, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x22, 0x12, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, + 0x70, 0x70, 0x73, 0x12, 0x7c, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x42, + 0x79, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x42, 0x79, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x33, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x61, 0x70, + 0x70, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x7d, 0x12, 0xa3, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, + 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x58, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, + 0x1a, 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0xbc, 0x01, 0x0a, 0x12, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x22, - 0x63, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, - 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x55, 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, - 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, - 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x67, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x61, 0x22, 0x5f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x75, 0x6e, 0x64, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, - 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x91, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, + 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0xb7, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x3a, 0x01, 0x2a, 0x1a, + 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, + 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0xb4, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x69, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x2a, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x16, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, 0x22, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0xbc, 0x01, + 0x0a, 0x12, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x22, 0x63, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, + 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, + 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xac, 0x01, 0x0a, + 0x0e, 0x55, 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x55, 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x61, 0x22, 0x5f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x75, 0x6e, 0x64, 0x6f, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, + 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, + 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x91, 0x01, 0x0a, 0x0d, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x12, 0x47, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, - 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, - 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbf, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, - 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x12, 0x5d, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x86, 0x01, 0x0a, 0x0f, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x18, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, - 0x6d, 0x73, 0x12, 0xb4, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x12, 0x4c, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, - 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, - 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, - 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x8f, 0x01, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2f, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x15, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, - 0x54, 0x75, 0x70, 0x6c, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, 0x75, 0x70, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, 0x75, 0x70, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, - 0x2a, 0x22, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, - 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x12, - 0x93, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, - 0x76, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x2f, - 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x12, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x12, 0x8c, 0x01, 0x0a, 0x10, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x6f, 0x6f, 0x6b, - 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, - 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, - 0x01, 0x2a, 0x1a, 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x7b, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x7d, 0x12, + 0xbf, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x5f, 0x12, 0x5d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x92, 0x01, 0x0a, 0x0d, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x16, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x22, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2f, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2f, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0x79, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, - 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3a, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x97, 0x01, 0x0a, 0x10, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x72, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x22, 0x54, + 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, + 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0xb4, 0x01, + 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x12, 0x4c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x7e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x72, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x8f, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, + 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa1, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x22, 0x3c, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, + 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x12, 0x16, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, + 0x76, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x51, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, + 0x12, 0x93, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x64, 0x4b, 0x76, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x64, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x45, 0x12, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, + 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x12, 0x8c, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x19, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x1a, 0x36, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, + 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, + 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x92, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, + 0x3a, 0x01, 0x2a, 0x22, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x79, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x34, 0x12, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, + 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x97, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x42, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x4e, 0x12, 0x4c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, + 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, + 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, + 0x7e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x13, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, + 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, + 0x9c, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x72, + 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x51, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x4b, 0x1a, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9c, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x72, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x12, 0xa7, + 0x01, 0x0a, 0x12, 0x55, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x44, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x1a, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x12, 0x55, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, - 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x3a, 0x01, 0x2a, - 0x1a, 0x4b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, - 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x75, 0x6e, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x12, 0x89, 0x01, - 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, - 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x96, 0x01, 0x0a, 0x10, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x3a, 0x01, 0x2a, 0x1a, 0x4b, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, + 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, + 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x6e, 0x64, + 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x96, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, - 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x12, 0x65, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, - 0x12, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, - 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x6c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x61, 0x70, 0x69, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, + 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, + 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x65, 0x0a, + 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, + 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, + 0x2a, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x6c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, + 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x33, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0x7d, 0x0a, 0x0f, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, + 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, + 0x2a, 0x22, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x12, 0x6f, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, + 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x1a, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, + 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, + 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, + 0x12, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, + 0x6f, 0x6b, 0x73, 0x12, 0x6c, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x54, + 0x61, 0x67, 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, + 0x6f, 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, - 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7d, 0x0a, 0x0f, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, - 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x39, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x74, 0x61, 0x67, + 0x73, 0x12, 0x63, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x10, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x11, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, + 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x96, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, + 0x3a, 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x90, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x42, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x2a, 0x48, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, + 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, + 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xac, 0x01, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x48, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x48, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x58, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x52, 0x1a, 0x50, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x91, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x68, 0x72, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x12, + 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, + 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, + 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa4, 0x01, 0x0a, 0x12, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x53, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x1a, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x6f, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x1a, 0x2b, 0x2f, 0x61, 0x70, 0x69, + 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, + 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, - 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x5f, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x48, - 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x29, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x6c, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, - 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x54, - 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, - 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, - 0x6b, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x12, 0x63, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, - 0x6b, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, - 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, - 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, - 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x96, 0x01, 0x0a, 0x12, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, - 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, - 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, - 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, - 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, - 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x4a, 0x2a, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, - 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, - 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xac, 0x01, 0x0a, 0x13, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x1a, 0x50, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, - 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x91, 0x01, 0x0a, 0x0f, 0x47, - 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x68, 0x72, 0x2e, - 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x4a, 0x12, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x73, 0x12, 0xc4, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x55, 0x12, 0x53, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa4, - 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x1a, 0x48, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, - 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, - 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, - 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, - 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, - 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0xc4, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, - 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x12, 0x53, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x68, 0x6f, - 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x92, - 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, 0x6f, - 0x6b, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, 0x45, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, - 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, - 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, - 0x6f, 0x6b, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, - 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x12, 0x9b, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, - 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9e, - 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x92, 0x01, 0x0a, 0x0e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x17, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x8a, + 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x1a, 0x3f, + 0x65, 0x73, 0x70, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0x84, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x13, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x13, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x1a, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x79, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, - 0x42, 0x69, 0x7a, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x12, 0x10, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, - 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, - 0x42, 0x69, 0x7a, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x62, 0x69, 0x7a, - 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x12, 0x96, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x79, - 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, - 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, - 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x0e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x17, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x22, 0x49, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, - 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5f, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x59, 0x2a, 0x57, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, - 0x01, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x2a, 0x49, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, - 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x84, 0x01, 0x0a, 0x12, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x33, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x12, 0x79, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x7a, 0x73, 0x4f, + 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, 0x70, 0x62, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x7a, 0x73, 0x4f, + 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x62, 0x69, 0x7a, 0x73, 0x12, 0x8e, 0x01, 0x0a, + 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6d, + 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x96, 0x01, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, + 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x5f, + 0x62, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x62, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x5c, 0x3a, 0x01, 0x2a, 0x1a, 0x57, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x54, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x22, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x12, 0x93, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, - 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x14, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, - 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x3a, 0x01, 0x2a, 0x22, 0x60, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x8e, 0x02, 0x0a, 0x1e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x98, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x91, 0x01, 0x3a, 0x01, 0x2a, 0x22, 0x8b, - 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2f, 0x7b, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xdb, 0x01, 0x0a, - 0x12, 0x41, 0x64, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x54, 0x6f, 0x54, 0x6d, 0x70, 0x6c, 0x53, - 0x65, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x6d, - 0x70, 0x6c, 0x73, 0x54, 0x6f, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x73, - 0x54, 0x6f, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x89, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x82, 0x01, 0x3a, 0x01, 0x2a, 0x22, 0x7d, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, - 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x61, 0x64, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x12, 0xf0, 0x01, 0x0a, 0x17, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6d, - 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6d, 0x70, - 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x54, - 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8f, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x88, 0x01, 0x3a, 0x01, 0x2a, 0x22, 0x82, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x12, 0x8d, 0x01, - 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, - 0x79, 0x49, 0x44, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x12, 0xba, 0x01, - 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, - 0x6f, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, - 0x12, 0x58, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x65, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x59, + 0x2a, 0x57, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, - 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0xae, 0x01, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, - 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x54, 0x3a, 0x01, 0x2a, 0x22, 0x4f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x12, 0xc2, 0x01, 0x0a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, - 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, - 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x71, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x6b, 0x12, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x12, 0xd2, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x75, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6f, 0x3a, 0x01, 0x2a, 0x22, 0x6a, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, 0x0a, 0x13, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x51, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x2a, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x62, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5c, 0x3a, + 0x01, 0x2a, 0x1a, 0x57, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9b, 0x01, 0x0a, 0x0d, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x16, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x59, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x3a, 0x01, 0x2a, 0x22, 0x4e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd2, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x75, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6f, 0x3a, 0x01, 0x2a, 0x1a, 0x6a, + 0x61, 0x74, 0x65, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0xc2, 0x01, 0x0a, 0x14, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, + 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x3a, 0x01, 0x2a, 0x22, 0x60, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, + 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x75, 0x70, + 0x73, 0x65, 0x72, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x8e, + 0x02, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x98, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x91, 0x01, 0x3a, 0x01, + 0x2a, 0x22, 0x8b, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, + 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0xdb, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x54, 0x6f, 0x54, 0x6d, + 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x54, 0x6f, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x6d, + 0x70, 0x6c, 0x73, 0x54, 0x6f, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x82, 0x01, 0x3a, 0x01, 0x2a, 0x22, 0x7d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x15, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x12, 0x6a, 0x2f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2f, 0x7b, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x61, 0x64, 0x64, 0x5f, 0x74, 0x6f, 0x5f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x12, 0xf0, 0x01, + 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x46, 0x72, 0x6f, + 0x6d, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x46, 0x72, 0x6f, 0x6d, + 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x46, 0x72, + 0x6f, 0x6d, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8f, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x88, 0x01, 0x3a, 0x01, 0x2a, 0x22, 0x82, 0x01, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, + 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, + 0x12, 0x8d, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, + 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x73, + 0x12, 0xba, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, + 0x6f, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, + 0x6f, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x60, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x5a, 0x12, 0x58, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x6c, + 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0xae, 0x01, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, + 0x54, 0x75, 0x70, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x54, 0x3a, 0x01, 0x2a, 0x22, 0x4f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, - 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xae, - 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x23, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, - 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, - 0x3a, 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x12, - 0xc9, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, - 0x44, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, - 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x3a, 0x01, 0x2a, - 0x22, 0x49, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x11, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x65, 0x74, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x61, 0x2a, 0x5f, 0x2f, 0x61, 0x70, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x12, 0xc5, + 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, + 0x70, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, + 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6e, 0x3a, 0x01, 0x2a, 0x22, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xb8, 0x01, 0x0a, - 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0xc5, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x41, + 0x6e, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x26, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x12, 0x4e, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, + 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd2, + 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x75, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x6f, 0x3a, 0x01, 0x2a, 0x22, 0x6a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0xd2, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6a, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x64, 0x3a, 0x01, 0x2a, 0x1a, 0x5f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa0, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x12, 0x4d, 0x2f, 0x61, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, + 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x75, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6f, 0x3a, 0x01, 0x2a, 0x1a, 0x6a, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, + 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x12, 0x6a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x12, 0x93, 0x01, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, - 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, - 0x12, 0x9a, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x48, 0x12, 0x46, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xae, 0x01, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, + 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, 0x01, + 0x2a, 0x22, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x12, 0xc9, 0x01, + 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, + 0x12, 0x27, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, + 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x3a, 0x01, 0x2a, 0x22, 0x49, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, + 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6c, + 0x69, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x12, 0xa6, 0x01, 0x0a, 0x11, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, + 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, + 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, + 0x74, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x61, 0x2a, 0x5f, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x11, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x64, 0x3a, 0x01, 0x2a, 0x1a, 0x5f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa0, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x40, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, - 0x73, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x12, 0x8f, 0x01, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, - 0x42, 0x69, 0x7a, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x71, 0x1a, - 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, - 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x22, 0x41, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x12, 0x4d, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x12, 0x93, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, + 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3f, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x12, 0x9a, + 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, + 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, + 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3a, 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, - 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x69, 0x7a, 0x12, - 0xa9, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, + 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x12, 0x8f, 0x01, 0x0a, 0x11, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, + 0x7a, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, + 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x6c, 0x69, + 0x73, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x69, 0x7a, 0x12, 0xa9, 0x01, + 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, + 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb3, 0x01, 0x0a, 0x18, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x2a, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x2f, 0x7b, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x12, + 0xb6, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, + 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, - 0x22, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, + 0x22, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, + 0x65, 0x73, 0x70, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x1a, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xb3, 0x01, 0x0a, 0x18, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x2a, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0xb6, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, - 0x1a, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, - 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x62, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa3, 0x01, 0x0a, 0x17, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, + 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x62, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa3, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x43, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0xaa, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, - 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, - 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd8, 0x01, - 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, + 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xaa, + 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, + 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, + 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xd8, 0x01, 0x0a, 0x21, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, + 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5a, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x54, 0x12, 0x52, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xe9, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, + 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x2b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5a, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x54, 0x12, 0x52, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xe9, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, - 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6b, 0x12, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd2, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, - 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x66, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x3a, 0x01, 0x2a, 0x1a, 0x5b, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, - 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x62, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x16, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, - 0x53, 0x65, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, - 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x58, 0x2a, - 0x56, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x62, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, - 0x74, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, - 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, - 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x2a, 0x48, 0x2f, 0x61, 0x70, 0x69, + 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6b, 0x12, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0xd2, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, + 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x66, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x3a, 0x01, 0x2a, 0x1a, 0x5b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, - 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, - 0x65, 0x74, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xb5, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, - 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, - 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x3a, 0x01, 0x2a, - 0x22, 0x4a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, - 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xb5, 0x01, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x3a, 0x01, 0x2a, 0x22, 0x56, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, - 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x12, 0xef, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, - 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7c, 0x3a, 0x01, 0x2a, 0x22, 0x77, 0x2f, + 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x62, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, + 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x58, 0x2a, 0x56, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, - 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, - 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x3a, 0x01, 0x2a, 0x22, - 0x5a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0xdc, 0x01, 0x0a, 0x18, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x73, 0x12, 0x71, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, - 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0xd4, 0x01, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x77, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, - 0x12, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, + 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x62, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x65, 0x74, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x12, + 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x2a, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, + 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x7d, 0x12, 0xb5, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, + 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x3a, 0x01, 0x2a, 0x22, 0x4a, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, + 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, + 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xc3, 0x01, 0x0a, 0x1a, 0x49, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x24, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x54, 0x3a, 0x01, 0x2a, 0x22, + 0x4f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x69, 0x6d, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, + 0x12, 0xb5, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x3a, 0x01, 0x2a, + 0x22, 0x56, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x12, 0xd4, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7a, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x74, 0x12, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0xef, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7c, 0x3a, 0x01, + 0x2a, 0x22, 0x77, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x16, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, + 0x3a, 0x01, 0x2a, 0x22, 0x5a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, + 0x74, 0x73, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, + 0xdc, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x21, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x22, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x73, 0x12, 0x71, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, + 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, + 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0xd4, + 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x77, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x71, 0x12, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, - 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x12, 0x64, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x12, 0xa1, 0x02, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, - 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x29, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa5, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x9e, 0x01, 0x12, 0x9b, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x12, 0x99, 0x02, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, - 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, - 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa3, 0x01, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x9c, 0x01, 0x12, 0x99, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x12, 0xee, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, - 0x12, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, - 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x81, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7b, 0x12, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, 0x6e, - 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x12, 0xea, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, - 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x29, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, - 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6f, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x69, 0x12, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x73, 0x65, 0x74, 0x73, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, - 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0xf0, - 0x01, 0x0a, 0x1e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, - 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, 0x3a, 0x01, 0x2a, 0x22, - 0x70, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x5f, 0x61, 0x70, 0x70, - 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, - 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, - 0x22, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, - 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x79, - 0x12, 0x77, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, - 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, - 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0xf6, 0x01, 0x0a, 0x1e, 0x4c, 0x69, - 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x27, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7a, 0x12, 0x78, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x75, 0x6e, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0xd4, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, + 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, + 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x12, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, - 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x12, 0x96, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, 0x61, 0x70, + 0x7d, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0xd5, 0x01, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x12, 0x64, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, + 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0xa1, 0x02, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, + 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x29, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x22, 0xa5, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9e, 0x01, 0x12, 0x9b, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0xaa, 0x01, 0x0a, 0x16, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x47, 0x2a, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x1b, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x7a, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x61, + 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, + 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x99, 0x02, 0x0a, 0x1e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa3, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9c, 0x01, 0x12, 0x99, 0x01, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0xee, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x81, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7b, 0x12, 0x79, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0xea, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, + 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x29, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, + 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x69, 0x12, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, + 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0xf0, 0x01, 0x0a, 0x1e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x41, 0x70, 0x70, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, + 0x3a, 0x01, 0x2a, 0x22, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, + 0x74, 0x73, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x5f, 0x61, 0x70, 0x70, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, + 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x73, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x79, 0x12, 0x77, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0xf6, 0x01, + 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, + 0x12, 0x27, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7a, 0x12, 0x78, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x62, 0x61, 0x74, - 0x63, 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x16, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, - 0x01, 0x2a, 0x1a, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x15, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x96, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, + 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, + 0xaa, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9e, 0x01, 0x0a, + 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, + 0x69, 0x7a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x01, 0x2a, + 0x22, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0xad, 0x01, + 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x1a, 0x45, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, + 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, + 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x12, 0xa0, 0x01, 0x0a, 0x17, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0xa0, 0x01, 0x0a, - 0x17, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x40, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, - 0xac, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, - 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, - 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, - 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x69, 0x6d, 0x70, + 0x6f, 0x72, 0x74, 0x12, 0xac, 0x01, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, + 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, + 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, + 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, + 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, + 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x12, 0x1f, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x12, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0xac, - 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4f, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x49, 0x12, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0xda, 0x01, - 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, - 0x12, 0x27, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, - 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x12, 0x5d, 0x2f, 0x61, 0x70, + 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x12, 0xda, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x52, 0x65, 0x66, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x12, + 0x5d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, + 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0xa4, + 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x1a, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, + 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1d, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, + 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x44, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x54, 0x12, 0x52, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x16, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, - 0x3a, 0x01, 0x2a, 0x1a, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, - 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3e, 0x12, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, - 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, - 0xc9, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x12, 0x25, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, - 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x5a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x54, 0x12, 0x52, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x69, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2d, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x71, 0x0a, 0x0b, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, + 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x2a, 0x2d, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, + 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x88, 0x01, + 0x0a, 0x11, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3a, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x22, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x69, 0x0a, 0x0b, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, - 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, - 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x71, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x88, 0x01, 0x0a, 0x11, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, - 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, - 0x3a, 0x01, 0x2a, 0x22, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x12, 0x74, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x1a, 0x2d, 0x2f, 0x61, 0x70, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x74, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x1a, + 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6c, + 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, + 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x7a, 0x0a, 0x0d, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x16, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x38, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, + 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6c, 0x0a, 0x0d, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2a, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x7a, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x32, 0x12, 0x30, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x12, 0x9d, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x5f, - 0x61, 0x70, 0x70, 0x73, 0x12, 0x8c, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x22, 0x51, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, 0x42, 0x4b, 0x41, 0x50, 0x49, 0x47, - 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x12, 0xb1, 0x01, 0x0a, 0x07, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, - 0x10, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, - 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x80, 0x01, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, 0x42, - 0x4b, 0x41, 0x50, 0x49, 0x47, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6b, 0x3a, 0x01, 0x2a, 0x22, - 0x66, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2f, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x2f, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x72, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, 0x6e, 0x64, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x81, 0x01, 0x0a, 0x11, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, - 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x12, 0x8c, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x22, 0x51, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, 0x42, 0x4b, + 0x41, 0x50, 0x49, 0x47, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, + 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb1, 0x01, 0x0a, 0x07, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x80, 0x01, 0xfa, 0xd2, 0xe4, 0x93, 0x02, + 0x09, 0x12, 0x07, 0x42, 0x4b, 0x41, 0x50, 0x49, 0x47, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6b, + 0x3a, 0x01, 0x2a, 0x22, 0x66, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x79, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x2f, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x2f, 0x7b, + 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x5f, + 0x69, 0x64, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x19, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, + 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x41, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, + 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, + 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x81, + 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x1a, + 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x35, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x73, 0x12, 0x7a, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x19, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x7a, - 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x7e, 0x0a, 0x10, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x1a, + 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x7e, + 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x2a, - 0x29, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x81, 0x01, 0x0a, 0x10, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, - 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, - 0x3a, 0x01, 0x2a, 0x1a, 0x29, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x31, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2b, 0x2a, 0x29, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x9d, - 0x01, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x7b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x9f, - 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, - 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x7b, 0x63, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, - 0x12, 0xa4, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4a, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x1a, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x2f, 0x7b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, - 0x65, 0x77, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, - 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, - 0x77, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x2f, 0x70, - 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x6b, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4b, 0x76, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x6b, 0x76, 0x73, 0x12, 0x71, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x12, - 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, - 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x3a, 0x01, - 0x2a, 0x1a, 0x33, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, - 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, - 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x12, 0x65, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x76, - 0x73, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x76, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, - 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, - 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x12, 0x6d, 0x0a, - 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x2a, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x81, + 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x34, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x1a, 0x29, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x12, 0x9d, 0x01, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, + 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x7b, 0x63, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x12, 0x9f, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x42, 0x12, 0x40, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x7b, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1e, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x1a, 0x3f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x7b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x16, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x50, + 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, + 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, + 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x2f, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x2f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x6b, 0x0a, 0x08, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x38, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8f, 0x01, 0x0a, - 0x0d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x12, 0x20, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, - 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x12, 0x71, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4b, 0x76, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x38, 0x3a, 0x01, 0x2a, 0x1a, 0x33, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x6b, 0x76, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x12, 0x65, 0x0a, 0x07, 0x4c, 0x69, + 0x73, 0x74, 0x4b, 0x76, 0x73, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, - 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x7d, - 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, - 0x12, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, - 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x1a, 0x2d, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, - 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x12, 0x7d, 0x0a, - 0x0a, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x12, 0x13, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, - 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x3c, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, - 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, - 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x2f, 0x7b, 0x6b, - 0x65, 0x79, 0x7d, 0x2f, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x6d, 0x0a, 0x06, - 0x55, 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, - 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, - 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3a, 0x22, 0x38, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, - 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, - 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x75, 0x6e, 0x64, 0x6f, 0x12, 0x7e, 0x0a, 0x09, 0x49, - 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, - 0x62, 0x63, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x01, 0x2a, 0x22, 0x3d, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, - 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x7d, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x78, 0x0a, 0x0b, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, - 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, 0x22, 0x43, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, - 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, - 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, - 0x72, 0x65, 0x74, 0x72, 0x79, 0x12, 0x8a, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x61, + 0x73, 0x12, 0x6d, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x12, 0x11, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, + 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x2a, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x1a, - 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, - 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x92, 0x01, - 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, - 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x44, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x2f, 0x7b, 0x69, - 0x64, 0x7d, 0x12, 0xa3, 0x01, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x62, - 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x46, 0x12, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x12, 0x8f, 0x01, 0x0a, 0x0d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4b, 0x76, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x3f, 0x3a, 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0x7d, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x4b, 0x76, 0x73, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, + 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, + 0x01, 0x2a, 0x1a, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x2f, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0xab, 0x01, 0x0a, 0x1d, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x56, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x3a, 0x01, 0x2a, 0x22, 0x4b, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x19, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, - 0x3a, 0x01, 0x2a, 0x22, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, + 0x73, 0x12, 0x7d, 0x0a, 0x0a, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x12, + 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, + 0x76, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3e, 0x22, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, + 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x12, 0x6d, 0x0a, 0x06, 0x55, 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x55, 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x55, 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x40, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x22, 0x38, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x6b, 0x76, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x2f, 0x75, 0x6e, 0x64, 0x6f, 0x12, + 0x7e, 0x0a, 0x09, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x12, 0x12, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4b, 0x76, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x48, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x01, 0x2a, + 0x22, 0x3d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, + 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x2f, + 0x7b, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x7d, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, + 0x78, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x14, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3c, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x19, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, + 0x22, 0x43, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, + 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x52, 0x65, + 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, + 0x22, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, + 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x12, 0x8a, 0x01, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x12, 0x19, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, + 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, + 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, + 0x62, 0x63, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, + 0x22, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, + 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x11, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, + 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, + 0x63, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, + 0x3a, 0x01, 0x2a, 0x1a, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x74, 0x72, 0x65, 0x6e, - 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x98, 0x01, 0x0a, - 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x12, 0x92, 0x01, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa3, 0x01, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1d, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1e, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x2f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0xab, 0x01, 0x0a, + 0x1d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, + 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x3a, 0x01, 0x2a, 0x22, 0x4b, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, + 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, + 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x19, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x52, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x22, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x6c, 0x6c, 0x5f, + 0x74, 0x72, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, + 0x12, 0x98, 0x01, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x4c, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x22, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x6c, 0x6c, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x15, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x46, 0x3a, 0x01, 0x2a, 0x22, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x47, 0x3a, 0x01, 0x2a, 0x22, 0x42, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x15, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x01, 0x2a, - 0x22, 0x42, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, - 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x1a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x3a, - 0x01, 0x2a, 0x22, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x17, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0xa4, 0x01, 0x0a, 0x1a, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x4f, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x52, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x4c, 0x3a, 0x01, 0x2a, 0x22, 0x47, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0xb3, 0x01, 0x0a, - 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x41, 0x6e, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, + 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, + 0x9e, 0x01, 0x0a, 0x17, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, + 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, + 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, + 0x12, 0xb3, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x6e, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x53, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x22, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0xa5, 0x01, 0x0a, 0x1a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, - 0x22, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, - 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x5f, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0xb9, 0x01, 0x0a, 0x1a, 0x43, - 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, - 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x63, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, - 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, - 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x12, 0x48, 0x2f, 0x61, + 0x6e, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x6e, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x22, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, - 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x61, - 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x1b, 0x2e, - 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, - 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x63, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x6c, - 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, - 0x12, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xa5, 0x01, 0x0a, 0x1a, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x4d, 0x3a, 0x01, 0x2a, 0x22, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, + 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0xb9, + 0x01, 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x23, 0x2e, + 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, + 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, + 0x12, 0x48, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, - 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x76, 0x73, 0x2f, - 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, - 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, - 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x0f, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, - 0x42, 0x4b, 0x41, 0x50, 0x49, 0x47, 0x57, 0x42, 0x59, 0x5a, 0x57, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, - 0x65, 0x4b, 0x69, 0x6e, 0x67, 0x2f, 0x62, 0x6b, 0x2d, 0x62, 0x63, 0x73, 0x2f, 0x62, 0x63, 0x73, - 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x62, 0x63, 0x73, 0x2d, 0x62, 0x73, - 0x63, 0x70, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3b, 0x70, 0x62, - 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x12, 0x43, + 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4b, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, + 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, + 0x4b, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4b, 0x76, 0x43, + 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x47, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x6b, 0x76, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x2e, 0x70, 0x62, 0x63, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, + 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x63, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x2f, 0x7b, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x70, 0x70, 0x73, 0x2f, 0x7b, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x0f, 0xfa, 0xd2, 0xe4, 0x93, + 0x02, 0x09, 0x12, 0x07, 0x42, 0x4b, 0x41, 0x50, 0x49, 0x47, 0x57, 0x42, 0x59, 0x5a, 0x57, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x65, 0x6e, 0x63, 0x65, 0x6e, + 0x74, 0x42, 0x6c, 0x75, 0x65, 0x4b, 0x69, 0x6e, 0x67, 0x2f, 0x62, 0x6b, 0x2d, 0x62, 0x63, 0x73, + 0x2f, 0x62, 0x63, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x62, 0x63, + 0x73, 0x2d, 0x62, 0x73, 0x63, 0x70, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x3b, 0x70, 0x62, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -25542,839 +26073,855 @@ func file_config_service_proto_rawDescGZIP() []byte { return file_config_service_proto_rawDescData } -var file_config_service_proto_msgTypes = make([]protoimpl.MessageInfo, 329) +var file_config_service_proto_msgTypes = make([]protoimpl.MessageInfo, 336) var file_config_service_proto_goTypes = []interface{}{ - (*UpdateCredentialScopeReq)(nil), // 0: pbcs.UpdateCredentialScopeReq - (*UpdateCredentialScopeResp)(nil), // 1: pbcs.UpdateCredentialScopeResp - (*CredentialScopePreviewReq)(nil), // 2: pbcs.CredentialScopePreviewReq - (*CredentialScopePreviewResp)(nil), // 3: pbcs.CredentialScopePreviewResp - (*ListCredentialScopesReq)(nil), // 4: pbcs.ListCredentialScopesReq - (*ListCredentialScopesResp)(nil), // 5: pbcs.ListCredentialScopesResp - (*EnableCredentialsReq)(nil), // 6: pbcs.EnableCredentialsReq - (*EnableCredentialsResp)(nil), // 7: pbcs.EnableCredentialsResp - (*DeleteCredentialsReq)(nil), // 8: pbcs.DeleteCredentialsReq - (*DeleteCredentialsResp)(nil), // 9: pbcs.DeleteCredentialsResp - (*UpdateCredentialsReq)(nil), // 10: pbcs.UpdateCredentialsReq - (*UpdateCredentialsResp)(nil), // 11: pbcs.UpdateCredentialsResp - (*CheckCredentialNameReq)(nil), // 12: pbcs.CheckCredentialNameReq - (*CheckCredentialNameResp)(nil), // 13: pbcs.CheckCredentialNameResp - (*ListCredentialsReq)(nil), // 14: pbcs.ListCredentialsReq - (*ListCredentialsResp)(nil), // 15: pbcs.ListCredentialsResp - (*CreateCredentialReq)(nil), // 16: pbcs.CreateCredentialReq - (*CreateCredentialResp)(nil), // 17: pbcs.CreateCredentialResp - (*CreateAppReq)(nil), // 18: pbcs.CreateAppReq - (*CreateAppResp)(nil), // 19: pbcs.CreateAppResp - (*UpdateAppReq)(nil), // 20: pbcs.UpdateAppReq - (*DeleteAppReq)(nil), // 21: pbcs.DeleteAppReq - (*DeleteAppResp)(nil), // 22: pbcs.DeleteAppResp - (*GetAppReq)(nil), // 23: pbcs.GetAppReq - (*GetAppByNameReq)(nil), // 24: pbcs.GetAppByNameReq - (*ListAppsRestReq)(nil), // 25: pbcs.ListAppsRestReq - (*ListAppsBySpaceRestReq)(nil), // 26: pbcs.ListAppsBySpaceRestReq - (*ListAppsResp)(nil), // 27: pbcs.ListAppsResp - (*CreateConfigItemReq)(nil), // 28: pbcs.CreateConfigItemReq - (*BatchUpsertConfigItemsReq)(nil), // 29: pbcs.BatchUpsertConfigItemsReq - (*BatchUpsertConfigItemsResp)(nil), // 30: pbcs.BatchUpsertConfigItemsResp - (*CreateConfigItemResp)(nil), // 31: pbcs.CreateConfigItemResp - (*UpdateConfigItemReq)(nil), // 32: pbcs.UpdateConfigItemReq - (*UpdateConfigItemResp)(nil), // 33: pbcs.UpdateConfigItemResp - (*DeleteConfigItemReq)(nil), // 34: pbcs.DeleteConfigItemReq - (*DeleteConfigItemResp)(nil), // 35: pbcs.DeleteConfigItemResp - (*UnDeleteConfigItemReq)(nil), // 36: pbcs.UnDeleteConfigItemReq - (*UnDeleteConfigItemResp)(nil), // 37: pbcs.UnDeleteConfigItemResp - (*UndoConfigItemReq)(nil), // 38: pbcs.UndoConfigItemReq - (*UndoConfigItemResp)(nil), // 39: pbcs.UndoConfigItemResp - (*GetConfigItemReq)(nil), // 40: pbcs.GetConfigItemReq - (*GetConfigItemResp)(nil), // 41: pbcs.GetConfigItemResp - (*GetReleasedConfigItemReq)(nil), // 42: pbcs.GetReleasedConfigItemReq - (*GetReleasedConfigItemResp)(nil), // 43: pbcs.GetReleasedConfigItemResp - (*ListConfigItemsReq)(nil), // 44: pbcs.ListConfigItemsReq - (*ListConfigItemsResp)(nil), // 45: pbcs.ListConfigItemsResp - (*ListReleasedConfigItemsReq)(nil), // 46: pbcs.ListReleasedConfigItemsReq - (*ListReleasedConfigItemsResp)(nil), // 47: pbcs.ListReleasedConfigItemsResp - (*ListConfigItemCountReq)(nil), // 48: pbcs.ListConfigItemCountReq - (*ListConfigItemCountResp)(nil), // 49: pbcs.ListConfigItemCountResp - (*ListConfigItemByTupleReq)(nil), // 50: pbcs.ListConfigItemByTupleReq - (*ListConfigItemByTupleResp)(nil), // 51: pbcs.ListConfigItemByTupleResp - (*GetReleasedKvReq)(nil), // 52: pbcs.GetReleasedKvReq - (*GetReleasedKvResp)(nil), // 53: pbcs.GetReleasedKvResp - (*ListReleasedKvsReq)(nil), // 54: pbcs.ListReleasedKvsReq - (*ListReleasedKvsResp)(nil), // 55: pbcs.ListReleasedKvsResp - (*UpdateConfigHookReq)(nil), // 56: pbcs.UpdateConfigHookReq - (*UpdateConfigHookResp)(nil), // 57: pbcs.UpdateConfigHookResp - (*CreateReleaseReq)(nil), // 58: pbcs.CreateReleaseReq - (*CreateReleaseResp)(nil), // 59: pbcs.CreateReleaseResp - (*CheckReleaseNameReq)(nil), // 60: pbcs.CheckReleaseNameReq - (*CheckReleaseNameResp)(nil), // 61: pbcs.CheckReleaseNameResp - (*ListReleasesReq)(nil), // 62: pbcs.ListReleasesReq - (*ListReleasesResp)(nil), // 63: pbcs.ListReleasesResp - (*GetReleaseByNameReq)(nil), // 64: pbcs.GetReleaseByNameReq - (*GetReleaseReq)(nil), // 65: pbcs.GetReleaseReq - (*DeprecateReleaseReq)(nil), // 66: pbcs.DeprecateReleaseReq - (*DeprecateReleaseResp)(nil), // 67: pbcs.DeprecateReleaseResp - (*UnDeprecateReleaseReq)(nil), // 68: pbcs.UnDeprecateReleaseReq - (*UnDeprecateReleaseResp)(nil), // 69: pbcs.UnDeprecateReleaseResp - (*DeleteReleaseReq)(nil), // 70: pbcs.DeleteReleaseReq - (*DeleteReleaseResp)(nil), // 71: pbcs.DeleteReleaseResp - (*CreateHookReq)(nil), // 72: pbcs.CreateHookReq - (*CreateHookResp)(nil), // 73: pbcs.CreateHookResp - (*DeleteHookReq)(nil), // 74: pbcs.DeleteHookReq - (*DeleteHookResp)(nil), // 75: pbcs.DeleteHookResp - (*BatchDeleteHookReq)(nil), // 76: pbcs.BatchDeleteHookReq - (*UpdateHookReq)(nil), // 77: pbcs.UpdateHookReq - (*UpdateHookResp)(nil), // 78: pbcs.UpdateHookResp - (*ListHooksReq)(nil), // 79: pbcs.ListHooksReq - (*ListHooksResp)(nil), // 80: pbcs.ListHooksResp - (*ListHookTagsReq)(nil), // 81: pbcs.ListHookTagsReq - (*ListHookTagsResp)(nil), // 82: pbcs.ListHookTagsResp - (*CreateHookRevisionReq)(nil), // 83: pbcs.CreateHookRevisionReq - (*CreateHookRevisionResp)(nil), // 84: pbcs.CreateHookRevisionResp - (*ListHookRevisionsReq)(nil), // 85: pbcs.ListHookRevisionsReq - (*ListHookRevisionsResp)(nil), // 86: pbcs.ListHookRevisionsResp - (*DeleteHookRevisionReq)(nil), // 87: pbcs.DeleteHookRevisionReq - (*DeleteHookRevisionResp)(nil), // 88: pbcs.DeleteHookRevisionResp - (*PublishHookRevisionReq)(nil), // 89: pbcs.PublishHookRevisionReq - (*PublishHookRevisionResp)(nil), // 90: pbcs.PublishHookRevisionResp - (*GetHookReq)(nil), // 91: pbcs.GetHookReq - (*GetHookResp)(nil), // 92: pbcs.GetHookResp - (*GetHookInfoSpec)(nil), // 93: pbcs.GetHookInfoSpec - (*GetHookRevisionReq)(nil), // 94: pbcs.GetHookRevisionReq - (*UpdateHookRevisionReq)(nil), // 95: pbcs.UpdateHookRevisionReq - (*UpdateHookRevisionResp)(nil), // 96: pbcs.UpdateHookRevisionResp - (*ListHookRevisionReferencesReq)(nil), // 97: pbcs.ListHookRevisionReferencesReq - (*ListHookRevisionReferencesResp)(nil), // 98: pbcs.ListHookRevisionReferencesResp - (*ListHookReferencesReq)(nil), // 99: pbcs.ListHookReferencesReq - (*ListHookReferencesResp)(nil), // 100: pbcs.ListHookReferencesResp - (*GetReleaseHookReq)(nil), // 101: pbcs.GetReleaseHookReq - (*GetReleaseHookResp)(nil), // 102: pbcs.GetReleaseHookResp - (*CreateTemplateSpaceReq)(nil), // 103: pbcs.CreateTemplateSpaceReq - (*CreateTemplateSpaceResp)(nil), // 104: pbcs.CreateTemplateSpaceResp - (*UpdateTemplateSpaceReq)(nil), // 105: pbcs.UpdateTemplateSpaceReq - (*UpdateTemplateSpaceResp)(nil), // 106: pbcs.UpdateTemplateSpaceResp - (*DeleteTemplateSpaceReq)(nil), // 107: pbcs.DeleteTemplateSpaceReq - (*DeleteTemplateSpaceResp)(nil), // 108: pbcs.DeleteTemplateSpaceResp - (*ListTemplateSpacesReq)(nil), // 109: pbcs.ListTemplateSpacesReq - (*ListTemplateSpacesResp)(nil), // 110: pbcs.ListTemplateSpacesResp - (*GetAllBizsOfTmplSpacesResp)(nil), // 111: pbcs.GetAllBizsOfTmplSpacesResp - (*CreateDefaultTmplSpaceReq)(nil), // 112: pbcs.CreateDefaultTmplSpaceReq - (*CreateDefaultTmplSpaceResp)(nil), // 113: pbcs.CreateDefaultTmplSpaceResp - (*ListTmplSpacesByIDsReq)(nil), // 114: pbcs.ListTmplSpacesByIDsReq - (*ListTmplSpacesByIDsResp)(nil), // 115: pbcs.ListTmplSpacesByIDsResp - (*CreateTemplateReq)(nil), // 116: pbcs.CreateTemplateReq - (*CreateTemplateResp)(nil), // 117: pbcs.CreateTemplateResp - (*UpdateTemplateReq)(nil), // 118: pbcs.UpdateTemplateReq - (*UpdateTemplateResp)(nil), // 119: pbcs.UpdateTemplateResp - (*DeleteTemplateReq)(nil), // 120: pbcs.DeleteTemplateReq - (*DeleteTemplateResp)(nil), // 121: pbcs.DeleteTemplateResp - (*BatchDeleteTemplateReq)(nil), // 122: pbcs.BatchDeleteTemplateReq - (*BatchDeleteTemplateResp)(nil), // 123: pbcs.BatchDeleteTemplateResp - (*ListTemplatesReq)(nil), // 124: pbcs.ListTemplatesReq - (*ListTemplatesResp)(nil), // 125: pbcs.ListTemplatesResp - (*BatchUpsertTemplatesReq)(nil), // 126: pbcs.BatchUpsertTemplatesReq - (*BatchUpsertTemplatesResp)(nil), // 127: pbcs.BatchUpsertTemplatesResp - (*BatchUpdateTemplatePermissionsReq)(nil), // 128: pbcs.BatchUpdateTemplatePermissionsReq - (*BatchUpdateTemplatePermissionsResp)(nil), // 129: pbcs.BatchUpdateTemplatePermissionsResp - (*AddTmplsToTmplSetsReq)(nil), // 130: pbcs.AddTmplsToTmplSetsReq - (*AddTmplsToTmplSetsResp)(nil), // 131: pbcs.AddTmplsToTmplSetsResp - (*DeleteTmplsFromTmplSetsReq)(nil), // 132: pbcs.DeleteTmplsFromTmplSetsReq - (*DeleteTmplsFromTmplSetsResp)(nil), // 133: pbcs.DeleteTmplsFromTmplSetsResp - (*ListTemplatesByIDsReq)(nil), // 134: pbcs.ListTemplatesByIDsReq - (*ListTemplatesByIDsResp)(nil), // 135: pbcs.ListTemplatesByIDsResp - (*ListTemplatesNotBoundReq)(nil), // 136: pbcs.ListTemplatesNotBoundReq - (*ListTemplateByTupleReq)(nil), // 137: pbcs.ListTemplateByTupleReq - (*ListTemplateByTupleResp)(nil), // 138: pbcs.ListTemplateByTupleResp - (*ListTemplatesNotBoundResp)(nil), // 139: pbcs.ListTemplatesNotBoundResp - (*ListTmplsOfTmplSetReq)(nil), // 140: pbcs.ListTmplsOfTmplSetReq - (*ListTmplsOfTmplSetResp)(nil), // 141: pbcs.ListTmplsOfTmplSetResp - (*CreateTemplateRevisionReq)(nil), // 142: pbcs.CreateTemplateRevisionReq - (*CreateTemplateRevisionResp)(nil), // 143: pbcs.CreateTemplateRevisionResp - (*UpdateTemplateRevisionReq)(nil), // 144: pbcs.UpdateTemplateRevisionReq - (*UpdateTemplateRevisionResp)(nil), // 145: pbcs.UpdateTemplateRevisionResp - (*ListTemplateRevisionsReq)(nil), // 146: pbcs.ListTemplateRevisionsReq - (*ListTemplateRevisionsResp)(nil), // 147: pbcs.ListTemplateRevisionsResp - (*GetTemplateRevisionReq)(nil), // 148: pbcs.GetTemplateRevisionReq - (*GetTemplateRevisionResp)(nil), // 149: pbcs.GetTemplateRevisionResp - (*DeleteTemplateRevisionReq)(nil), // 150: pbcs.DeleteTemplateRevisionReq - (*DeleteTemplateRevisionResp)(nil), // 151: pbcs.DeleteTemplateRevisionResp - (*ListTemplateRevisionsByIDsReq)(nil), // 152: pbcs.ListTemplateRevisionsByIDsReq - (*ListTemplateRevisionsByIDsResp)(nil), // 153: pbcs.ListTemplateRevisionsByIDsResp - (*ListTmplRevisionNamesByTmplIDsReq)(nil), // 154: pbcs.ListTmplRevisionNamesByTmplIDsReq - (*ListTmplRevisionNamesByTmplIDsResp)(nil), // 155: pbcs.ListTmplRevisionNamesByTmplIDsResp - (*CreateTemplateSetReq)(nil), // 156: pbcs.CreateTemplateSetReq - (*CreateTemplateSetResp)(nil), // 157: pbcs.CreateTemplateSetResp - (*UpdateTemplateSetReq)(nil), // 158: pbcs.UpdateTemplateSetReq - (*UpdateTemplateSetResp)(nil), // 159: pbcs.UpdateTemplateSetResp - (*DeleteTemplateSetReq)(nil), // 160: pbcs.DeleteTemplateSetReq - (*DeleteTemplateSetResp)(nil), // 161: pbcs.DeleteTemplateSetResp - (*ListTemplateSetsReq)(nil), // 162: pbcs.ListTemplateSetsReq - (*ListTemplateSetsResp)(nil), // 163: pbcs.ListTemplateSetsResp - (*ListAppTemplateSetsReq)(nil), // 164: pbcs.ListAppTemplateSetsReq - (*ListAppTemplateSetsResp)(nil), // 165: pbcs.ListAppTemplateSetsResp - (*ListTemplateSetsByIDsReq)(nil), // 166: pbcs.ListTemplateSetsByIDsReq - (*ListTemplateSetsByIDsResp)(nil), // 167: pbcs.ListTemplateSetsByIDsResp - (*ListTmplSetsOfBizReq)(nil), // 168: pbcs.ListTmplSetsOfBizReq - (*ListTmplSetsOfBizResp)(nil), // 169: pbcs.ListTmplSetsOfBizResp - (*CreateAppTemplateBindingReq)(nil), // 170: pbcs.CreateAppTemplateBindingReq - (*CreateAppTemplateBindingResp)(nil), // 171: pbcs.CreateAppTemplateBindingResp - (*UpdateAppTemplateBindingReq)(nil), // 172: pbcs.UpdateAppTemplateBindingReq - (*UpdateAppTemplateBindingResp)(nil), // 173: pbcs.UpdateAppTemplateBindingResp - (*DeleteAppTemplateBindingReq)(nil), // 174: pbcs.DeleteAppTemplateBindingReq - (*DeleteAppTemplateBindingResp)(nil), // 175: pbcs.DeleteAppTemplateBindingResp - (*ListAppTemplateBindingsReq)(nil), // 176: pbcs.ListAppTemplateBindingsReq - (*ListAppTemplateBindingsResp)(nil), // 177: pbcs.ListAppTemplateBindingsResp - (*ListAppBoundTmplRevisionsReq)(nil), // 178: pbcs.ListAppBoundTmplRevisionsReq - (*ListAppBoundTmplRevisionsResp)(nil), // 179: pbcs.ListAppBoundTmplRevisionsResp - (*ListReleasedAppBoundTmplRevisionsReq)(nil), // 180: pbcs.ListReleasedAppBoundTmplRevisionsReq - (*ListReleasedAppBoundTmplRevisionsResp)(nil), // 181: pbcs.ListReleasedAppBoundTmplRevisionsResp - (*GetReleasedAppBoundTmplRevisionReq)(nil), // 182: pbcs.GetReleasedAppBoundTmplRevisionReq - (*GetReleasedAppBoundTmplRevisionResp)(nil), // 183: pbcs.GetReleasedAppBoundTmplRevisionResp - (*UpdateAppBoundTmplRevisionsReq)(nil), // 184: pbcs.UpdateAppBoundTmplRevisionsReq - (*UpdateAppBoundTmplRevisionsResp)(nil), // 185: pbcs.UpdateAppBoundTmplRevisionsResp - (*DeleteAppBoundTmplSetsReq)(nil), // 186: pbcs.DeleteAppBoundTmplSetsReq - (*DeleteAppBoundTmplSetsResp)(nil), // 187: pbcs.DeleteAppBoundTmplSetsResp - (*RemoveAppBoundTmplSetReq)(nil), // 188: pbcs.RemoveAppBoundTmplSetReq - (*RemoveAppBoundTmplSetResp)(nil), // 189: pbcs.RemoveAppBoundTmplSetResp - (*CheckAppTemplateBindingReq)(nil), // 190: pbcs.CheckAppTemplateBindingReq - (*CheckAppTemplateBindingResp)(nil), // 191: pbcs.CheckAppTemplateBindingResp - (*ListTmplBoundCountsReq)(nil), // 192: pbcs.ListTmplBoundCountsReq - (*ListTmplBoundCountsResp)(nil), // 193: pbcs.ListTmplBoundCountsResp - (*ListTmplRevisionBoundCountsReq)(nil), // 194: pbcs.ListTmplRevisionBoundCountsReq - (*ListTmplRevisionBoundCountsResp)(nil), // 195: pbcs.ListTmplRevisionBoundCountsResp - (*ListTmplSetBoundCountsReq)(nil), // 196: pbcs.ListTmplSetBoundCountsReq - (*ListTmplSetBoundCountsResp)(nil), // 197: pbcs.ListTmplSetBoundCountsResp - (*ListTmplBoundUnnamedAppsReq)(nil), // 198: pbcs.ListTmplBoundUnnamedAppsReq - (*ListTmplBoundUnnamedAppsResp)(nil), // 199: pbcs.ListTmplBoundUnnamedAppsResp - (*ListTmplBoundNamedAppsReq)(nil), // 200: pbcs.ListTmplBoundNamedAppsReq - (*ListTmplBoundNamedAppsResp)(nil), // 201: pbcs.ListTmplBoundNamedAppsResp - (*ListTmplBoundTmplSetsReq)(nil), // 202: pbcs.ListTmplBoundTmplSetsReq - (*ListTmplBoundTmplSetsResp)(nil), // 203: pbcs.ListTmplBoundTmplSetsResp - (*ListMultiTmplBoundTmplSetsReq)(nil), // 204: pbcs.ListMultiTmplBoundTmplSetsReq - (*ListMultiTmplBoundTmplSetsResp)(nil), // 205: pbcs.ListMultiTmplBoundTmplSetsResp - (*ListTmplRevisionBoundUnnamedAppsReq)(nil), // 206: pbcs.ListTmplRevisionBoundUnnamedAppsReq - (*ListTmplRevisionBoundUnnamedAppsResp)(nil), // 207: pbcs.ListTmplRevisionBoundUnnamedAppsResp - (*ListTmplRevisionBoundNamedAppsReq)(nil), // 208: pbcs.ListTmplRevisionBoundNamedAppsReq - (*ListTmplRevisionBoundNamedAppsResp)(nil), // 209: pbcs.ListTmplRevisionBoundNamedAppsResp - (*ListTmplSetBoundUnnamedAppsReq)(nil), // 210: pbcs.ListTmplSetBoundUnnamedAppsReq - (*ListTmplSetBoundUnnamedAppsResp)(nil), // 211: pbcs.ListTmplSetBoundUnnamedAppsResp - (*ListMultiTmplSetBoundUnnamedAppsReq)(nil), // 212: pbcs.ListMultiTmplSetBoundUnnamedAppsReq - (*ListMultiTmplSetBoundUnnamedAppsResp)(nil), // 213: pbcs.ListMultiTmplSetBoundUnnamedAppsResp - (*CheckTemplateSetReferencesAppsReq)(nil), // 214: pbcs.CheckTemplateSetReferencesAppsReq - (*CheckTemplateSetReferencesAppsResp)(nil), // 215: pbcs.CheckTemplateSetReferencesAppsResp - (*ListTmplSetBoundNamedAppsReq)(nil), // 216: pbcs.ListTmplSetBoundNamedAppsReq - (*ListTmplSetBoundNamedAppsResp)(nil), // 217: pbcs.ListTmplSetBoundNamedAppsResp - (*ListLatestTmplBoundUnnamedAppsReq)(nil), // 218: pbcs.ListLatestTmplBoundUnnamedAppsReq - (*ListLatestTmplBoundUnnamedAppsResp)(nil), // 219: pbcs.ListLatestTmplBoundUnnamedAppsResp - (*CreateTemplateVariableReq)(nil), // 220: pbcs.CreateTemplateVariableReq - (*CreateTemplateVariableResp)(nil), // 221: pbcs.CreateTemplateVariableResp - (*UpdateTemplateVariableReq)(nil), // 222: pbcs.UpdateTemplateVariableReq - (*UpdateTemplateVariableResp)(nil), // 223: pbcs.UpdateTemplateVariableResp - (*DeleteTemplateVariableReq)(nil), // 224: pbcs.DeleteTemplateVariableReq - (*DeleteTemplateVariableResp)(nil), // 225: pbcs.DeleteTemplateVariableResp - (*ListTemplateVariablesReq)(nil), // 226: pbcs.ListTemplateVariablesReq - (*ListTemplateVariablesResp)(nil), // 227: pbcs.ListTemplateVariablesResp - (*ImportTemplateVariablesReq)(nil), // 228: pbcs.ImportTemplateVariablesReq - (*ImportTemplateVariablesResp)(nil), // 229: pbcs.ImportTemplateVariablesResp - (*ExtractAppTmplVariablesReq)(nil), // 230: pbcs.ExtractAppTmplVariablesReq - (*ExtractAppTmplVariablesResp)(nil), // 231: pbcs.ExtractAppTmplVariablesResp - (*GetAppTmplVariableRefsReq)(nil), // 232: pbcs.GetAppTmplVariableRefsReq - (*GetAppTmplVariableRefsResp)(nil), // 233: pbcs.GetAppTmplVariableRefsResp - (*GetReleasedAppTmplVariableRefsReq)(nil), // 234: pbcs.GetReleasedAppTmplVariableRefsReq - (*GetReleasedAppTmplVariableRefsResp)(nil), // 235: pbcs.GetReleasedAppTmplVariableRefsResp - (*UpdateAppTmplVariablesReq)(nil), // 236: pbcs.UpdateAppTmplVariablesReq - (*UpdateAppTmplVariablesResp)(nil), // 237: pbcs.UpdateAppTmplVariablesResp - (*ListAppTmplVariablesReq)(nil), // 238: pbcs.ListAppTmplVariablesReq - (*ListAppTmplVariablesResp)(nil), // 239: pbcs.ListAppTmplVariablesResp - (*ListReleasedAppTmplVariablesReq)(nil), // 240: pbcs.ListReleasedAppTmplVariablesReq - (*ListReleasedAppTmplVariablesResp)(nil), // 241: pbcs.ListReleasedAppTmplVariablesResp - (*CreateGroupReq)(nil), // 242: pbcs.CreateGroupReq - (*CreateGroupResp)(nil), // 243: pbcs.CreateGroupResp - (*UpdateGroupReq)(nil), // 244: pbcs.UpdateGroupReq - (*UpdateGroupResp)(nil), // 245: pbcs.UpdateGroupResp - (*DeleteGroupReq)(nil), // 246: pbcs.DeleteGroupReq - (*DeleteGroupResp)(nil), // 247: pbcs.DeleteGroupResp - (*ListAllGroupsReq)(nil), // 248: pbcs.ListAllGroupsReq - (*ListAllGroupsResp)(nil), // 249: pbcs.ListAllGroupsResp - (*ListAppGroupsReq)(nil), // 250: pbcs.ListAppGroupsReq - (*ListAppGroupsResp)(nil), // 251: pbcs.ListAppGroupsResp - (*ListGroupReleasedAppsReq)(nil), // 252: pbcs.ListGroupReleasedAppsReq - (*ListGroupReleasedAppsResp)(nil), // 253: pbcs.ListGroupReleasedAppsResp - (*GetGroupByNameReq)(nil), // 254: pbcs.GetGroupByNameReq - (*PublishReq)(nil), // 255: pbcs.PublishReq - (*GenerateReleaseAndPublishReq)(nil), // 256: pbcs.GenerateReleaseAndPublishReq - (*GenerateReleaseAndPublishResp)(nil), // 257: pbcs.GenerateReleaseAndPublishResp - (*PublishResp)(nil), // 258: pbcs.PublishResp - (*CreateKvReq)(nil), // 259: pbcs.CreateKvReq - (*CreateKvResp)(nil), // 260: pbcs.CreateKvResp - (*UpdateKvReq)(nil), // 261: pbcs.UpdateKvReq - (*UpdateKvResp)(nil), // 262: pbcs.UpdateKvResp - (*ListKvsReq)(nil), // 263: pbcs.ListKvsReq - (*ListKvsResp)(nil), // 264: pbcs.ListKvsResp - (*DeleteKvReq)(nil), // 265: pbcs.DeleteKvReq - (*DeleteKvResp)(nil), // 266: pbcs.DeleteKvResp - (*BatchDeleteBizResourcesReq)(nil), // 267: pbcs.BatchDeleteBizResourcesReq - (*BatchDeleteAppResourcesReq)(nil), // 268: pbcs.BatchDeleteAppResourcesReq - (*BatchDeleteResp)(nil), // 269: pbcs.BatchDeleteResp - (*BatchUpsertKvsReq)(nil), // 270: pbcs.BatchUpsertKvsReq - (*BatchUpsertKvsResp)(nil), // 271: pbcs.BatchUpsertKvsResp - (*UnDeleteKvReq)(nil), // 272: pbcs.UnDeleteKvReq - (*UnDeleteKvResp)(nil), // 273: pbcs.UnDeleteKvResp - (*UndoKvReq)(nil), // 274: pbcs.UndoKvReq - (*UndoKvResp)(nil), // 275: pbcs.UndoKvResp - (*ImportKvsReq)(nil), // 276: pbcs.ImportKvsReq - (*ImportKvsResp)(nil), // 277: pbcs.ImportKvsResp - (*ListClientsReq)(nil), // 278: pbcs.ListClientsReq - (*ListClientsResp)(nil), // 279: pbcs.ListClientsResp - (*ListClientEventsReq)(nil), // 280: pbcs.ListClientEventsReq - (*ListClientEventsResp)(nil), // 281: pbcs.ListClientEventsResp - (*RetryClientsReq)(nil), // 282: pbcs.RetryClientsReq - (*RetryClientsResp)(nil), // 283: pbcs.RetryClientsResp - (*ListClientQuerysReq)(nil), // 284: pbcs.ListClientQuerysReq - (*ListClientQuerysResp)(nil), // 285: pbcs.ListClientQuerysResp - (*CreateClientQueryReq)(nil), // 286: pbcs.CreateClientQueryReq - (*CreateClientQueryResp)(nil), // 287: pbcs.CreateClientQueryResp - (*UpdateClientQueryReq)(nil), // 288: pbcs.UpdateClientQueryReq - (*UpdateClientQueryResp)(nil), // 289: pbcs.UpdateClientQueryResp - (*DeleteClientQueryReq)(nil), // 290: pbcs.DeleteClientQueryReq - (*DeleteClientQueryResp)(nil), // 291: pbcs.DeleteClientQueryResp - (*CheckClientQueryNameReq)(nil), // 292: pbcs.CheckClientQueryNameReq - (*CheckClientQueryNameResp)(nil), // 293: pbcs.CheckClientQueryNameResp - (*ListClientLabelAndAnnotationReq)(nil), // 294: pbcs.ListClientLabelAndAnnotationReq - (*CompareConfigItemConflictsReq)(nil), // 295: pbcs.CompareConfigItemConflictsReq - (*CompareConfigItemConflictsResp)(nil), // 296: pbcs.CompareConfigItemConflictsResp - (*CompareKvConflictsReq)(nil), // 297: pbcs.CompareKvConflictsReq - (*CompareKvConflictsResp)(nil), // 298: pbcs.CompareKvConflictsResp - (*GetTemplateAndNonTemplateCICountReq)(nil), // 299: pbcs.GetTemplateAndNonTemplateCICountReq - (*GetTemplateAndNonTemplateCICountResp)(nil), // 300: pbcs.GetTemplateAndNonTemplateCICountResp - (*CredentialScopePreviewResp_Detail)(nil), // 301: pbcs.CredentialScopePreviewResp.Detail - (*BatchUpsertConfigItemsReq_ConfigItem)(nil), // 302: pbcs.BatchUpsertConfigItemsReq.ConfigItem - (*BatchUpsertConfigItemsReq_TemplateBinding)(nil), // 303: pbcs.BatchUpsertConfigItemsReq.TemplateBinding - (*ListConfigItemByTupleReq_Item)(nil), // 304: pbcs.ListConfigItemByTupleReq.Item - (*ListHooksResp_Detail)(nil), // 305: pbcs.ListHooksResp.Detail - (*ListHookRevisionsResp_ListHookRevisionsData)(nil), // 306: pbcs.ListHookRevisionsResp.ListHookRevisionsData - (*GetHookInfoSpec_Releases)(nil), // 307: pbcs.GetHookInfoSpec.Releases - (*ListHookRevisionReferencesResp_Detail)(nil), // 308: pbcs.ListHookRevisionReferencesResp.Detail - (*ListHookReferencesResp_Detail)(nil), // 309: pbcs.ListHookReferencesResp.Detail - (*GetReleaseHookResp_Hook)(nil), // 310: pbcs.GetReleaseHookResp.Hook - (*BatchUpsertTemplatesReq_Item)(nil), // 311: pbcs.BatchUpsertTemplatesReq.Item - (*ListTemplateByTupleReq_Item)(nil), // 312: pbcs.ListTemplateByTupleReq.Item - (*ListTemplateByTupleResp_Item)(nil), // 313: pbcs.ListTemplateByTupleResp.Item - (*GetTemplateRevisionResp_TemplateRevision)(nil), // 314: pbcs.GetTemplateRevisionResp.TemplateRevision - (*CheckTemplateSetReferencesAppsReq_Item)(nil), // 315: pbcs.CheckTemplateSetReferencesAppsReq.Item - (*CheckTemplateSetReferencesAppsResp_Item)(nil), // 316: pbcs.CheckTemplateSetReferencesAppsResp.Item - (*ListAllGroupsResp_ListAllGroupsData)(nil), // 317: pbcs.ListAllGroupsResp.ListAllGroupsData - (*ListAllGroupsResp_ListAllGroupsData_BindApp)(nil), // 318: pbcs.ListAllGroupsResp.ListAllGroupsData.BindApp - (*ListAppGroupsResp_ListAppGroupsData)(nil), // 319: pbcs.ListAppGroupsResp.ListAppGroupsData - (*ListGroupReleasedAppsResp_ListGroupReleasedAppsData)(nil), // 320: pbcs.ListGroupReleasedAppsResp.ListGroupReleasedAppsData - (*BatchUpsertKvsReq_Kv)(nil), // 321: pbcs.BatchUpsertKvsReq.Kv - (*ListClientsReq_Order)(nil), // 322: pbcs.ListClientsReq.Order - (*ListClientsResp_Item)(nil), // 323: pbcs.ListClientsResp.Item - (*ListClientEventsReq_Order)(nil), // 324: pbcs.ListClientEventsReq.Order - (*CompareConfigItemConflictsResp_NonTemplateConfig)(nil), // 325: pbcs.CompareConfigItemConflictsResp.NonTemplateConfig - (*CompareConfigItemConflictsResp_TemplateConfig)(nil), // 326: pbcs.CompareConfigItemConflictsResp.TemplateConfig - (*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail)(nil), // 327: pbcs.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail - (*CompareKvConflictsResp_Kv)(nil), // 328: pbcs.CompareKvConflictsResp.Kv - (*credential_scope.CredentialScopeSpec)(nil), // 329: pbcrs.CredentialScopeSpec - (*credential_scope.UpdateScopeSpec)(nil), // 330: pbcrs.UpdateScopeSpec - (*credential_scope.CredentialScopeList)(nil), // 331: pbcrs.CredentialScopeList - (*credential.CredentialList)(nil), // 332: pbcredential.CredentialList - (*app.App)(nil), // 333: pbapp.App - (*template_variable.TemplateVariableSpec)(nil), // 334: pbtv.TemplateVariableSpec - (*config_item.ConfigItem)(nil), // 335: pbci.ConfigItem - (*content.ContentSpec)(nil), // 336: pbcontent.ContentSpec - (*released_ci.ReleasedConfigItem)(nil), // 337: pbrci.ReleasedConfigItem - (*config_item.ListConfigItemCounts)(nil), // 338: pbci.ListConfigItemCounts - (*released_kv.ReleasedKv)(nil), // 339: pbrkv.ReleasedKv - (*release.Release)(nil), // 340: pbrelease.Release - (*hook.CountHookTags)(nil), // 341: pbhook.CountHookTags - (*hook.HookAttachment)(nil), // 342: pbhook.HookAttachment - (*base.Revision)(nil), // 343: pbbase.Revision - (*template_space.TemplateSpace)(nil), // 344: pbts.TemplateSpace - (*template.Template)(nil), // 345: pbtemplate.Template - (*template_revision.TemplateRevision)(nil), // 346: pbtr.TemplateRevision - (*template_revision.TemplateRevisionNamesDetail)(nil), // 347: pbtr.TemplateRevisionNamesDetail - (*template_set.TemplateSet)(nil), // 348: pbtset.TemplateSet - (*template_set.TemplateSetOfBizDetail)(nil), // 349: pbtset.TemplateSetOfBizDetail - (*app_template_binding.TemplateBinding)(nil), // 350: pbatb.TemplateBinding - (*app_template_binding.AppTemplateBinding)(nil), // 351: pbatb.AppTemplateBinding - (*app_template_binding.AppBoundTmplRevisionGroupBySet)(nil), // 352: pbatb.AppBoundTmplRevisionGroupBySet - (*app_template_binding.ReleasedAppBoundTmplRevisionGroupBySet)(nil), // 353: pbatb.ReleasedAppBoundTmplRevisionGroupBySet - (*app_template_binding.ReleasedAppBoundTmplRevision)(nil), // 354: pbatb.ReleasedAppBoundTmplRevision - (*app_template_binding.Conflict)(nil), // 355: pbatb.Conflict - (*template_binding_relation.TemplateBoundCounts)(nil), // 356: pbtbr.TemplateBoundCounts - (*template_binding_relation.TemplateRevisionBoundCounts)(nil), // 357: pbtbr.TemplateRevisionBoundCounts - (*template_binding_relation.TemplateSetBoundCounts)(nil), // 358: pbtbr.TemplateSetBoundCounts - (*template_binding_relation.TemplateBoundUnnamedAppDetail)(nil), // 359: pbtbr.TemplateBoundUnnamedAppDetail - (*template_binding_relation.TemplateBoundNamedAppDetail)(nil), // 360: pbtbr.TemplateBoundNamedAppDetail - (*template_binding_relation.TemplateBoundTemplateSetDetail)(nil), // 361: pbtbr.TemplateBoundTemplateSetDetail - (*template_binding_relation.MultiTemplateBoundTemplateSetDetail)(nil), // 362: pbtbr.MultiTemplateBoundTemplateSetDetail - (*template_binding_relation.TemplateRevisionBoundUnnamedAppDetail)(nil), // 363: pbtbr.TemplateRevisionBoundUnnamedAppDetail - (*template_binding_relation.TemplateRevisionBoundNamedAppDetail)(nil), // 364: pbtbr.TemplateRevisionBoundNamedAppDetail - (*template_binding_relation.TemplateSetBoundUnnamedAppDetail)(nil), // 365: pbtbr.TemplateSetBoundUnnamedAppDetail - (*template_binding_relation.MultiTemplateSetBoundUnnamedAppDetail)(nil), // 366: pbtbr.MultiTemplateSetBoundUnnamedAppDetail - (*template_binding_relation.TemplateSetBoundNamedAppDetail)(nil), // 367: pbtbr.TemplateSetBoundNamedAppDetail - (*template_binding_relation.LatestTemplateBoundUnnamedAppDetail)(nil), // 368: pbtbr.LatestTemplateBoundUnnamedAppDetail - (*template_variable.TemplateVariable)(nil), // 369: pbtv.TemplateVariable - (*app_template_variable.AppTemplateVariableReference)(nil), // 370: pbatv.AppTemplateVariableReference - (*structpb.Struct)(nil), // 371: google.protobuf.Struct - (*kv.Kv)(nil), // 372: pbkv.Kv - (*client.ClientQueryCondition)(nil), // 373: pbclient.ClientQueryCondition - (*client_event.ClientEvent)(nil), // 374: pbce.ClientEvent - (*client_query.ClientQuery)(nil), // 375: pbcq.ClientQuery - (*hook.Hook)(nil), // 376: pbhook.Hook - (*hook_revision.HookRevision)(nil), // 377: pbhr.HookRevision - (*client.Client)(nil), // 378: pbclient.Client - (*config_item.ConfigItemSpec)(nil), // 379: pbci.ConfigItemSpec - (*base.EmptyReq)(nil), // 380: pbbase.EmptyReq - (*client.ClientCommonReq)(nil), // 381: pbclient.ClientCommonReq - (*group.Group)(nil), // 382: pbgroup.Group + (*UpdateCredentialScopeReq)(nil), // 0: pbcs.UpdateCredentialScopeReq + (*UpdateCredentialScopeResp)(nil), // 1: pbcs.UpdateCredentialScopeResp + (*CredentialScopePreviewReq)(nil), // 2: pbcs.CredentialScopePreviewReq + (*CredentialScopePreviewResp)(nil), // 3: pbcs.CredentialScopePreviewResp + (*ListCredentialScopesReq)(nil), // 4: pbcs.ListCredentialScopesReq + (*ListCredentialScopesResp)(nil), // 5: pbcs.ListCredentialScopesResp + (*EnableCredentialsReq)(nil), // 6: pbcs.EnableCredentialsReq + (*EnableCredentialsResp)(nil), // 7: pbcs.EnableCredentialsResp + (*DeleteCredentialsReq)(nil), // 8: pbcs.DeleteCredentialsReq + (*DeleteCredentialsResp)(nil), // 9: pbcs.DeleteCredentialsResp + (*UpdateCredentialsReq)(nil), // 10: pbcs.UpdateCredentialsReq + (*UpdateCredentialsResp)(nil), // 11: pbcs.UpdateCredentialsResp + (*CheckCredentialNameReq)(nil), // 12: pbcs.CheckCredentialNameReq + (*CheckCredentialNameResp)(nil), // 13: pbcs.CheckCredentialNameResp + (*ListCredentialsReq)(nil), // 14: pbcs.ListCredentialsReq + (*ListCredentialsResp)(nil), // 15: pbcs.ListCredentialsResp + (*CreateCredentialReq)(nil), // 16: pbcs.CreateCredentialReq + (*CreateCredentialResp)(nil), // 17: pbcs.CreateCredentialResp + (*CreateAppReq)(nil), // 18: pbcs.CreateAppReq + (*CreateAppResp)(nil), // 19: pbcs.CreateAppResp + (*UpdateAppReq)(nil), // 20: pbcs.UpdateAppReq + (*DeleteAppReq)(nil), // 21: pbcs.DeleteAppReq + (*DeleteAppResp)(nil), // 22: pbcs.DeleteAppResp + (*GetAppReq)(nil), // 23: pbcs.GetAppReq + (*GetAppByNameReq)(nil), // 24: pbcs.GetAppByNameReq + (*ListAppsRestReq)(nil), // 25: pbcs.ListAppsRestReq + (*ListAppsBySpaceRestReq)(nil), // 26: pbcs.ListAppsBySpaceRestReq + (*ListAppsResp)(nil), // 27: pbcs.ListAppsResp + (*CreateConfigItemReq)(nil), // 28: pbcs.CreateConfigItemReq + (*BatchUpsertConfigItemsReq)(nil), // 29: pbcs.BatchUpsertConfigItemsReq + (*BatchUpsertConfigItemsResp)(nil), // 30: pbcs.BatchUpsertConfigItemsResp + (*CreateConfigItemResp)(nil), // 31: pbcs.CreateConfigItemResp + (*UpdateConfigItemReq)(nil), // 32: pbcs.UpdateConfigItemReq + (*UpdateConfigItemResp)(nil), // 33: pbcs.UpdateConfigItemResp + (*DeleteConfigItemReq)(nil), // 34: pbcs.DeleteConfigItemReq + (*DeleteConfigItemResp)(nil), // 35: pbcs.DeleteConfigItemResp + (*UnDeleteConfigItemReq)(nil), // 36: pbcs.UnDeleteConfigItemReq + (*UnDeleteConfigItemResp)(nil), // 37: pbcs.UnDeleteConfigItemResp + (*UndoConfigItemReq)(nil), // 38: pbcs.UndoConfigItemReq + (*UndoConfigItemResp)(nil), // 39: pbcs.UndoConfigItemResp + (*GetConfigItemReq)(nil), // 40: pbcs.GetConfigItemReq + (*GetConfigItemResp)(nil), // 41: pbcs.GetConfigItemResp + (*GetReleasedConfigItemReq)(nil), // 42: pbcs.GetReleasedConfigItemReq + (*GetReleasedConfigItemResp)(nil), // 43: pbcs.GetReleasedConfigItemResp + (*ListConfigItemsReq)(nil), // 44: pbcs.ListConfigItemsReq + (*ListConfigItemsResp)(nil), // 45: pbcs.ListConfigItemsResp + (*ListReleasedConfigItemsReq)(nil), // 46: pbcs.ListReleasedConfigItemsReq + (*ListReleasedConfigItemsResp)(nil), // 47: pbcs.ListReleasedConfigItemsResp + (*ListConfigItemCountReq)(nil), // 48: pbcs.ListConfigItemCountReq + (*ListConfigItemCountResp)(nil), // 49: pbcs.ListConfigItemCountResp + (*ListConfigItemByTupleReq)(nil), // 50: pbcs.ListConfigItemByTupleReq + (*ListConfigItemByTupleResp)(nil), // 51: pbcs.ListConfigItemByTupleResp + (*GetReleasedKvReq)(nil), // 52: pbcs.GetReleasedKvReq + (*GetReleasedKvResp)(nil), // 53: pbcs.GetReleasedKvResp + (*ListReleasedKvsReq)(nil), // 54: pbcs.ListReleasedKvsReq + (*ListReleasedKvsResp)(nil), // 55: pbcs.ListReleasedKvsResp + (*UpdateConfigHookReq)(nil), // 56: pbcs.UpdateConfigHookReq + (*UpdateConfigHookResp)(nil), // 57: pbcs.UpdateConfigHookResp + (*CreateReleaseReq)(nil), // 58: pbcs.CreateReleaseReq + (*CreateReleaseResp)(nil), // 59: pbcs.CreateReleaseResp + (*CheckReleaseNameReq)(nil), // 60: pbcs.CheckReleaseNameReq + (*CheckReleaseNameResp)(nil), // 61: pbcs.CheckReleaseNameResp + (*ListReleasesReq)(nil), // 62: pbcs.ListReleasesReq + (*ListReleasesResp)(nil), // 63: pbcs.ListReleasesResp + (*GetReleaseByNameReq)(nil), // 64: pbcs.GetReleaseByNameReq + (*GetReleaseReq)(nil), // 65: pbcs.GetReleaseReq + (*DeprecateReleaseReq)(nil), // 66: pbcs.DeprecateReleaseReq + (*DeprecateReleaseResp)(nil), // 67: pbcs.DeprecateReleaseResp + (*UnDeprecateReleaseReq)(nil), // 68: pbcs.UnDeprecateReleaseReq + (*UnDeprecateReleaseResp)(nil), // 69: pbcs.UnDeprecateReleaseResp + (*DeleteReleaseReq)(nil), // 70: pbcs.DeleteReleaseReq + (*DeleteReleaseResp)(nil), // 71: pbcs.DeleteReleaseResp + (*CreateHookReq)(nil), // 72: pbcs.CreateHookReq + (*CreateHookResp)(nil), // 73: pbcs.CreateHookResp + (*DeleteHookReq)(nil), // 74: pbcs.DeleteHookReq + (*DeleteHookResp)(nil), // 75: pbcs.DeleteHookResp + (*BatchDeleteHookReq)(nil), // 76: pbcs.BatchDeleteHookReq + (*UpdateHookReq)(nil), // 77: pbcs.UpdateHookReq + (*UpdateHookResp)(nil), // 78: pbcs.UpdateHookResp + (*ListHooksReq)(nil), // 79: pbcs.ListHooksReq + (*ListHooksResp)(nil), // 80: pbcs.ListHooksResp + (*ListHookTagsReq)(nil), // 81: pbcs.ListHookTagsReq + (*ListHookTagsResp)(nil), // 82: pbcs.ListHookTagsResp + (*CreateHookRevisionReq)(nil), // 83: pbcs.CreateHookRevisionReq + (*CreateHookRevisionResp)(nil), // 84: pbcs.CreateHookRevisionResp + (*ListHookRevisionsReq)(nil), // 85: pbcs.ListHookRevisionsReq + (*ListHookRevisionsResp)(nil), // 86: pbcs.ListHookRevisionsResp + (*DeleteHookRevisionReq)(nil), // 87: pbcs.DeleteHookRevisionReq + (*DeleteHookRevisionResp)(nil), // 88: pbcs.DeleteHookRevisionResp + (*PublishHookRevisionReq)(nil), // 89: pbcs.PublishHookRevisionReq + (*PublishHookRevisionResp)(nil), // 90: pbcs.PublishHookRevisionResp + (*GetHookReq)(nil), // 91: pbcs.GetHookReq + (*GetHookResp)(nil), // 92: pbcs.GetHookResp + (*GetHookInfoSpec)(nil), // 93: pbcs.GetHookInfoSpec + (*GetHookRevisionReq)(nil), // 94: pbcs.GetHookRevisionReq + (*UpdateHookRevisionReq)(nil), // 95: pbcs.UpdateHookRevisionReq + (*UpdateHookRevisionResp)(nil), // 96: pbcs.UpdateHookRevisionResp + (*ListHookRevisionReferencesReq)(nil), // 97: pbcs.ListHookRevisionReferencesReq + (*ListHookRevisionReferencesResp)(nil), // 98: pbcs.ListHookRevisionReferencesResp + (*ListHookReferencesReq)(nil), // 99: pbcs.ListHookReferencesReq + (*ListHookReferencesResp)(nil), // 100: pbcs.ListHookReferencesResp + (*GetReleaseHookReq)(nil), // 101: pbcs.GetReleaseHookReq + (*GetReleaseHookResp)(nil), // 102: pbcs.GetReleaseHookResp + (*CreateTemplateSpaceReq)(nil), // 103: pbcs.CreateTemplateSpaceReq + (*CreateTemplateSpaceResp)(nil), // 104: pbcs.CreateTemplateSpaceResp + (*UpdateTemplateSpaceReq)(nil), // 105: pbcs.UpdateTemplateSpaceReq + (*UpdateTemplateSpaceResp)(nil), // 106: pbcs.UpdateTemplateSpaceResp + (*DeleteTemplateSpaceReq)(nil), // 107: pbcs.DeleteTemplateSpaceReq + (*DeleteTemplateSpaceResp)(nil), // 108: pbcs.DeleteTemplateSpaceResp + (*ListTemplateSpacesReq)(nil), // 109: pbcs.ListTemplateSpacesReq + (*ListTemplateSpacesResp)(nil), // 110: pbcs.ListTemplateSpacesResp + (*GetAllBizsOfTmplSpacesResp)(nil), // 111: pbcs.GetAllBizsOfTmplSpacesResp + (*CreateDefaultTmplSpaceReq)(nil), // 112: pbcs.CreateDefaultTmplSpaceReq + (*CreateDefaultTmplSpaceResp)(nil), // 113: pbcs.CreateDefaultTmplSpaceResp + (*ListTmplSpacesByIDsReq)(nil), // 114: pbcs.ListTmplSpacesByIDsReq + (*ListTmplSpacesByIDsResp)(nil), // 115: pbcs.ListTmplSpacesByIDsResp + (*CreateTemplateReq)(nil), // 116: pbcs.CreateTemplateReq + (*CreateTemplateResp)(nil), // 117: pbcs.CreateTemplateResp + (*UpdateTemplateReq)(nil), // 118: pbcs.UpdateTemplateReq + (*UpdateTemplateResp)(nil), // 119: pbcs.UpdateTemplateResp + (*DeleteTemplateReq)(nil), // 120: pbcs.DeleteTemplateReq + (*DeleteTemplateResp)(nil), // 121: pbcs.DeleteTemplateResp + (*BatchDeleteTemplateReq)(nil), // 122: pbcs.BatchDeleteTemplateReq + (*BatchDeleteTemplateResp)(nil), // 123: pbcs.BatchDeleteTemplateResp + (*ListTemplatesReq)(nil), // 124: pbcs.ListTemplatesReq + (*ListTemplatesResp)(nil), // 125: pbcs.ListTemplatesResp + (*BatchUpsertTemplatesReq)(nil), // 126: pbcs.BatchUpsertTemplatesReq + (*BatchUpsertTemplatesResp)(nil), // 127: pbcs.BatchUpsertTemplatesResp + (*BatchUpdateTemplatePermissionsReq)(nil), // 128: pbcs.BatchUpdateTemplatePermissionsReq + (*BatchUpdateTemplatePermissionsResp)(nil), // 129: pbcs.BatchUpdateTemplatePermissionsResp + (*AddTmplsToTmplSetsReq)(nil), // 130: pbcs.AddTmplsToTmplSetsReq + (*AddTmplsToTmplSetsResp)(nil), // 131: pbcs.AddTmplsToTmplSetsResp + (*DeleteTmplsFromTmplSetsReq)(nil), // 132: pbcs.DeleteTmplsFromTmplSetsReq + (*DeleteTmplsFromTmplSetsResp)(nil), // 133: pbcs.DeleteTmplsFromTmplSetsResp + (*ListTemplatesByIDsReq)(nil), // 134: pbcs.ListTemplatesByIDsReq + (*ListTemplatesByIDsResp)(nil), // 135: pbcs.ListTemplatesByIDsResp + (*ListTemplatesNotBoundReq)(nil), // 136: pbcs.ListTemplatesNotBoundReq + (*ListTemplateByTupleReq)(nil), // 137: pbcs.ListTemplateByTupleReq + (*ListTemplateByTupleResp)(nil), // 138: pbcs.ListTemplateByTupleResp + (*ListTemplatesNotBoundResp)(nil), // 139: pbcs.ListTemplatesNotBoundResp + (*ListTmplsOfTmplSetReq)(nil), // 140: pbcs.ListTmplsOfTmplSetReq + (*ListTmplsOfTmplSetResp)(nil), // 141: pbcs.ListTmplsOfTmplSetResp + (*ListTemplateSetsAndRevisionsReq)(nil), // 142: pbcs.ListTemplateSetsAndRevisionsReq + (*ListTemplateSetsAndRevisionsResp)(nil), // 143: pbcs.ListTemplateSetsAndRevisionsResp + (*CreateTemplateRevisionReq)(nil), // 144: pbcs.CreateTemplateRevisionReq + (*CreateTemplateRevisionResp)(nil), // 145: pbcs.CreateTemplateRevisionResp + (*UpdateTemplateRevisionReq)(nil), // 146: pbcs.UpdateTemplateRevisionReq + (*UpdateTemplateRevisionResp)(nil), // 147: pbcs.UpdateTemplateRevisionResp + (*ListTemplateRevisionsReq)(nil), // 148: pbcs.ListTemplateRevisionsReq + (*ListTemplateRevisionsResp)(nil), // 149: pbcs.ListTemplateRevisionsResp + (*GetTemplateRevisionReq)(nil), // 150: pbcs.GetTemplateRevisionReq + (*GetTemplateRevisionResp)(nil), // 151: pbcs.GetTemplateRevisionResp + (*DeleteTemplateRevisionReq)(nil), // 152: pbcs.DeleteTemplateRevisionReq + (*DeleteTemplateRevisionResp)(nil), // 153: pbcs.DeleteTemplateRevisionResp + (*ListTemplateRevisionsByIDsReq)(nil), // 154: pbcs.ListTemplateRevisionsByIDsReq + (*ListTemplateRevisionsByIDsResp)(nil), // 155: pbcs.ListTemplateRevisionsByIDsResp + (*ListTmplRevisionNamesByTmplIDsReq)(nil), // 156: pbcs.ListTmplRevisionNamesByTmplIDsReq + (*ListTmplRevisionNamesByTmplIDsResp)(nil), // 157: pbcs.ListTmplRevisionNamesByTmplIDsResp + (*CreateTemplateSetReq)(nil), // 158: pbcs.CreateTemplateSetReq + (*CreateTemplateSetResp)(nil), // 159: pbcs.CreateTemplateSetResp + (*UpdateTemplateSetReq)(nil), // 160: pbcs.UpdateTemplateSetReq + (*UpdateTemplateSetResp)(nil), // 161: pbcs.UpdateTemplateSetResp + (*DeleteTemplateSetReq)(nil), // 162: pbcs.DeleteTemplateSetReq + (*DeleteTemplateSetResp)(nil), // 163: pbcs.DeleteTemplateSetResp + (*ListTemplateSetsReq)(nil), // 164: pbcs.ListTemplateSetsReq + (*ListTemplateSetsResp)(nil), // 165: pbcs.ListTemplateSetsResp + (*ListAppTemplateSetsReq)(nil), // 166: pbcs.ListAppTemplateSetsReq + (*ListAppTemplateSetsResp)(nil), // 167: pbcs.ListAppTemplateSetsResp + (*ListTemplateSetsByIDsReq)(nil), // 168: pbcs.ListTemplateSetsByIDsReq + (*ListTemplateSetsByIDsResp)(nil), // 169: pbcs.ListTemplateSetsByIDsResp + (*ListTmplSetsOfBizReq)(nil), // 170: pbcs.ListTmplSetsOfBizReq + (*ListTmplSetsOfBizResp)(nil), // 171: pbcs.ListTmplSetsOfBizResp + (*CreateAppTemplateBindingReq)(nil), // 172: pbcs.CreateAppTemplateBindingReq + (*CreateAppTemplateBindingResp)(nil), // 173: pbcs.CreateAppTemplateBindingResp + (*UpdateAppTemplateBindingReq)(nil), // 174: pbcs.UpdateAppTemplateBindingReq + (*UpdateAppTemplateBindingResp)(nil), // 175: pbcs.UpdateAppTemplateBindingResp + (*DeleteAppTemplateBindingReq)(nil), // 176: pbcs.DeleteAppTemplateBindingReq + (*DeleteAppTemplateBindingResp)(nil), // 177: pbcs.DeleteAppTemplateBindingResp + (*ListAppTemplateBindingsReq)(nil), // 178: pbcs.ListAppTemplateBindingsReq + (*ListAppTemplateBindingsResp)(nil), // 179: pbcs.ListAppTemplateBindingsResp + (*ListAppBoundTmplRevisionsReq)(nil), // 180: pbcs.ListAppBoundTmplRevisionsReq + (*ListAppBoundTmplRevisionsResp)(nil), // 181: pbcs.ListAppBoundTmplRevisionsResp + (*ListReleasedAppBoundTmplRevisionsReq)(nil), // 182: pbcs.ListReleasedAppBoundTmplRevisionsReq + (*ListReleasedAppBoundTmplRevisionsResp)(nil), // 183: pbcs.ListReleasedAppBoundTmplRevisionsResp + (*GetReleasedAppBoundTmplRevisionReq)(nil), // 184: pbcs.GetReleasedAppBoundTmplRevisionReq + (*GetReleasedAppBoundTmplRevisionResp)(nil), // 185: pbcs.GetReleasedAppBoundTmplRevisionResp + (*UpdateAppBoundTmplRevisionsReq)(nil), // 186: pbcs.UpdateAppBoundTmplRevisionsReq + (*UpdateAppBoundTmplRevisionsResp)(nil), // 187: pbcs.UpdateAppBoundTmplRevisionsResp + (*DeleteAppBoundTmplSetsReq)(nil), // 188: pbcs.DeleteAppBoundTmplSetsReq + (*DeleteAppBoundTmplSetsResp)(nil), // 189: pbcs.DeleteAppBoundTmplSetsResp + (*RemoveAppBoundTmplSetReq)(nil), // 190: pbcs.RemoveAppBoundTmplSetReq + (*RemoveAppBoundTmplSetResp)(nil), // 191: pbcs.RemoveAppBoundTmplSetResp + (*CheckAppTemplateBindingReq)(nil), // 192: pbcs.CheckAppTemplateBindingReq + (*CheckAppTemplateBindingResp)(nil), // 193: pbcs.CheckAppTemplateBindingResp + (*ImportFromTemplateSetToAppReq)(nil), // 194: pbcs.ImportFromTemplateSetToAppReq + (*ImportFromTemplateSetToAppResp)(nil), // 195: pbcs.ImportFromTemplateSetToAppResp + (*ListTmplBoundCountsReq)(nil), // 196: pbcs.ListTmplBoundCountsReq + (*ListTmplBoundCountsResp)(nil), // 197: pbcs.ListTmplBoundCountsResp + (*ListTmplRevisionBoundCountsReq)(nil), // 198: pbcs.ListTmplRevisionBoundCountsReq + (*ListTmplRevisionBoundCountsResp)(nil), // 199: pbcs.ListTmplRevisionBoundCountsResp + (*ListTmplSetBoundCountsReq)(nil), // 200: pbcs.ListTmplSetBoundCountsReq + (*ListTmplSetBoundCountsResp)(nil), // 201: pbcs.ListTmplSetBoundCountsResp + (*ListTmplBoundUnnamedAppsReq)(nil), // 202: pbcs.ListTmplBoundUnnamedAppsReq + (*ListTmplBoundUnnamedAppsResp)(nil), // 203: pbcs.ListTmplBoundUnnamedAppsResp + (*ListTmplBoundNamedAppsReq)(nil), // 204: pbcs.ListTmplBoundNamedAppsReq + (*ListTmplBoundNamedAppsResp)(nil), // 205: pbcs.ListTmplBoundNamedAppsResp + (*ListTmplBoundTmplSetsReq)(nil), // 206: pbcs.ListTmplBoundTmplSetsReq + (*ListTmplBoundTmplSetsResp)(nil), // 207: pbcs.ListTmplBoundTmplSetsResp + (*ListMultiTmplBoundTmplSetsReq)(nil), // 208: pbcs.ListMultiTmplBoundTmplSetsReq + (*ListMultiTmplBoundTmplSetsResp)(nil), // 209: pbcs.ListMultiTmplBoundTmplSetsResp + (*ListTmplRevisionBoundUnnamedAppsReq)(nil), // 210: pbcs.ListTmplRevisionBoundUnnamedAppsReq + (*ListTmplRevisionBoundUnnamedAppsResp)(nil), // 211: pbcs.ListTmplRevisionBoundUnnamedAppsResp + (*ListTmplRevisionBoundNamedAppsReq)(nil), // 212: pbcs.ListTmplRevisionBoundNamedAppsReq + (*ListTmplRevisionBoundNamedAppsResp)(nil), // 213: pbcs.ListTmplRevisionBoundNamedAppsResp + (*ListTmplSetBoundUnnamedAppsReq)(nil), // 214: pbcs.ListTmplSetBoundUnnamedAppsReq + (*ListTmplSetBoundUnnamedAppsResp)(nil), // 215: pbcs.ListTmplSetBoundUnnamedAppsResp + (*ListMultiTmplSetBoundUnnamedAppsReq)(nil), // 216: pbcs.ListMultiTmplSetBoundUnnamedAppsReq + (*ListMultiTmplSetBoundUnnamedAppsResp)(nil), // 217: pbcs.ListMultiTmplSetBoundUnnamedAppsResp + (*CheckTemplateSetReferencesAppsReq)(nil), // 218: pbcs.CheckTemplateSetReferencesAppsReq + (*CheckTemplateSetReferencesAppsResp)(nil), // 219: pbcs.CheckTemplateSetReferencesAppsResp + (*ListTmplSetBoundNamedAppsReq)(nil), // 220: pbcs.ListTmplSetBoundNamedAppsReq + (*ListTmplSetBoundNamedAppsResp)(nil), // 221: pbcs.ListTmplSetBoundNamedAppsResp + (*ListLatestTmplBoundUnnamedAppsReq)(nil), // 222: pbcs.ListLatestTmplBoundUnnamedAppsReq + (*ListLatestTmplBoundUnnamedAppsResp)(nil), // 223: pbcs.ListLatestTmplBoundUnnamedAppsResp + (*CreateTemplateVariableReq)(nil), // 224: pbcs.CreateTemplateVariableReq + (*CreateTemplateVariableResp)(nil), // 225: pbcs.CreateTemplateVariableResp + (*UpdateTemplateVariableReq)(nil), // 226: pbcs.UpdateTemplateVariableReq + (*UpdateTemplateVariableResp)(nil), // 227: pbcs.UpdateTemplateVariableResp + (*DeleteTemplateVariableReq)(nil), // 228: pbcs.DeleteTemplateVariableReq + (*DeleteTemplateVariableResp)(nil), // 229: pbcs.DeleteTemplateVariableResp + (*ListTemplateVariablesReq)(nil), // 230: pbcs.ListTemplateVariablesReq + (*ListTemplateVariablesResp)(nil), // 231: pbcs.ListTemplateVariablesResp + (*ImportTemplateVariablesReq)(nil), // 232: pbcs.ImportTemplateVariablesReq + (*ImportTemplateVariablesResp)(nil), // 233: pbcs.ImportTemplateVariablesResp + (*ExtractAppTmplVariablesReq)(nil), // 234: pbcs.ExtractAppTmplVariablesReq + (*ExtractAppTmplVariablesResp)(nil), // 235: pbcs.ExtractAppTmplVariablesResp + (*GetAppTmplVariableRefsReq)(nil), // 236: pbcs.GetAppTmplVariableRefsReq + (*GetAppTmplVariableRefsResp)(nil), // 237: pbcs.GetAppTmplVariableRefsResp + (*GetReleasedAppTmplVariableRefsReq)(nil), // 238: pbcs.GetReleasedAppTmplVariableRefsReq + (*GetReleasedAppTmplVariableRefsResp)(nil), // 239: pbcs.GetReleasedAppTmplVariableRefsResp + (*UpdateAppTmplVariablesReq)(nil), // 240: pbcs.UpdateAppTmplVariablesReq + (*UpdateAppTmplVariablesResp)(nil), // 241: pbcs.UpdateAppTmplVariablesResp + (*ListAppTmplVariablesReq)(nil), // 242: pbcs.ListAppTmplVariablesReq + (*ListAppTmplVariablesResp)(nil), // 243: pbcs.ListAppTmplVariablesResp + (*ListReleasedAppTmplVariablesReq)(nil), // 244: pbcs.ListReleasedAppTmplVariablesReq + (*ListReleasedAppTmplVariablesResp)(nil), // 245: pbcs.ListReleasedAppTmplVariablesResp + (*CreateGroupReq)(nil), // 246: pbcs.CreateGroupReq + (*CreateGroupResp)(nil), // 247: pbcs.CreateGroupResp + (*UpdateGroupReq)(nil), // 248: pbcs.UpdateGroupReq + (*UpdateGroupResp)(nil), // 249: pbcs.UpdateGroupResp + (*DeleteGroupReq)(nil), // 250: pbcs.DeleteGroupReq + (*DeleteGroupResp)(nil), // 251: pbcs.DeleteGroupResp + (*ListAllGroupsReq)(nil), // 252: pbcs.ListAllGroupsReq + (*ListAllGroupsResp)(nil), // 253: pbcs.ListAllGroupsResp + (*ListAppGroupsReq)(nil), // 254: pbcs.ListAppGroupsReq + (*ListAppGroupsResp)(nil), // 255: pbcs.ListAppGroupsResp + (*ListGroupReleasedAppsReq)(nil), // 256: pbcs.ListGroupReleasedAppsReq + (*ListGroupReleasedAppsResp)(nil), // 257: pbcs.ListGroupReleasedAppsResp + (*GetGroupByNameReq)(nil), // 258: pbcs.GetGroupByNameReq + (*PublishReq)(nil), // 259: pbcs.PublishReq + (*GenerateReleaseAndPublishReq)(nil), // 260: pbcs.GenerateReleaseAndPublishReq + (*GenerateReleaseAndPublishResp)(nil), // 261: pbcs.GenerateReleaseAndPublishResp + (*PublishResp)(nil), // 262: pbcs.PublishResp + (*CreateKvReq)(nil), // 263: pbcs.CreateKvReq + (*CreateKvResp)(nil), // 264: pbcs.CreateKvResp + (*UpdateKvReq)(nil), // 265: pbcs.UpdateKvReq + (*UpdateKvResp)(nil), // 266: pbcs.UpdateKvResp + (*ListKvsReq)(nil), // 267: pbcs.ListKvsReq + (*ListKvsResp)(nil), // 268: pbcs.ListKvsResp + (*DeleteKvReq)(nil), // 269: pbcs.DeleteKvReq + (*DeleteKvResp)(nil), // 270: pbcs.DeleteKvResp + (*BatchDeleteBizResourcesReq)(nil), // 271: pbcs.BatchDeleteBizResourcesReq + (*BatchDeleteAppResourcesReq)(nil), // 272: pbcs.BatchDeleteAppResourcesReq + (*BatchDeleteResp)(nil), // 273: pbcs.BatchDeleteResp + (*BatchUpsertKvsReq)(nil), // 274: pbcs.BatchUpsertKvsReq + (*BatchUpsertKvsResp)(nil), // 275: pbcs.BatchUpsertKvsResp + (*UnDeleteKvReq)(nil), // 276: pbcs.UnDeleteKvReq + (*UnDeleteKvResp)(nil), // 277: pbcs.UnDeleteKvResp + (*UndoKvReq)(nil), // 278: pbcs.UndoKvReq + (*UndoKvResp)(nil), // 279: pbcs.UndoKvResp + (*ImportKvsReq)(nil), // 280: pbcs.ImportKvsReq + (*ImportKvsResp)(nil), // 281: pbcs.ImportKvsResp + (*ListClientsReq)(nil), // 282: pbcs.ListClientsReq + (*ListClientsResp)(nil), // 283: pbcs.ListClientsResp + (*ListClientEventsReq)(nil), // 284: pbcs.ListClientEventsReq + (*ListClientEventsResp)(nil), // 285: pbcs.ListClientEventsResp + (*RetryClientsReq)(nil), // 286: pbcs.RetryClientsReq + (*RetryClientsResp)(nil), // 287: pbcs.RetryClientsResp + (*ListClientQuerysReq)(nil), // 288: pbcs.ListClientQuerysReq + (*ListClientQuerysResp)(nil), // 289: pbcs.ListClientQuerysResp + (*CreateClientQueryReq)(nil), // 290: pbcs.CreateClientQueryReq + (*CreateClientQueryResp)(nil), // 291: pbcs.CreateClientQueryResp + (*UpdateClientQueryReq)(nil), // 292: pbcs.UpdateClientQueryReq + (*UpdateClientQueryResp)(nil), // 293: pbcs.UpdateClientQueryResp + (*DeleteClientQueryReq)(nil), // 294: pbcs.DeleteClientQueryReq + (*DeleteClientQueryResp)(nil), // 295: pbcs.DeleteClientQueryResp + (*CheckClientQueryNameReq)(nil), // 296: pbcs.CheckClientQueryNameReq + (*CheckClientQueryNameResp)(nil), // 297: pbcs.CheckClientQueryNameResp + (*ListClientLabelAndAnnotationReq)(nil), // 298: pbcs.ListClientLabelAndAnnotationReq + (*CompareConfigItemConflictsReq)(nil), // 299: pbcs.CompareConfigItemConflictsReq + (*CompareConfigItemConflictsResp)(nil), // 300: pbcs.CompareConfigItemConflictsResp + (*CompareKvConflictsReq)(nil), // 301: pbcs.CompareKvConflictsReq + (*CompareKvConflictsResp)(nil), // 302: pbcs.CompareKvConflictsResp + (*GetTemplateAndNonTemplateCICountReq)(nil), // 303: pbcs.GetTemplateAndNonTemplateCICountReq + (*GetTemplateAndNonTemplateCICountResp)(nil), // 304: pbcs.GetTemplateAndNonTemplateCICountResp + (*CredentialScopePreviewResp_Detail)(nil), // 305: pbcs.CredentialScopePreviewResp.Detail + (*BatchUpsertConfigItemsReq_ConfigItem)(nil), // 306: pbcs.BatchUpsertConfigItemsReq.ConfigItem + (*BatchUpsertConfigItemsReq_TemplateBinding)(nil), // 307: pbcs.BatchUpsertConfigItemsReq.TemplateBinding + (*ListConfigItemByTupleReq_Item)(nil), // 308: pbcs.ListConfigItemByTupleReq.Item + (*ListHooksResp_Detail)(nil), // 309: pbcs.ListHooksResp.Detail + (*ListHookRevisionsResp_ListHookRevisionsData)(nil), // 310: pbcs.ListHookRevisionsResp.ListHookRevisionsData + (*GetHookInfoSpec_Releases)(nil), // 311: pbcs.GetHookInfoSpec.Releases + (*ListHookRevisionReferencesResp_Detail)(nil), // 312: pbcs.ListHookRevisionReferencesResp.Detail + (*ListHookReferencesResp_Detail)(nil), // 313: pbcs.ListHookReferencesResp.Detail + (*GetReleaseHookResp_Hook)(nil), // 314: pbcs.GetReleaseHookResp.Hook + (*BatchUpsertTemplatesReq_Item)(nil), // 315: pbcs.BatchUpsertTemplatesReq.Item + (*ListTemplateByTupleReq_Item)(nil), // 316: pbcs.ListTemplateByTupleReq.Item + (*ListTemplateByTupleResp_Item)(nil), // 317: pbcs.ListTemplateByTupleResp.Item + (*ListTemplateSetsAndRevisionsResp_Detail)(nil), // 318: pbcs.ListTemplateSetsAndRevisionsResp.Detail + (*GetTemplateRevisionResp_TemplateRevision)(nil), // 319: pbcs.GetTemplateRevisionResp.TemplateRevision + (*ImportFromTemplateSetToAppReq_Binding)(nil), // 320: pbcs.ImportFromTemplateSetToAppReq.Binding + (*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding)(nil), // 321: pbcs.ImportFromTemplateSetToAppReq.Binding.TemplateRevisionBinding + (*CheckTemplateSetReferencesAppsReq_Item)(nil), // 322: pbcs.CheckTemplateSetReferencesAppsReq.Item + (*CheckTemplateSetReferencesAppsResp_Item)(nil), // 323: pbcs.CheckTemplateSetReferencesAppsResp.Item + (*ListAllGroupsResp_ListAllGroupsData)(nil), // 324: pbcs.ListAllGroupsResp.ListAllGroupsData + (*ListAllGroupsResp_ListAllGroupsData_BindApp)(nil), // 325: pbcs.ListAllGroupsResp.ListAllGroupsData.BindApp + (*ListAppGroupsResp_ListAppGroupsData)(nil), // 326: pbcs.ListAppGroupsResp.ListAppGroupsData + (*ListGroupReleasedAppsResp_ListGroupReleasedAppsData)(nil), // 327: pbcs.ListGroupReleasedAppsResp.ListGroupReleasedAppsData + (*BatchUpsertKvsReq_Kv)(nil), // 328: pbcs.BatchUpsertKvsReq.Kv + (*ListClientsReq_Order)(nil), // 329: pbcs.ListClientsReq.Order + (*ListClientsResp_Item)(nil), // 330: pbcs.ListClientsResp.Item + (*ListClientEventsReq_Order)(nil), // 331: pbcs.ListClientEventsReq.Order + (*CompareConfigItemConflictsResp_NonTemplateConfig)(nil), // 332: pbcs.CompareConfigItemConflictsResp.NonTemplateConfig + (*CompareConfigItemConflictsResp_TemplateConfig)(nil), // 333: pbcs.CompareConfigItemConflictsResp.TemplateConfig + (*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail)(nil), // 334: pbcs.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail + (*CompareKvConflictsResp_Kv)(nil), // 335: pbcs.CompareKvConflictsResp.Kv + (*credential_scope.CredentialScopeSpec)(nil), // 336: pbcrs.CredentialScopeSpec + (*credential_scope.UpdateScopeSpec)(nil), // 337: pbcrs.UpdateScopeSpec + (*credential_scope.CredentialScopeList)(nil), // 338: pbcrs.CredentialScopeList + (*credential.CredentialList)(nil), // 339: pbcredential.CredentialList + (*app.App)(nil), // 340: pbapp.App + (*template_variable.TemplateVariableSpec)(nil), // 341: pbtv.TemplateVariableSpec + (*config_item.ConfigItem)(nil), // 342: pbci.ConfigItem + (*content.ContentSpec)(nil), // 343: pbcontent.ContentSpec + (*released_ci.ReleasedConfigItem)(nil), // 344: pbrci.ReleasedConfigItem + (*config_item.ListConfigItemCounts)(nil), // 345: pbci.ListConfigItemCounts + (*released_kv.ReleasedKv)(nil), // 346: pbrkv.ReleasedKv + (*release.Release)(nil), // 347: pbrelease.Release + (*hook.CountHookTags)(nil), // 348: pbhook.CountHookTags + (*hook.HookAttachment)(nil), // 349: pbhook.HookAttachment + (*base.Revision)(nil), // 350: pbbase.Revision + (*template_space.TemplateSpace)(nil), // 351: pbts.TemplateSpace + (*template.Template)(nil), // 352: pbtemplate.Template + (*template_revision.TemplateRevision)(nil), // 353: pbtr.TemplateRevision + (*template_revision.TemplateRevisionNamesDetail)(nil), // 354: pbtr.TemplateRevisionNamesDetail + (*template_set.TemplateSet)(nil), // 355: pbtset.TemplateSet + (*template_set.TemplateSetOfBizDetail)(nil), // 356: pbtset.TemplateSetOfBizDetail + (*app_template_binding.TemplateBinding)(nil), // 357: pbatb.TemplateBinding + (*app_template_binding.AppTemplateBinding)(nil), // 358: pbatb.AppTemplateBinding + (*app_template_binding.AppBoundTmplRevisionGroupBySet)(nil), // 359: pbatb.AppBoundTmplRevisionGroupBySet + (*app_template_binding.ReleasedAppBoundTmplRevisionGroupBySet)(nil), // 360: pbatb.ReleasedAppBoundTmplRevisionGroupBySet + (*app_template_binding.ReleasedAppBoundTmplRevision)(nil), // 361: pbatb.ReleasedAppBoundTmplRevision + (*app_template_binding.Conflict)(nil), // 362: pbatb.Conflict + (*template_binding_relation.TemplateBoundCounts)(nil), // 363: pbtbr.TemplateBoundCounts + (*template_binding_relation.TemplateRevisionBoundCounts)(nil), // 364: pbtbr.TemplateRevisionBoundCounts + (*template_binding_relation.TemplateSetBoundCounts)(nil), // 365: pbtbr.TemplateSetBoundCounts + (*template_binding_relation.TemplateBoundUnnamedAppDetail)(nil), // 366: pbtbr.TemplateBoundUnnamedAppDetail + (*template_binding_relation.TemplateBoundNamedAppDetail)(nil), // 367: pbtbr.TemplateBoundNamedAppDetail + (*template_binding_relation.TemplateBoundTemplateSetDetail)(nil), // 368: pbtbr.TemplateBoundTemplateSetDetail + (*template_binding_relation.MultiTemplateBoundTemplateSetDetail)(nil), // 369: pbtbr.MultiTemplateBoundTemplateSetDetail + (*template_binding_relation.TemplateRevisionBoundUnnamedAppDetail)(nil), // 370: pbtbr.TemplateRevisionBoundUnnamedAppDetail + (*template_binding_relation.TemplateRevisionBoundNamedAppDetail)(nil), // 371: pbtbr.TemplateRevisionBoundNamedAppDetail + (*template_binding_relation.TemplateSetBoundUnnamedAppDetail)(nil), // 372: pbtbr.TemplateSetBoundUnnamedAppDetail + (*template_binding_relation.MultiTemplateSetBoundUnnamedAppDetail)(nil), // 373: pbtbr.MultiTemplateSetBoundUnnamedAppDetail + (*template_binding_relation.TemplateSetBoundNamedAppDetail)(nil), // 374: pbtbr.TemplateSetBoundNamedAppDetail + (*template_binding_relation.LatestTemplateBoundUnnamedAppDetail)(nil), // 375: pbtbr.LatestTemplateBoundUnnamedAppDetail + (*template_variable.TemplateVariable)(nil), // 376: pbtv.TemplateVariable + (*app_template_variable.AppTemplateVariableReference)(nil), // 377: pbatv.AppTemplateVariableReference + (*structpb.Struct)(nil), // 378: google.protobuf.Struct + (*kv.Kv)(nil), // 379: pbkv.Kv + (*client.ClientQueryCondition)(nil), // 380: pbclient.ClientQueryCondition + (*client_event.ClientEvent)(nil), // 381: pbce.ClientEvent + (*client_query.ClientQuery)(nil), // 382: pbcq.ClientQuery + (*hook.Hook)(nil), // 383: pbhook.Hook + (*hook_revision.HookRevision)(nil), // 384: pbhr.HookRevision + (*client.Client)(nil), // 385: pbclient.Client + (*config_item.ConfigItemSpec)(nil), // 386: pbci.ConfigItemSpec + (*base.EmptyReq)(nil), // 387: pbbase.EmptyReq + (*client.ClientCommonReq)(nil), // 388: pbclient.ClientCommonReq + (*group.Group)(nil), // 389: pbgroup.Group } var file_config_service_proto_depIdxs = []int32{ - 329, // 0: pbcs.UpdateCredentialScopeReq.add_scope:type_name -> pbcrs.CredentialScopeSpec - 330, // 1: pbcs.UpdateCredentialScopeReq.alter_scope:type_name -> pbcrs.UpdateScopeSpec - 301, // 2: pbcs.CredentialScopePreviewResp.details:type_name -> pbcs.CredentialScopePreviewResp.Detail - 331, // 3: pbcs.ListCredentialScopesResp.details:type_name -> pbcrs.CredentialScopeList - 332, // 4: pbcs.ListCredentialsResp.details:type_name -> pbcredential.CredentialList - 333, // 5: pbcs.ListAppsResp.details:type_name -> pbapp.App - 302, // 6: pbcs.BatchUpsertConfigItemsReq.items:type_name -> pbcs.BatchUpsertConfigItemsReq.ConfigItem - 334, // 7: pbcs.BatchUpsertConfigItemsReq.variables:type_name -> pbtv.TemplateVariableSpec - 303, // 8: pbcs.BatchUpsertConfigItemsReq.bindings:type_name -> pbcs.BatchUpsertConfigItemsReq.TemplateBinding - 335, // 9: pbcs.GetConfigItemResp.config_item:type_name -> pbci.ConfigItem - 336, // 10: pbcs.GetConfigItemResp.content:type_name -> pbcontent.ContentSpec - 337, // 11: pbcs.GetReleasedConfigItemResp.config_item:type_name -> pbrci.ReleasedConfigItem - 335, // 12: pbcs.ListConfigItemsResp.details:type_name -> pbci.ConfigItem - 337, // 13: pbcs.ListReleasedConfigItemsResp.details:type_name -> pbrci.ReleasedConfigItem - 338, // 14: pbcs.ListConfigItemCountResp.details:type_name -> pbci.ListConfigItemCounts - 304, // 15: pbcs.ListConfigItemByTupleReq.items:type_name -> pbcs.ListConfigItemByTupleReq.Item - 335, // 16: pbcs.ListConfigItemByTupleResp.details:type_name -> pbci.ConfigItem - 339, // 17: pbcs.GetReleasedKvResp.kv:type_name -> pbrkv.ReleasedKv - 339, // 18: pbcs.ListReleasedKvsResp.details:type_name -> pbrkv.ReleasedKv - 334, // 19: pbcs.CreateReleaseReq.variables:type_name -> pbtv.TemplateVariableSpec - 340, // 20: pbcs.ListReleasesResp.details:type_name -> pbrelease.Release - 305, // 21: pbcs.ListHooksResp.details:type_name -> pbcs.ListHooksResp.Detail - 341, // 22: pbcs.ListHookTagsResp.details:type_name -> pbhook.CountHookTags - 306, // 23: pbcs.ListHookRevisionsResp.details:type_name -> pbcs.ListHookRevisionsResp.ListHookRevisionsData + 336, // 0: pbcs.UpdateCredentialScopeReq.add_scope:type_name -> pbcrs.CredentialScopeSpec + 337, // 1: pbcs.UpdateCredentialScopeReq.alter_scope:type_name -> pbcrs.UpdateScopeSpec + 305, // 2: pbcs.CredentialScopePreviewResp.details:type_name -> pbcs.CredentialScopePreviewResp.Detail + 338, // 3: pbcs.ListCredentialScopesResp.details:type_name -> pbcrs.CredentialScopeList + 339, // 4: pbcs.ListCredentialsResp.details:type_name -> pbcredential.CredentialList + 340, // 5: pbcs.ListAppsResp.details:type_name -> pbapp.App + 306, // 6: pbcs.BatchUpsertConfigItemsReq.items:type_name -> pbcs.BatchUpsertConfigItemsReq.ConfigItem + 341, // 7: pbcs.BatchUpsertConfigItemsReq.variables:type_name -> pbtv.TemplateVariableSpec + 307, // 8: pbcs.BatchUpsertConfigItemsReq.bindings:type_name -> pbcs.BatchUpsertConfigItemsReq.TemplateBinding + 342, // 9: pbcs.GetConfigItemResp.config_item:type_name -> pbci.ConfigItem + 343, // 10: pbcs.GetConfigItemResp.content:type_name -> pbcontent.ContentSpec + 344, // 11: pbcs.GetReleasedConfigItemResp.config_item:type_name -> pbrci.ReleasedConfigItem + 342, // 12: pbcs.ListConfigItemsResp.details:type_name -> pbci.ConfigItem + 344, // 13: pbcs.ListReleasedConfigItemsResp.details:type_name -> pbrci.ReleasedConfigItem + 345, // 14: pbcs.ListConfigItemCountResp.details:type_name -> pbci.ListConfigItemCounts + 308, // 15: pbcs.ListConfigItemByTupleReq.items:type_name -> pbcs.ListConfigItemByTupleReq.Item + 342, // 16: pbcs.ListConfigItemByTupleResp.details:type_name -> pbci.ConfigItem + 346, // 17: pbcs.GetReleasedKvResp.kv:type_name -> pbrkv.ReleasedKv + 346, // 18: pbcs.ListReleasedKvsResp.details:type_name -> pbrkv.ReleasedKv + 341, // 19: pbcs.CreateReleaseReq.variables:type_name -> pbtv.TemplateVariableSpec + 347, // 20: pbcs.ListReleasesResp.details:type_name -> pbrelease.Release + 309, // 21: pbcs.ListHooksResp.details:type_name -> pbcs.ListHooksResp.Detail + 348, // 22: pbcs.ListHookTagsResp.details:type_name -> pbhook.CountHookTags + 310, // 23: pbcs.ListHookRevisionsResp.details:type_name -> pbcs.ListHookRevisionsResp.ListHookRevisionsData 93, // 24: pbcs.GetHookResp.spec:type_name -> pbcs.GetHookInfoSpec - 342, // 25: pbcs.GetHookResp.attachment:type_name -> pbhook.HookAttachment - 343, // 26: pbcs.GetHookResp.revision:type_name -> pbbase.Revision - 307, // 27: pbcs.GetHookInfoSpec.releases:type_name -> pbcs.GetHookInfoSpec.Releases - 308, // 28: pbcs.ListHookRevisionReferencesResp.details:type_name -> pbcs.ListHookRevisionReferencesResp.Detail - 309, // 29: pbcs.ListHookReferencesResp.details:type_name -> pbcs.ListHookReferencesResp.Detail - 310, // 30: pbcs.GetReleaseHookResp.pre_hook:type_name -> pbcs.GetReleaseHookResp.Hook - 310, // 31: pbcs.GetReleaseHookResp.post_hook:type_name -> pbcs.GetReleaseHookResp.Hook - 344, // 32: pbcs.ListTemplateSpacesResp.details:type_name -> pbts.TemplateSpace - 344, // 33: pbcs.ListTmplSpacesByIDsResp.details:type_name -> pbts.TemplateSpace - 345, // 34: pbcs.ListTemplatesResp.details:type_name -> pbtemplate.Template - 311, // 35: pbcs.BatchUpsertTemplatesReq.items:type_name -> pbcs.BatchUpsertTemplatesReq.Item - 345, // 36: pbcs.ListTemplatesByIDsResp.details:type_name -> pbtemplate.Template - 312, // 37: pbcs.ListTemplateByTupleReq.items:type_name -> pbcs.ListTemplateByTupleReq.Item - 313, // 38: pbcs.ListTemplateByTupleResp.items:type_name -> pbcs.ListTemplateByTupleResp.Item - 345, // 39: pbcs.ListTemplatesNotBoundResp.details:type_name -> pbtemplate.Template - 345, // 40: pbcs.ListTmplsOfTmplSetResp.details:type_name -> pbtemplate.Template - 346, // 41: pbcs.ListTemplateRevisionsResp.details:type_name -> pbtr.TemplateRevision - 314, // 42: pbcs.GetTemplateRevisionResp.detail:type_name -> pbcs.GetTemplateRevisionResp.TemplateRevision - 346, // 43: pbcs.ListTemplateRevisionsByIDsResp.details:type_name -> pbtr.TemplateRevision - 347, // 44: pbcs.ListTmplRevisionNamesByTmplIDsResp.details:type_name -> pbtr.TemplateRevisionNamesDetail - 348, // 45: pbcs.ListTemplateSetsResp.details:type_name -> pbtset.TemplateSet - 348, // 46: pbcs.ListAppTemplateSetsResp.details:type_name -> pbtset.TemplateSet - 348, // 47: pbcs.ListTemplateSetsByIDsResp.details:type_name -> pbtset.TemplateSet - 349, // 48: pbcs.ListTmplSetsOfBizResp.details:type_name -> pbtset.TemplateSetOfBizDetail - 350, // 49: pbcs.CreateAppTemplateBindingReq.bindings:type_name -> pbatb.TemplateBinding - 350, // 50: pbcs.UpdateAppTemplateBindingReq.bindings:type_name -> pbatb.TemplateBinding - 351, // 51: pbcs.ListAppTemplateBindingsResp.details:type_name -> pbatb.AppTemplateBinding - 352, // 52: pbcs.ListAppBoundTmplRevisionsResp.details:type_name -> pbatb.AppBoundTmplRevisionGroupBySet - 353, // 53: pbcs.ListReleasedAppBoundTmplRevisionsResp.details:type_name -> pbatb.ReleasedAppBoundTmplRevisionGroupBySet - 354, // 54: pbcs.GetReleasedAppBoundTmplRevisionResp.detail:type_name -> pbatb.ReleasedAppBoundTmplRevision - 350, // 55: pbcs.UpdateAppBoundTmplRevisionsReq.bindings:type_name -> pbatb.TemplateBinding - 350, // 56: pbcs.CheckAppTemplateBindingReq.bindings:type_name -> pbatb.TemplateBinding - 355, // 57: pbcs.CheckAppTemplateBindingResp.details:type_name -> pbatb.Conflict - 356, // 58: pbcs.ListTmplBoundCountsResp.details:type_name -> pbtbr.TemplateBoundCounts - 357, // 59: pbcs.ListTmplRevisionBoundCountsResp.details:type_name -> pbtbr.TemplateRevisionBoundCounts - 358, // 60: pbcs.ListTmplSetBoundCountsResp.details:type_name -> pbtbr.TemplateSetBoundCounts - 359, // 61: pbcs.ListTmplBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateBoundUnnamedAppDetail - 360, // 62: pbcs.ListTmplBoundNamedAppsResp.details:type_name -> pbtbr.TemplateBoundNamedAppDetail - 361, // 63: pbcs.ListTmplBoundTmplSetsResp.details:type_name -> pbtbr.TemplateBoundTemplateSetDetail - 362, // 64: pbcs.ListMultiTmplBoundTmplSetsResp.details:type_name -> pbtbr.MultiTemplateBoundTemplateSetDetail - 363, // 65: pbcs.ListTmplRevisionBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateRevisionBoundUnnamedAppDetail - 364, // 66: pbcs.ListTmplRevisionBoundNamedAppsResp.details:type_name -> pbtbr.TemplateRevisionBoundNamedAppDetail - 365, // 67: pbcs.ListTmplSetBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateSetBoundUnnamedAppDetail - 366, // 68: pbcs.ListMultiTmplSetBoundUnnamedAppsResp.details:type_name -> pbtbr.MultiTemplateSetBoundUnnamedAppDetail - 315, // 69: pbcs.CheckTemplateSetReferencesAppsReq.items:type_name -> pbcs.CheckTemplateSetReferencesAppsReq.Item - 316, // 70: pbcs.CheckTemplateSetReferencesAppsResp.items:type_name -> pbcs.CheckTemplateSetReferencesAppsResp.Item - 367, // 71: pbcs.ListTmplSetBoundNamedAppsResp.details:type_name -> pbtbr.TemplateSetBoundNamedAppDetail - 368, // 72: pbcs.ListLatestTmplBoundUnnamedAppsResp.details:type_name -> pbtbr.LatestTemplateBoundUnnamedAppDetail - 369, // 73: pbcs.ListTemplateVariablesResp.details:type_name -> pbtv.TemplateVariable - 370, // 74: pbcs.GetAppTmplVariableRefsResp.details:type_name -> pbatv.AppTemplateVariableReference - 370, // 75: pbcs.GetReleasedAppTmplVariableRefsResp.details:type_name -> pbatv.AppTemplateVariableReference - 334, // 76: pbcs.UpdateAppTmplVariablesReq.variables:type_name -> pbtv.TemplateVariableSpec - 334, // 77: pbcs.ListAppTmplVariablesResp.details:type_name -> pbtv.TemplateVariableSpec - 334, // 78: pbcs.ListReleasedAppTmplVariablesResp.details:type_name -> pbtv.TemplateVariableSpec - 371, // 79: pbcs.CreateGroupReq.selector:type_name -> google.protobuf.Struct - 371, // 80: pbcs.UpdateGroupReq.selector:type_name -> google.protobuf.Struct - 317, // 81: pbcs.ListAllGroupsResp.details:type_name -> pbcs.ListAllGroupsResp.ListAllGroupsData - 319, // 82: pbcs.ListAppGroupsResp.details:type_name -> pbcs.ListAppGroupsResp.ListAppGroupsData - 320, // 83: pbcs.ListGroupReleasedAppsResp.details:type_name -> pbcs.ListGroupReleasedAppsResp.ListGroupReleasedAppsData - 371, // 84: pbcs.PublishReq.labels:type_name -> google.protobuf.Struct - 334, // 85: pbcs.GenerateReleaseAndPublishReq.variables:type_name -> pbtv.TemplateVariableSpec - 371, // 86: pbcs.GenerateReleaseAndPublishReq.labels:type_name -> google.protobuf.Struct - 372, // 87: pbcs.ListKvsResp.details:type_name -> pbkv.Kv - 321, // 88: pbcs.BatchUpsertKvsReq.kvs:type_name -> pbcs.BatchUpsertKvsReq.Kv - 322, // 89: pbcs.ListClientsReq.order:type_name -> pbcs.ListClientsReq.Order - 373, // 90: pbcs.ListClientsReq.search:type_name -> pbclient.ClientQueryCondition - 323, // 91: pbcs.ListClientsResp.details:type_name -> pbcs.ListClientsResp.Item - 324, // 92: pbcs.ListClientEventsReq.order:type_name -> pbcs.ListClientEventsReq.Order - 374, // 93: pbcs.ListClientEventsResp.details:type_name -> pbce.ClientEvent - 375, // 94: pbcs.ListClientQuerysResp.details:type_name -> pbcq.ClientQuery - 371, // 95: pbcs.CreateClientQueryReq.search_condition:type_name -> google.protobuf.Struct - 371, // 96: pbcs.UpdateClientQueryReq.search_condition:type_name -> google.protobuf.Struct - 325, // 97: pbcs.CompareConfigItemConflictsResp.non_template_configs:type_name -> pbcs.CompareConfigItemConflictsResp.NonTemplateConfig - 326, // 98: pbcs.CompareConfigItemConflictsResp.template_configs:type_name -> pbcs.CompareConfigItemConflictsResp.TemplateConfig - 328, // 99: pbcs.CompareKvConflictsResp.exist:type_name -> pbcs.CompareKvConflictsResp.Kv - 328, // 100: pbcs.CompareKvConflictsResp.non_exist:type_name -> pbcs.CompareKvConflictsResp.Kv - 350, // 101: pbcs.BatchUpsertConfigItemsReq.TemplateBinding.template_binding:type_name -> pbatb.TemplateBinding - 376, // 102: pbcs.ListHooksResp.Detail.hook:type_name -> pbhook.Hook - 377, // 103: pbcs.ListHookRevisionsResp.ListHookRevisionsData.hook_revision:type_name -> pbhr.HookRevision - 345, // 104: pbcs.ListTemplateByTupleResp.Item.template:type_name -> pbtemplate.Template - 346, // 105: pbcs.ListTemplateByTupleResp.Item.template_revision:type_name -> pbtr.TemplateRevision - 318, // 106: pbcs.ListAllGroupsResp.ListAllGroupsData.bind_apps:type_name -> pbcs.ListAllGroupsResp.ListAllGroupsData.BindApp - 371, // 107: pbcs.ListAllGroupsResp.ListAllGroupsData.selector:type_name -> google.protobuf.Struct - 371, // 108: pbcs.ListAppGroupsResp.ListAppGroupsData.old_selector:type_name -> google.protobuf.Struct - 371, // 109: pbcs.ListAppGroupsResp.ListAppGroupsData.new_selector:type_name -> google.protobuf.Struct - 378, // 110: pbcs.ListClientsResp.Item.client:type_name -> pbclient.Client - 379, // 111: pbcs.CompareConfigItemConflictsResp.NonTemplateConfig.config_item_spec:type_name -> pbci.ConfigItemSpec - 334, // 112: pbcs.CompareConfigItemConflictsResp.NonTemplateConfig.variables:type_name -> pbtv.TemplateVariableSpec - 327, // 113: pbcs.CompareConfigItemConflictsResp.TemplateConfig.template_revisions:type_name -> pbcs.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail - 334, // 114: pbcs.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail.variables:type_name -> pbtv.TemplateVariableSpec - 18, // 115: pbcs.Config.CreateApp:input_type -> pbcs.CreateAppReq - 20, // 116: pbcs.Config.UpdateApp:input_type -> pbcs.UpdateAppReq - 21, // 117: pbcs.Config.DeleteApp:input_type -> pbcs.DeleteAppReq - 23, // 118: pbcs.Config.GetApp:input_type -> pbcs.GetAppReq - 24, // 119: pbcs.Config.GetAppByName:input_type -> pbcs.GetAppByNameReq - 25, // 120: pbcs.Config.ListAppsRest:input_type -> pbcs.ListAppsRestReq - 26, // 121: pbcs.Config.ListAppsBySpaceRest:input_type -> pbcs.ListAppsBySpaceRestReq - 28, // 122: pbcs.Config.CreateConfigItem:input_type -> pbcs.CreateConfigItemReq - 29, // 123: pbcs.Config.BatchUpsertConfigItems:input_type -> pbcs.BatchUpsertConfigItemsReq - 32, // 124: pbcs.Config.UpdateConfigItem:input_type -> pbcs.UpdateConfigItemReq - 34, // 125: pbcs.Config.DeleteConfigItem:input_type -> pbcs.DeleteConfigItemReq - 268, // 126: pbcs.Config.BatchDeleteConfigItems:input_type -> pbcs.BatchDeleteAppResourcesReq - 36, // 127: pbcs.Config.UnDeleteConfigItem:input_type -> pbcs.UnDeleteConfigItemReq - 38, // 128: pbcs.Config.UndoConfigItem:input_type -> pbcs.UndoConfigItemReq - 40, // 129: pbcs.Config.GetConfigItem:input_type -> pbcs.GetConfigItemReq - 42, // 130: pbcs.Config.GetReleasedConfigItem:input_type -> pbcs.GetReleasedConfigItemReq - 44, // 131: pbcs.Config.ListConfigItems:input_type -> pbcs.ListConfigItemsReq - 46, // 132: pbcs.Config.ListReleasedConfigItems:input_type -> pbcs.ListReleasedConfigItemsReq - 48, // 133: pbcs.Config.ListConfigItemCount:input_type -> pbcs.ListConfigItemCountReq - 50, // 134: pbcs.Config.ListConfigItemByTuple:input_type -> pbcs.ListConfigItemByTupleReq - 52, // 135: pbcs.Config.GetReleasedKv:input_type -> pbcs.GetReleasedKvReq - 54, // 136: pbcs.Config.ListReleasedKvs:input_type -> pbcs.ListReleasedKvsReq - 56, // 137: pbcs.Config.UpdateConfigHook:input_type -> pbcs.UpdateConfigHookReq - 58, // 138: pbcs.Config.CreateRelease:input_type -> pbcs.CreateReleaseReq - 62, // 139: pbcs.Config.ListReleases:input_type -> pbcs.ListReleasesReq - 64, // 140: pbcs.Config.GetReleaseByName:input_type -> pbcs.GetReleaseByNameReq - 65, // 141: pbcs.Config.GetRelease:input_type -> pbcs.GetReleaseReq - 66, // 142: pbcs.Config.DeprecateRelease:input_type -> pbcs.DeprecateReleaseReq - 68, // 143: pbcs.Config.UnDeprecateRelease:input_type -> pbcs.UnDeprecateReleaseReq - 70, // 144: pbcs.Config.DeleteRelease:input_type -> pbcs.DeleteReleaseReq - 60, // 145: pbcs.Config.CheckReleaseName:input_type -> pbcs.CheckReleaseNameReq - 72, // 146: pbcs.Config.CreateHook:input_type -> pbcs.CreateHookReq - 74, // 147: pbcs.Config.DeleteHook:input_type -> pbcs.DeleteHookReq - 76, // 148: pbcs.Config.BatchDeleteHook:input_type -> pbcs.BatchDeleteHookReq - 77, // 149: pbcs.Config.UpdateHook:input_type -> pbcs.UpdateHookReq - 79, // 150: pbcs.Config.ListHooks:input_type -> pbcs.ListHooksReq - 81, // 151: pbcs.Config.ListHookTags:input_type -> pbcs.ListHookTagsReq - 91, // 152: pbcs.Config.GetHook:input_type -> pbcs.GetHookReq - 83, // 153: pbcs.Config.CreateHookRevision:input_type -> pbcs.CreateHookRevisionReq - 85, // 154: pbcs.Config.ListHookRevisions:input_type -> pbcs.ListHookRevisionsReq - 87, // 155: pbcs.Config.DeleteHookRevision:input_type -> pbcs.DeleteHookRevisionReq - 89, // 156: pbcs.Config.PublishHookRevision:input_type -> pbcs.PublishHookRevisionReq - 94, // 157: pbcs.Config.GetHookRevision:input_type -> pbcs.GetHookRevisionReq - 95, // 158: pbcs.Config.UpdateHookRevision:input_type -> pbcs.UpdateHookRevisionReq - 99, // 159: pbcs.Config.ListHookReferences:input_type -> pbcs.ListHookReferencesReq - 97, // 160: pbcs.Config.ListHookRevisionReferences:input_type -> pbcs.ListHookRevisionReferencesReq - 101, // 161: pbcs.Config.GetReleaseHook:input_type -> pbcs.GetReleaseHookReq - 103, // 162: pbcs.Config.CreateTemplateSpace:input_type -> pbcs.CreateTemplateSpaceReq - 107, // 163: pbcs.Config.DeleteTemplateSpace:input_type -> pbcs.DeleteTemplateSpaceReq - 105, // 164: pbcs.Config.UpdateTemplateSpace:input_type -> pbcs.UpdateTemplateSpaceReq - 109, // 165: pbcs.Config.ListTemplateSpaces:input_type -> pbcs.ListTemplateSpacesReq - 380, // 166: pbcs.Config.GetAllBizsOfTmplSpaces:input_type -> pbbase.EmptyReq - 112, // 167: pbcs.Config.CreateDefaultTmplSpace:input_type -> pbcs.CreateDefaultTmplSpaceReq - 114, // 168: pbcs.Config.ListTmplSpacesByIDs:input_type -> pbcs.ListTmplSpacesByIDsReq - 116, // 169: pbcs.Config.CreateTemplate:input_type -> pbcs.CreateTemplateReq - 120, // 170: pbcs.Config.DeleteTemplate:input_type -> pbcs.DeleteTemplateReq - 122, // 171: pbcs.Config.BatchDeleteTemplate:input_type -> pbcs.BatchDeleteTemplateReq - 118, // 172: pbcs.Config.UpdateTemplate:input_type -> pbcs.UpdateTemplateReq - 124, // 173: pbcs.Config.ListTemplates:input_type -> pbcs.ListTemplatesReq - 126, // 174: pbcs.Config.BatchUpsertTemplates:input_type -> pbcs.BatchUpsertTemplatesReq - 128, // 175: pbcs.Config.BatchUpdateTemplatePermissions:input_type -> pbcs.BatchUpdateTemplatePermissionsReq - 130, // 176: pbcs.Config.AddTmplsToTmplSets:input_type -> pbcs.AddTmplsToTmplSetsReq - 132, // 177: pbcs.Config.DeleteTmplsFromTmplSets:input_type -> pbcs.DeleteTmplsFromTmplSetsReq - 134, // 178: pbcs.Config.ListTemplatesByIDs:input_type -> pbcs.ListTemplatesByIDsReq - 136, // 179: pbcs.Config.ListTemplatesNotBound:input_type -> pbcs.ListTemplatesNotBoundReq - 137, // 180: pbcs.Config.ListTemplateByTuple:input_type -> pbcs.ListTemplateByTupleReq - 140, // 181: pbcs.Config.ListTmplsOfTmplSet:input_type -> pbcs.ListTmplsOfTmplSetReq - 142, // 182: pbcs.Config.CreateTemplateRevision:input_type -> pbcs.CreateTemplateRevisionReq - 144, // 183: pbcs.Config.UpdateTemplateRevision:input_type -> pbcs.UpdateTemplateRevisionReq - 146, // 184: pbcs.Config.ListTemplateRevisions:input_type -> pbcs.ListTemplateRevisionsReq - 148, // 185: pbcs.Config.GetTemplateRevision:input_type -> pbcs.GetTemplateRevisionReq - 152, // 186: pbcs.Config.ListTemplateRevisionsByIDs:input_type -> pbcs.ListTemplateRevisionsByIDsReq - 154, // 187: pbcs.Config.ListTmplRevisionNamesByTmplIDs:input_type -> pbcs.ListTmplRevisionNamesByTmplIDsReq - 156, // 188: pbcs.Config.CreateTemplateSet:input_type -> pbcs.CreateTemplateSetReq - 160, // 189: pbcs.Config.DeleteTemplateSet:input_type -> pbcs.DeleteTemplateSetReq - 158, // 190: pbcs.Config.UpdateTemplateSet:input_type -> pbcs.UpdateTemplateSetReq - 162, // 191: pbcs.Config.ListTemplateSets:input_type -> pbcs.ListTemplateSetsReq - 164, // 192: pbcs.Config.ListAppTemplateSets:input_type -> pbcs.ListAppTemplateSetsReq - 166, // 193: pbcs.Config.ListTemplateSetsByIDs:input_type -> pbcs.ListTemplateSetsByIDsReq - 168, // 194: pbcs.Config.ListTmplSetsOfBiz:input_type -> pbcs.ListTmplSetsOfBizReq - 170, // 195: pbcs.Config.CreateAppTemplateBinding:input_type -> pbcs.CreateAppTemplateBindingReq - 174, // 196: pbcs.Config.DeleteAppTemplateBinding:input_type -> pbcs.DeleteAppTemplateBindingReq - 172, // 197: pbcs.Config.UpdateAppTemplateBinding:input_type -> pbcs.UpdateAppTemplateBindingReq - 176, // 198: pbcs.Config.ListAppTemplateBindings:input_type -> pbcs.ListAppTemplateBindingsReq - 178, // 199: pbcs.Config.ListAppBoundTmplRevisions:input_type -> pbcs.ListAppBoundTmplRevisionsReq - 180, // 200: pbcs.Config.ListReleasedAppBoundTmplRevisions:input_type -> pbcs.ListReleasedAppBoundTmplRevisionsReq - 182, // 201: pbcs.Config.GetReleasedAppBoundTmplRevision:input_type -> pbcs.GetReleasedAppBoundTmplRevisionReq - 184, // 202: pbcs.Config.UpdateAppBoundTmplRevisions:input_type -> pbcs.UpdateAppBoundTmplRevisionsReq - 186, // 203: pbcs.Config.DeleteAppBoundTmplSets:input_type -> pbcs.DeleteAppBoundTmplSetsReq - 188, // 204: pbcs.Config.RemoveAppBoundTmplSet:input_type -> pbcs.RemoveAppBoundTmplSetReq - 190, // 205: pbcs.Config.CheckAppTemplateBinding:input_type -> pbcs.CheckAppTemplateBindingReq - 192, // 206: pbcs.Config.ListTmplBoundCounts:input_type -> pbcs.ListTmplBoundCountsReq - 194, // 207: pbcs.Config.ListTmplRevisionBoundCounts:input_type -> pbcs.ListTmplRevisionBoundCountsReq - 196, // 208: pbcs.Config.ListTmplSetBoundCounts:input_type -> pbcs.ListTmplSetBoundCountsReq - 198, // 209: pbcs.Config.ListTmplBoundUnnamedApps:input_type -> pbcs.ListTmplBoundUnnamedAppsReq - 200, // 210: pbcs.Config.ListTmplBoundNamedApps:input_type -> pbcs.ListTmplBoundNamedAppsReq - 202, // 211: pbcs.Config.ListTmplBoundTmplSets:input_type -> pbcs.ListTmplBoundTmplSetsReq - 204, // 212: pbcs.Config.ListMultiTmplBoundTmplSets:input_type -> pbcs.ListMultiTmplBoundTmplSetsReq - 206, // 213: pbcs.Config.ListTmplRevisionBoundUnnamedApps:input_type -> pbcs.ListTmplRevisionBoundUnnamedAppsReq - 208, // 214: pbcs.Config.ListTmplRevisionBoundNamedApps:input_type -> pbcs.ListTmplRevisionBoundNamedAppsReq - 210, // 215: pbcs.Config.ListTmplSetBoundUnnamedApps:input_type -> pbcs.ListTmplSetBoundUnnamedAppsReq - 212, // 216: pbcs.Config.ListMultiTmplSetBoundUnnamedApps:input_type -> pbcs.ListMultiTmplSetBoundUnnamedAppsReq - 214, // 217: pbcs.Config.CheckTemplateSetReferencesApps:input_type -> pbcs.CheckTemplateSetReferencesAppsReq - 216, // 218: pbcs.Config.ListTmplSetBoundNamedApps:input_type -> pbcs.ListTmplSetBoundNamedAppsReq - 218, // 219: pbcs.Config.ListLatestTmplBoundUnnamedApps:input_type -> pbcs.ListLatestTmplBoundUnnamedAppsReq - 220, // 220: pbcs.Config.CreateTemplateVariable:input_type -> pbcs.CreateTemplateVariableReq - 224, // 221: pbcs.Config.DeleteTemplateVariable:input_type -> pbcs.DeleteTemplateVariableReq - 267, // 222: pbcs.Config.BatchDeleteTemplateVariable:input_type -> pbcs.BatchDeleteBizResourcesReq - 222, // 223: pbcs.Config.UpdateTemplateVariable:input_type -> pbcs.UpdateTemplateVariableReq - 226, // 224: pbcs.Config.ListTemplateVariables:input_type -> pbcs.ListTemplateVariablesReq - 228, // 225: pbcs.Config.ImportTemplateVariables:input_type -> pbcs.ImportTemplateVariablesReq - 230, // 226: pbcs.Config.ExtractAppTmplVariables:input_type -> pbcs.ExtractAppTmplVariablesReq - 232, // 227: pbcs.Config.GetAppTmplVariableRefs:input_type -> pbcs.GetAppTmplVariableRefsReq - 234, // 228: pbcs.Config.GetReleasedAppTmplVariableRefs:input_type -> pbcs.GetReleasedAppTmplVariableRefsReq - 236, // 229: pbcs.Config.UpdateAppTmplVariables:input_type -> pbcs.UpdateAppTmplVariablesReq - 238, // 230: pbcs.Config.ListAppTmplVariables:input_type -> pbcs.ListAppTmplVariablesReq - 240, // 231: pbcs.Config.ListReleasedAppTmplVariables:input_type -> pbcs.ListReleasedAppTmplVariablesReq - 242, // 232: pbcs.Config.CreateGroup:input_type -> pbcs.CreateGroupReq - 246, // 233: pbcs.Config.DeleteGroup:input_type -> pbcs.DeleteGroupReq - 267, // 234: pbcs.Config.BatchDeleteGroups:input_type -> pbcs.BatchDeleteBizResourcesReq - 244, // 235: pbcs.Config.UpdateGroup:input_type -> pbcs.UpdateGroupReq - 248, // 236: pbcs.Config.ListAllGroups:input_type -> pbcs.ListAllGroupsReq - 250, // 237: pbcs.Config.ListAppGroups:input_type -> pbcs.ListAppGroupsReq - 252, // 238: pbcs.Config.ListGroupReleasedApps:input_type -> pbcs.ListGroupReleasedAppsReq - 254, // 239: pbcs.Config.GetGroupByName:input_type -> pbcs.GetGroupByNameReq - 255, // 240: pbcs.Config.Publish:input_type -> pbcs.PublishReq - 256, // 241: pbcs.Config.GenerateReleaseAndPublish:input_type -> pbcs.GenerateReleaseAndPublishReq - 16, // 242: pbcs.Config.CreateCredentials:input_type -> pbcs.CreateCredentialReq - 14, // 243: pbcs.Config.ListCredentials:input_type -> pbcs.ListCredentialsReq - 8, // 244: pbcs.Config.DeleteCredential:input_type -> pbcs.DeleteCredentialsReq - 10, // 245: pbcs.Config.UpdateCredential:input_type -> pbcs.UpdateCredentialsReq - 12, // 246: pbcs.Config.CheckCredentialName:input_type -> pbcs.CheckCredentialNameReq - 4, // 247: pbcs.Config.ListCredentialScopes:input_type -> pbcs.ListCredentialScopesReq - 0, // 248: pbcs.Config.UpdateCredentialScope:input_type -> pbcs.UpdateCredentialScopeReq - 2, // 249: pbcs.Config.CredentialScopePreview:input_type -> pbcs.CredentialScopePreviewReq - 259, // 250: pbcs.Config.CreateKv:input_type -> pbcs.CreateKvReq - 261, // 251: pbcs.Config.UpdateKv:input_type -> pbcs.UpdateKvReq - 263, // 252: pbcs.Config.ListKvs:input_type -> pbcs.ListKvsReq - 265, // 253: pbcs.Config.DeleteKv:input_type -> pbcs.DeleteKvReq - 268, // 254: pbcs.Config.BatchDeleteKv:input_type -> pbcs.BatchDeleteAppResourcesReq - 270, // 255: pbcs.Config.BatchUpsertKvs:input_type -> pbcs.BatchUpsertKvsReq - 272, // 256: pbcs.Config.UnDeleteKv:input_type -> pbcs.UnDeleteKvReq - 274, // 257: pbcs.Config.UndoKv:input_type -> pbcs.UndoKvReq - 276, // 258: pbcs.Config.ImportKvs:input_type -> pbcs.ImportKvsReq - 278, // 259: pbcs.Config.ListClients:input_type -> pbcs.ListClientsReq - 280, // 260: pbcs.Config.ListClientEvents:input_type -> pbcs.ListClientEventsReq - 282, // 261: pbcs.Config.RetryClients:input_type -> pbcs.RetryClientsReq - 284, // 262: pbcs.Config.ListClientQuerys:input_type -> pbcs.ListClientQuerysReq - 286, // 263: pbcs.Config.CreateClientQuery:input_type -> pbcs.CreateClientQueryReq - 288, // 264: pbcs.Config.UpdateClientQuery:input_type -> pbcs.UpdateClientQueryReq - 290, // 265: pbcs.Config.DeleteClientQuery:input_type -> pbcs.DeleteClientQueryReq - 292, // 266: pbcs.Config.CheckClientQueryName:input_type -> pbcs.CheckClientQueryNameReq - 381, // 267: pbcs.Config.ClientConfigVersionStatistics:input_type -> pbclient.ClientCommonReq - 381, // 268: pbcs.Config.ClientPullTrendStatistics:input_type -> pbclient.ClientCommonReq - 381, // 269: pbcs.Config.ClientPullStatistics:input_type -> pbclient.ClientCommonReq - 381, // 270: pbcs.Config.ClientLabelStatistics:input_type -> pbclient.ClientCommonReq - 381, // 271: pbcs.Config.ClientAnnotationStatistics:input_type -> pbclient.ClientCommonReq - 381, // 272: pbcs.Config.ClientVersionStatistics:input_type -> pbclient.ClientCommonReq - 294, // 273: pbcs.Config.ListClientLabelAndAnnotation:input_type -> pbcs.ListClientLabelAndAnnotationReq - 381, // 274: pbcs.Config.ClientSpecificFailedReason:input_type -> pbclient.ClientCommonReq - 295, // 275: pbcs.Config.CompareConfigItemConflicts:input_type -> pbcs.CompareConfigItemConflictsReq - 297, // 276: pbcs.Config.CompareKvConflicts:input_type -> pbcs.CompareKvConflictsReq - 299, // 277: pbcs.Config.GetTemplateAndNonTemplateCICount:input_type -> pbcs.GetTemplateAndNonTemplateCICountReq - 19, // 278: pbcs.Config.CreateApp:output_type -> pbcs.CreateAppResp - 333, // 279: pbcs.Config.UpdateApp:output_type -> pbapp.App - 22, // 280: pbcs.Config.DeleteApp:output_type -> pbcs.DeleteAppResp - 333, // 281: pbcs.Config.GetApp:output_type -> pbapp.App - 333, // 282: pbcs.Config.GetAppByName:output_type -> pbapp.App - 27, // 283: pbcs.Config.ListAppsRest:output_type -> pbcs.ListAppsResp - 27, // 284: pbcs.Config.ListAppsBySpaceRest:output_type -> pbcs.ListAppsResp - 31, // 285: pbcs.Config.CreateConfigItem:output_type -> pbcs.CreateConfigItemResp - 30, // 286: pbcs.Config.BatchUpsertConfigItems:output_type -> pbcs.BatchUpsertConfigItemsResp - 33, // 287: pbcs.Config.UpdateConfigItem:output_type -> pbcs.UpdateConfigItemResp - 35, // 288: pbcs.Config.DeleteConfigItem:output_type -> pbcs.DeleteConfigItemResp - 269, // 289: pbcs.Config.BatchDeleteConfigItems:output_type -> pbcs.BatchDeleteResp - 37, // 290: pbcs.Config.UnDeleteConfigItem:output_type -> pbcs.UnDeleteConfigItemResp - 39, // 291: pbcs.Config.UndoConfigItem:output_type -> pbcs.UndoConfigItemResp - 41, // 292: pbcs.Config.GetConfigItem:output_type -> pbcs.GetConfigItemResp - 43, // 293: pbcs.Config.GetReleasedConfigItem:output_type -> pbcs.GetReleasedConfigItemResp - 45, // 294: pbcs.Config.ListConfigItems:output_type -> pbcs.ListConfigItemsResp - 47, // 295: pbcs.Config.ListReleasedConfigItems:output_type -> pbcs.ListReleasedConfigItemsResp - 49, // 296: pbcs.Config.ListConfigItemCount:output_type -> pbcs.ListConfigItemCountResp - 51, // 297: pbcs.Config.ListConfigItemByTuple:output_type -> pbcs.ListConfigItemByTupleResp - 53, // 298: pbcs.Config.GetReleasedKv:output_type -> pbcs.GetReleasedKvResp - 55, // 299: pbcs.Config.ListReleasedKvs:output_type -> pbcs.ListReleasedKvsResp - 57, // 300: pbcs.Config.UpdateConfigHook:output_type -> pbcs.UpdateConfigHookResp - 59, // 301: pbcs.Config.CreateRelease:output_type -> pbcs.CreateReleaseResp - 63, // 302: pbcs.Config.ListReleases:output_type -> pbcs.ListReleasesResp - 340, // 303: pbcs.Config.GetReleaseByName:output_type -> pbrelease.Release - 340, // 304: pbcs.Config.GetRelease:output_type -> pbrelease.Release - 67, // 305: pbcs.Config.DeprecateRelease:output_type -> pbcs.DeprecateReleaseResp - 69, // 306: pbcs.Config.UnDeprecateRelease:output_type -> pbcs.UnDeprecateReleaseResp - 71, // 307: pbcs.Config.DeleteRelease:output_type -> pbcs.DeleteReleaseResp - 61, // 308: pbcs.Config.CheckReleaseName:output_type -> pbcs.CheckReleaseNameResp - 73, // 309: pbcs.Config.CreateHook:output_type -> pbcs.CreateHookResp - 75, // 310: pbcs.Config.DeleteHook:output_type -> pbcs.DeleteHookResp - 269, // 311: pbcs.Config.BatchDeleteHook:output_type -> pbcs.BatchDeleteResp - 78, // 312: pbcs.Config.UpdateHook:output_type -> pbcs.UpdateHookResp - 80, // 313: pbcs.Config.ListHooks:output_type -> pbcs.ListHooksResp - 82, // 314: pbcs.Config.ListHookTags:output_type -> pbcs.ListHookTagsResp - 92, // 315: pbcs.Config.GetHook:output_type -> pbcs.GetHookResp - 84, // 316: pbcs.Config.CreateHookRevision:output_type -> pbcs.CreateHookRevisionResp - 86, // 317: pbcs.Config.ListHookRevisions:output_type -> pbcs.ListHookRevisionsResp - 88, // 318: pbcs.Config.DeleteHookRevision:output_type -> pbcs.DeleteHookRevisionResp - 90, // 319: pbcs.Config.PublishHookRevision:output_type -> pbcs.PublishHookRevisionResp - 377, // 320: pbcs.Config.GetHookRevision:output_type -> pbhr.HookRevision - 96, // 321: pbcs.Config.UpdateHookRevision:output_type -> pbcs.UpdateHookRevisionResp - 100, // 322: pbcs.Config.ListHookReferences:output_type -> pbcs.ListHookReferencesResp - 98, // 323: pbcs.Config.ListHookRevisionReferences:output_type -> pbcs.ListHookRevisionReferencesResp - 102, // 324: pbcs.Config.GetReleaseHook:output_type -> pbcs.GetReleaseHookResp - 104, // 325: pbcs.Config.CreateTemplateSpace:output_type -> pbcs.CreateTemplateSpaceResp - 108, // 326: pbcs.Config.DeleteTemplateSpace:output_type -> pbcs.DeleteTemplateSpaceResp - 106, // 327: pbcs.Config.UpdateTemplateSpace:output_type -> pbcs.UpdateTemplateSpaceResp - 110, // 328: pbcs.Config.ListTemplateSpaces:output_type -> pbcs.ListTemplateSpacesResp - 111, // 329: pbcs.Config.GetAllBizsOfTmplSpaces:output_type -> pbcs.GetAllBizsOfTmplSpacesResp - 113, // 330: pbcs.Config.CreateDefaultTmplSpace:output_type -> pbcs.CreateDefaultTmplSpaceResp - 115, // 331: pbcs.Config.ListTmplSpacesByIDs:output_type -> pbcs.ListTmplSpacesByIDsResp - 117, // 332: pbcs.Config.CreateTemplate:output_type -> pbcs.CreateTemplateResp - 121, // 333: pbcs.Config.DeleteTemplate:output_type -> pbcs.DeleteTemplateResp - 123, // 334: pbcs.Config.BatchDeleteTemplate:output_type -> pbcs.BatchDeleteTemplateResp - 119, // 335: pbcs.Config.UpdateTemplate:output_type -> pbcs.UpdateTemplateResp - 125, // 336: pbcs.Config.ListTemplates:output_type -> pbcs.ListTemplatesResp - 127, // 337: pbcs.Config.BatchUpsertTemplates:output_type -> pbcs.BatchUpsertTemplatesResp - 129, // 338: pbcs.Config.BatchUpdateTemplatePermissions:output_type -> pbcs.BatchUpdateTemplatePermissionsResp - 131, // 339: pbcs.Config.AddTmplsToTmplSets:output_type -> pbcs.AddTmplsToTmplSetsResp - 133, // 340: pbcs.Config.DeleteTmplsFromTmplSets:output_type -> pbcs.DeleteTmplsFromTmplSetsResp - 135, // 341: pbcs.Config.ListTemplatesByIDs:output_type -> pbcs.ListTemplatesByIDsResp - 139, // 342: pbcs.Config.ListTemplatesNotBound:output_type -> pbcs.ListTemplatesNotBoundResp - 138, // 343: pbcs.Config.ListTemplateByTuple:output_type -> pbcs.ListTemplateByTupleResp - 141, // 344: pbcs.Config.ListTmplsOfTmplSet:output_type -> pbcs.ListTmplsOfTmplSetResp - 143, // 345: pbcs.Config.CreateTemplateRevision:output_type -> pbcs.CreateTemplateRevisionResp - 145, // 346: pbcs.Config.UpdateTemplateRevision:output_type -> pbcs.UpdateTemplateRevisionResp - 147, // 347: pbcs.Config.ListTemplateRevisions:output_type -> pbcs.ListTemplateRevisionsResp - 149, // 348: pbcs.Config.GetTemplateRevision:output_type -> pbcs.GetTemplateRevisionResp - 153, // 349: pbcs.Config.ListTemplateRevisionsByIDs:output_type -> pbcs.ListTemplateRevisionsByIDsResp - 155, // 350: pbcs.Config.ListTmplRevisionNamesByTmplIDs:output_type -> pbcs.ListTmplRevisionNamesByTmplIDsResp - 157, // 351: pbcs.Config.CreateTemplateSet:output_type -> pbcs.CreateTemplateSetResp - 161, // 352: pbcs.Config.DeleteTemplateSet:output_type -> pbcs.DeleteTemplateSetResp - 159, // 353: pbcs.Config.UpdateTemplateSet:output_type -> pbcs.UpdateTemplateSetResp - 163, // 354: pbcs.Config.ListTemplateSets:output_type -> pbcs.ListTemplateSetsResp - 165, // 355: pbcs.Config.ListAppTemplateSets:output_type -> pbcs.ListAppTemplateSetsResp - 167, // 356: pbcs.Config.ListTemplateSetsByIDs:output_type -> pbcs.ListTemplateSetsByIDsResp - 169, // 357: pbcs.Config.ListTmplSetsOfBiz:output_type -> pbcs.ListTmplSetsOfBizResp - 171, // 358: pbcs.Config.CreateAppTemplateBinding:output_type -> pbcs.CreateAppTemplateBindingResp - 175, // 359: pbcs.Config.DeleteAppTemplateBinding:output_type -> pbcs.DeleteAppTemplateBindingResp - 173, // 360: pbcs.Config.UpdateAppTemplateBinding:output_type -> pbcs.UpdateAppTemplateBindingResp - 177, // 361: pbcs.Config.ListAppTemplateBindings:output_type -> pbcs.ListAppTemplateBindingsResp - 179, // 362: pbcs.Config.ListAppBoundTmplRevisions:output_type -> pbcs.ListAppBoundTmplRevisionsResp - 181, // 363: pbcs.Config.ListReleasedAppBoundTmplRevisions:output_type -> pbcs.ListReleasedAppBoundTmplRevisionsResp - 183, // 364: pbcs.Config.GetReleasedAppBoundTmplRevision:output_type -> pbcs.GetReleasedAppBoundTmplRevisionResp - 185, // 365: pbcs.Config.UpdateAppBoundTmplRevisions:output_type -> pbcs.UpdateAppBoundTmplRevisionsResp - 187, // 366: pbcs.Config.DeleteAppBoundTmplSets:output_type -> pbcs.DeleteAppBoundTmplSetsResp - 189, // 367: pbcs.Config.RemoveAppBoundTmplSet:output_type -> pbcs.RemoveAppBoundTmplSetResp - 191, // 368: pbcs.Config.CheckAppTemplateBinding:output_type -> pbcs.CheckAppTemplateBindingResp - 193, // 369: pbcs.Config.ListTmplBoundCounts:output_type -> pbcs.ListTmplBoundCountsResp - 195, // 370: pbcs.Config.ListTmplRevisionBoundCounts:output_type -> pbcs.ListTmplRevisionBoundCountsResp - 197, // 371: pbcs.Config.ListTmplSetBoundCounts:output_type -> pbcs.ListTmplSetBoundCountsResp - 199, // 372: pbcs.Config.ListTmplBoundUnnamedApps:output_type -> pbcs.ListTmplBoundUnnamedAppsResp - 201, // 373: pbcs.Config.ListTmplBoundNamedApps:output_type -> pbcs.ListTmplBoundNamedAppsResp - 203, // 374: pbcs.Config.ListTmplBoundTmplSets:output_type -> pbcs.ListTmplBoundTmplSetsResp - 205, // 375: pbcs.Config.ListMultiTmplBoundTmplSets:output_type -> pbcs.ListMultiTmplBoundTmplSetsResp - 207, // 376: pbcs.Config.ListTmplRevisionBoundUnnamedApps:output_type -> pbcs.ListTmplRevisionBoundUnnamedAppsResp - 209, // 377: pbcs.Config.ListTmplRevisionBoundNamedApps:output_type -> pbcs.ListTmplRevisionBoundNamedAppsResp - 211, // 378: pbcs.Config.ListTmplSetBoundUnnamedApps:output_type -> pbcs.ListTmplSetBoundUnnamedAppsResp - 213, // 379: pbcs.Config.ListMultiTmplSetBoundUnnamedApps:output_type -> pbcs.ListMultiTmplSetBoundUnnamedAppsResp - 215, // 380: pbcs.Config.CheckTemplateSetReferencesApps:output_type -> pbcs.CheckTemplateSetReferencesAppsResp - 217, // 381: pbcs.Config.ListTmplSetBoundNamedApps:output_type -> pbcs.ListTmplSetBoundNamedAppsResp - 219, // 382: pbcs.Config.ListLatestTmplBoundUnnamedApps:output_type -> pbcs.ListLatestTmplBoundUnnamedAppsResp - 221, // 383: pbcs.Config.CreateTemplateVariable:output_type -> pbcs.CreateTemplateVariableResp - 225, // 384: pbcs.Config.DeleteTemplateVariable:output_type -> pbcs.DeleteTemplateVariableResp - 269, // 385: pbcs.Config.BatchDeleteTemplateVariable:output_type -> pbcs.BatchDeleteResp - 223, // 386: pbcs.Config.UpdateTemplateVariable:output_type -> pbcs.UpdateTemplateVariableResp - 227, // 387: pbcs.Config.ListTemplateVariables:output_type -> pbcs.ListTemplateVariablesResp - 229, // 388: pbcs.Config.ImportTemplateVariables:output_type -> pbcs.ImportTemplateVariablesResp - 231, // 389: pbcs.Config.ExtractAppTmplVariables:output_type -> pbcs.ExtractAppTmplVariablesResp - 233, // 390: pbcs.Config.GetAppTmplVariableRefs:output_type -> pbcs.GetAppTmplVariableRefsResp - 235, // 391: pbcs.Config.GetReleasedAppTmplVariableRefs:output_type -> pbcs.GetReleasedAppTmplVariableRefsResp - 237, // 392: pbcs.Config.UpdateAppTmplVariables:output_type -> pbcs.UpdateAppTmplVariablesResp - 239, // 393: pbcs.Config.ListAppTmplVariables:output_type -> pbcs.ListAppTmplVariablesResp - 241, // 394: pbcs.Config.ListReleasedAppTmplVariables:output_type -> pbcs.ListReleasedAppTmplVariablesResp - 243, // 395: pbcs.Config.CreateGroup:output_type -> pbcs.CreateGroupResp - 247, // 396: pbcs.Config.DeleteGroup:output_type -> pbcs.DeleteGroupResp - 269, // 397: pbcs.Config.BatchDeleteGroups:output_type -> pbcs.BatchDeleteResp - 245, // 398: pbcs.Config.UpdateGroup:output_type -> pbcs.UpdateGroupResp - 249, // 399: pbcs.Config.ListAllGroups:output_type -> pbcs.ListAllGroupsResp - 251, // 400: pbcs.Config.ListAppGroups:output_type -> pbcs.ListAppGroupsResp - 253, // 401: pbcs.Config.ListGroupReleasedApps:output_type -> pbcs.ListGroupReleasedAppsResp - 382, // 402: pbcs.Config.GetGroupByName:output_type -> pbgroup.Group - 258, // 403: pbcs.Config.Publish:output_type -> pbcs.PublishResp - 258, // 404: pbcs.Config.GenerateReleaseAndPublish:output_type -> pbcs.PublishResp - 17, // 405: pbcs.Config.CreateCredentials:output_type -> pbcs.CreateCredentialResp - 15, // 406: pbcs.Config.ListCredentials:output_type -> pbcs.ListCredentialsResp - 9, // 407: pbcs.Config.DeleteCredential:output_type -> pbcs.DeleteCredentialsResp - 11, // 408: pbcs.Config.UpdateCredential:output_type -> pbcs.UpdateCredentialsResp - 13, // 409: pbcs.Config.CheckCredentialName:output_type -> pbcs.CheckCredentialNameResp - 5, // 410: pbcs.Config.ListCredentialScopes:output_type -> pbcs.ListCredentialScopesResp - 1, // 411: pbcs.Config.UpdateCredentialScope:output_type -> pbcs.UpdateCredentialScopeResp - 3, // 412: pbcs.Config.CredentialScopePreview:output_type -> pbcs.CredentialScopePreviewResp - 260, // 413: pbcs.Config.CreateKv:output_type -> pbcs.CreateKvResp - 262, // 414: pbcs.Config.UpdateKv:output_type -> pbcs.UpdateKvResp - 264, // 415: pbcs.Config.ListKvs:output_type -> pbcs.ListKvsResp - 266, // 416: pbcs.Config.DeleteKv:output_type -> pbcs.DeleteKvResp - 269, // 417: pbcs.Config.BatchDeleteKv:output_type -> pbcs.BatchDeleteResp - 271, // 418: pbcs.Config.BatchUpsertKvs:output_type -> pbcs.BatchUpsertKvsResp - 273, // 419: pbcs.Config.UnDeleteKv:output_type -> pbcs.UnDeleteKvResp - 275, // 420: pbcs.Config.UndoKv:output_type -> pbcs.UndoKvResp - 277, // 421: pbcs.Config.ImportKvs:output_type -> pbcs.ImportKvsResp - 279, // 422: pbcs.Config.ListClients:output_type -> pbcs.ListClientsResp - 281, // 423: pbcs.Config.ListClientEvents:output_type -> pbcs.ListClientEventsResp - 283, // 424: pbcs.Config.RetryClients:output_type -> pbcs.RetryClientsResp - 285, // 425: pbcs.Config.ListClientQuerys:output_type -> pbcs.ListClientQuerysResp - 287, // 426: pbcs.Config.CreateClientQuery:output_type -> pbcs.CreateClientQueryResp - 289, // 427: pbcs.Config.UpdateClientQuery:output_type -> pbcs.UpdateClientQueryResp - 291, // 428: pbcs.Config.DeleteClientQuery:output_type -> pbcs.DeleteClientQueryResp - 293, // 429: pbcs.Config.CheckClientQueryName:output_type -> pbcs.CheckClientQueryNameResp - 371, // 430: pbcs.Config.ClientConfigVersionStatistics:output_type -> google.protobuf.Struct - 371, // 431: pbcs.Config.ClientPullTrendStatistics:output_type -> google.protobuf.Struct - 371, // 432: pbcs.Config.ClientPullStatistics:output_type -> google.protobuf.Struct - 371, // 433: pbcs.Config.ClientLabelStatistics:output_type -> google.protobuf.Struct - 371, // 434: pbcs.Config.ClientAnnotationStatistics:output_type -> google.protobuf.Struct - 371, // 435: pbcs.Config.ClientVersionStatistics:output_type -> google.protobuf.Struct - 371, // 436: pbcs.Config.ListClientLabelAndAnnotation:output_type -> google.protobuf.Struct - 371, // 437: pbcs.Config.ClientSpecificFailedReason:output_type -> google.protobuf.Struct - 296, // 438: pbcs.Config.CompareConfigItemConflicts:output_type -> pbcs.CompareConfigItemConflictsResp - 298, // 439: pbcs.Config.CompareKvConflicts:output_type -> pbcs.CompareKvConflictsResp - 300, // 440: pbcs.Config.GetTemplateAndNonTemplateCICount:output_type -> pbcs.GetTemplateAndNonTemplateCICountResp - 278, // [278:441] is the sub-list for method output_type - 115, // [115:278] is the sub-list for method input_type - 115, // [115:115] is the sub-list for extension type_name - 115, // [115:115] is the sub-list for extension extendee - 0, // [0:115] is the sub-list for field type_name + 349, // 25: pbcs.GetHookResp.attachment:type_name -> pbhook.HookAttachment + 350, // 26: pbcs.GetHookResp.revision:type_name -> pbbase.Revision + 311, // 27: pbcs.GetHookInfoSpec.releases:type_name -> pbcs.GetHookInfoSpec.Releases + 312, // 28: pbcs.ListHookRevisionReferencesResp.details:type_name -> pbcs.ListHookRevisionReferencesResp.Detail + 313, // 29: pbcs.ListHookReferencesResp.details:type_name -> pbcs.ListHookReferencesResp.Detail + 314, // 30: pbcs.GetReleaseHookResp.pre_hook:type_name -> pbcs.GetReleaseHookResp.Hook + 314, // 31: pbcs.GetReleaseHookResp.post_hook:type_name -> pbcs.GetReleaseHookResp.Hook + 351, // 32: pbcs.ListTemplateSpacesResp.details:type_name -> pbts.TemplateSpace + 351, // 33: pbcs.ListTmplSpacesByIDsResp.details:type_name -> pbts.TemplateSpace + 352, // 34: pbcs.ListTemplatesResp.details:type_name -> pbtemplate.Template + 315, // 35: pbcs.BatchUpsertTemplatesReq.items:type_name -> pbcs.BatchUpsertTemplatesReq.Item + 352, // 36: pbcs.ListTemplatesByIDsResp.details:type_name -> pbtemplate.Template + 316, // 37: pbcs.ListTemplateByTupleReq.items:type_name -> pbcs.ListTemplateByTupleReq.Item + 317, // 38: pbcs.ListTemplateByTupleResp.items:type_name -> pbcs.ListTemplateByTupleResp.Item + 352, // 39: pbcs.ListTemplatesNotBoundResp.details:type_name -> pbtemplate.Template + 352, // 40: pbcs.ListTmplsOfTmplSetResp.details:type_name -> pbtemplate.Template + 318, // 41: pbcs.ListTemplateSetsAndRevisionsResp.details:type_name -> pbcs.ListTemplateSetsAndRevisionsResp.Detail + 353, // 42: pbcs.ListTemplateRevisionsResp.details:type_name -> pbtr.TemplateRevision + 319, // 43: pbcs.GetTemplateRevisionResp.detail:type_name -> pbcs.GetTemplateRevisionResp.TemplateRevision + 353, // 44: pbcs.ListTemplateRevisionsByIDsResp.details:type_name -> pbtr.TemplateRevision + 354, // 45: pbcs.ListTmplRevisionNamesByTmplIDsResp.details:type_name -> pbtr.TemplateRevisionNamesDetail + 355, // 46: pbcs.ListTemplateSetsResp.details:type_name -> pbtset.TemplateSet + 355, // 47: pbcs.ListAppTemplateSetsResp.details:type_name -> pbtset.TemplateSet + 355, // 48: pbcs.ListTemplateSetsByIDsResp.details:type_name -> pbtset.TemplateSet + 356, // 49: pbcs.ListTmplSetsOfBizResp.details:type_name -> pbtset.TemplateSetOfBizDetail + 357, // 50: pbcs.CreateAppTemplateBindingReq.bindings:type_name -> pbatb.TemplateBinding + 357, // 51: pbcs.UpdateAppTemplateBindingReq.bindings:type_name -> pbatb.TemplateBinding + 358, // 52: pbcs.ListAppTemplateBindingsResp.details:type_name -> pbatb.AppTemplateBinding + 359, // 53: pbcs.ListAppBoundTmplRevisionsResp.details:type_name -> pbatb.AppBoundTmplRevisionGroupBySet + 360, // 54: pbcs.ListReleasedAppBoundTmplRevisionsResp.details:type_name -> pbatb.ReleasedAppBoundTmplRevisionGroupBySet + 361, // 55: pbcs.GetReleasedAppBoundTmplRevisionResp.detail:type_name -> pbatb.ReleasedAppBoundTmplRevision + 357, // 56: pbcs.UpdateAppBoundTmplRevisionsReq.bindings:type_name -> pbatb.TemplateBinding + 357, // 57: pbcs.CheckAppTemplateBindingReq.bindings:type_name -> pbatb.TemplateBinding + 362, // 58: pbcs.CheckAppTemplateBindingResp.details:type_name -> pbatb.Conflict + 320, // 59: pbcs.ImportFromTemplateSetToAppReq.bindings:type_name -> pbcs.ImportFromTemplateSetToAppReq.Binding + 363, // 60: pbcs.ListTmplBoundCountsResp.details:type_name -> pbtbr.TemplateBoundCounts + 364, // 61: pbcs.ListTmplRevisionBoundCountsResp.details:type_name -> pbtbr.TemplateRevisionBoundCounts + 365, // 62: pbcs.ListTmplSetBoundCountsResp.details:type_name -> pbtbr.TemplateSetBoundCounts + 366, // 63: pbcs.ListTmplBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateBoundUnnamedAppDetail + 367, // 64: pbcs.ListTmplBoundNamedAppsResp.details:type_name -> pbtbr.TemplateBoundNamedAppDetail + 368, // 65: pbcs.ListTmplBoundTmplSetsResp.details:type_name -> pbtbr.TemplateBoundTemplateSetDetail + 369, // 66: pbcs.ListMultiTmplBoundTmplSetsResp.details:type_name -> pbtbr.MultiTemplateBoundTemplateSetDetail + 370, // 67: pbcs.ListTmplRevisionBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateRevisionBoundUnnamedAppDetail + 371, // 68: pbcs.ListTmplRevisionBoundNamedAppsResp.details:type_name -> pbtbr.TemplateRevisionBoundNamedAppDetail + 372, // 69: pbcs.ListTmplSetBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateSetBoundUnnamedAppDetail + 373, // 70: pbcs.ListMultiTmplSetBoundUnnamedAppsResp.details:type_name -> pbtbr.MultiTemplateSetBoundUnnamedAppDetail + 322, // 71: pbcs.CheckTemplateSetReferencesAppsReq.items:type_name -> pbcs.CheckTemplateSetReferencesAppsReq.Item + 323, // 72: pbcs.CheckTemplateSetReferencesAppsResp.items:type_name -> pbcs.CheckTemplateSetReferencesAppsResp.Item + 374, // 73: pbcs.ListTmplSetBoundNamedAppsResp.details:type_name -> pbtbr.TemplateSetBoundNamedAppDetail + 375, // 74: pbcs.ListLatestTmplBoundUnnamedAppsResp.details:type_name -> pbtbr.LatestTemplateBoundUnnamedAppDetail + 376, // 75: pbcs.ListTemplateVariablesResp.details:type_name -> pbtv.TemplateVariable + 377, // 76: pbcs.GetAppTmplVariableRefsResp.details:type_name -> pbatv.AppTemplateVariableReference + 377, // 77: pbcs.GetReleasedAppTmplVariableRefsResp.details:type_name -> pbatv.AppTemplateVariableReference + 341, // 78: pbcs.UpdateAppTmplVariablesReq.variables:type_name -> pbtv.TemplateVariableSpec + 341, // 79: pbcs.ListAppTmplVariablesResp.details:type_name -> pbtv.TemplateVariableSpec + 341, // 80: pbcs.ListReleasedAppTmplVariablesResp.details:type_name -> pbtv.TemplateVariableSpec + 378, // 81: pbcs.CreateGroupReq.selector:type_name -> google.protobuf.Struct + 378, // 82: pbcs.UpdateGroupReq.selector:type_name -> google.protobuf.Struct + 324, // 83: pbcs.ListAllGroupsResp.details:type_name -> pbcs.ListAllGroupsResp.ListAllGroupsData + 326, // 84: pbcs.ListAppGroupsResp.details:type_name -> pbcs.ListAppGroupsResp.ListAppGroupsData + 327, // 85: pbcs.ListGroupReleasedAppsResp.details:type_name -> pbcs.ListGroupReleasedAppsResp.ListGroupReleasedAppsData + 378, // 86: pbcs.PublishReq.labels:type_name -> google.protobuf.Struct + 341, // 87: pbcs.GenerateReleaseAndPublishReq.variables:type_name -> pbtv.TemplateVariableSpec + 378, // 88: pbcs.GenerateReleaseAndPublishReq.labels:type_name -> google.protobuf.Struct + 379, // 89: pbcs.ListKvsResp.details:type_name -> pbkv.Kv + 328, // 90: pbcs.BatchUpsertKvsReq.kvs:type_name -> pbcs.BatchUpsertKvsReq.Kv + 329, // 91: pbcs.ListClientsReq.order:type_name -> pbcs.ListClientsReq.Order + 380, // 92: pbcs.ListClientsReq.search:type_name -> pbclient.ClientQueryCondition + 330, // 93: pbcs.ListClientsResp.details:type_name -> pbcs.ListClientsResp.Item + 331, // 94: pbcs.ListClientEventsReq.order:type_name -> pbcs.ListClientEventsReq.Order + 381, // 95: pbcs.ListClientEventsResp.details:type_name -> pbce.ClientEvent + 382, // 96: pbcs.ListClientQuerysResp.details:type_name -> pbcq.ClientQuery + 378, // 97: pbcs.CreateClientQueryReq.search_condition:type_name -> google.protobuf.Struct + 378, // 98: pbcs.UpdateClientQueryReq.search_condition:type_name -> google.protobuf.Struct + 332, // 99: pbcs.CompareConfigItemConflictsResp.non_template_configs:type_name -> pbcs.CompareConfigItemConflictsResp.NonTemplateConfig + 333, // 100: pbcs.CompareConfigItemConflictsResp.template_configs:type_name -> pbcs.CompareConfigItemConflictsResp.TemplateConfig + 335, // 101: pbcs.CompareKvConflictsResp.exist:type_name -> pbcs.CompareKvConflictsResp.Kv + 335, // 102: pbcs.CompareKvConflictsResp.non_exist:type_name -> pbcs.CompareKvConflictsResp.Kv + 357, // 103: pbcs.BatchUpsertConfigItemsReq.TemplateBinding.template_binding:type_name -> pbatb.TemplateBinding + 383, // 104: pbcs.ListHooksResp.Detail.hook:type_name -> pbhook.Hook + 384, // 105: pbcs.ListHookRevisionsResp.ListHookRevisionsData.hook_revision:type_name -> pbhr.HookRevision + 352, // 106: pbcs.ListTemplateByTupleResp.Item.template:type_name -> pbtemplate.Template + 353, // 107: pbcs.ListTemplateByTupleResp.Item.template_revision:type_name -> pbtr.TemplateRevision + 352, // 108: pbcs.ListTemplateSetsAndRevisionsResp.Detail.template:type_name -> pbtemplate.Template + 353, // 109: pbcs.ListTemplateSetsAndRevisionsResp.Detail.template_revision:type_name -> pbtr.TemplateRevision + 321, // 110: pbcs.ImportFromTemplateSetToAppReq.Binding.template_revisions:type_name -> pbcs.ImportFromTemplateSetToAppReq.Binding.TemplateRevisionBinding + 325, // 111: pbcs.ListAllGroupsResp.ListAllGroupsData.bind_apps:type_name -> pbcs.ListAllGroupsResp.ListAllGroupsData.BindApp + 378, // 112: pbcs.ListAllGroupsResp.ListAllGroupsData.selector:type_name -> google.protobuf.Struct + 378, // 113: pbcs.ListAppGroupsResp.ListAppGroupsData.old_selector:type_name -> google.protobuf.Struct + 378, // 114: pbcs.ListAppGroupsResp.ListAppGroupsData.new_selector:type_name -> google.protobuf.Struct + 385, // 115: pbcs.ListClientsResp.Item.client:type_name -> pbclient.Client + 386, // 116: pbcs.CompareConfigItemConflictsResp.NonTemplateConfig.config_item_spec:type_name -> pbci.ConfigItemSpec + 341, // 117: pbcs.CompareConfigItemConflictsResp.NonTemplateConfig.variables:type_name -> pbtv.TemplateVariableSpec + 334, // 118: pbcs.CompareConfigItemConflictsResp.TemplateConfig.template_revisions:type_name -> pbcs.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail + 341, // 119: pbcs.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail.variables:type_name -> pbtv.TemplateVariableSpec + 18, // 120: pbcs.Config.CreateApp:input_type -> pbcs.CreateAppReq + 20, // 121: pbcs.Config.UpdateApp:input_type -> pbcs.UpdateAppReq + 21, // 122: pbcs.Config.DeleteApp:input_type -> pbcs.DeleteAppReq + 23, // 123: pbcs.Config.GetApp:input_type -> pbcs.GetAppReq + 24, // 124: pbcs.Config.GetAppByName:input_type -> pbcs.GetAppByNameReq + 25, // 125: pbcs.Config.ListAppsRest:input_type -> pbcs.ListAppsRestReq + 26, // 126: pbcs.Config.ListAppsBySpaceRest:input_type -> pbcs.ListAppsBySpaceRestReq + 28, // 127: pbcs.Config.CreateConfigItem:input_type -> pbcs.CreateConfigItemReq + 29, // 128: pbcs.Config.BatchUpsertConfigItems:input_type -> pbcs.BatchUpsertConfigItemsReq + 32, // 129: pbcs.Config.UpdateConfigItem:input_type -> pbcs.UpdateConfigItemReq + 34, // 130: pbcs.Config.DeleteConfigItem:input_type -> pbcs.DeleteConfigItemReq + 272, // 131: pbcs.Config.BatchDeleteConfigItems:input_type -> pbcs.BatchDeleteAppResourcesReq + 36, // 132: pbcs.Config.UnDeleteConfigItem:input_type -> pbcs.UnDeleteConfigItemReq + 38, // 133: pbcs.Config.UndoConfigItem:input_type -> pbcs.UndoConfigItemReq + 40, // 134: pbcs.Config.GetConfigItem:input_type -> pbcs.GetConfigItemReq + 42, // 135: pbcs.Config.GetReleasedConfigItem:input_type -> pbcs.GetReleasedConfigItemReq + 44, // 136: pbcs.Config.ListConfigItems:input_type -> pbcs.ListConfigItemsReq + 46, // 137: pbcs.Config.ListReleasedConfigItems:input_type -> pbcs.ListReleasedConfigItemsReq + 48, // 138: pbcs.Config.ListConfigItemCount:input_type -> pbcs.ListConfigItemCountReq + 50, // 139: pbcs.Config.ListConfigItemByTuple:input_type -> pbcs.ListConfigItemByTupleReq + 52, // 140: pbcs.Config.GetReleasedKv:input_type -> pbcs.GetReleasedKvReq + 54, // 141: pbcs.Config.ListReleasedKvs:input_type -> pbcs.ListReleasedKvsReq + 56, // 142: pbcs.Config.UpdateConfigHook:input_type -> pbcs.UpdateConfigHookReq + 58, // 143: pbcs.Config.CreateRelease:input_type -> pbcs.CreateReleaseReq + 62, // 144: pbcs.Config.ListReleases:input_type -> pbcs.ListReleasesReq + 64, // 145: pbcs.Config.GetReleaseByName:input_type -> pbcs.GetReleaseByNameReq + 65, // 146: pbcs.Config.GetRelease:input_type -> pbcs.GetReleaseReq + 66, // 147: pbcs.Config.DeprecateRelease:input_type -> pbcs.DeprecateReleaseReq + 68, // 148: pbcs.Config.UnDeprecateRelease:input_type -> pbcs.UnDeprecateReleaseReq + 70, // 149: pbcs.Config.DeleteRelease:input_type -> pbcs.DeleteReleaseReq + 60, // 150: pbcs.Config.CheckReleaseName:input_type -> pbcs.CheckReleaseNameReq + 72, // 151: pbcs.Config.CreateHook:input_type -> pbcs.CreateHookReq + 74, // 152: pbcs.Config.DeleteHook:input_type -> pbcs.DeleteHookReq + 76, // 153: pbcs.Config.BatchDeleteHook:input_type -> pbcs.BatchDeleteHookReq + 77, // 154: pbcs.Config.UpdateHook:input_type -> pbcs.UpdateHookReq + 79, // 155: pbcs.Config.ListHooks:input_type -> pbcs.ListHooksReq + 81, // 156: pbcs.Config.ListHookTags:input_type -> pbcs.ListHookTagsReq + 91, // 157: pbcs.Config.GetHook:input_type -> pbcs.GetHookReq + 83, // 158: pbcs.Config.CreateHookRevision:input_type -> pbcs.CreateHookRevisionReq + 85, // 159: pbcs.Config.ListHookRevisions:input_type -> pbcs.ListHookRevisionsReq + 87, // 160: pbcs.Config.DeleteHookRevision:input_type -> pbcs.DeleteHookRevisionReq + 89, // 161: pbcs.Config.PublishHookRevision:input_type -> pbcs.PublishHookRevisionReq + 94, // 162: pbcs.Config.GetHookRevision:input_type -> pbcs.GetHookRevisionReq + 95, // 163: pbcs.Config.UpdateHookRevision:input_type -> pbcs.UpdateHookRevisionReq + 99, // 164: pbcs.Config.ListHookReferences:input_type -> pbcs.ListHookReferencesReq + 97, // 165: pbcs.Config.ListHookRevisionReferences:input_type -> pbcs.ListHookRevisionReferencesReq + 101, // 166: pbcs.Config.GetReleaseHook:input_type -> pbcs.GetReleaseHookReq + 103, // 167: pbcs.Config.CreateTemplateSpace:input_type -> pbcs.CreateTemplateSpaceReq + 107, // 168: pbcs.Config.DeleteTemplateSpace:input_type -> pbcs.DeleteTemplateSpaceReq + 105, // 169: pbcs.Config.UpdateTemplateSpace:input_type -> pbcs.UpdateTemplateSpaceReq + 109, // 170: pbcs.Config.ListTemplateSpaces:input_type -> pbcs.ListTemplateSpacesReq + 387, // 171: pbcs.Config.GetAllBizsOfTmplSpaces:input_type -> pbbase.EmptyReq + 112, // 172: pbcs.Config.CreateDefaultTmplSpace:input_type -> pbcs.CreateDefaultTmplSpaceReq + 114, // 173: pbcs.Config.ListTmplSpacesByIDs:input_type -> pbcs.ListTmplSpacesByIDsReq + 116, // 174: pbcs.Config.CreateTemplate:input_type -> pbcs.CreateTemplateReq + 120, // 175: pbcs.Config.DeleteTemplate:input_type -> pbcs.DeleteTemplateReq + 122, // 176: pbcs.Config.BatchDeleteTemplate:input_type -> pbcs.BatchDeleteTemplateReq + 118, // 177: pbcs.Config.UpdateTemplate:input_type -> pbcs.UpdateTemplateReq + 124, // 178: pbcs.Config.ListTemplates:input_type -> pbcs.ListTemplatesReq + 126, // 179: pbcs.Config.BatchUpsertTemplates:input_type -> pbcs.BatchUpsertTemplatesReq + 128, // 180: pbcs.Config.BatchUpdateTemplatePermissions:input_type -> pbcs.BatchUpdateTemplatePermissionsReq + 130, // 181: pbcs.Config.AddTmplsToTmplSets:input_type -> pbcs.AddTmplsToTmplSetsReq + 132, // 182: pbcs.Config.DeleteTmplsFromTmplSets:input_type -> pbcs.DeleteTmplsFromTmplSetsReq + 134, // 183: pbcs.Config.ListTemplatesByIDs:input_type -> pbcs.ListTemplatesByIDsReq + 136, // 184: pbcs.Config.ListTemplatesNotBound:input_type -> pbcs.ListTemplatesNotBoundReq + 137, // 185: pbcs.Config.ListTemplateByTuple:input_type -> pbcs.ListTemplateByTupleReq + 140, // 186: pbcs.Config.ListTmplsOfTmplSet:input_type -> pbcs.ListTmplsOfTmplSetReq + 142, // 187: pbcs.Config.ListTemplateSetsAndRevisions:input_type -> pbcs.ListTemplateSetsAndRevisionsReq + 144, // 188: pbcs.Config.CreateTemplateRevision:input_type -> pbcs.CreateTemplateRevisionReq + 146, // 189: pbcs.Config.UpdateTemplateRevision:input_type -> pbcs.UpdateTemplateRevisionReq + 148, // 190: pbcs.Config.ListTemplateRevisions:input_type -> pbcs.ListTemplateRevisionsReq + 150, // 191: pbcs.Config.GetTemplateRevision:input_type -> pbcs.GetTemplateRevisionReq + 154, // 192: pbcs.Config.ListTemplateRevisionsByIDs:input_type -> pbcs.ListTemplateRevisionsByIDsReq + 156, // 193: pbcs.Config.ListTmplRevisionNamesByTmplIDs:input_type -> pbcs.ListTmplRevisionNamesByTmplIDsReq + 158, // 194: pbcs.Config.CreateTemplateSet:input_type -> pbcs.CreateTemplateSetReq + 162, // 195: pbcs.Config.DeleteTemplateSet:input_type -> pbcs.DeleteTemplateSetReq + 160, // 196: pbcs.Config.UpdateTemplateSet:input_type -> pbcs.UpdateTemplateSetReq + 164, // 197: pbcs.Config.ListTemplateSets:input_type -> pbcs.ListTemplateSetsReq + 166, // 198: pbcs.Config.ListAppTemplateSets:input_type -> pbcs.ListAppTemplateSetsReq + 168, // 199: pbcs.Config.ListTemplateSetsByIDs:input_type -> pbcs.ListTemplateSetsByIDsReq + 170, // 200: pbcs.Config.ListTmplSetsOfBiz:input_type -> pbcs.ListTmplSetsOfBizReq + 172, // 201: pbcs.Config.CreateAppTemplateBinding:input_type -> pbcs.CreateAppTemplateBindingReq + 176, // 202: pbcs.Config.DeleteAppTemplateBinding:input_type -> pbcs.DeleteAppTemplateBindingReq + 174, // 203: pbcs.Config.UpdateAppTemplateBinding:input_type -> pbcs.UpdateAppTemplateBindingReq + 178, // 204: pbcs.Config.ListAppTemplateBindings:input_type -> pbcs.ListAppTemplateBindingsReq + 180, // 205: pbcs.Config.ListAppBoundTmplRevisions:input_type -> pbcs.ListAppBoundTmplRevisionsReq + 182, // 206: pbcs.Config.ListReleasedAppBoundTmplRevisions:input_type -> pbcs.ListReleasedAppBoundTmplRevisionsReq + 184, // 207: pbcs.Config.GetReleasedAppBoundTmplRevision:input_type -> pbcs.GetReleasedAppBoundTmplRevisionReq + 186, // 208: pbcs.Config.UpdateAppBoundTmplRevisions:input_type -> pbcs.UpdateAppBoundTmplRevisionsReq + 188, // 209: pbcs.Config.DeleteAppBoundTmplSets:input_type -> pbcs.DeleteAppBoundTmplSetsReq + 190, // 210: pbcs.Config.RemoveAppBoundTmplSet:input_type -> pbcs.RemoveAppBoundTmplSetReq + 192, // 211: pbcs.Config.CheckAppTemplateBinding:input_type -> pbcs.CheckAppTemplateBindingReq + 194, // 212: pbcs.Config.ImportFromTemplateSetToApp:input_type -> pbcs.ImportFromTemplateSetToAppReq + 196, // 213: pbcs.Config.ListTmplBoundCounts:input_type -> pbcs.ListTmplBoundCountsReq + 198, // 214: pbcs.Config.ListTmplRevisionBoundCounts:input_type -> pbcs.ListTmplRevisionBoundCountsReq + 200, // 215: pbcs.Config.ListTmplSetBoundCounts:input_type -> pbcs.ListTmplSetBoundCountsReq + 202, // 216: pbcs.Config.ListTmplBoundUnnamedApps:input_type -> pbcs.ListTmplBoundUnnamedAppsReq + 204, // 217: pbcs.Config.ListTmplBoundNamedApps:input_type -> pbcs.ListTmplBoundNamedAppsReq + 206, // 218: pbcs.Config.ListTmplBoundTmplSets:input_type -> pbcs.ListTmplBoundTmplSetsReq + 208, // 219: pbcs.Config.ListMultiTmplBoundTmplSets:input_type -> pbcs.ListMultiTmplBoundTmplSetsReq + 210, // 220: pbcs.Config.ListTmplRevisionBoundUnnamedApps:input_type -> pbcs.ListTmplRevisionBoundUnnamedAppsReq + 212, // 221: pbcs.Config.ListTmplRevisionBoundNamedApps:input_type -> pbcs.ListTmplRevisionBoundNamedAppsReq + 214, // 222: pbcs.Config.ListTmplSetBoundUnnamedApps:input_type -> pbcs.ListTmplSetBoundUnnamedAppsReq + 216, // 223: pbcs.Config.ListMultiTmplSetBoundUnnamedApps:input_type -> pbcs.ListMultiTmplSetBoundUnnamedAppsReq + 218, // 224: pbcs.Config.CheckTemplateSetReferencesApps:input_type -> pbcs.CheckTemplateSetReferencesAppsReq + 220, // 225: pbcs.Config.ListTmplSetBoundNamedApps:input_type -> pbcs.ListTmplSetBoundNamedAppsReq + 222, // 226: pbcs.Config.ListLatestTmplBoundUnnamedApps:input_type -> pbcs.ListLatestTmplBoundUnnamedAppsReq + 224, // 227: pbcs.Config.CreateTemplateVariable:input_type -> pbcs.CreateTemplateVariableReq + 228, // 228: pbcs.Config.DeleteTemplateVariable:input_type -> pbcs.DeleteTemplateVariableReq + 271, // 229: pbcs.Config.BatchDeleteTemplateVariable:input_type -> pbcs.BatchDeleteBizResourcesReq + 226, // 230: pbcs.Config.UpdateTemplateVariable:input_type -> pbcs.UpdateTemplateVariableReq + 230, // 231: pbcs.Config.ListTemplateVariables:input_type -> pbcs.ListTemplateVariablesReq + 232, // 232: pbcs.Config.ImportTemplateVariables:input_type -> pbcs.ImportTemplateVariablesReq + 234, // 233: pbcs.Config.ExtractAppTmplVariables:input_type -> pbcs.ExtractAppTmplVariablesReq + 236, // 234: pbcs.Config.GetAppTmplVariableRefs:input_type -> pbcs.GetAppTmplVariableRefsReq + 238, // 235: pbcs.Config.GetReleasedAppTmplVariableRefs:input_type -> pbcs.GetReleasedAppTmplVariableRefsReq + 240, // 236: pbcs.Config.UpdateAppTmplVariables:input_type -> pbcs.UpdateAppTmplVariablesReq + 242, // 237: pbcs.Config.ListAppTmplVariables:input_type -> pbcs.ListAppTmplVariablesReq + 244, // 238: pbcs.Config.ListReleasedAppTmplVariables:input_type -> pbcs.ListReleasedAppTmplVariablesReq + 246, // 239: pbcs.Config.CreateGroup:input_type -> pbcs.CreateGroupReq + 250, // 240: pbcs.Config.DeleteGroup:input_type -> pbcs.DeleteGroupReq + 271, // 241: pbcs.Config.BatchDeleteGroups:input_type -> pbcs.BatchDeleteBizResourcesReq + 248, // 242: pbcs.Config.UpdateGroup:input_type -> pbcs.UpdateGroupReq + 252, // 243: pbcs.Config.ListAllGroups:input_type -> pbcs.ListAllGroupsReq + 254, // 244: pbcs.Config.ListAppGroups:input_type -> pbcs.ListAppGroupsReq + 256, // 245: pbcs.Config.ListGroupReleasedApps:input_type -> pbcs.ListGroupReleasedAppsReq + 258, // 246: pbcs.Config.GetGroupByName:input_type -> pbcs.GetGroupByNameReq + 259, // 247: pbcs.Config.Publish:input_type -> pbcs.PublishReq + 260, // 248: pbcs.Config.GenerateReleaseAndPublish:input_type -> pbcs.GenerateReleaseAndPublishReq + 16, // 249: pbcs.Config.CreateCredentials:input_type -> pbcs.CreateCredentialReq + 14, // 250: pbcs.Config.ListCredentials:input_type -> pbcs.ListCredentialsReq + 8, // 251: pbcs.Config.DeleteCredential:input_type -> pbcs.DeleteCredentialsReq + 10, // 252: pbcs.Config.UpdateCredential:input_type -> pbcs.UpdateCredentialsReq + 12, // 253: pbcs.Config.CheckCredentialName:input_type -> pbcs.CheckCredentialNameReq + 4, // 254: pbcs.Config.ListCredentialScopes:input_type -> pbcs.ListCredentialScopesReq + 0, // 255: pbcs.Config.UpdateCredentialScope:input_type -> pbcs.UpdateCredentialScopeReq + 2, // 256: pbcs.Config.CredentialScopePreview:input_type -> pbcs.CredentialScopePreviewReq + 263, // 257: pbcs.Config.CreateKv:input_type -> pbcs.CreateKvReq + 265, // 258: pbcs.Config.UpdateKv:input_type -> pbcs.UpdateKvReq + 267, // 259: pbcs.Config.ListKvs:input_type -> pbcs.ListKvsReq + 269, // 260: pbcs.Config.DeleteKv:input_type -> pbcs.DeleteKvReq + 272, // 261: pbcs.Config.BatchDeleteKv:input_type -> pbcs.BatchDeleteAppResourcesReq + 274, // 262: pbcs.Config.BatchUpsertKvs:input_type -> pbcs.BatchUpsertKvsReq + 276, // 263: pbcs.Config.UnDeleteKv:input_type -> pbcs.UnDeleteKvReq + 278, // 264: pbcs.Config.UndoKv:input_type -> pbcs.UndoKvReq + 280, // 265: pbcs.Config.ImportKvs:input_type -> pbcs.ImportKvsReq + 282, // 266: pbcs.Config.ListClients:input_type -> pbcs.ListClientsReq + 284, // 267: pbcs.Config.ListClientEvents:input_type -> pbcs.ListClientEventsReq + 286, // 268: pbcs.Config.RetryClients:input_type -> pbcs.RetryClientsReq + 288, // 269: pbcs.Config.ListClientQuerys:input_type -> pbcs.ListClientQuerysReq + 290, // 270: pbcs.Config.CreateClientQuery:input_type -> pbcs.CreateClientQueryReq + 292, // 271: pbcs.Config.UpdateClientQuery:input_type -> pbcs.UpdateClientQueryReq + 294, // 272: pbcs.Config.DeleteClientQuery:input_type -> pbcs.DeleteClientQueryReq + 296, // 273: pbcs.Config.CheckClientQueryName:input_type -> pbcs.CheckClientQueryNameReq + 388, // 274: pbcs.Config.ClientConfigVersionStatistics:input_type -> pbclient.ClientCommonReq + 388, // 275: pbcs.Config.ClientPullTrendStatistics:input_type -> pbclient.ClientCommonReq + 388, // 276: pbcs.Config.ClientPullStatistics:input_type -> pbclient.ClientCommonReq + 388, // 277: pbcs.Config.ClientLabelStatistics:input_type -> pbclient.ClientCommonReq + 388, // 278: pbcs.Config.ClientAnnotationStatistics:input_type -> pbclient.ClientCommonReq + 388, // 279: pbcs.Config.ClientVersionStatistics:input_type -> pbclient.ClientCommonReq + 298, // 280: pbcs.Config.ListClientLabelAndAnnotation:input_type -> pbcs.ListClientLabelAndAnnotationReq + 388, // 281: pbcs.Config.ClientSpecificFailedReason:input_type -> pbclient.ClientCommonReq + 299, // 282: pbcs.Config.CompareConfigItemConflicts:input_type -> pbcs.CompareConfigItemConflictsReq + 301, // 283: pbcs.Config.CompareKvConflicts:input_type -> pbcs.CompareKvConflictsReq + 303, // 284: pbcs.Config.GetTemplateAndNonTemplateCICount:input_type -> pbcs.GetTemplateAndNonTemplateCICountReq + 19, // 285: pbcs.Config.CreateApp:output_type -> pbcs.CreateAppResp + 340, // 286: pbcs.Config.UpdateApp:output_type -> pbapp.App + 22, // 287: pbcs.Config.DeleteApp:output_type -> pbcs.DeleteAppResp + 340, // 288: pbcs.Config.GetApp:output_type -> pbapp.App + 340, // 289: pbcs.Config.GetAppByName:output_type -> pbapp.App + 27, // 290: pbcs.Config.ListAppsRest:output_type -> pbcs.ListAppsResp + 27, // 291: pbcs.Config.ListAppsBySpaceRest:output_type -> pbcs.ListAppsResp + 31, // 292: pbcs.Config.CreateConfigItem:output_type -> pbcs.CreateConfigItemResp + 30, // 293: pbcs.Config.BatchUpsertConfigItems:output_type -> pbcs.BatchUpsertConfigItemsResp + 33, // 294: pbcs.Config.UpdateConfigItem:output_type -> pbcs.UpdateConfigItemResp + 35, // 295: pbcs.Config.DeleteConfigItem:output_type -> pbcs.DeleteConfigItemResp + 273, // 296: pbcs.Config.BatchDeleteConfigItems:output_type -> pbcs.BatchDeleteResp + 37, // 297: pbcs.Config.UnDeleteConfigItem:output_type -> pbcs.UnDeleteConfigItemResp + 39, // 298: pbcs.Config.UndoConfigItem:output_type -> pbcs.UndoConfigItemResp + 41, // 299: pbcs.Config.GetConfigItem:output_type -> pbcs.GetConfigItemResp + 43, // 300: pbcs.Config.GetReleasedConfigItem:output_type -> pbcs.GetReleasedConfigItemResp + 45, // 301: pbcs.Config.ListConfigItems:output_type -> pbcs.ListConfigItemsResp + 47, // 302: pbcs.Config.ListReleasedConfigItems:output_type -> pbcs.ListReleasedConfigItemsResp + 49, // 303: pbcs.Config.ListConfigItemCount:output_type -> pbcs.ListConfigItemCountResp + 51, // 304: pbcs.Config.ListConfigItemByTuple:output_type -> pbcs.ListConfigItemByTupleResp + 53, // 305: pbcs.Config.GetReleasedKv:output_type -> pbcs.GetReleasedKvResp + 55, // 306: pbcs.Config.ListReleasedKvs:output_type -> pbcs.ListReleasedKvsResp + 57, // 307: pbcs.Config.UpdateConfigHook:output_type -> pbcs.UpdateConfigHookResp + 59, // 308: pbcs.Config.CreateRelease:output_type -> pbcs.CreateReleaseResp + 63, // 309: pbcs.Config.ListReleases:output_type -> pbcs.ListReleasesResp + 347, // 310: pbcs.Config.GetReleaseByName:output_type -> pbrelease.Release + 347, // 311: pbcs.Config.GetRelease:output_type -> pbrelease.Release + 67, // 312: pbcs.Config.DeprecateRelease:output_type -> pbcs.DeprecateReleaseResp + 69, // 313: pbcs.Config.UnDeprecateRelease:output_type -> pbcs.UnDeprecateReleaseResp + 71, // 314: pbcs.Config.DeleteRelease:output_type -> pbcs.DeleteReleaseResp + 61, // 315: pbcs.Config.CheckReleaseName:output_type -> pbcs.CheckReleaseNameResp + 73, // 316: pbcs.Config.CreateHook:output_type -> pbcs.CreateHookResp + 75, // 317: pbcs.Config.DeleteHook:output_type -> pbcs.DeleteHookResp + 273, // 318: pbcs.Config.BatchDeleteHook:output_type -> pbcs.BatchDeleteResp + 78, // 319: pbcs.Config.UpdateHook:output_type -> pbcs.UpdateHookResp + 80, // 320: pbcs.Config.ListHooks:output_type -> pbcs.ListHooksResp + 82, // 321: pbcs.Config.ListHookTags:output_type -> pbcs.ListHookTagsResp + 92, // 322: pbcs.Config.GetHook:output_type -> pbcs.GetHookResp + 84, // 323: pbcs.Config.CreateHookRevision:output_type -> pbcs.CreateHookRevisionResp + 86, // 324: pbcs.Config.ListHookRevisions:output_type -> pbcs.ListHookRevisionsResp + 88, // 325: pbcs.Config.DeleteHookRevision:output_type -> pbcs.DeleteHookRevisionResp + 90, // 326: pbcs.Config.PublishHookRevision:output_type -> pbcs.PublishHookRevisionResp + 384, // 327: pbcs.Config.GetHookRevision:output_type -> pbhr.HookRevision + 96, // 328: pbcs.Config.UpdateHookRevision:output_type -> pbcs.UpdateHookRevisionResp + 100, // 329: pbcs.Config.ListHookReferences:output_type -> pbcs.ListHookReferencesResp + 98, // 330: pbcs.Config.ListHookRevisionReferences:output_type -> pbcs.ListHookRevisionReferencesResp + 102, // 331: pbcs.Config.GetReleaseHook:output_type -> pbcs.GetReleaseHookResp + 104, // 332: pbcs.Config.CreateTemplateSpace:output_type -> pbcs.CreateTemplateSpaceResp + 108, // 333: pbcs.Config.DeleteTemplateSpace:output_type -> pbcs.DeleteTemplateSpaceResp + 106, // 334: pbcs.Config.UpdateTemplateSpace:output_type -> pbcs.UpdateTemplateSpaceResp + 110, // 335: pbcs.Config.ListTemplateSpaces:output_type -> pbcs.ListTemplateSpacesResp + 111, // 336: pbcs.Config.GetAllBizsOfTmplSpaces:output_type -> pbcs.GetAllBizsOfTmplSpacesResp + 113, // 337: pbcs.Config.CreateDefaultTmplSpace:output_type -> pbcs.CreateDefaultTmplSpaceResp + 115, // 338: pbcs.Config.ListTmplSpacesByIDs:output_type -> pbcs.ListTmplSpacesByIDsResp + 117, // 339: pbcs.Config.CreateTemplate:output_type -> pbcs.CreateTemplateResp + 121, // 340: pbcs.Config.DeleteTemplate:output_type -> pbcs.DeleteTemplateResp + 123, // 341: pbcs.Config.BatchDeleteTemplate:output_type -> pbcs.BatchDeleteTemplateResp + 119, // 342: pbcs.Config.UpdateTemplate:output_type -> pbcs.UpdateTemplateResp + 125, // 343: pbcs.Config.ListTemplates:output_type -> pbcs.ListTemplatesResp + 127, // 344: pbcs.Config.BatchUpsertTemplates:output_type -> pbcs.BatchUpsertTemplatesResp + 129, // 345: pbcs.Config.BatchUpdateTemplatePermissions:output_type -> pbcs.BatchUpdateTemplatePermissionsResp + 131, // 346: pbcs.Config.AddTmplsToTmplSets:output_type -> pbcs.AddTmplsToTmplSetsResp + 133, // 347: pbcs.Config.DeleteTmplsFromTmplSets:output_type -> pbcs.DeleteTmplsFromTmplSetsResp + 135, // 348: pbcs.Config.ListTemplatesByIDs:output_type -> pbcs.ListTemplatesByIDsResp + 139, // 349: pbcs.Config.ListTemplatesNotBound:output_type -> pbcs.ListTemplatesNotBoundResp + 138, // 350: pbcs.Config.ListTemplateByTuple:output_type -> pbcs.ListTemplateByTupleResp + 141, // 351: pbcs.Config.ListTmplsOfTmplSet:output_type -> pbcs.ListTmplsOfTmplSetResp + 143, // 352: pbcs.Config.ListTemplateSetsAndRevisions:output_type -> pbcs.ListTemplateSetsAndRevisionsResp + 145, // 353: pbcs.Config.CreateTemplateRevision:output_type -> pbcs.CreateTemplateRevisionResp + 147, // 354: pbcs.Config.UpdateTemplateRevision:output_type -> pbcs.UpdateTemplateRevisionResp + 149, // 355: pbcs.Config.ListTemplateRevisions:output_type -> pbcs.ListTemplateRevisionsResp + 151, // 356: pbcs.Config.GetTemplateRevision:output_type -> pbcs.GetTemplateRevisionResp + 155, // 357: pbcs.Config.ListTemplateRevisionsByIDs:output_type -> pbcs.ListTemplateRevisionsByIDsResp + 157, // 358: pbcs.Config.ListTmplRevisionNamesByTmplIDs:output_type -> pbcs.ListTmplRevisionNamesByTmplIDsResp + 159, // 359: pbcs.Config.CreateTemplateSet:output_type -> pbcs.CreateTemplateSetResp + 163, // 360: pbcs.Config.DeleteTemplateSet:output_type -> pbcs.DeleteTemplateSetResp + 161, // 361: pbcs.Config.UpdateTemplateSet:output_type -> pbcs.UpdateTemplateSetResp + 165, // 362: pbcs.Config.ListTemplateSets:output_type -> pbcs.ListTemplateSetsResp + 167, // 363: pbcs.Config.ListAppTemplateSets:output_type -> pbcs.ListAppTemplateSetsResp + 169, // 364: pbcs.Config.ListTemplateSetsByIDs:output_type -> pbcs.ListTemplateSetsByIDsResp + 171, // 365: pbcs.Config.ListTmplSetsOfBiz:output_type -> pbcs.ListTmplSetsOfBizResp + 173, // 366: pbcs.Config.CreateAppTemplateBinding:output_type -> pbcs.CreateAppTemplateBindingResp + 177, // 367: pbcs.Config.DeleteAppTemplateBinding:output_type -> pbcs.DeleteAppTemplateBindingResp + 175, // 368: pbcs.Config.UpdateAppTemplateBinding:output_type -> pbcs.UpdateAppTemplateBindingResp + 179, // 369: pbcs.Config.ListAppTemplateBindings:output_type -> pbcs.ListAppTemplateBindingsResp + 181, // 370: pbcs.Config.ListAppBoundTmplRevisions:output_type -> pbcs.ListAppBoundTmplRevisionsResp + 183, // 371: pbcs.Config.ListReleasedAppBoundTmplRevisions:output_type -> pbcs.ListReleasedAppBoundTmplRevisionsResp + 185, // 372: pbcs.Config.GetReleasedAppBoundTmplRevision:output_type -> pbcs.GetReleasedAppBoundTmplRevisionResp + 187, // 373: pbcs.Config.UpdateAppBoundTmplRevisions:output_type -> pbcs.UpdateAppBoundTmplRevisionsResp + 189, // 374: pbcs.Config.DeleteAppBoundTmplSets:output_type -> pbcs.DeleteAppBoundTmplSetsResp + 191, // 375: pbcs.Config.RemoveAppBoundTmplSet:output_type -> pbcs.RemoveAppBoundTmplSetResp + 193, // 376: pbcs.Config.CheckAppTemplateBinding:output_type -> pbcs.CheckAppTemplateBindingResp + 195, // 377: pbcs.Config.ImportFromTemplateSetToApp:output_type -> pbcs.ImportFromTemplateSetToAppResp + 197, // 378: pbcs.Config.ListTmplBoundCounts:output_type -> pbcs.ListTmplBoundCountsResp + 199, // 379: pbcs.Config.ListTmplRevisionBoundCounts:output_type -> pbcs.ListTmplRevisionBoundCountsResp + 201, // 380: pbcs.Config.ListTmplSetBoundCounts:output_type -> pbcs.ListTmplSetBoundCountsResp + 203, // 381: pbcs.Config.ListTmplBoundUnnamedApps:output_type -> pbcs.ListTmplBoundUnnamedAppsResp + 205, // 382: pbcs.Config.ListTmplBoundNamedApps:output_type -> pbcs.ListTmplBoundNamedAppsResp + 207, // 383: pbcs.Config.ListTmplBoundTmplSets:output_type -> pbcs.ListTmplBoundTmplSetsResp + 209, // 384: pbcs.Config.ListMultiTmplBoundTmplSets:output_type -> pbcs.ListMultiTmplBoundTmplSetsResp + 211, // 385: pbcs.Config.ListTmplRevisionBoundUnnamedApps:output_type -> pbcs.ListTmplRevisionBoundUnnamedAppsResp + 213, // 386: pbcs.Config.ListTmplRevisionBoundNamedApps:output_type -> pbcs.ListTmplRevisionBoundNamedAppsResp + 215, // 387: pbcs.Config.ListTmplSetBoundUnnamedApps:output_type -> pbcs.ListTmplSetBoundUnnamedAppsResp + 217, // 388: pbcs.Config.ListMultiTmplSetBoundUnnamedApps:output_type -> pbcs.ListMultiTmplSetBoundUnnamedAppsResp + 219, // 389: pbcs.Config.CheckTemplateSetReferencesApps:output_type -> pbcs.CheckTemplateSetReferencesAppsResp + 221, // 390: pbcs.Config.ListTmplSetBoundNamedApps:output_type -> pbcs.ListTmplSetBoundNamedAppsResp + 223, // 391: pbcs.Config.ListLatestTmplBoundUnnamedApps:output_type -> pbcs.ListLatestTmplBoundUnnamedAppsResp + 225, // 392: pbcs.Config.CreateTemplateVariable:output_type -> pbcs.CreateTemplateVariableResp + 229, // 393: pbcs.Config.DeleteTemplateVariable:output_type -> pbcs.DeleteTemplateVariableResp + 273, // 394: pbcs.Config.BatchDeleteTemplateVariable:output_type -> pbcs.BatchDeleteResp + 227, // 395: pbcs.Config.UpdateTemplateVariable:output_type -> pbcs.UpdateTemplateVariableResp + 231, // 396: pbcs.Config.ListTemplateVariables:output_type -> pbcs.ListTemplateVariablesResp + 233, // 397: pbcs.Config.ImportTemplateVariables:output_type -> pbcs.ImportTemplateVariablesResp + 235, // 398: pbcs.Config.ExtractAppTmplVariables:output_type -> pbcs.ExtractAppTmplVariablesResp + 237, // 399: pbcs.Config.GetAppTmplVariableRefs:output_type -> pbcs.GetAppTmplVariableRefsResp + 239, // 400: pbcs.Config.GetReleasedAppTmplVariableRefs:output_type -> pbcs.GetReleasedAppTmplVariableRefsResp + 241, // 401: pbcs.Config.UpdateAppTmplVariables:output_type -> pbcs.UpdateAppTmplVariablesResp + 243, // 402: pbcs.Config.ListAppTmplVariables:output_type -> pbcs.ListAppTmplVariablesResp + 245, // 403: pbcs.Config.ListReleasedAppTmplVariables:output_type -> pbcs.ListReleasedAppTmplVariablesResp + 247, // 404: pbcs.Config.CreateGroup:output_type -> pbcs.CreateGroupResp + 251, // 405: pbcs.Config.DeleteGroup:output_type -> pbcs.DeleteGroupResp + 273, // 406: pbcs.Config.BatchDeleteGroups:output_type -> pbcs.BatchDeleteResp + 249, // 407: pbcs.Config.UpdateGroup:output_type -> pbcs.UpdateGroupResp + 253, // 408: pbcs.Config.ListAllGroups:output_type -> pbcs.ListAllGroupsResp + 255, // 409: pbcs.Config.ListAppGroups:output_type -> pbcs.ListAppGroupsResp + 257, // 410: pbcs.Config.ListGroupReleasedApps:output_type -> pbcs.ListGroupReleasedAppsResp + 389, // 411: pbcs.Config.GetGroupByName:output_type -> pbgroup.Group + 262, // 412: pbcs.Config.Publish:output_type -> pbcs.PublishResp + 262, // 413: pbcs.Config.GenerateReleaseAndPublish:output_type -> pbcs.PublishResp + 17, // 414: pbcs.Config.CreateCredentials:output_type -> pbcs.CreateCredentialResp + 15, // 415: pbcs.Config.ListCredentials:output_type -> pbcs.ListCredentialsResp + 9, // 416: pbcs.Config.DeleteCredential:output_type -> pbcs.DeleteCredentialsResp + 11, // 417: pbcs.Config.UpdateCredential:output_type -> pbcs.UpdateCredentialsResp + 13, // 418: pbcs.Config.CheckCredentialName:output_type -> pbcs.CheckCredentialNameResp + 5, // 419: pbcs.Config.ListCredentialScopes:output_type -> pbcs.ListCredentialScopesResp + 1, // 420: pbcs.Config.UpdateCredentialScope:output_type -> pbcs.UpdateCredentialScopeResp + 3, // 421: pbcs.Config.CredentialScopePreview:output_type -> pbcs.CredentialScopePreviewResp + 264, // 422: pbcs.Config.CreateKv:output_type -> pbcs.CreateKvResp + 266, // 423: pbcs.Config.UpdateKv:output_type -> pbcs.UpdateKvResp + 268, // 424: pbcs.Config.ListKvs:output_type -> pbcs.ListKvsResp + 270, // 425: pbcs.Config.DeleteKv:output_type -> pbcs.DeleteKvResp + 273, // 426: pbcs.Config.BatchDeleteKv:output_type -> pbcs.BatchDeleteResp + 275, // 427: pbcs.Config.BatchUpsertKvs:output_type -> pbcs.BatchUpsertKvsResp + 277, // 428: pbcs.Config.UnDeleteKv:output_type -> pbcs.UnDeleteKvResp + 279, // 429: pbcs.Config.UndoKv:output_type -> pbcs.UndoKvResp + 281, // 430: pbcs.Config.ImportKvs:output_type -> pbcs.ImportKvsResp + 283, // 431: pbcs.Config.ListClients:output_type -> pbcs.ListClientsResp + 285, // 432: pbcs.Config.ListClientEvents:output_type -> pbcs.ListClientEventsResp + 287, // 433: pbcs.Config.RetryClients:output_type -> pbcs.RetryClientsResp + 289, // 434: pbcs.Config.ListClientQuerys:output_type -> pbcs.ListClientQuerysResp + 291, // 435: pbcs.Config.CreateClientQuery:output_type -> pbcs.CreateClientQueryResp + 293, // 436: pbcs.Config.UpdateClientQuery:output_type -> pbcs.UpdateClientQueryResp + 295, // 437: pbcs.Config.DeleteClientQuery:output_type -> pbcs.DeleteClientQueryResp + 297, // 438: pbcs.Config.CheckClientQueryName:output_type -> pbcs.CheckClientQueryNameResp + 378, // 439: pbcs.Config.ClientConfigVersionStatistics:output_type -> google.protobuf.Struct + 378, // 440: pbcs.Config.ClientPullTrendStatistics:output_type -> google.protobuf.Struct + 378, // 441: pbcs.Config.ClientPullStatistics:output_type -> google.protobuf.Struct + 378, // 442: pbcs.Config.ClientLabelStatistics:output_type -> google.protobuf.Struct + 378, // 443: pbcs.Config.ClientAnnotationStatistics:output_type -> google.protobuf.Struct + 378, // 444: pbcs.Config.ClientVersionStatistics:output_type -> google.protobuf.Struct + 378, // 445: pbcs.Config.ListClientLabelAndAnnotation:output_type -> google.protobuf.Struct + 378, // 446: pbcs.Config.ClientSpecificFailedReason:output_type -> google.protobuf.Struct + 300, // 447: pbcs.Config.CompareConfigItemConflicts:output_type -> pbcs.CompareConfigItemConflictsResp + 302, // 448: pbcs.Config.CompareKvConflicts:output_type -> pbcs.CompareKvConflictsResp + 304, // 449: pbcs.Config.GetTemplateAndNonTemplateCICount:output_type -> pbcs.GetTemplateAndNonTemplateCICountResp + 285, // [285:450] is the sub-list for method output_type + 120, // [120:285] is the sub-list for method input_type + 120, // [120:120] is the sub-list for extension type_name + 120, // [120:120] is the sub-list for extension extendee + 0, // [0:120] is the sub-list for field type_name } func init() { file_config_service_proto_init() } @@ -28088,7 +28635,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTemplateRevisionReq); i { + switch v := v.(*ListTemplateSetsAndRevisionsReq); i { case 0: return &v.state case 1: @@ -28100,7 +28647,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTemplateRevisionResp); i { + switch v := v.(*ListTemplateSetsAndRevisionsResp); i { case 0: return &v.state case 1: @@ -28112,7 +28659,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTemplateRevisionReq); i { + switch v := v.(*CreateTemplateRevisionReq); i { case 0: return &v.state case 1: @@ -28124,7 +28671,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTemplateRevisionResp); i { + switch v := v.(*CreateTemplateRevisionResp); i { case 0: return &v.state case 1: @@ -28136,7 +28683,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateRevisionsReq); i { + switch v := v.(*UpdateTemplateRevisionReq); i { case 0: return &v.state case 1: @@ -28148,7 +28695,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateRevisionsResp); i { + switch v := v.(*UpdateTemplateRevisionResp); i { case 0: return &v.state case 1: @@ -28160,7 +28707,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTemplateRevisionReq); i { + switch v := v.(*ListTemplateRevisionsReq); i { case 0: return &v.state case 1: @@ -28172,7 +28719,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTemplateRevisionResp); i { + switch v := v.(*ListTemplateRevisionsResp); i { case 0: return &v.state case 1: @@ -28184,7 +28731,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateRevisionReq); i { + switch v := v.(*GetTemplateRevisionReq); i { case 0: return &v.state case 1: @@ -28196,7 +28743,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateRevisionResp); i { + switch v := v.(*GetTemplateRevisionResp); i { case 0: return &v.state case 1: @@ -28208,7 +28755,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateRevisionsByIDsReq); i { + switch v := v.(*DeleteTemplateRevisionReq); i { case 0: return &v.state case 1: @@ -28220,7 +28767,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateRevisionsByIDsResp); i { + switch v := v.(*DeleteTemplateRevisionResp); i { case 0: return &v.state case 1: @@ -28232,7 +28779,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionNamesByTmplIDsReq); i { + switch v := v.(*ListTemplateRevisionsByIDsReq); i { case 0: return &v.state case 1: @@ -28244,7 +28791,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionNamesByTmplIDsResp); i { + switch v := v.(*ListTemplateRevisionsByIDsResp); i { case 0: return &v.state case 1: @@ -28256,7 +28803,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTemplateSetReq); i { + switch v := v.(*ListTmplRevisionNamesByTmplIDsReq); i { case 0: return &v.state case 1: @@ -28268,7 +28815,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTemplateSetResp); i { + switch v := v.(*ListTmplRevisionNamesByTmplIDsResp); i { case 0: return &v.state case 1: @@ -28280,7 +28827,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTemplateSetReq); i { + switch v := v.(*CreateTemplateSetReq); i { case 0: return &v.state case 1: @@ -28292,7 +28839,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTemplateSetResp); i { + switch v := v.(*CreateTemplateSetResp); i { case 0: return &v.state case 1: @@ -28304,7 +28851,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateSetReq); i { + switch v := v.(*UpdateTemplateSetReq); i { case 0: return &v.state case 1: @@ -28316,7 +28863,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateSetResp); i { + switch v := v.(*UpdateTemplateSetResp); i { case 0: return &v.state case 1: @@ -28328,7 +28875,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetsReq); i { + switch v := v.(*DeleteTemplateSetReq); i { case 0: return &v.state case 1: @@ -28340,7 +28887,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetsResp); i { + switch v := v.(*DeleteTemplateSetResp); i { case 0: return &v.state case 1: @@ -28352,7 +28899,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTemplateSetsReq); i { + switch v := v.(*ListTemplateSetsReq); i { case 0: return &v.state case 1: @@ -28364,7 +28911,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTemplateSetsResp); i { + switch v := v.(*ListTemplateSetsResp); i { case 0: return &v.state case 1: @@ -28376,7 +28923,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetsByIDsReq); i { + switch v := v.(*ListAppTemplateSetsReq); i { case 0: return &v.state case 1: @@ -28388,7 +28935,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetsByIDsResp); i { + switch v := v.(*ListAppTemplateSetsResp); i { case 0: return &v.state case 1: @@ -28400,7 +28947,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplSetsOfBizReq); i { + switch v := v.(*ListTemplateSetsByIDsReq); i { case 0: return &v.state case 1: @@ -28412,7 +28959,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplSetsOfBizResp); i { + switch v := v.(*ListTemplateSetsByIDsResp); i { case 0: return &v.state case 1: @@ -28424,7 +28971,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAppTemplateBindingReq); i { + switch v := v.(*ListTmplSetsOfBizReq); i { case 0: return &v.state case 1: @@ -28436,7 +28983,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAppTemplateBindingResp); i { + switch v := v.(*ListTmplSetsOfBizResp); i { case 0: return &v.state case 1: @@ -28448,7 +28995,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAppTemplateBindingReq); i { + switch v := v.(*CreateAppTemplateBindingReq); i { case 0: return &v.state case 1: @@ -28460,7 +29007,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAppTemplateBindingResp); i { + switch v := v.(*CreateAppTemplateBindingResp); i { case 0: return &v.state case 1: @@ -28472,7 +29019,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAppTemplateBindingReq); i { + switch v := v.(*UpdateAppTemplateBindingReq); i { case 0: return &v.state case 1: @@ -28484,7 +29031,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAppTemplateBindingResp); i { + switch v := v.(*UpdateAppTemplateBindingResp); i { case 0: return &v.state case 1: @@ -28496,7 +29043,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTemplateBindingsReq); i { + switch v := v.(*DeleteAppTemplateBindingReq); i { case 0: return &v.state case 1: @@ -28508,7 +29055,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTemplateBindingsResp); i { + switch v := v.(*DeleteAppTemplateBindingResp); i { case 0: return &v.state case 1: @@ -28520,7 +29067,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppBoundTmplRevisionsReq); i { + switch v := v.(*ListAppTemplateBindingsReq); i { case 0: return &v.state case 1: @@ -28532,7 +29079,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppBoundTmplRevisionsResp); i { + switch v := v.(*ListAppTemplateBindingsResp); i { case 0: return &v.state case 1: @@ -28544,7 +29091,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReleasedAppBoundTmplRevisionsReq); i { + switch v := v.(*ListAppBoundTmplRevisionsReq); i { case 0: return &v.state case 1: @@ -28556,7 +29103,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReleasedAppBoundTmplRevisionsResp); i { + switch v := v.(*ListAppBoundTmplRevisionsResp); i { case 0: return &v.state case 1: @@ -28568,7 +29115,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReleasedAppBoundTmplRevisionReq); i { + switch v := v.(*ListReleasedAppBoundTmplRevisionsReq); i { case 0: return &v.state case 1: @@ -28580,7 +29127,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReleasedAppBoundTmplRevisionResp); i { + switch v := v.(*ListReleasedAppBoundTmplRevisionsResp); i { case 0: return &v.state case 1: @@ -28592,7 +29139,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAppBoundTmplRevisionsReq); i { + switch v := v.(*GetReleasedAppBoundTmplRevisionReq); i { case 0: return &v.state case 1: @@ -28604,7 +29151,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAppBoundTmplRevisionsResp); i { + switch v := v.(*GetReleasedAppBoundTmplRevisionResp); i { case 0: return &v.state case 1: @@ -28616,7 +29163,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAppBoundTmplSetsReq); i { + switch v := v.(*UpdateAppBoundTmplRevisionsReq); i { case 0: return &v.state case 1: @@ -28628,7 +29175,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAppBoundTmplSetsResp); i { + switch v := v.(*UpdateAppBoundTmplRevisionsResp); i { case 0: return &v.state case 1: @@ -28640,7 +29187,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveAppBoundTmplSetReq); i { + switch v := v.(*DeleteAppBoundTmplSetsReq); i { case 0: return &v.state case 1: @@ -28652,7 +29199,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveAppBoundTmplSetResp); i { + switch v := v.(*DeleteAppBoundTmplSetsResp); i { case 0: return &v.state case 1: @@ -28664,7 +29211,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckAppTemplateBindingReq); i { + switch v := v.(*RemoveAppBoundTmplSetReq); i { case 0: return &v.state case 1: @@ -28676,7 +29223,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckAppTemplateBindingResp); i { + switch v := v.(*RemoveAppBoundTmplSetResp); i { case 0: return &v.state case 1: @@ -28688,7 +29235,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundCountsReq); i { + switch v := v.(*CheckAppTemplateBindingReq); i { case 0: return &v.state case 1: @@ -28700,7 +29247,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundCountsResp); i { + switch v := v.(*CheckAppTemplateBindingResp); i { case 0: return &v.state case 1: @@ -28712,7 +29259,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionBoundCountsReq); i { + switch v := v.(*ImportFromTemplateSetToAppReq); i { case 0: return &v.state case 1: @@ -28724,7 +29271,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionBoundCountsResp); i { + switch v := v.(*ImportFromTemplateSetToAppResp); i { case 0: return &v.state case 1: @@ -28736,7 +29283,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplSetBoundCountsReq); i { + switch v := v.(*ListTmplBoundCountsReq); i { case 0: return &v.state case 1: @@ -28748,7 +29295,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplSetBoundCountsResp); i { + switch v := v.(*ListTmplBoundCountsResp); i { case 0: return &v.state case 1: @@ -28760,7 +29307,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundUnnamedAppsReq); i { + switch v := v.(*ListTmplRevisionBoundCountsReq); i { case 0: return &v.state case 1: @@ -28772,7 +29319,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundUnnamedAppsResp); i { + switch v := v.(*ListTmplRevisionBoundCountsResp); i { case 0: return &v.state case 1: @@ -28784,7 +29331,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundNamedAppsReq); i { + switch v := v.(*ListTmplSetBoundCountsReq); i { case 0: return &v.state case 1: @@ -28796,7 +29343,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundNamedAppsResp); i { + switch v := v.(*ListTmplSetBoundCountsResp); i { case 0: return &v.state case 1: @@ -28808,7 +29355,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundTmplSetsReq); i { + switch v := v.(*ListTmplBoundUnnamedAppsReq); i { case 0: return &v.state case 1: @@ -28820,7 +29367,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundTmplSetsResp); i { + switch v := v.(*ListTmplBoundUnnamedAppsResp); i { case 0: return &v.state case 1: @@ -28832,7 +29379,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMultiTmplBoundTmplSetsReq); i { + switch v := v.(*ListTmplBoundNamedAppsReq); i { case 0: return &v.state case 1: @@ -28844,7 +29391,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMultiTmplBoundTmplSetsResp); i { + switch v := v.(*ListTmplBoundNamedAppsResp); i { case 0: return &v.state case 1: @@ -28856,7 +29403,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionBoundUnnamedAppsReq); i { + switch v := v.(*ListTmplBoundTmplSetsReq); i { case 0: return &v.state case 1: @@ -28868,7 +29415,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionBoundUnnamedAppsResp); i { + switch v := v.(*ListTmplBoundTmplSetsResp); i { case 0: return &v.state case 1: @@ -28880,7 +29427,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionBoundNamedAppsReq); i { + switch v := v.(*ListMultiTmplBoundTmplSetsReq); i { case 0: return &v.state case 1: @@ -28892,7 +29439,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionBoundNamedAppsResp); i { + switch v := v.(*ListMultiTmplBoundTmplSetsResp); i { case 0: return &v.state case 1: @@ -28904,7 +29451,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplSetBoundUnnamedAppsReq); i { + switch v := v.(*ListTmplRevisionBoundUnnamedAppsReq); i { case 0: return &v.state case 1: @@ -28916,7 +29463,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplSetBoundUnnamedAppsResp); i { + switch v := v.(*ListTmplRevisionBoundUnnamedAppsResp); i { case 0: return &v.state case 1: @@ -28928,7 +29475,7 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListMultiTmplSetBoundUnnamedAppsReq); i { + switch v := v.(*ListTmplRevisionBoundNamedAppsReq); i { case 0: return &v.state case 1: @@ -28940,6 +29487,54 @@ func file_config_service_proto_init() { } } file_config_service_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTmplRevisionBoundNamedAppsResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_service_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTmplSetBoundUnnamedAppsReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_service_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTmplSetBoundUnnamedAppsResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_service_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListMultiTmplSetBoundUnnamedAppsReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_service_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMultiTmplSetBoundUnnamedAppsResp); i { case 0: return &v.state @@ -28951,7 +29546,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckTemplateSetReferencesAppsReq); i { case 0: return &v.state @@ -28963,7 +29558,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckTemplateSetReferencesAppsResp); i { case 0: return &v.state @@ -28975,7 +29570,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplSetBoundNamedAppsReq); i { case 0: return &v.state @@ -28987,7 +29582,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplSetBoundNamedAppsResp); i { case 0: return &v.state @@ -28999,7 +29594,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLatestTmplBoundUnnamedAppsReq); i { case 0: return &v.state @@ -29011,7 +29606,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLatestTmplBoundUnnamedAppsResp); i { case 0: return &v.state @@ -29023,7 +29618,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTemplateVariableReq); i { case 0: return &v.state @@ -29035,7 +29630,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTemplateVariableResp); i { case 0: return &v.state @@ -29047,7 +29642,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateTemplateVariableReq); i { case 0: return &v.state @@ -29059,7 +29654,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateTemplateVariableResp); i { case 0: return &v.state @@ -29071,7 +29666,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteTemplateVariableReq); i { case 0: return &v.state @@ -29083,7 +29678,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteTemplateVariableResp); i { case 0: return &v.state @@ -29095,7 +29690,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTemplateVariablesReq); i { case 0: return &v.state @@ -29107,7 +29702,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTemplateVariablesResp); i { case 0: return &v.state @@ -29119,7 +29714,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImportTemplateVariablesReq); i { case 0: return &v.state @@ -29131,7 +29726,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImportTemplateVariablesResp); i { case 0: return &v.state @@ -29143,7 +29738,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExtractAppTmplVariablesReq); i { case 0: return &v.state @@ -29155,7 +29750,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExtractAppTmplVariablesResp); i { case 0: return &v.state @@ -29167,7 +29762,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAppTmplVariableRefsReq); i { case 0: return &v.state @@ -29179,7 +29774,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAppTmplVariableRefsResp); i { case 0: return &v.state @@ -29191,7 +29786,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetReleasedAppTmplVariableRefsReq); i { case 0: return &v.state @@ -29203,7 +29798,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetReleasedAppTmplVariableRefsResp); i { case 0: return &v.state @@ -29215,7 +29810,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAppTmplVariablesReq); i { case 0: return &v.state @@ -29227,7 +29822,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAppTmplVariablesResp); i { case 0: return &v.state @@ -29239,7 +29834,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAppTmplVariablesReq); i { case 0: return &v.state @@ -29251,7 +29846,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAppTmplVariablesResp); i { case 0: return &v.state @@ -29263,7 +29858,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReleasedAppTmplVariablesReq); i { case 0: return &v.state @@ -29275,7 +29870,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReleasedAppTmplVariablesResp); i { case 0: return &v.state @@ -29287,7 +29882,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGroupReq); i { case 0: return &v.state @@ -29299,7 +29894,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGroupResp); i { case 0: return &v.state @@ -29311,7 +29906,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGroupReq); i { case 0: return &v.state @@ -29323,7 +29918,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGroupResp); i { case 0: return &v.state @@ -29335,7 +29930,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteGroupReq); i { case 0: return &v.state @@ -29347,7 +29942,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteGroupResp); i { case 0: return &v.state @@ -29359,7 +29954,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllGroupsReq); i { case 0: return &v.state @@ -29371,7 +29966,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllGroupsResp); i { case 0: return &v.state @@ -29383,7 +29978,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAppGroupsReq); i { case 0: return &v.state @@ -29395,7 +29990,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAppGroupsResp); i { case 0: return &v.state @@ -29407,7 +30002,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGroupReleasedAppsReq); i { case 0: return &v.state @@ -29419,7 +30014,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGroupReleasedAppsResp); i { case 0: return &v.state @@ -29431,7 +30026,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetGroupByNameReq); i { case 0: return &v.state @@ -29443,7 +30038,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PublishReq); i { case 0: return &v.state @@ -29455,7 +30050,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateReleaseAndPublishReq); i { case 0: return &v.state @@ -29467,7 +30062,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateReleaseAndPublishResp); i { case 0: return &v.state @@ -29479,7 +30074,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PublishResp); i { case 0: return &v.state @@ -29491,7 +30086,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateKvReq); i { case 0: return &v.state @@ -29503,7 +30098,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateKvResp); i { case 0: return &v.state @@ -29515,7 +30110,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateKvReq); i { case 0: return &v.state @@ -29527,7 +30122,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateKvResp); i { case 0: return &v.state @@ -29539,7 +30134,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKvsReq); i { case 0: return &v.state @@ -29551,7 +30146,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKvsResp); i { case 0: return &v.state @@ -29563,7 +30158,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteKvReq); i { case 0: return &v.state @@ -29575,7 +30170,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteKvResp); i { case 0: return &v.state @@ -29587,7 +30182,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchDeleteBizResourcesReq); i { case 0: return &v.state @@ -29599,7 +30194,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchDeleteAppResourcesReq); i { case 0: return &v.state @@ -29611,7 +30206,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchDeleteResp); i { case 0: return &v.state @@ -29623,7 +30218,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertKvsReq); i { case 0: return &v.state @@ -29635,7 +30230,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertKvsResp); i { case 0: return &v.state @@ -29647,7 +30242,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnDeleteKvReq); i { case 0: return &v.state @@ -29659,7 +30254,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnDeleteKvResp); i { case 0: return &v.state @@ -29671,7 +30266,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UndoKvReq); i { case 0: return &v.state @@ -29683,7 +30278,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UndoKvResp); i { case 0: return &v.state @@ -29695,7 +30290,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImportKvsReq); i { case 0: return &v.state @@ -29707,7 +30302,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImportKvsResp); i { case 0: return &v.state @@ -29719,7 +30314,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientsReq); i { case 0: return &v.state @@ -29731,7 +30326,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientsResp); i { case 0: return &v.state @@ -29743,7 +30338,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientEventsReq); i { case 0: return &v.state @@ -29755,7 +30350,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientEventsResp); i { case 0: return &v.state @@ -29767,7 +30362,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetryClientsReq); i { case 0: return &v.state @@ -29779,7 +30374,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetryClientsResp); i { case 0: return &v.state @@ -29791,7 +30386,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientQuerysReq); i { case 0: return &v.state @@ -29803,7 +30398,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientQuerysResp); i { case 0: return &v.state @@ -29815,7 +30410,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateClientQueryReq); i { case 0: return &v.state @@ -29827,7 +30422,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateClientQueryResp); i { case 0: return &v.state @@ -29839,7 +30434,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateClientQueryReq); i { case 0: return &v.state @@ -29851,7 +30446,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateClientQueryResp); i { case 0: return &v.state @@ -29863,7 +30458,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClientQueryReq); i { case 0: return &v.state @@ -29875,7 +30470,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClientQueryResp); i { case 0: return &v.state @@ -29887,7 +30482,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckClientQueryNameReq); i { case 0: return &v.state @@ -29899,7 +30494,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckClientQueryNameResp); i { case 0: return &v.state @@ -29911,7 +30506,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientLabelAndAnnotationReq); i { case 0: return &v.state @@ -29923,7 +30518,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsReq); i { case 0: return &v.state @@ -29935,7 +30530,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsResp); i { case 0: return &v.state @@ -29947,7 +30542,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareKvConflictsReq); i { case 0: return &v.state @@ -29959,7 +30554,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareKvConflictsResp); i { case 0: return &v.state @@ -29971,7 +30566,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTemplateAndNonTemplateCICountReq); i { case 0: return &v.state @@ -29983,7 +30578,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTemplateAndNonTemplateCICountResp); i { case 0: return &v.state @@ -29995,7 +30590,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CredentialScopePreviewResp_Detail); i { case 0: return &v.state @@ -30007,7 +30602,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertConfigItemsReq_ConfigItem); i { case 0: return &v.state @@ -30019,7 +30614,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertConfigItemsReq_TemplateBinding); i { case 0: return &v.state @@ -30031,7 +30626,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConfigItemByTupleReq_Item); i { case 0: return &v.state @@ -30043,7 +30638,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListHooksResp_Detail); i { case 0: return &v.state @@ -30055,7 +30650,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListHookRevisionsResp_ListHookRevisionsData); i { case 0: return &v.state @@ -30067,7 +30662,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetHookInfoSpec_Releases); i { case 0: return &v.state @@ -30079,7 +30674,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListHookRevisionReferencesResp_Detail); i { case 0: return &v.state @@ -30091,7 +30686,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListHookReferencesResp_Detail); i { case 0: return &v.state @@ -30103,7 +30698,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetReleaseHookResp_Hook); i { case 0: return &v.state @@ -30115,7 +30710,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertTemplatesReq_Item); i { case 0: return &v.state @@ -30127,7 +30722,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTemplateByTupleReq_Item); i { case 0: return &v.state @@ -30139,7 +30734,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTemplateByTupleResp_Item); i { case 0: return &v.state @@ -30151,7 +30746,19 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTemplateSetsAndRevisionsResp_Detail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_service_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTemplateRevisionResp_TemplateRevision); i { case 0: return &v.state @@ -30163,7 +30770,31 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImportFromTemplateSetToAppReq_Binding); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_service_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_service_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckTemplateSetReferencesAppsReq_Item); i { case 0: return &v.state @@ -30175,7 +30806,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckTemplateSetReferencesAppsResp_Item); i { case 0: return &v.state @@ -30187,7 +30818,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllGroupsResp_ListAllGroupsData); i { case 0: return &v.state @@ -30199,7 +30830,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllGroupsResp_ListAllGroupsData_BindApp); i { case 0: return &v.state @@ -30211,7 +30842,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAppGroupsResp_ListAppGroupsData); i { case 0: return &v.state @@ -30223,7 +30854,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGroupReleasedAppsResp_ListGroupReleasedAppsData); i { case 0: return &v.state @@ -30235,7 +30866,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertKvsReq_Kv); i { case 0: return &v.state @@ -30247,7 +30878,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[329].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientsReq_Order); i { case 0: return &v.state @@ -30259,7 +30890,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[330].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientsResp_Item); i { case 0: return &v.state @@ -30271,7 +30902,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[331].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientEventsReq_Order); i { case 0: return &v.state @@ -30283,7 +30914,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[332].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsResp_NonTemplateConfig); i { case 0: return &v.state @@ -30295,7 +30926,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[333].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsResp_TemplateConfig); i { case 0: return &v.state @@ -30307,7 +30938,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[334].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail); i { case 0: return &v.state @@ -30319,7 +30950,7 @@ func file_config_service_proto_init() { return nil } } - file_config_service_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} { + file_config_service_proto_msgTypes[335].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareKvConflictsResp_Kv); i { case 0: return &v.state @@ -30339,7 +30970,7 @@ func file_config_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_config_service_proto_rawDesc, NumEnums: 0, - NumMessages: 329, + NumMessages: 336, NumExtensions: 0, NumServices: 1, }, diff --git a/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.pb.gw.go b/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.pb.gw.go index a77c6d8bb3..a9f331af31 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.pb.gw.go +++ b/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.pb.gw.go @@ -1397,14 +1397,18 @@ func local_request_Config_GetReleasedConfigItem_0(ctx context.Context, marshaler } -var ( - filter_Config_ListConfigItems_0 = &utilities.DoubleArray{Encoding: map[string]int{"biz_id": 0, "bizId": 1, "app_id": 2, "appId": 3}, Base: []int{1, 1, 2, 3, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 3, 4, 5}} -) - func request_Config_ListConfigItems_0(ctx context.Context, marshaler runtime.Marshaler, client ConfigClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ListConfigItemsReq var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1432,13 +1436,6 @@ func request_Config_ListConfigItems_0(ctx context.Context, marshaler runtime.Mar return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "app_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_ListConfigItems_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.ListConfigItems(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err @@ -1448,6 +1445,14 @@ func local_request_Config_ListConfigItems_0(ctx context.Context, marshaler runti var protoReq ListConfigItemsReq var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -1475,13 +1480,6 @@ func local_request_Config_ListConfigItems_0(ctx context.Context, marshaler runti return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "app_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_ListConfigItems_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.ListConfigItems(ctx, &protoReq) return msg, metadata, err @@ -5003,14 +5001,18 @@ func local_request_Config_UpdateTemplate_0(ctx context.Context, marshaler runtim } -var ( - filter_Config_ListTemplates_0 = &utilities.DoubleArray{Encoding: map[string]int{"biz_id": 0, "bizId": 1, "template_space_id": 2, "templateSpaceId": 3}, Base: []int{1, 1, 2, 3, 4, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 2, 3, 4, 5}} -) - func request_Config_ListTemplates_0(ctx context.Context, marshaler runtime.Marshaler, client ConfigClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ListTemplatesReq var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -5038,13 +5040,6 @@ func request_Config_ListTemplates_0(ctx context.Context, marshaler runtime.Marsh return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "template_space_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_ListTemplates_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.ListTemplates(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err @@ -5054,6 +5049,14 @@ func local_request_Config_ListTemplates_0(ctx context.Context, marshaler runtime var protoReq ListTemplatesReq var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -5081,13 +5084,6 @@ func local_request_Config_ListTemplates_0(ctx context.Context, marshaler runtime return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "template_space_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_ListTemplates_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.ListTemplates(ctx, &protoReq) return msg, metadata, err @@ -5751,14 +5747,18 @@ func local_request_Config_ListTemplateByTuple_0(ctx context.Context, marshaler r } -var ( - filter_Config_ListTmplsOfTmplSet_0 = &utilities.DoubleArray{Encoding: map[string]int{"biz_id": 0, "bizId": 1, "template_space_id": 2, "templateSpaceId": 3, "template_set_id": 4, "templateSetId": 5}, Base: []int{1, 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7}} -) - func request_Config_ListTmplsOfTmplSet_0(ctx context.Context, marshaler runtime.Marshaler, client ConfigClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ListTmplsOfTmplSetReq var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -5796,13 +5796,6 @@ func request_Config_ListTmplsOfTmplSet_0(ctx context.Context, marshaler runtime. return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "template_set_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_ListTmplsOfTmplSet_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.ListTmplsOfTmplSet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err @@ -5812,6 +5805,14 @@ func local_request_Config_ListTmplsOfTmplSet_0(ctx context.Context, marshaler ru var protoReq ListTmplsOfTmplSetReq var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -5849,14 +5850,79 @@ func local_request_Config_ListTmplsOfTmplSet_0(ctx context.Context, marshaler ru return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "template_set_id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + msg, err := server.ListTmplsOfTmplSet(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Config_ListTemplateSetsAndRevisions_0(ctx context.Context, marshaler runtime.Marshaler, client ConfigClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListTemplateSetsAndRevisionsReq + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["biz_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "biz_id") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Config_ListTmplsOfTmplSet_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + protoReq.BizId, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "biz_id", err) } - msg, err := server.ListTmplsOfTmplSet(ctx, &protoReq) + val, ok = pathParams["template_set_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "template_set_id") + } + + protoReq.TemplateSetId, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "template_set_id", err) + } + + msg, err := client.ListTemplateSetsAndRevisions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Config_ListTemplateSetsAndRevisions_0(ctx context.Context, marshaler runtime.Marshaler, server ConfigServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListTemplateSetsAndRevisionsReq + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["biz_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "biz_id") + } + + protoReq.BizId, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "biz_id", err) + } + + val, ok = pathParams["template_set_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "template_set_id") + } + + protoReq.TemplateSetId, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "template_set_id", err) + } + + msg, err := server.ListTemplateSetsAndRevisions(ctx, &protoReq) return msg, metadata, err } @@ -8089,6 +8155,94 @@ func local_request_Config_CheckAppTemplateBinding_0(ctx context.Context, marshal } +func request_Config_ImportFromTemplateSetToApp_0(ctx context.Context, marshaler runtime.Marshaler, client ConfigClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ImportFromTemplateSetToAppReq + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["biz_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "biz_id") + } + + protoReq.BizId, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "biz_id", err) + } + + val, ok = pathParams["app_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "app_id") + } + + protoReq.AppId, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "app_id", err) + } + + msg, err := client.ImportFromTemplateSetToApp(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Config_ImportFromTemplateSetToApp_0(ctx context.Context, marshaler runtime.Marshaler, server ConfigServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ImportFromTemplateSetToAppReq + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["biz_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "biz_id") + } + + protoReq.BizId, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "biz_id", err) + } + + val, ok = pathParams["app_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "app_id") + } + + protoReq.AppId, err = runtime.Uint32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "app_id", err) + } + + msg, err := server.ImportFromTemplateSetToApp(ctx, &protoReq) + return msg, metadata, err + +} + func request_Config_ListTmplBoundCounts_0(ctx context.Context, marshaler runtime.Marshaler, client ConfigClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ListTmplBoundCountsReq var metadata runtime.ServerMetadata @@ -14799,7 +14953,7 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) - mux.Handle("GET", pattern_Config_ListConfigItems_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Config_ListConfigItems_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -15849,7 +16003,7 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) - mux.Handle("GET", pattern_Config_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Config_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -15857,7 +16011,7 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbcs.Config/ListTemplates", runtime.WithHTTPPathPattern("/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/templates")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbcs.Config/ListTemplates", runtime.WithHTTPPathPattern("/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/templates_list")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -16049,7 +16203,7 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) - mux.Handle("GET", pattern_Config_ListTmplsOfTmplSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Config_ListTmplsOfTmplSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -16074,6 +16228,31 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) + mux.Handle("GET", pattern_Config_ListTemplateSetsAndRevisions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbcs.Config/ListTemplateSetsAndRevisions", runtime.WithHTTPPathPattern("/api/v1/config/biz/{biz_id}/template_sets/{template_set_id}/template_revisions")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Config_ListTemplateSetsAndRevisions_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Config_ListTemplateSetsAndRevisions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Config_CreateTemplateRevision_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -16674,6 +16853,31 @@ func RegisterConfigHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) + mux.Handle("POST", pattern_Config_ImportFromTemplateSetToApp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/pbcs.Config/ImportFromTemplateSetToApp", runtime.WithHTTPPathPattern("/api/v1/config/biz/{biz_id}/apps/{app_id}/template_bindings/import_template_set")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Config_ImportFromTemplateSetToApp_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Config_ImportFromTemplateSetToApp_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Config_ListTmplBoundCounts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -18867,7 +19071,7 @@ func RegisterConfigHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) - mux.Handle("GET", pattern_Config_ListConfigItems_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Config_ListConfigItems_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -19791,13 +19995,13 @@ func RegisterConfigHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) - mux.Handle("GET", pattern_Config_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Config_ListTemplates_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/pbcs.Config/ListTemplates", runtime.WithHTTPPathPattern("/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/templates")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/pbcs.Config/ListTemplates", runtime.WithHTTPPathPattern("/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/templates_list")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -19967,7 +20171,7 @@ func RegisterConfigHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) - mux.Handle("GET", pattern_Config_ListTmplsOfTmplSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_Config_ListTmplsOfTmplSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -19989,6 +20193,28 @@ func RegisterConfigHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) + mux.Handle("GET", pattern_Config_ListTemplateSetsAndRevisions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/pbcs.Config/ListTemplateSetsAndRevisions", runtime.WithHTTPPathPattern("/api/v1/config/biz/{biz_id}/template_sets/{template_set_id}/template_revisions")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Config_ListTemplateSetsAndRevisions_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Config_ListTemplateSetsAndRevisions_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Config_CreateTemplateRevision_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -20517,6 +20743,28 @@ func RegisterConfigHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) + mux.Handle("POST", pattern_Config_ImportFromTemplateSetToApp_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/pbcs.Config/ImportFromTemplateSetToApp", runtime.WithHTTPPathPattern("/api/v1/config/biz/{biz_id}/apps/{app_id}/template_bindings/import_template_set")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Config_ImportFromTemplateSetToApp_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_Config_ImportFromTemplateSetToApp_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Config_ListTmplBoundCounts_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -22221,7 +22469,7 @@ var ( pattern_Config_UpdateTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 1, 0, 4, 1, 5, 8}, []string{"api", "v1", "config", "biz", "biz_id", "template_spaces", "template_space_id", "templates", "template_id"}, "")) - pattern_Config_ListTemplates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"api", "v1", "config", "biz", "biz_id", "template_spaces", "template_space_id", "templates"}, "")) + pattern_Config_ListTemplates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"api", "v1", "config", "biz", "biz_id", "template_spaces", "template_space_id", "templates_list"}, "")) pattern_Config_BatchUpsertTemplates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8}, []string{"api", "v1", "config", "biz", "biz_id", "template_spaces", "template_space_id", "templates", "batch_upsert_templates"}, "")) @@ -22239,6 +22487,8 @@ var ( pattern_Config_ListTmplsOfTmplSet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 1, 0, 4, 1, 5, 8, 2, 9}, []string{"api", "v1", "config", "biz", "biz_id", "template_spaces", "template_space_id", "template_sets", "template_set_id", "templates"}, "")) + pattern_Config_ListTemplateSetsAndRevisions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"api", "v1", "config", "biz", "biz_id", "template_sets", "template_set_id", "template_revisions"}, "")) + pattern_Config_CreateTemplateRevision_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 1, 0, 4, 1, 5, 8, 2, 9}, []string{"api", "v1", "config", "biz", "biz_id", "template_spaces", "template_space_id", "templates", "template_id", "template_revisions"}, "")) pattern_Config_UpdateTemplateRevision_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 1, 0, 4, 1, 5, 8, 2, 9}, []string{"api", "v1", "config", "biz", "biz_id", "template_spaces", "template_space_id", "templates", "template_id", "template_revisions"}, "")) @@ -22287,6 +22537,8 @@ var ( pattern_Config_CheckAppTemplateBinding_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8}, []string{"api", "v1", "config", "biz", "biz_id", "apps", "app_id", "template_bindings", "conflict_check"}, "")) + pattern_Config_ImportFromTemplateSetToApp_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8}, []string{"api", "v1", "config", "biz", "biz_id", "apps", "app_id", "template_bindings", "import_template_set"}, "")) + pattern_Config_ListTmplBoundCounts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 2, 8}, []string{"api", "v1", "config", "biz", "biz_id", "template_spaces", "template_space_id", "templates", "bound_counts"}, "")) pattern_Config_ListTmplRevisionBoundCounts_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 1, 0, 4, 1, 5, 8, 2, 9, 2, 10}, []string{"api", "v1", "config", "biz", "biz_id", "template_spaces", "template_space_id", "templates", "template_id", "template_revisions", "bound_counts"}, "")) @@ -22567,6 +22819,8 @@ var ( forward_Config_ListTmplsOfTmplSet_0 = runtime.ForwardResponseMessage + forward_Config_ListTemplateSetsAndRevisions_0 = runtime.ForwardResponseMessage + forward_Config_CreateTemplateRevision_0 = runtime.ForwardResponseMessage forward_Config_UpdateTemplateRevision_0 = runtime.ForwardResponseMessage @@ -22615,6 +22869,8 @@ var ( forward_Config_CheckAppTemplateBinding_0 = runtime.ForwardResponseMessage + forward_Config_ImportFromTemplateSetToApp_0 = runtime.ForwardResponseMessage + forward_Config_ListTmplBoundCounts_0 = runtime.ForwardResponseMessage forward_Config_ListTmplRevisionBoundCounts_0 = runtime.ForwardResponseMessage diff --git a/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.proto b/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.proto index fcd25a88d5..a30a7a21e7 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.proto +++ b/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service.proto @@ -134,7 +134,8 @@ service Config { } rpc ListConfigItems(ListConfigItemsReq) returns (ListConfigItemsResp) { option (google.api.http) = { - get: "/api/v1/config/biz/{biz_id}/apps/{app_id}/config_items" + post: "/api/v1/config/biz/{biz_id}/apps/{app_id}/config_items" + body: "*" }; } rpc ListReleasedConfigItems(ListReleasedConfigItemsReq) returns (ListReleasedConfigItemsResp) { @@ -387,8 +388,8 @@ service Config { } rpc ListTemplates(ListTemplatesReq) returns (ListTemplatesResp) { option (google.api.http) = { - get: "/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/" - "templates" + post: "/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/templates_list" + body: "*" }; } rpc BatchUpsertTemplates(BatchUpsertTemplatesReq) returns (BatchUpsertTemplatesResp) { @@ -439,8 +440,14 @@ service Config { } rpc ListTmplsOfTmplSet(ListTmplsOfTmplSetReq) returns (ListTmplsOfTmplSetResp) { option (google.api.http) = { - get: "/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/" - "template_sets/{template_set_id}/templates" + post: "/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/" + "template_sets/{template_set_id}/templates" + body: "*" + }; + } + rpc ListTemplateSetsAndRevisions(ListTemplateSetsAndRevisionsReq) returns (ListTemplateSetsAndRevisionsResp) { + option (google.api.http) = { + get: "/api/v1/config/biz/{biz_id}/template_sets/{template_set_id}/template_revisions" }; } @@ -604,6 +611,12 @@ option (google.api.http) = { body: "*" }; } + rpc ImportFromTemplateSetToApp(ImportFromTemplateSetToAppReq) returns (ImportFromTemplateSetToAppResp) { + option (google.api.http) = { + post: "/api/v1/config/biz/{biz_id}/apps/{app_id}/template_bindings/import_template_set" + body: "*" + }; + } rpc ListTmplBoundCounts(ListTmplBoundCountsReq) returns (ListTmplBoundCountsResp) { option (google.api.http) = { @@ -1345,7 +1358,7 @@ message ListConfigItemsReq { string search_value = 4; uint32 start = 5; uint32 limit = 6; - string ids = 7; + repeated uint32 ids = 7; bool all = 8; bool with_status = 9; // ADD、REVISE、DELETE、UNCHANGE @@ -1850,7 +1863,7 @@ message ListTemplatesReq { string search_value = 4; uint32 start = 5; uint32 limit = 6; - string ids = 7; + repeated uint32 ids = 7; bool all = 8; } @@ -1977,7 +1990,7 @@ message ListTmplsOfTmplSetReq { string search_value = 5; uint32 start = 6; uint32 limit = 7; - string ids = 8; + repeated uint32 ids = 8; bool all = 9; } @@ -1986,6 +1999,19 @@ message ListTmplsOfTmplSetResp { repeated pbtemplate.Template details = 2; } +message ListTemplateSetsAndRevisionsReq { + uint32 biz_id = 1; + uint32 template_set_id = 2; +} + +message ListTemplateSetsAndRevisionsResp { + message Detail { + pbtemplate.Template template = 1; + repeated pbtr.TemplateRevision template_revision = 2; + } + repeated Detail details = 1; +} + message CreateTemplateRevisionReq { uint32 biz_id = 1; uint32 template_space_id = 2; @@ -2290,6 +2316,28 @@ message CheckAppTemplateBindingResp { repeated pbatb.Conflict details = 1; } +message ImportFromTemplateSetToAppReq { + message Binding { + message TemplateRevisionBinding { + uint32 template_id = 1; + uint32 template_revision_id = 2; + bool is_latest = 3; + string template_name = 4; + string template_revision_name = 5; + } + uint32 template_set_id = 1; + uint32 template_space_id = 2; + string template_space_name = 3; + string template_set_name = 4; + repeated TemplateRevisionBinding template_revisions = 5; + } + uint32 biz_id = 1; + uint32 app_id = 2; + repeated Binding bindings = 3; +} + +message ImportFromTemplateSetToAppResp {} + message ListTmplBoundCountsReq { uint32 biz_id = 1; uint32 template_space_id = 2; @@ -2462,6 +2510,8 @@ message CheckTemplateSetReferencesAppsResp { string app_name = 4; bool app_exceeds_limit = 5; bool template_set_exceeds_limit = 6; + uint32 app_exceeds_quantity = 7; + uint32 template_set_exceeds_quantity = 8; } repeated Item items = 1; } diff --git a/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service_grpc.pb.go b/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service_grpc.pb.go index 0cf441aa32..9372db49eb 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service_grpc.pb.go +++ b/bcs-services/bcs-bscp/pkg/protocol/config-server/config_service_grpc.pb.go @@ -93,6 +93,7 @@ const ( Config_ListTemplatesNotBound_FullMethodName = "/pbcs.Config/ListTemplatesNotBound" Config_ListTemplateByTuple_FullMethodName = "/pbcs.Config/ListTemplateByTuple" Config_ListTmplsOfTmplSet_FullMethodName = "/pbcs.Config/ListTmplsOfTmplSet" + Config_ListTemplateSetsAndRevisions_FullMethodName = "/pbcs.Config/ListTemplateSetsAndRevisions" Config_CreateTemplateRevision_FullMethodName = "/pbcs.Config/CreateTemplateRevision" Config_UpdateTemplateRevision_FullMethodName = "/pbcs.Config/UpdateTemplateRevision" Config_ListTemplateRevisions_FullMethodName = "/pbcs.Config/ListTemplateRevisions" @@ -117,6 +118,7 @@ const ( Config_DeleteAppBoundTmplSets_FullMethodName = "/pbcs.Config/DeleteAppBoundTmplSets" Config_RemoveAppBoundTmplSet_FullMethodName = "/pbcs.Config/RemoveAppBoundTmplSet" Config_CheckAppTemplateBinding_FullMethodName = "/pbcs.Config/CheckAppTemplateBinding" + Config_ImportFromTemplateSetToApp_FullMethodName = "/pbcs.Config/ImportFromTemplateSetToApp" Config_ListTmplBoundCounts_FullMethodName = "/pbcs.Config/ListTmplBoundCounts" Config_ListTmplRevisionBoundCounts_FullMethodName = "/pbcs.Config/ListTmplRevisionBoundCounts" Config_ListTmplSetBoundCounts_FullMethodName = "/pbcs.Config/ListTmplSetBoundCounts" @@ -267,19 +269,20 @@ type ConfigClient interface { ListTemplatesNotBound(ctx context.Context, in *ListTemplatesNotBoundReq, opts ...grpc.CallOption) (*ListTemplatesNotBoundResp, error) ListTemplateByTuple(ctx context.Context, in *ListTemplateByTupleReq, opts ...grpc.CallOption) (*ListTemplateByTupleResp, error) ListTmplsOfTmplSet(ctx context.Context, in *ListTmplsOfTmplSetReq, opts ...grpc.CallOption) (*ListTmplsOfTmplSetResp, error) + ListTemplateSetsAndRevisions(ctx context.Context, in *ListTemplateSetsAndRevisionsReq, opts ...grpc.CallOption) (*ListTemplateSetsAndRevisionsResp, error) CreateTemplateRevision(ctx context.Context, in *CreateTemplateRevisionReq, opts ...grpc.CallOption) (*CreateTemplateRevisionResp, error) UpdateTemplateRevision(ctx context.Context, in *UpdateTemplateRevisionReq, opts ...grpc.CallOption) (*UpdateTemplateRevisionResp, error) ListTemplateRevisions(ctx context.Context, in *ListTemplateRevisionsReq, opts ...grpc.CallOption) (*ListTemplateRevisionsResp, error) GetTemplateRevision(ctx context.Context, in *GetTemplateRevisionReq, opts ...grpc.CallOption) (*GetTemplateRevisionResp, error) // 暂时不对外开发(删除模版后,服务引用的latest版本会回退到上一个老版本) - //rpc DeleteTemplateRevision(DeleteTemplateRevisionReq) returns - //(DeleteTemplateRevisionResp) { + // rpc DeleteTemplateRevision(DeleteTemplateRevisionReq) returns + // (DeleteTemplateRevisionResp) { // - //option (google.api.http) = { - //delete : - //"/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/templates/{template_id}/template_revisions/{template_revision_id}" - //}; - //} + // option (google.api.http) = { + // delete : + // "/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/templates/{template_id}/template_revisions/{template_revision_id}" + // }; + // } ListTemplateRevisionsByIDs(ctx context.Context, in *ListTemplateRevisionsByIDsReq, opts ...grpc.CallOption) (*ListTemplateRevisionsByIDsResp, error) ListTmplRevisionNamesByTmplIDs(ctx context.Context, in *ListTmplRevisionNamesByTmplIDsReq, opts ...grpc.CallOption) (*ListTmplRevisionNamesByTmplIDsResp, error) CreateTemplateSet(ctx context.Context, in *CreateTemplateSetReq, opts ...grpc.CallOption) (*CreateTemplateSetResp, error) @@ -300,6 +303,7 @@ type ConfigClient interface { DeleteAppBoundTmplSets(ctx context.Context, in *DeleteAppBoundTmplSetsReq, opts ...grpc.CallOption) (*DeleteAppBoundTmplSetsResp, error) RemoveAppBoundTmplSet(ctx context.Context, in *RemoveAppBoundTmplSetReq, opts ...grpc.CallOption) (*RemoveAppBoundTmplSetResp, error) CheckAppTemplateBinding(ctx context.Context, in *CheckAppTemplateBindingReq, opts ...grpc.CallOption) (*CheckAppTemplateBindingResp, error) + ImportFromTemplateSetToApp(ctx context.Context, in *ImportFromTemplateSetToAppReq, opts ...grpc.CallOption) (*ImportFromTemplateSetToAppResp, error) ListTmplBoundCounts(ctx context.Context, in *ListTmplBoundCountsReq, opts ...grpc.CallOption) (*ListTmplBoundCountsResp, error) ListTmplRevisionBoundCounts(ctx context.Context, in *ListTmplRevisionBoundCountsReq, opts ...grpc.CallOption) (*ListTmplRevisionBoundCountsResp, error) ListTmplSetBoundCounts(ctx context.Context, in *ListTmplSetBoundCountsReq, opts ...grpc.CallOption) (*ListTmplSetBoundCountsResp, error) @@ -989,6 +993,15 @@ func (c *configClient) ListTmplsOfTmplSet(ctx context.Context, in *ListTmplsOfTm return out, nil } +func (c *configClient) ListTemplateSetsAndRevisions(ctx context.Context, in *ListTemplateSetsAndRevisionsReq, opts ...grpc.CallOption) (*ListTemplateSetsAndRevisionsResp, error) { + out := new(ListTemplateSetsAndRevisionsResp) + err := c.cc.Invoke(ctx, Config_ListTemplateSetsAndRevisions_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *configClient) CreateTemplateRevision(ctx context.Context, in *CreateTemplateRevisionReq, opts ...grpc.CallOption) (*CreateTemplateRevisionResp, error) { out := new(CreateTemplateRevisionResp) err := c.cc.Invoke(ctx, Config_CreateTemplateRevision_FullMethodName, in, out, opts...) @@ -1205,6 +1218,15 @@ func (c *configClient) CheckAppTemplateBinding(ctx context.Context, in *CheckApp return out, nil } +func (c *configClient) ImportFromTemplateSetToApp(ctx context.Context, in *ImportFromTemplateSetToAppReq, opts ...grpc.CallOption) (*ImportFromTemplateSetToAppResp, error) { + out := new(ImportFromTemplateSetToAppResp) + err := c.cc.Invoke(ctx, Config_ImportFromTemplateSetToApp_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *configClient) ListTmplBoundCounts(ctx context.Context, in *ListTmplBoundCountsReq, opts ...grpc.CallOption) (*ListTmplBoundCountsResp, error) { out := new(ListTmplBoundCountsResp) err := c.cc.Invoke(ctx, Config_ListTmplBoundCounts_FullMethodName, in, out, opts...) @@ -1929,19 +1951,20 @@ type ConfigServer interface { ListTemplatesNotBound(context.Context, *ListTemplatesNotBoundReq) (*ListTemplatesNotBoundResp, error) ListTemplateByTuple(context.Context, *ListTemplateByTupleReq) (*ListTemplateByTupleResp, error) ListTmplsOfTmplSet(context.Context, *ListTmplsOfTmplSetReq) (*ListTmplsOfTmplSetResp, error) + ListTemplateSetsAndRevisions(context.Context, *ListTemplateSetsAndRevisionsReq) (*ListTemplateSetsAndRevisionsResp, error) CreateTemplateRevision(context.Context, *CreateTemplateRevisionReq) (*CreateTemplateRevisionResp, error) UpdateTemplateRevision(context.Context, *UpdateTemplateRevisionReq) (*UpdateTemplateRevisionResp, error) ListTemplateRevisions(context.Context, *ListTemplateRevisionsReq) (*ListTemplateRevisionsResp, error) GetTemplateRevision(context.Context, *GetTemplateRevisionReq) (*GetTemplateRevisionResp, error) // 暂时不对外开发(删除模版后,服务引用的latest版本会回退到上一个老版本) - //rpc DeleteTemplateRevision(DeleteTemplateRevisionReq) returns - //(DeleteTemplateRevisionResp) { + // rpc DeleteTemplateRevision(DeleteTemplateRevisionReq) returns + // (DeleteTemplateRevisionResp) { // - //option (google.api.http) = { - //delete : - //"/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/templates/{template_id}/template_revisions/{template_revision_id}" - //}; - //} + // option (google.api.http) = { + // delete : + // "/api/v1/config/biz/{biz_id}/template_spaces/{template_space_id}/templates/{template_id}/template_revisions/{template_revision_id}" + // }; + // } ListTemplateRevisionsByIDs(context.Context, *ListTemplateRevisionsByIDsReq) (*ListTemplateRevisionsByIDsResp, error) ListTmplRevisionNamesByTmplIDs(context.Context, *ListTmplRevisionNamesByTmplIDsReq) (*ListTmplRevisionNamesByTmplIDsResp, error) CreateTemplateSet(context.Context, *CreateTemplateSetReq) (*CreateTemplateSetResp, error) @@ -1962,6 +1985,7 @@ type ConfigServer interface { DeleteAppBoundTmplSets(context.Context, *DeleteAppBoundTmplSetsReq) (*DeleteAppBoundTmplSetsResp, error) RemoveAppBoundTmplSet(context.Context, *RemoveAppBoundTmplSetReq) (*RemoveAppBoundTmplSetResp, error) CheckAppTemplateBinding(context.Context, *CheckAppTemplateBindingReq) (*CheckAppTemplateBindingResp, error) + ImportFromTemplateSetToApp(context.Context, *ImportFromTemplateSetToAppReq) (*ImportFromTemplateSetToAppResp, error) ListTmplBoundCounts(context.Context, *ListTmplBoundCountsReq) (*ListTmplBoundCountsResp, error) ListTmplRevisionBoundCounts(context.Context, *ListTmplRevisionBoundCountsReq) (*ListTmplRevisionBoundCountsResp, error) ListTmplSetBoundCounts(context.Context, *ListTmplSetBoundCountsReq) (*ListTmplSetBoundCountsResp, error) @@ -2245,6 +2269,9 @@ func (UnimplementedConfigServer) ListTemplateByTuple(context.Context, *ListTempl func (UnimplementedConfigServer) ListTmplsOfTmplSet(context.Context, *ListTmplsOfTmplSetReq) (*ListTmplsOfTmplSetResp, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTmplsOfTmplSet not implemented") } +func (UnimplementedConfigServer) ListTemplateSetsAndRevisions(context.Context, *ListTemplateSetsAndRevisionsReq) (*ListTemplateSetsAndRevisionsResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTemplateSetsAndRevisions not implemented") +} func (UnimplementedConfigServer) CreateTemplateRevision(context.Context, *CreateTemplateRevisionReq) (*CreateTemplateRevisionResp, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateTemplateRevision not implemented") } @@ -2317,6 +2344,9 @@ func (UnimplementedConfigServer) RemoveAppBoundTmplSet(context.Context, *RemoveA func (UnimplementedConfigServer) CheckAppTemplateBinding(context.Context, *CheckAppTemplateBindingReq) (*CheckAppTemplateBindingResp, error) { return nil, status.Errorf(codes.Unimplemented, "method CheckAppTemplateBinding not implemented") } +func (UnimplementedConfigServer) ImportFromTemplateSetToApp(context.Context, *ImportFromTemplateSetToAppReq) (*ImportFromTemplateSetToAppResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ImportFromTemplateSetToApp not implemented") +} func (UnimplementedConfigServer) ListTmplBoundCounts(context.Context, *ListTmplBoundCountsReq) (*ListTmplBoundCountsResp, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTmplBoundCounts not implemented") } @@ -3751,6 +3781,24 @@ func _Config_ListTmplsOfTmplSet_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Config_ListTemplateSetsAndRevisions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTemplateSetsAndRevisionsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).ListTemplateSetsAndRevisions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_ListTemplateSetsAndRevisions_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).ListTemplateSetsAndRevisions(ctx, req.(*ListTemplateSetsAndRevisionsReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Config_CreateTemplateRevision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateTemplateRevisionReq) if err := dec(in); err != nil { @@ -4183,6 +4231,24 @@ func _Config_CheckAppTemplateBinding_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _Config_ImportFromTemplateSetToApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ImportFromTemplateSetToAppReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).ImportFromTemplateSetToApp(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_ImportFromTemplateSetToApp_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).ImportFromTemplateSetToApp(ctx, req.(*ImportFromTemplateSetToAppReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Config_ListTmplBoundCounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListTmplBoundCountsReq) if err := dec(in); err != nil { @@ -5754,6 +5820,10 @@ var Config_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListTmplsOfTmplSet", Handler: _Config_ListTmplsOfTmplSet_Handler, }, + { + MethodName: "ListTemplateSetsAndRevisions", + Handler: _Config_ListTemplateSetsAndRevisions_Handler, + }, { MethodName: "CreateTemplateRevision", Handler: _Config_CreateTemplateRevision_Handler, @@ -5850,6 +5920,10 @@ var Config_ServiceDesc = grpc.ServiceDesc{ MethodName: "CheckAppTemplateBinding", Handler: _Config_CheckAppTemplateBinding_Handler, }, + { + MethodName: "ImportFromTemplateSetToApp", + Handler: _Config_ImportFromTemplateSetToApp_Handler, + }, { MethodName: "ListTmplBoundCounts", Handler: _Config_ListTmplBoundCounts_Handler, diff --git a/bcs-services/bcs-bscp/pkg/protocol/config-server/helper.go b/bcs-services/bcs-bscp/pkg/protocol/config-server/helper.go index a68f32efed..2123e37519 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/config-server/helper.go +++ b/bcs-services/bcs-bscp/pkg/protocol/config-server/helper.go @@ -15,11 +15,12 @@ package pbcs import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // Validate 新建服务校验 -func (r *CreateAppReq) Validate() error { - if err := validator.ValidateAppName(r.Name); err != nil { +func (r *CreateAppReq) Validate(kt *kit.Kit) error { + if err := validator.ValidateAppName(kt, r.Name); err != nil { return err } return nil diff --git a/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service.pb.go b/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service.pb.go index 6c853c32da..b90c3fd56c 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service.pb.go +++ b/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service.pb.go @@ -2292,15 +2292,15 @@ type ListConfigItemsReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` - AppId uint32 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` - SearchFields string `protobuf:"bytes,3,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` - SearchValue string `protobuf:"bytes,4,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` - Start uint32 `protobuf:"varint,5,opt,name=start,proto3" json:"start,omitempty"` - Limit uint32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` - Ids string `protobuf:"bytes,7,opt,name=ids,proto3" json:"ids,omitempty"` - All bool `protobuf:"varint,8,opt,name=all,proto3" json:"all,omitempty"` - WithStatus bool `protobuf:"varint,9,opt,name=with_status,json=withStatus,proto3" json:"with_status,omitempty"` + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + AppId uint32 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + SearchFields string `protobuf:"bytes,3,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` + SearchValue string `protobuf:"bytes,4,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` + Start uint32 `protobuf:"varint,5,opt,name=start,proto3" json:"start,omitempty"` + Limit uint32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` + Ids []uint32 `protobuf:"varint,7,rep,packed,name=ids,proto3" json:"ids,omitempty"` + All bool `protobuf:"varint,8,opt,name=all,proto3" json:"all,omitempty"` + WithStatus bool `protobuf:"varint,9,opt,name=with_status,json=withStatus,proto3" json:"with_status,omitempty"` // ADD、REVISE、DELETE、UNCHANGE Status []string `protobuf:"bytes,10,rep,name=status,proto3" json:"status,omitempty"` } @@ -2379,11 +2379,11 @@ func (x *ListConfigItemsReq) GetLimit() uint32 { return 0 } -func (x *ListConfigItemsReq) GetIds() string { +func (x *ListConfigItemsReq) GetIds() []uint32 { if x != nil { return x.Ids } - return "" + return nil } func (x *ListConfigItemsReq) GetAll() bool { @@ -6381,14 +6381,14 @@ type ListTemplatesReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` - TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` - SearchFields string `protobuf:"bytes,3,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` - SearchValue string `protobuf:"bytes,4,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` - Start uint32 `protobuf:"varint,5,opt,name=start,proto3" json:"start,omitempty"` - Limit uint32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` - Ids string `protobuf:"bytes,7,opt,name=ids,proto3" json:"ids,omitempty"` - All bool `protobuf:"varint,8,opt,name=all,proto3" json:"all,omitempty"` + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` + SearchFields string `protobuf:"bytes,3,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` + SearchValue string `protobuf:"bytes,4,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` + Start uint32 `protobuf:"varint,5,opt,name=start,proto3" json:"start,omitempty"` + Limit uint32 `protobuf:"varint,6,opt,name=limit,proto3" json:"limit,omitempty"` + Ids []uint32 `protobuf:"varint,7,rep,packed,name=ids,proto3" json:"ids,omitempty"` + All bool `protobuf:"varint,8,opt,name=all,proto3" json:"all,omitempty"` } func (x *ListTemplatesReq) Reset() { @@ -6465,11 +6465,11 @@ func (x *ListTemplatesReq) GetLimit() uint32 { return 0 } -func (x *ListTemplatesReq) GetIds() string { +func (x *ListTemplatesReq) GetIds() []uint32 { if x != nil { return x.Ids } - return "" + return nil } func (x *ListTemplatesReq) GetAll() bool { @@ -7162,15 +7162,15 @@ type ListTmplsOfTmplSetReq struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` - TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` - TemplateSetId uint32 `protobuf:"varint,3,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` - SearchFields string `protobuf:"bytes,4,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` - SearchValue string `protobuf:"bytes,5,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` - Start uint32 `protobuf:"varint,6,opt,name=start,proto3" json:"start,omitempty"` - Limit uint32 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"` - Ids string `protobuf:"bytes,8,opt,name=ids,proto3" json:"ids,omitempty"` - All bool `protobuf:"varint,9,opt,name=all,proto3" json:"all,omitempty"` + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` + TemplateSetId uint32 `protobuf:"varint,3,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` + SearchFields string `protobuf:"bytes,4,opt,name=search_fields,json=searchFields,proto3" json:"search_fields,omitempty"` + SearchValue string `protobuf:"bytes,5,opt,name=search_value,json=searchValue,proto3" json:"search_value,omitempty"` + Start uint32 `protobuf:"varint,6,opt,name=start,proto3" json:"start,omitempty"` + Limit uint32 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"` + Ids []uint32 `protobuf:"varint,8,rep,packed,name=ids,proto3" json:"ids,omitempty"` + All bool `protobuf:"varint,9,opt,name=all,proto3" json:"all,omitempty"` } func (x *ListTmplsOfTmplSetReq) Reset() { @@ -7254,11 +7254,11 @@ func (x *ListTmplsOfTmplSetReq) GetLimit() uint32 { return 0 } -func (x *ListTmplsOfTmplSetReq) GetIds() string { +func (x *ListTmplsOfTmplSetReq) GetIds() []uint32 { if x != nil { return x.Ids } - return "" + return nil } func (x *ListTmplsOfTmplSetReq) GetAll() bool { @@ -7323,6 +7323,108 @@ func (x *ListTmplsOfTmplSetResp) GetDetails() []*template.Template { return nil } +type ListTemplateSetsAndRevisionsReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + TemplateSetId uint32 `protobuf:"varint,2,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` +} + +func (x *ListTemplateSetsAndRevisionsReq) Reset() { + *x = ListTemplateSetsAndRevisionsReq{} + if protoimpl.UnsafeEnabled { + mi := &file_data_service_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTemplateSetsAndRevisionsReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTemplateSetsAndRevisionsReq) ProtoMessage() {} + +func (x *ListTemplateSetsAndRevisionsReq) ProtoReflect() protoreflect.Message { + mi := &file_data_service_proto_msgTypes[115] + 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 ListTemplateSetsAndRevisionsReq.ProtoReflect.Descriptor instead. +func (*ListTemplateSetsAndRevisionsReq) Descriptor() ([]byte, []int) { + return file_data_service_proto_rawDescGZIP(), []int{115} +} + +func (x *ListTemplateSetsAndRevisionsReq) GetBizId() uint32 { + if x != nil { + return x.BizId + } + return 0 +} + +func (x *ListTemplateSetsAndRevisionsReq) GetTemplateSetId() uint32 { + if x != nil { + return x.TemplateSetId + } + return 0 +} + +type ListTemplateSetsAndRevisionsResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Details []*ListTemplateSetsAndRevisionsResp_Detail `protobuf:"bytes,1,rep,name=details,proto3" json:"details,omitempty"` +} + +func (x *ListTemplateSetsAndRevisionsResp) Reset() { + *x = ListTemplateSetsAndRevisionsResp{} + if protoimpl.UnsafeEnabled { + mi := &file_data_service_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTemplateSetsAndRevisionsResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTemplateSetsAndRevisionsResp) ProtoMessage() {} + +func (x *ListTemplateSetsAndRevisionsResp) ProtoReflect() protoreflect.Message { + mi := &file_data_service_proto_msgTypes[116] + 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 ListTemplateSetsAndRevisionsResp.ProtoReflect.Descriptor instead. +func (*ListTemplateSetsAndRevisionsResp) Descriptor() ([]byte, []int) { + return file_data_service_proto_rawDescGZIP(), []int{116} +} + +func (x *ListTemplateSetsAndRevisionsResp) GetDetails() []*ListTemplateSetsAndRevisionsResp_Detail { + if x != nil { + return x.Details + } + return nil +} + type ListTemplateByTupleReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -7334,7 +7436,7 @@ type ListTemplateByTupleReq struct { func (x *ListTemplateByTupleReq) Reset() { *x = ListTemplateByTupleReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[115] + mi := &file_data_service_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7347,7 +7449,7 @@ func (x *ListTemplateByTupleReq) String() string { func (*ListTemplateByTupleReq) ProtoMessage() {} func (x *ListTemplateByTupleReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[115] + mi := &file_data_service_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7360,7 +7462,7 @@ func (x *ListTemplateByTupleReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateByTupleReq.ProtoReflect.Descriptor instead. func (*ListTemplateByTupleReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{115} + return file_data_service_proto_rawDescGZIP(), []int{117} } func (x *ListTemplateByTupleReq) GetItems() []*ListTemplateByTupleReq_Item { @@ -7381,7 +7483,7 @@ type ListTemplateByTupleReqResp struct { func (x *ListTemplateByTupleReqResp) Reset() { *x = ListTemplateByTupleReqResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[116] + mi := &file_data_service_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7394,7 +7496,7 @@ func (x *ListTemplateByTupleReqResp) String() string { func (*ListTemplateByTupleReqResp) ProtoMessage() {} func (x *ListTemplateByTupleReqResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[116] + mi := &file_data_service_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7407,7 +7509,7 @@ func (x *ListTemplateByTupleReqResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateByTupleReqResp.ProtoReflect.Descriptor instead. func (*ListTemplateByTupleReqResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{116} + return file_data_service_proto_rawDescGZIP(), []int{118} } func (x *ListTemplateByTupleReqResp) GetItems() []*ListTemplateByTupleReqResp_Item { @@ -7430,7 +7532,7 @@ type BatchUpsertTemplatesReq struct { func (x *BatchUpsertTemplatesReq) Reset() { *x = BatchUpsertTemplatesReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[117] + mi := &file_data_service_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7443,7 +7545,7 @@ func (x *BatchUpsertTemplatesReq) String() string { func (*BatchUpsertTemplatesReq) ProtoMessage() {} func (x *BatchUpsertTemplatesReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[117] + mi := &file_data_service_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7456,7 +7558,7 @@ func (x *BatchUpsertTemplatesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertTemplatesReq.ProtoReflect.Descriptor instead. func (*BatchUpsertTemplatesReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{117} + return file_data_service_proto_rawDescGZIP(), []int{119} } func (x *BatchUpsertTemplatesReq) GetBizId() uint32 { @@ -7491,7 +7593,7 @@ type BatchUpsertTemplatesReqResp struct { func (x *BatchUpsertTemplatesReqResp) Reset() { *x = BatchUpsertTemplatesReqResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[118] + mi := &file_data_service_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7504,7 +7606,7 @@ func (x *BatchUpsertTemplatesReqResp) String() string { func (*BatchUpsertTemplatesReqResp) ProtoMessage() {} func (x *BatchUpsertTemplatesReqResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[118] + mi := &file_data_service_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7517,7 +7619,7 @@ func (x *BatchUpsertTemplatesReqResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertTemplatesReqResp.ProtoReflect.Descriptor instead. func (*BatchUpsertTemplatesReqResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{118} + return file_data_service_proto_rawDescGZIP(), []int{120} } func (x *BatchUpsertTemplatesReqResp) GetIds() []uint32 { @@ -7547,7 +7649,7 @@ type BatchUpdateTemplatePermissionsReq struct { func (x *BatchUpdateTemplatePermissionsReq) Reset() { *x = BatchUpdateTemplatePermissionsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[119] + mi := &file_data_service_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7560,7 +7662,7 @@ func (x *BatchUpdateTemplatePermissionsReq) String() string { func (*BatchUpdateTemplatePermissionsReq) ProtoMessage() {} func (x *BatchUpdateTemplatePermissionsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[119] + mi := &file_data_service_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7573,7 +7675,7 @@ func (x *BatchUpdateTemplatePermissionsReq) ProtoReflect() protoreflect.Message // Deprecated: Use BatchUpdateTemplatePermissionsReq.ProtoReflect.Descriptor instead. func (*BatchUpdateTemplatePermissionsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{119} + return file_data_service_proto_rawDescGZIP(), []int{121} } func (x *BatchUpdateTemplatePermissionsReq) GetBizId() uint32 { @@ -7657,7 +7759,7 @@ type BatchUpdateTemplatePermissionsResp struct { func (x *BatchUpdateTemplatePermissionsResp) Reset() { *x = BatchUpdateTemplatePermissionsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[120] + mi := &file_data_service_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7670,7 +7772,7 @@ func (x *BatchUpdateTemplatePermissionsResp) String() string { func (*BatchUpdateTemplatePermissionsResp) ProtoMessage() {} func (x *BatchUpdateTemplatePermissionsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[120] + mi := &file_data_service_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7683,7 +7785,7 @@ func (x *BatchUpdateTemplatePermissionsResp) ProtoReflect() protoreflect.Message // Deprecated: Use BatchUpdateTemplatePermissionsResp.ProtoReflect.Descriptor instead. func (*BatchUpdateTemplatePermissionsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{120} + return file_data_service_proto_rawDescGZIP(), []int{122} } func (x *BatchUpdateTemplatePermissionsResp) GetIds() []uint32 { @@ -7705,7 +7807,7 @@ type CreateTemplateRevisionReq struct { func (x *CreateTemplateRevisionReq) Reset() { *x = CreateTemplateRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[121] + mi := &file_data_service_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7718,7 +7820,7 @@ func (x *CreateTemplateRevisionReq) String() string { func (*CreateTemplateRevisionReq) ProtoMessage() {} func (x *CreateTemplateRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[121] + mi := &file_data_service_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7731,7 +7833,7 @@ func (x *CreateTemplateRevisionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateRevisionReq.ProtoReflect.Descriptor instead. func (*CreateTemplateRevisionReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{121} + return file_data_service_proto_rawDescGZIP(), []int{123} } func (x *CreateTemplateRevisionReq) GetAttachment() *template_revision.TemplateRevisionAttachment { @@ -7761,7 +7863,7 @@ type UpdateTemplateRevisionReq struct { func (x *UpdateTemplateRevisionReq) Reset() { *x = UpdateTemplateRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[122] + mi := &file_data_service_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7774,7 +7876,7 @@ func (x *UpdateTemplateRevisionReq) String() string { func (*UpdateTemplateRevisionReq) ProtoMessage() {} func (x *UpdateTemplateRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[122] + mi := &file_data_service_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7787,7 +7889,7 @@ func (x *UpdateTemplateRevisionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateRevisionReq.ProtoReflect.Descriptor instead. func (*UpdateTemplateRevisionReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{122} + return file_data_service_proto_rawDescGZIP(), []int{124} } func (x *UpdateTemplateRevisionReq) GetAttachment() *template_revision.TemplateRevisionAttachment { @@ -7829,7 +7931,7 @@ type ListTemplateRevisionsReq struct { func (x *ListTemplateRevisionsReq) Reset() { *x = ListTemplateRevisionsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[123] + mi := &file_data_service_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7842,7 +7944,7 @@ func (x *ListTemplateRevisionsReq) String() string { func (*ListTemplateRevisionsReq) ProtoMessage() {} func (x *ListTemplateRevisionsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[123] + mi := &file_data_service_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7855,7 +7957,7 @@ func (x *ListTemplateRevisionsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateRevisionsReq.ProtoReflect.Descriptor instead. func (*ListTemplateRevisionsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{123} + return file_data_service_proto_rawDescGZIP(), []int{125} } func (x *ListTemplateRevisionsReq) GetBizId() uint32 { @@ -7926,7 +8028,7 @@ type ListTemplateRevisionsResp struct { func (x *ListTemplateRevisionsResp) Reset() { *x = ListTemplateRevisionsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[124] + mi := &file_data_service_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7939,7 +8041,7 @@ func (x *ListTemplateRevisionsResp) String() string { func (*ListTemplateRevisionsResp) ProtoMessage() {} func (x *ListTemplateRevisionsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[124] + mi := &file_data_service_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7952,7 +8054,7 @@ func (x *ListTemplateRevisionsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateRevisionsResp.ProtoReflect.Descriptor instead. func (*ListTemplateRevisionsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{124} + return file_data_service_proto_rawDescGZIP(), []int{126} } func (x *ListTemplateRevisionsResp) GetCount() uint32 { @@ -7982,7 +8084,7 @@ type GetTemplateRevisionReq struct { func (x *GetTemplateRevisionReq) Reset() { *x = GetTemplateRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[125] + mi := &file_data_service_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7995,7 +8097,7 @@ func (x *GetTemplateRevisionReq) String() string { func (*GetTemplateRevisionReq) ProtoMessage() {} func (x *GetTemplateRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[125] + mi := &file_data_service_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8008,7 +8110,7 @@ func (x *GetTemplateRevisionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTemplateRevisionReq.ProtoReflect.Descriptor instead. func (*GetTemplateRevisionReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{125} + return file_data_service_proto_rawDescGZIP(), []int{127} } func (x *GetTemplateRevisionReq) GetBizId() uint32 { @@ -8043,7 +8145,7 @@ type GetTemplateRevisionResp struct { func (x *GetTemplateRevisionResp) Reset() { *x = GetTemplateRevisionResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[126] + mi := &file_data_service_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8056,7 +8158,7 @@ func (x *GetTemplateRevisionResp) String() string { func (*GetTemplateRevisionResp) ProtoMessage() {} func (x *GetTemplateRevisionResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[126] + mi := &file_data_service_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8069,7 +8171,7 @@ func (x *GetTemplateRevisionResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTemplateRevisionResp.ProtoReflect.Descriptor instead. func (*GetTemplateRevisionResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{126} + return file_data_service_proto_rawDescGZIP(), []int{128} } func (x *GetTemplateRevisionResp) GetDetail() *GetTemplateRevisionResp_TemplateRevision { @@ -8091,7 +8193,7 @@ type DeleteTemplateRevisionReq struct { func (x *DeleteTemplateRevisionReq) Reset() { *x = DeleteTemplateRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[127] + mi := &file_data_service_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8104,7 +8206,7 @@ func (x *DeleteTemplateRevisionReq) String() string { func (*DeleteTemplateRevisionReq) ProtoMessage() {} func (x *DeleteTemplateRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[127] + mi := &file_data_service_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8117,7 +8219,7 @@ func (x *DeleteTemplateRevisionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateRevisionReq.ProtoReflect.Descriptor instead. func (*DeleteTemplateRevisionReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{127} + return file_data_service_proto_rawDescGZIP(), []int{129} } func (x *DeleteTemplateRevisionReq) GetId() uint32 { @@ -8145,7 +8247,7 @@ type ListTemplateRevisionsByIDsReq struct { func (x *ListTemplateRevisionsByIDsReq) Reset() { *x = ListTemplateRevisionsByIDsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[128] + mi := &file_data_service_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8158,7 +8260,7 @@ func (x *ListTemplateRevisionsByIDsReq) String() string { func (*ListTemplateRevisionsByIDsReq) ProtoMessage() {} func (x *ListTemplateRevisionsByIDsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[128] + mi := &file_data_service_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8171,7 +8273,7 @@ func (x *ListTemplateRevisionsByIDsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateRevisionsByIDsReq.ProtoReflect.Descriptor instead. func (*ListTemplateRevisionsByIDsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{128} + return file_data_service_proto_rawDescGZIP(), []int{130} } func (x *ListTemplateRevisionsByIDsReq) GetIds() []uint32 { @@ -8192,7 +8294,7 @@ type ListTemplateRevisionsByIDsResp struct { func (x *ListTemplateRevisionsByIDsResp) Reset() { *x = ListTemplateRevisionsByIDsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[129] + mi := &file_data_service_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8205,7 +8307,7 @@ func (x *ListTemplateRevisionsByIDsResp) String() string { func (*ListTemplateRevisionsByIDsResp) ProtoMessage() {} func (x *ListTemplateRevisionsByIDsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[129] + mi := &file_data_service_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8218,7 +8320,7 @@ func (x *ListTemplateRevisionsByIDsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateRevisionsByIDsResp.ProtoReflect.Descriptor instead. func (*ListTemplateRevisionsByIDsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{129} + return file_data_service_proto_rawDescGZIP(), []int{131} } func (x *ListTemplateRevisionsByIDsResp) GetDetails() []*template_revision.TemplateRevision { @@ -8240,7 +8342,7 @@ type ListTmplRevisionNamesByTmplIDsReq struct { func (x *ListTmplRevisionNamesByTmplIDsReq) Reset() { *x = ListTmplRevisionNamesByTmplIDsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[130] + mi := &file_data_service_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8253,7 +8355,7 @@ func (x *ListTmplRevisionNamesByTmplIDsReq) String() string { func (*ListTmplRevisionNamesByTmplIDsReq) ProtoMessage() {} func (x *ListTmplRevisionNamesByTmplIDsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[130] + mi := &file_data_service_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8266,7 +8368,7 @@ func (x *ListTmplRevisionNamesByTmplIDsReq) ProtoReflect() protoreflect.Message // Deprecated: Use ListTmplRevisionNamesByTmplIDsReq.ProtoReflect.Descriptor instead. func (*ListTmplRevisionNamesByTmplIDsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{130} + return file_data_service_proto_rawDescGZIP(), []int{132} } func (x *ListTmplRevisionNamesByTmplIDsReq) GetBizId() uint32 { @@ -8294,7 +8396,7 @@ type ListTmplRevisionNamesByTmplIDsResp struct { func (x *ListTmplRevisionNamesByTmplIDsResp) Reset() { *x = ListTmplRevisionNamesByTmplIDsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[131] + mi := &file_data_service_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8307,7 +8409,7 @@ func (x *ListTmplRevisionNamesByTmplIDsResp) String() string { func (*ListTmplRevisionNamesByTmplIDsResp) ProtoMessage() {} func (x *ListTmplRevisionNamesByTmplIDsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[131] + mi := &file_data_service_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8320,7 +8422,7 @@ func (x *ListTmplRevisionNamesByTmplIDsResp) ProtoReflect() protoreflect.Message // Deprecated: Use ListTmplRevisionNamesByTmplIDsResp.ProtoReflect.Descriptor instead. func (*ListTmplRevisionNamesByTmplIDsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{131} + return file_data_service_proto_rawDescGZIP(), []int{133} } func (x *ListTmplRevisionNamesByTmplIDsResp) GetDetails() []*template_revision.TemplateRevisionNamesDetail { @@ -8342,7 +8444,7 @@ type CreateTemplateSetReq struct { func (x *CreateTemplateSetReq) Reset() { *x = CreateTemplateSetReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[132] + mi := &file_data_service_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8355,7 +8457,7 @@ func (x *CreateTemplateSetReq) String() string { func (*CreateTemplateSetReq) ProtoMessage() {} func (x *CreateTemplateSetReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[132] + mi := &file_data_service_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8368,7 +8470,7 @@ func (x *CreateTemplateSetReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateSetReq.ProtoReflect.Descriptor instead. func (*CreateTemplateSetReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{132} + return file_data_service_proto_rawDescGZIP(), []int{134} } func (x *CreateTemplateSetReq) GetAttachment() *template_set.TemplateSetAttachment { @@ -8402,7 +8504,7 @@ type ListTemplateSetsReq struct { func (x *ListTemplateSetsReq) Reset() { *x = ListTemplateSetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[133] + mi := &file_data_service_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8415,7 +8517,7 @@ func (x *ListTemplateSetsReq) String() string { func (*ListTemplateSetsReq) ProtoMessage() {} func (x *ListTemplateSetsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[133] + mi := &file_data_service_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8428,7 +8530,7 @@ func (x *ListTemplateSetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateSetsReq.ProtoReflect.Descriptor instead. func (*ListTemplateSetsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{133} + return file_data_service_proto_rawDescGZIP(), []int{135} } func (x *ListTemplateSetsReq) GetBizId() uint32 { @@ -8492,7 +8594,7 @@ type ListTemplateSetsResp struct { func (x *ListTemplateSetsResp) Reset() { *x = ListTemplateSetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[134] + mi := &file_data_service_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8505,7 +8607,7 @@ func (x *ListTemplateSetsResp) String() string { func (*ListTemplateSetsResp) ProtoMessage() {} func (x *ListTemplateSetsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[134] + mi := &file_data_service_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8518,7 +8620,7 @@ func (x *ListTemplateSetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateSetsResp.ProtoReflect.Descriptor instead. func (*ListTemplateSetsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{134} + return file_data_service_proto_rawDescGZIP(), []int{136} } func (x *ListTemplateSetsResp) GetCount() uint32 { @@ -8549,7 +8651,7 @@ type UpdateTemplateSetReq struct { func (x *UpdateTemplateSetReq) Reset() { *x = UpdateTemplateSetReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[135] + mi := &file_data_service_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8562,7 +8664,7 @@ func (x *UpdateTemplateSetReq) String() string { func (*UpdateTemplateSetReq) ProtoMessage() {} func (x *UpdateTemplateSetReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[135] + mi := &file_data_service_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8575,7 +8677,7 @@ func (x *UpdateTemplateSetReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateSetReq.ProtoReflect.Descriptor instead. func (*UpdateTemplateSetReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{135} + return file_data_service_proto_rawDescGZIP(), []int{137} } func (x *UpdateTemplateSetReq) GetId() uint32 { @@ -8619,7 +8721,7 @@ type DeleteTemplateSetReq struct { func (x *DeleteTemplateSetReq) Reset() { *x = DeleteTemplateSetReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[136] + mi := &file_data_service_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8632,7 +8734,7 @@ func (x *DeleteTemplateSetReq) String() string { func (*DeleteTemplateSetReq) ProtoMessage() {} func (x *DeleteTemplateSetReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[136] + mi := &file_data_service_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8645,7 +8747,7 @@ func (x *DeleteTemplateSetReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateSetReq.ProtoReflect.Descriptor instead. func (*DeleteTemplateSetReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{136} + return file_data_service_proto_rawDescGZIP(), []int{138} } func (x *DeleteTemplateSetReq) GetId() uint32 { @@ -8681,7 +8783,7 @@ type ListAppTemplateSetsReq struct { func (x *ListAppTemplateSetsReq) Reset() { *x = ListAppTemplateSetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[137] + mi := &file_data_service_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8694,7 +8796,7 @@ func (x *ListAppTemplateSetsReq) String() string { func (*ListAppTemplateSetsReq) ProtoMessage() {} func (x *ListAppTemplateSetsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[137] + mi := &file_data_service_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8707,7 +8809,7 @@ func (x *ListAppTemplateSetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTemplateSetsReq.ProtoReflect.Descriptor instead. func (*ListAppTemplateSetsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{137} + return file_data_service_proto_rawDescGZIP(), []int{139} } func (x *ListAppTemplateSetsReq) GetBizId() uint32 { @@ -8735,7 +8837,7 @@ type ListAppTemplateSetsResp struct { func (x *ListAppTemplateSetsResp) Reset() { *x = ListAppTemplateSetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[138] + mi := &file_data_service_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8748,7 +8850,7 @@ func (x *ListAppTemplateSetsResp) String() string { func (*ListAppTemplateSetsResp) ProtoMessage() {} func (x *ListAppTemplateSetsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[138] + mi := &file_data_service_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8761,7 +8863,7 @@ func (x *ListAppTemplateSetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTemplateSetsResp.ProtoReflect.Descriptor instead. func (*ListAppTemplateSetsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{138} + return file_data_service_proto_rawDescGZIP(), []int{140} } func (x *ListAppTemplateSetsResp) GetDetails() []*template_set.TemplateSet { @@ -8782,7 +8884,7 @@ type ListTemplateSetsByIDsReq struct { func (x *ListTemplateSetsByIDsReq) Reset() { *x = ListTemplateSetsByIDsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[139] + mi := &file_data_service_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8795,7 +8897,7 @@ func (x *ListTemplateSetsByIDsReq) String() string { func (*ListTemplateSetsByIDsReq) ProtoMessage() {} func (x *ListTemplateSetsByIDsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[139] + mi := &file_data_service_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8808,7 +8910,7 @@ func (x *ListTemplateSetsByIDsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateSetsByIDsReq.ProtoReflect.Descriptor instead. func (*ListTemplateSetsByIDsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{139} + return file_data_service_proto_rawDescGZIP(), []int{141} } func (x *ListTemplateSetsByIDsReq) GetIds() []uint32 { @@ -8829,7 +8931,7 @@ type ListTemplateSetsByIDsResp struct { func (x *ListTemplateSetsByIDsResp) Reset() { *x = ListTemplateSetsByIDsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[140] + mi := &file_data_service_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8842,7 +8944,7 @@ func (x *ListTemplateSetsByIDsResp) String() string { func (*ListTemplateSetsByIDsResp) ProtoMessage() {} func (x *ListTemplateSetsByIDsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[140] + mi := &file_data_service_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8855,7 +8957,7 @@ func (x *ListTemplateSetsByIDsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateSetsByIDsResp.ProtoReflect.Descriptor instead. func (*ListTemplateSetsByIDsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{140} + return file_data_service_proto_rawDescGZIP(), []int{142} } func (x *ListTemplateSetsByIDsResp) GetDetails() []*template_set.TemplateSet { @@ -8876,7 +8978,7 @@ type ListTemplateSetBriefInfoByIDsReq struct { func (x *ListTemplateSetBriefInfoByIDsReq) Reset() { *x = ListTemplateSetBriefInfoByIDsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[141] + mi := &file_data_service_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8889,7 +8991,7 @@ func (x *ListTemplateSetBriefInfoByIDsReq) String() string { func (*ListTemplateSetBriefInfoByIDsReq) ProtoMessage() {} func (x *ListTemplateSetBriefInfoByIDsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[141] + mi := &file_data_service_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8902,7 +9004,7 @@ func (x *ListTemplateSetBriefInfoByIDsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateSetBriefInfoByIDsReq.ProtoReflect.Descriptor instead. func (*ListTemplateSetBriefInfoByIDsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{141} + return file_data_service_proto_rawDescGZIP(), []int{143} } func (x *ListTemplateSetBriefInfoByIDsReq) GetIds() []uint32 { @@ -8923,7 +9025,7 @@ type ListTemplateSetBriefInfoByIDsResp struct { func (x *ListTemplateSetBriefInfoByIDsResp) Reset() { *x = ListTemplateSetBriefInfoByIDsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[142] + mi := &file_data_service_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8936,7 +9038,7 @@ func (x *ListTemplateSetBriefInfoByIDsResp) String() string { func (*ListTemplateSetBriefInfoByIDsResp) ProtoMessage() {} func (x *ListTemplateSetBriefInfoByIDsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[142] + mi := &file_data_service_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8949,7 +9051,7 @@ func (x *ListTemplateSetBriefInfoByIDsResp) ProtoReflect() protoreflect.Message // Deprecated: Use ListTemplateSetBriefInfoByIDsResp.ProtoReflect.Descriptor instead. func (*ListTemplateSetBriefInfoByIDsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{142} + return file_data_service_proto_rawDescGZIP(), []int{144} } func (x *ListTemplateSetBriefInfoByIDsResp) GetDetails() []*template_set.TemplateSetBriefInfo { @@ -8971,7 +9073,7 @@ type ListTmplSetsOfBizReq struct { func (x *ListTmplSetsOfBizReq) Reset() { *x = ListTmplSetsOfBizReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[143] + mi := &file_data_service_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8984,7 +9086,7 @@ func (x *ListTmplSetsOfBizReq) String() string { func (*ListTmplSetsOfBizReq) ProtoMessage() {} func (x *ListTmplSetsOfBizReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[143] + mi := &file_data_service_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8997,7 +9099,7 @@ func (x *ListTmplSetsOfBizReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetsOfBizReq.ProtoReflect.Descriptor instead. func (*ListTmplSetsOfBizReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{143} + return file_data_service_proto_rawDescGZIP(), []int{145} } func (x *ListTmplSetsOfBizReq) GetBizId() uint32 { @@ -9025,7 +9127,7 @@ type ListTmplSetsOfBizResp struct { func (x *ListTmplSetsOfBizResp) Reset() { *x = ListTmplSetsOfBizResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[144] + mi := &file_data_service_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9038,7 +9140,7 @@ func (x *ListTmplSetsOfBizResp) String() string { func (*ListTmplSetsOfBizResp) ProtoMessage() {} func (x *ListTmplSetsOfBizResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[144] + mi := &file_data_service_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9051,7 +9153,7 @@ func (x *ListTmplSetsOfBizResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetsOfBizResp.ProtoReflect.Descriptor instead. func (*ListTmplSetsOfBizResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{144} + return file_data_service_proto_rawDescGZIP(), []int{146} } func (x *ListTmplSetsOfBizResp) GetDetails() []*template_set.TemplateSetOfBizDetail { @@ -9073,7 +9175,7 @@ type CreateAppTemplateBindingReq struct { func (x *CreateAppTemplateBindingReq) Reset() { *x = CreateAppTemplateBindingReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[145] + mi := &file_data_service_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9086,7 +9188,7 @@ func (x *CreateAppTemplateBindingReq) String() string { func (*CreateAppTemplateBindingReq) ProtoMessage() {} func (x *CreateAppTemplateBindingReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[145] + mi := &file_data_service_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9099,7 +9201,7 @@ func (x *CreateAppTemplateBindingReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAppTemplateBindingReq.ProtoReflect.Descriptor instead. func (*CreateAppTemplateBindingReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{145} + return file_data_service_proto_rawDescGZIP(), []int{147} } func (x *CreateAppTemplateBindingReq) GetAttachment() *app_template_binding.AppTemplateBindingAttachment { @@ -9131,7 +9233,7 @@ type ListAppTemplateBindingsReq struct { func (x *ListAppTemplateBindingsReq) Reset() { *x = ListAppTemplateBindingsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[146] + mi := &file_data_service_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9144,7 +9246,7 @@ func (x *ListAppTemplateBindingsReq) String() string { func (*ListAppTemplateBindingsReq) ProtoMessage() {} func (x *ListAppTemplateBindingsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[146] + mi := &file_data_service_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9157,7 +9259,7 @@ func (x *ListAppTemplateBindingsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTemplateBindingsReq.ProtoReflect.Descriptor instead. func (*ListAppTemplateBindingsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{146} + return file_data_service_proto_rawDescGZIP(), []int{148} } func (x *ListAppTemplateBindingsReq) GetBizId() uint32 { @@ -9207,7 +9309,7 @@ type ListAppTemplateBindingsResp struct { func (x *ListAppTemplateBindingsResp) Reset() { *x = ListAppTemplateBindingsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[147] + mi := &file_data_service_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9220,7 +9322,7 @@ func (x *ListAppTemplateBindingsResp) String() string { func (*ListAppTemplateBindingsResp) ProtoMessage() {} func (x *ListAppTemplateBindingsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[147] + mi := &file_data_service_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9233,7 +9335,7 @@ func (x *ListAppTemplateBindingsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTemplateBindingsResp.ProtoReflect.Descriptor instead. func (*ListAppTemplateBindingsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{147} + return file_data_service_proto_rawDescGZIP(), []int{149} } func (x *ListAppTemplateBindingsResp) GetCount() uint32 { @@ -9263,7 +9365,7 @@ type UpdateAppTemplateBindingReq struct { func (x *UpdateAppTemplateBindingReq) Reset() { *x = UpdateAppTemplateBindingReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[148] + mi := &file_data_service_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9276,7 +9378,7 @@ func (x *UpdateAppTemplateBindingReq) String() string { func (*UpdateAppTemplateBindingReq) ProtoMessage() {} func (x *UpdateAppTemplateBindingReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[148] + mi := &file_data_service_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9289,7 +9391,7 @@ func (x *UpdateAppTemplateBindingReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppTemplateBindingReq.ProtoReflect.Descriptor instead. func (*UpdateAppTemplateBindingReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{148} + return file_data_service_proto_rawDescGZIP(), []int{150} } func (x *UpdateAppTemplateBindingReq) GetId() uint32 { @@ -9325,7 +9427,7 @@ type DeleteAppTemplateBindingReq struct { func (x *DeleteAppTemplateBindingReq) Reset() { *x = DeleteAppTemplateBindingReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[149] + mi := &file_data_service_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9338,7 +9440,7 @@ func (x *DeleteAppTemplateBindingReq) String() string { func (*DeleteAppTemplateBindingReq) ProtoMessage() {} func (x *DeleteAppTemplateBindingReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[149] + mi := &file_data_service_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9351,7 +9453,7 @@ func (x *DeleteAppTemplateBindingReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAppTemplateBindingReq.ProtoReflect.Descriptor instead. func (*DeleteAppTemplateBindingReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{149} + return file_data_service_proto_rawDescGZIP(), []int{151} } func (x *DeleteAppTemplateBindingReq) GetId() uint32 { @@ -9386,7 +9488,7 @@ type ListAppBoundTmplRevisionsReq struct { func (x *ListAppBoundTmplRevisionsReq) Reset() { *x = ListAppBoundTmplRevisionsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[150] + mi := &file_data_service_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9399,7 +9501,7 @@ func (x *ListAppBoundTmplRevisionsReq) String() string { func (*ListAppBoundTmplRevisionsReq) ProtoMessage() {} func (x *ListAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[150] + mi := &file_data_service_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9412,7 +9514,7 @@ func (x *ListAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppBoundTmplRevisionsReq.ProtoReflect.Descriptor instead. func (*ListAppBoundTmplRevisionsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{150} + return file_data_service_proto_rawDescGZIP(), []int{152} } func (x *ListAppBoundTmplRevisionsReq) GetBizId() uint32 { @@ -9483,7 +9585,7 @@ type ListAppBoundTmplRevisionsResp struct { func (x *ListAppBoundTmplRevisionsResp) Reset() { *x = ListAppBoundTmplRevisionsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[151] + mi := &file_data_service_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9496,7 +9598,7 @@ func (x *ListAppBoundTmplRevisionsResp) String() string { func (*ListAppBoundTmplRevisionsResp) ProtoMessage() {} func (x *ListAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[151] + mi := &file_data_service_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9509,7 +9611,7 @@ func (x *ListAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppBoundTmplRevisionsResp.ProtoReflect.Descriptor instead. func (*ListAppBoundTmplRevisionsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{151} + return file_data_service_proto_rawDescGZIP(), []int{153} } func (x *ListAppBoundTmplRevisionsResp) GetCount() uint32 { @@ -9544,7 +9646,7 @@ type ListReleasedAppBoundTmplRevisionsReq struct { func (x *ListReleasedAppBoundTmplRevisionsReq) Reset() { *x = ListReleasedAppBoundTmplRevisionsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[152] + mi := &file_data_service_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9557,7 +9659,7 @@ func (x *ListReleasedAppBoundTmplRevisionsReq) String() string { func (*ListReleasedAppBoundTmplRevisionsReq) ProtoMessage() {} func (x *ListReleasedAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[152] + mi := &file_data_service_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9570,7 +9672,7 @@ func (x *ListReleasedAppBoundTmplRevisionsReq) ProtoReflect() protoreflect.Messa // Deprecated: Use ListReleasedAppBoundTmplRevisionsReq.ProtoReflect.Descriptor instead. func (*ListReleasedAppBoundTmplRevisionsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{152} + return file_data_service_proto_rawDescGZIP(), []int{154} } func (x *ListReleasedAppBoundTmplRevisionsReq) GetBizId() uint32 { @@ -9641,7 +9743,7 @@ type ListReleasedAppBoundTmplRevisionsResp struct { func (x *ListReleasedAppBoundTmplRevisionsResp) Reset() { *x = ListReleasedAppBoundTmplRevisionsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[153] + mi := &file_data_service_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9654,7 +9756,7 @@ func (x *ListReleasedAppBoundTmplRevisionsResp) String() string { func (*ListReleasedAppBoundTmplRevisionsResp) ProtoMessage() {} func (x *ListReleasedAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[153] + mi := &file_data_service_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9667,7 +9769,7 @@ func (x *ListReleasedAppBoundTmplRevisionsResp) ProtoReflect() protoreflect.Mess // Deprecated: Use ListReleasedAppBoundTmplRevisionsResp.ProtoReflect.Descriptor instead. func (*ListReleasedAppBoundTmplRevisionsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{153} + return file_data_service_proto_rawDescGZIP(), []int{155} } func (x *ListReleasedAppBoundTmplRevisionsResp) GetCount() uint32 { @@ -9698,7 +9800,7 @@ type GetReleasedAppBoundTmplRevisionReq struct { func (x *GetReleasedAppBoundTmplRevisionReq) Reset() { *x = GetReleasedAppBoundTmplRevisionReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[154] + mi := &file_data_service_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9711,7 +9813,7 @@ func (x *GetReleasedAppBoundTmplRevisionReq) String() string { func (*GetReleasedAppBoundTmplRevisionReq) ProtoMessage() {} func (x *GetReleasedAppBoundTmplRevisionReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[154] + mi := &file_data_service_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9724,7 +9826,7 @@ func (x *GetReleasedAppBoundTmplRevisionReq) ProtoReflect() protoreflect.Message // Deprecated: Use GetReleasedAppBoundTmplRevisionReq.ProtoReflect.Descriptor instead. func (*GetReleasedAppBoundTmplRevisionReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{154} + return file_data_service_proto_rawDescGZIP(), []int{156} } func (x *GetReleasedAppBoundTmplRevisionReq) GetBizId() uint32 { @@ -9766,7 +9868,7 @@ type GetReleasedAppBoundTmplRevisionResp struct { func (x *GetReleasedAppBoundTmplRevisionResp) Reset() { *x = GetReleasedAppBoundTmplRevisionResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[155] + mi := &file_data_service_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9779,7 +9881,7 @@ func (x *GetReleasedAppBoundTmplRevisionResp) String() string { func (*GetReleasedAppBoundTmplRevisionResp) ProtoMessage() {} func (x *GetReleasedAppBoundTmplRevisionResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[155] + mi := &file_data_service_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9792,7 +9894,7 @@ func (x *GetReleasedAppBoundTmplRevisionResp) ProtoReflect() protoreflect.Messag // Deprecated: Use GetReleasedAppBoundTmplRevisionResp.ProtoReflect.Descriptor instead. func (*GetReleasedAppBoundTmplRevisionResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{155} + return file_data_service_proto_rawDescGZIP(), []int{157} } func (x *GetReleasedAppBoundTmplRevisionResp) GetDetail() *app_template_binding.ReleasedAppBoundTmplRevision { @@ -9814,7 +9916,7 @@ type CheckAppTemplateBindingReq struct { func (x *CheckAppTemplateBindingReq) Reset() { *x = CheckAppTemplateBindingReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[156] + mi := &file_data_service_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9827,7 +9929,7 @@ func (x *CheckAppTemplateBindingReq) String() string { func (*CheckAppTemplateBindingReq) ProtoMessage() {} func (x *CheckAppTemplateBindingReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[156] + mi := &file_data_service_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9840,7 +9942,7 @@ func (x *CheckAppTemplateBindingReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckAppTemplateBindingReq.ProtoReflect.Descriptor instead. func (*CheckAppTemplateBindingReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{156} + return file_data_service_proto_rawDescGZIP(), []int{158} } func (x *CheckAppTemplateBindingReq) GetAttachment() *app_template_binding.AppTemplateBindingAttachment { @@ -9868,7 +9970,7 @@ type CheckAppTemplateBindingResp struct { func (x *CheckAppTemplateBindingResp) Reset() { *x = CheckAppTemplateBindingResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[157] + mi := &file_data_service_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9881,7 +9983,7 @@ func (x *CheckAppTemplateBindingResp) String() string { func (*CheckAppTemplateBindingResp) ProtoMessage() {} func (x *CheckAppTemplateBindingResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[157] + mi := &file_data_service_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9894,7 +9996,7 @@ func (x *CheckAppTemplateBindingResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckAppTemplateBindingResp.ProtoReflect.Descriptor instead. func (*CheckAppTemplateBindingResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{157} + return file_data_service_proto_rawDescGZIP(), []int{159} } func (x *CheckAppTemplateBindingResp) GetDetails() []*app_template_binding.Conflict { @@ -9904,6 +10006,69 @@ func (x *CheckAppTemplateBindingResp) GetDetails() []*app_template_binding.Confl return nil } +type ImportFromTemplateSetToAppReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BizId uint32 `protobuf:"varint,1,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` + AppId uint32 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + Bindings []*ImportFromTemplateSetToAppReq_Binding `protobuf:"bytes,3,rep,name=bindings,proto3" json:"bindings,omitempty"` +} + +func (x *ImportFromTemplateSetToAppReq) Reset() { + *x = ImportFromTemplateSetToAppReq{} + if protoimpl.UnsafeEnabled { + mi := &file_data_service_proto_msgTypes[160] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportFromTemplateSetToAppReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportFromTemplateSetToAppReq) ProtoMessage() {} + +func (x *ImportFromTemplateSetToAppReq) ProtoReflect() protoreflect.Message { + mi := &file_data_service_proto_msgTypes[160] + 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 ImportFromTemplateSetToAppReq.ProtoReflect.Descriptor instead. +func (*ImportFromTemplateSetToAppReq) Descriptor() ([]byte, []int) { + return file_data_service_proto_rawDescGZIP(), []int{160} +} + +func (x *ImportFromTemplateSetToAppReq) GetBizId() uint32 { + if x != nil { + return x.BizId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq) GetAppId() uint32 { + if x != nil { + return x.AppId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq) GetBindings() []*ImportFromTemplateSetToAppReq_Binding { + if x != nil { + return x.Bindings + } + return nil +} + type ExtractAppTmplVariablesReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -9916,7 +10081,7 @@ type ExtractAppTmplVariablesReq struct { func (x *ExtractAppTmplVariablesReq) Reset() { *x = ExtractAppTmplVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[158] + mi := &file_data_service_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9929,7 +10094,7 @@ func (x *ExtractAppTmplVariablesReq) String() string { func (*ExtractAppTmplVariablesReq) ProtoMessage() {} func (x *ExtractAppTmplVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[158] + mi := &file_data_service_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9942,7 +10107,7 @@ func (x *ExtractAppTmplVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtractAppTmplVariablesReq.ProtoReflect.Descriptor instead. func (*ExtractAppTmplVariablesReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{158} + return file_data_service_proto_rawDescGZIP(), []int{161} } func (x *ExtractAppTmplVariablesReq) GetBizId() uint32 { @@ -9970,7 +10135,7 @@ type ExtractAppTmplVariablesResp struct { func (x *ExtractAppTmplVariablesResp) Reset() { *x = ExtractAppTmplVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[159] + mi := &file_data_service_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9983,7 +10148,7 @@ func (x *ExtractAppTmplVariablesResp) String() string { func (*ExtractAppTmplVariablesResp) ProtoMessage() {} func (x *ExtractAppTmplVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[159] + mi := &file_data_service_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9996,7 +10161,7 @@ func (x *ExtractAppTmplVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtractAppTmplVariablesResp.ProtoReflect.Descriptor instead. func (*ExtractAppTmplVariablesResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{159} + return file_data_service_proto_rawDescGZIP(), []int{162} } func (x *ExtractAppTmplVariablesResp) GetDetails() []string { @@ -10018,7 +10183,7 @@ type GetAppTmplVariableRefsReq struct { func (x *GetAppTmplVariableRefsReq) Reset() { *x = GetAppTmplVariableRefsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[160] + mi := &file_data_service_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10031,7 +10196,7 @@ func (x *GetAppTmplVariableRefsReq) String() string { func (*GetAppTmplVariableRefsReq) ProtoMessage() {} func (x *GetAppTmplVariableRefsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[160] + mi := &file_data_service_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10044,7 +10209,7 @@ func (x *GetAppTmplVariableRefsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAppTmplVariableRefsReq.ProtoReflect.Descriptor instead. func (*GetAppTmplVariableRefsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{160} + return file_data_service_proto_rawDescGZIP(), []int{163} } func (x *GetAppTmplVariableRefsReq) GetBizId() uint32 { @@ -10072,7 +10237,7 @@ type GetAppTmplVariableRefsResp struct { func (x *GetAppTmplVariableRefsResp) Reset() { *x = GetAppTmplVariableRefsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[161] + mi := &file_data_service_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10085,7 +10250,7 @@ func (x *GetAppTmplVariableRefsResp) String() string { func (*GetAppTmplVariableRefsResp) ProtoMessage() {} func (x *GetAppTmplVariableRefsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[161] + mi := &file_data_service_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10098,7 +10263,7 @@ func (x *GetAppTmplVariableRefsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAppTmplVariableRefsResp.ProtoReflect.Descriptor instead. func (*GetAppTmplVariableRefsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{161} + return file_data_service_proto_rawDescGZIP(), []int{164} } func (x *GetAppTmplVariableRefsResp) GetDetails() []*app_template_variable.AppTemplateVariableReference { @@ -10121,7 +10286,7 @@ type GetReleasedAppTmplVariableRefsReq struct { func (x *GetReleasedAppTmplVariableRefsReq) Reset() { *x = GetReleasedAppTmplVariableRefsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[162] + mi := &file_data_service_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10134,7 +10299,7 @@ func (x *GetReleasedAppTmplVariableRefsReq) String() string { func (*GetReleasedAppTmplVariableRefsReq) ProtoMessage() {} func (x *GetReleasedAppTmplVariableRefsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[162] + mi := &file_data_service_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10147,7 +10312,7 @@ func (x *GetReleasedAppTmplVariableRefsReq) ProtoReflect() protoreflect.Message // Deprecated: Use GetReleasedAppTmplVariableRefsReq.ProtoReflect.Descriptor instead. func (*GetReleasedAppTmplVariableRefsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{162} + return file_data_service_proto_rawDescGZIP(), []int{165} } func (x *GetReleasedAppTmplVariableRefsReq) GetBizId() uint32 { @@ -10182,7 +10347,7 @@ type GetReleasedAppTmplVariableRefsResp struct { func (x *GetReleasedAppTmplVariableRefsResp) Reset() { *x = GetReleasedAppTmplVariableRefsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[163] + mi := &file_data_service_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10195,7 +10360,7 @@ func (x *GetReleasedAppTmplVariableRefsResp) String() string { func (*GetReleasedAppTmplVariableRefsResp) ProtoMessage() {} func (x *GetReleasedAppTmplVariableRefsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[163] + mi := &file_data_service_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10208,7 +10373,7 @@ func (x *GetReleasedAppTmplVariableRefsResp) ProtoReflect() protoreflect.Message // Deprecated: Use GetReleasedAppTmplVariableRefsResp.ProtoReflect.Descriptor instead. func (*GetReleasedAppTmplVariableRefsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{163} + return file_data_service_proto_rawDescGZIP(), []int{166} } func (x *GetReleasedAppTmplVariableRefsResp) GetDetails() []*app_template_variable.AppTemplateVariableReference { @@ -10230,7 +10395,7 @@ type UpdateAppTmplVariablesReq struct { func (x *UpdateAppTmplVariablesReq) Reset() { *x = UpdateAppTmplVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[164] + mi := &file_data_service_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10243,7 +10408,7 @@ func (x *UpdateAppTmplVariablesReq) String() string { func (*UpdateAppTmplVariablesReq) ProtoMessage() {} func (x *UpdateAppTmplVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[164] + mi := &file_data_service_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10256,7 +10421,7 @@ func (x *UpdateAppTmplVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAppTmplVariablesReq.ProtoReflect.Descriptor instead. func (*UpdateAppTmplVariablesReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{164} + return file_data_service_proto_rawDescGZIP(), []int{167} } func (x *UpdateAppTmplVariablesReq) GetAttachment() *app_template_variable.AppTemplateVariableAttachment { @@ -10285,7 +10450,7 @@ type ListAppTmplVariablesReq struct { func (x *ListAppTmplVariablesReq) Reset() { *x = ListAppTmplVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[165] + mi := &file_data_service_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10298,7 +10463,7 @@ func (x *ListAppTmplVariablesReq) String() string { func (*ListAppTmplVariablesReq) ProtoMessage() {} func (x *ListAppTmplVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[165] + mi := &file_data_service_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10311,7 +10476,7 @@ func (x *ListAppTmplVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTmplVariablesReq.ProtoReflect.Descriptor instead. func (*ListAppTmplVariablesReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{165} + return file_data_service_proto_rawDescGZIP(), []int{168} } func (x *ListAppTmplVariablesReq) GetBizId() uint32 { @@ -10339,7 +10504,7 @@ type ListAppTmplVariablesResp struct { func (x *ListAppTmplVariablesResp) Reset() { *x = ListAppTmplVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[166] + mi := &file_data_service_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10352,7 +10517,7 @@ func (x *ListAppTmplVariablesResp) String() string { func (*ListAppTmplVariablesResp) ProtoMessage() {} func (x *ListAppTmplVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[166] + mi := &file_data_service_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10365,7 +10530,7 @@ func (x *ListAppTmplVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppTmplVariablesResp.ProtoReflect.Descriptor instead. func (*ListAppTmplVariablesResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{166} + return file_data_service_proto_rawDescGZIP(), []int{169} } func (x *ListAppTmplVariablesResp) GetDetails() []*template_variable.TemplateVariableSpec { @@ -10388,7 +10553,7 @@ type ListReleasedAppTmplVariablesReq struct { func (x *ListReleasedAppTmplVariablesReq) Reset() { *x = ListReleasedAppTmplVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[167] + mi := &file_data_service_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10401,7 +10566,7 @@ func (x *ListReleasedAppTmplVariablesReq) String() string { func (*ListReleasedAppTmplVariablesReq) ProtoMessage() {} func (x *ListReleasedAppTmplVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[167] + mi := &file_data_service_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10414,7 +10579,7 @@ func (x *ListReleasedAppTmplVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReleasedAppTmplVariablesReq.ProtoReflect.Descriptor instead. func (*ListReleasedAppTmplVariablesReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{167} + return file_data_service_proto_rawDescGZIP(), []int{170} } func (x *ListReleasedAppTmplVariablesReq) GetBizId() uint32 { @@ -10449,7 +10614,7 @@ type ListReleasedAppTmplVariablesResp struct { func (x *ListReleasedAppTmplVariablesResp) Reset() { *x = ListReleasedAppTmplVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[168] + mi := &file_data_service_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10462,7 +10627,7 @@ func (x *ListReleasedAppTmplVariablesResp) String() string { func (*ListReleasedAppTmplVariablesResp) ProtoMessage() {} func (x *ListReleasedAppTmplVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[168] + mi := &file_data_service_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10475,7 +10640,7 @@ func (x *ListReleasedAppTmplVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReleasedAppTmplVariablesResp.ProtoReflect.Descriptor instead. func (*ListReleasedAppTmplVariablesResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{168} + return file_data_service_proto_rawDescGZIP(), []int{171} } func (x *ListReleasedAppTmplVariablesResp) GetDetails() []*template_variable.TemplateVariableSpec { @@ -10498,7 +10663,7 @@ type ListTmplBoundCountsReq struct { func (x *ListTmplBoundCountsReq) Reset() { *x = ListTmplBoundCountsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[169] + mi := &file_data_service_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10511,7 +10676,7 @@ func (x *ListTmplBoundCountsReq) String() string { func (*ListTmplBoundCountsReq) ProtoMessage() {} func (x *ListTmplBoundCountsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[169] + mi := &file_data_service_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10524,7 +10689,7 @@ func (x *ListTmplBoundCountsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundCountsReq.ProtoReflect.Descriptor instead. func (*ListTmplBoundCountsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{169} + return file_data_service_proto_rawDescGZIP(), []int{172} } func (x *ListTmplBoundCountsReq) GetBizId() uint32 { @@ -10559,7 +10724,7 @@ type ListTmplBoundCountsResp struct { func (x *ListTmplBoundCountsResp) Reset() { *x = ListTmplBoundCountsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[170] + mi := &file_data_service_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10572,7 +10737,7 @@ func (x *ListTmplBoundCountsResp) String() string { func (*ListTmplBoundCountsResp) ProtoMessage() {} func (x *ListTmplBoundCountsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[170] + mi := &file_data_service_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10585,7 +10750,7 @@ func (x *ListTmplBoundCountsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundCountsResp.ProtoReflect.Descriptor instead. func (*ListTmplBoundCountsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{170} + return file_data_service_proto_rawDescGZIP(), []int{173} } func (x *ListTmplBoundCountsResp) GetDetails() []*template_binding_relation.TemplateBoundCounts { @@ -10609,7 +10774,7 @@ type ListTmplRevisionBoundCountsReq struct { func (x *ListTmplRevisionBoundCountsReq) Reset() { *x = ListTmplRevisionBoundCountsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[171] + mi := &file_data_service_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10622,7 +10787,7 @@ func (x *ListTmplRevisionBoundCountsReq) String() string { func (*ListTmplRevisionBoundCountsReq) ProtoMessage() {} func (x *ListTmplRevisionBoundCountsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[171] + mi := &file_data_service_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10635,7 +10800,7 @@ func (x *ListTmplRevisionBoundCountsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplRevisionBoundCountsReq.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundCountsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{171} + return file_data_service_proto_rawDescGZIP(), []int{174} } func (x *ListTmplRevisionBoundCountsReq) GetBizId() uint32 { @@ -10677,7 +10842,7 @@ type ListTmplRevisionBoundCountsResp struct { func (x *ListTmplRevisionBoundCountsResp) Reset() { *x = ListTmplRevisionBoundCountsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[172] + mi := &file_data_service_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10690,7 +10855,7 @@ func (x *ListTmplRevisionBoundCountsResp) String() string { func (*ListTmplRevisionBoundCountsResp) ProtoMessage() {} func (x *ListTmplRevisionBoundCountsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[172] + mi := &file_data_service_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10703,7 +10868,7 @@ func (x *ListTmplRevisionBoundCountsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplRevisionBoundCountsResp.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundCountsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{172} + return file_data_service_proto_rawDescGZIP(), []int{175} } func (x *ListTmplRevisionBoundCountsResp) GetDetails() []*template_binding_relation.TemplateRevisionBoundCounts { @@ -10726,7 +10891,7 @@ type ListTmplSetBoundCountsReq struct { func (x *ListTmplSetBoundCountsReq) Reset() { *x = ListTmplSetBoundCountsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[173] + mi := &file_data_service_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10739,7 +10904,7 @@ func (x *ListTmplSetBoundCountsReq) String() string { func (*ListTmplSetBoundCountsReq) ProtoMessage() {} func (x *ListTmplSetBoundCountsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[173] + mi := &file_data_service_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10752,7 +10917,7 @@ func (x *ListTmplSetBoundCountsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundCountsReq.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundCountsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{173} + return file_data_service_proto_rawDescGZIP(), []int{176} } func (x *ListTmplSetBoundCountsReq) GetBizId() uint32 { @@ -10787,7 +10952,7 @@ type ListTmplSetBoundCountsResp struct { func (x *ListTmplSetBoundCountsResp) Reset() { *x = ListTmplSetBoundCountsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[174] + mi := &file_data_service_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10800,7 +10965,7 @@ func (x *ListTmplSetBoundCountsResp) String() string { func (*ListTmplSetBoundCountsResp) ProtoMessage() {} func (x *ListTmplSetBoundCountsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[174] + mi := &file_data_service_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10813,7 +10978,7 @@ func (x *ListTmplSetBoundCountsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundCountsResp.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundCountsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{174} + return file_data_service_proto_rawDescGZIP(), []int{177} } func (x *ListTmplSetBoundCountsResp) GetDetails() []*template_binding_relation.TemplateSetBoundCounts { @@ -10841,7 +11006,7 @@ type ListTmplBoundUnnamedAppsReq struct { func (x *ListTmplBoundUnnamedAppsReq) Reset() { *x = ListTmplBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[175] + mi := &file_data_service_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10854,7 +11019,7 @@ func (x *ListTmplBoundUnnamedAppsReq) String() string { func (*ListTmplBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListTmplBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[175] + mi := &file_data_service_proto_msgTypes[178] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10867,7 +11032,7 @@ func (x *ListTmplBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{175} + return file_data_service_proto_rawDescGZIP(), []int{178} } func (x *ListTmplBoundUnnamedAppsReq) GetBizId() uint32 { @@ -10938,7 +11103,7 @@ type ListTmplBoundUnnamedAppsResp struct { func (x *ListTmplBoundUnnamedAppsResp) Reset() { *x = ListTmplBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[176] + mi := &file_data_service_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10951,7 +11116,7 @@ func (x *ListTmplBoundUnnamedAppsResp) String() string { func (*ListTmplBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListTmplBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[176] + mi := &file_data_service_proto_msgTypes[179] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10964,7 +11129,7 @@ func (x *ListTmplBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{176} + return file_data_service_proto_rawDescGZIP(), []int{179} } func (x *ListTmplBoundUnnamedAppsResp) GetCount() uint32 { @@ -10999,7 +11164,7 @@ type ListTmplBoundNamedAppsReq struct { func (x *ListTmplBoundNamedAppsReq) Reset() { *x = ListTmplBoundNamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[177] + mi := &file_data_service_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11012,7 +11177,7 @@ func (x *ListTmplBoundNamedAppsReq) String() string { func (*ListTmplBoundNamedAppsReq) ProtoMessage() {} func (x *ListTmplBoundNamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[177] + mi := &file_data_service_proto_msgTypes[180] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11025,7 +11190,7 @@ func (x *ListTmplBoundNamedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundNamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplBoundNamedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{177} + return file_data_service_proto_rawDescGZIP(), []int{180} } func (x *ListTmplBoundNamedAppsReq) GetBizId() uint32 { @@ -11096,7 +11261,7 @@ type ListTmplBoundNamedAppsResp struct { func (x *ListTmplBoundNamedAppsResp) Reset() { *x = ListTmplBoundNamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[178] + mi := &file_data_service_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11109,7 +11274,7 @@ func (x *ListTmplBoundNamedAppsResp) String() string { func (*ListTmplBoundNamedAppsResp) ProtoMessage() {} func (x *ListTmplBoundNamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[178] + mi := &file_data_service_proto_msgTypes[181] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11122,7 +11287,7 @@ func (x *ListTmplBoundNamedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundNamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplBoundNamedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{178} + return file_data_service_proto_rawDescGZIP(), []int{181} } func (x *ListTmplBoundNamedAppsResp) GetCount() uint32 { @@ -11155,7 +11320,7 @@ type ListTmplBoundTmplSetsReq struct { func (x *ListTmplBoundTmplSetsReq) Reset() { *x = ListTmplBoundTmplSetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[179] + mi := &file_data_service_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11168,7 +11333,7 @@ func (x *ListTmplBoundTmplSetsReq) String() string { func (*ListTmplBoundTmplSetsReq) ProtoMessage() {} func (x *ListTmplBoundTmplSetsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[179] + mi := &file_data_service_proto_msgTypes[182] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11181,7 +11346,7 @@ func (x *ListTmplBoundTmplSetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundTmplSetsReq.ProtoReflect.Descriptor instead. func (*ListTmplBoundTmplSetsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{179} + return file_data_service_proto_rawDescGZIP(), []int{182} } func (x *ListTmplBoundTmplSetsReq) GetBizId() uint32 { @@ -11238,7 +11403,7 @@ type ListTmplBoundTmplSetsResp struct { func (x *ListTmplBoundTmplSetsResp) Reset() { *x = ListTmplBoundTmplSetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[180] + mi := &file_data_service_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11251,7 +11416,7 @@ func (x *ListTmplBoundTmplSetsResp) String() string { func (*ListTmplBoundTmplSetsResp) ProtoMessage() {} func (x *ListTmplBoundTmplSetsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[180] + mi := &file_data_service_proto_msgTypes[183] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11264,7 +11429,7 @@ func (x *ListTmplBoundTmplSetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplBoundTmplSetsResp.ProtoReflect.Descriptor instead. func (*ListTmplBoundTmplSetsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{180} + return file_data_service_proto_rawDescGZIP(), []int{183} } func (x *ListTmplBoundTmplSetsResp) GetCount() uint32 { @@ -11297,7 +11462,7 @@ type ListMultiTmplBoundTmplSetsReq struct { func (x *ListMultiTmplBoundTmplSetsReq) Reset() { *x = ListMultiTmplBoundTmplSetsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[181] + mi := &file_data_service_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11310,7 +11475,7 @@ func (x *ListMultiTmplBoundTmplSetsReq) String() string { func (*ListMultiTmplBoundTmplSetsReq) ProtoMessage() {} func (x *ListMultiTmplBoundTmplSetsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[181] + mi := &file_data_service_proto_msgTypes[184] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11323,7 +11488,7 @@ func (x *ListMultiTmplBoundTmplSetsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMultiTmplBoundTmplSetsReq.ProtoReflect.Descriptor instead. func (*ListMultiTmplBoundTmplSetsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{181} + return file_data_service_proto_rawDescGZIP(), []int{184} } func (x *ListMultiTmplBoundTmplSetsReq) GetBizId() uint32 { @@ -11380,7 +11545,7 @@ type ListMultiTmplBoundTmplSetsResp struct { func (x *ListMultiTmplBoundTmplSetsResp) Reset() { *x = ListMultiTmplBoundTmplSetsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[182] + mi := &file_data_service_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11393,7 +11558,7 @@ func (x *ListMultiTmplBoundTmplSetsResp) String() string { func (*ListMultiTmplBoundTmplSetsResp) ProtoMessage() {} func (x *ListMultiTmplBoundTmplSetsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[182] + mi := &file_data_service_proto_msgTypes[185] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11406,7 +11571,7 @@ func (x *ListMultiTmplBoundTmplSetsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMultiTmplBoundTmplSetsResp.ProtoReflect.Descriptor instead. func (*ListMultiTmplBoundTmplSetsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{182} + return file_data_service_proto_rawDescGZIP(), []int{185} } func (x *ListMultiTmplBoundTmplSetsResp) GetCount() uint32 { @@ -11442,7 +11607,7 @@ type ListTmplRevisionBoundUnnamedAppsReq struct { func (x *ListTmplRevisionBoundUnnamedAppsReq) Reset() { *x = ListTmplRevisionBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[183] + mi := &file_data_service_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11455,7 +11620,7 @@ func (x *ListTmplRevisionBoundUnnamedAppsReq) String() string { func (*ListTmplRevisionBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListTmplRevisionBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[183] + mi := &file_data_service_proto_msgTypes[186] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11468,7 +11633,7 @@ func (x *ListTmplRevisionBoundUnnamedAppsReq) ProtoReflect() protoreflect.Messag // Deprecated: Use ListTmplRevisionBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{183} + return file_data_service_proto_rawDescGZIP(), []int{186} } func (x *ListTmplRevisionBoundUnnamedAppsReq) GetBizId() uint32 { @@ -11546,7 +11711,7 @@ type ListTmplRevisionBoundUnnamedAppsResp struct { func (x *ListTmplRevisionBoundUnnamedAppsResp) Reset() { *x = ListTmplRevisionBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[184] + mi := &file_data_service_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11559,7 +11724,7 @@ func (x *ListTmplRevisionBoundUnnamedAppsResp) String() string { func (*ListTmplRevisionBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListTmplRevisionBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[184] + mi := &file_data_service_proto_msgTypes[187] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11572,7 +11737,7 @@ func (x *ListTmplRevisionBoundUnnamedAppsResp) ProtoReflect() protoreflect.Messa // Deprecated: Use ListTmplRevisionBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{184} + return file_data_service_proto_rawDescGZIP(), []int{187} } func (x *ListTmplRevisionBoundUnnamedAppsResp) GetCount() uint32 { @@ -11608,7 +11773,7 @@ type ListTmplRevisionBoundNamedAppsReq struct { func (x *ListTmplRevisionBoundNamedAppsReq) Reset() { *x = ListTmplRevisionBoundNamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[185] + mi := &file_data_service_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11621,7 +11786,7 @@ func (x *ListTmplRevisionBoundNamedAppsReq) String() string { func (*ListTmplRevisionBoundNamedAppsReq) ProtoMessage() {} func (x *ListTmplRevisionBoundNamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[185] + mi := &file_data_service_proto_msgTypes[188] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11634,7 +11799,7 @@ func (x *ListTmplRevisionBoundNamedAppsReq) ProtoReflect() protoreflect.Message // Deprecated: Use ListTmplRevisionBoundNamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundNamedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{185} + return file_data_service_proto_rawDescGZIP(), []int{188} } func (x *ListTmplRevisionBoundNamedAppsReq) GetBizId() uint32 { @@ -11712,7 +11877,7 @@ type ListTmplRevisionBoundNamedAppsResp struct { func (x *ListTmplRevisionBoundNamedAppsResp) Reset() { *x = ListTmplRevisionBoundNamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[186] + mi := &file_data_service_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11725,7 +11890,7 @@ func (x *ListTmplRevisionBoundNamedAppsResp) String() string { func (*ListTmplRevisionBoundNamedAppsResp) ProtoMessage() {} func (x *ListTmplRevisionBoundNamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[186] + mi := &file_data_service_proto_msgTypes[189] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11738,7 +11903,7 @@ func (x *ListTmplRevisionBoundNamedAppsResp) ProtoReflect() protoreflect.Message // Deprecated: Use ListTmplRevisionBoundNamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplRevisionBoundNamedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{186} + return file_data_service_proto_rawDescGZIP(), []int{189} } func (x *ListTmplRevisionBoundNamedAppsResp) GetCount() uint32 { @@ -11771,7 +11936,7 @@ type ListTmplSetBoundUnnamedAppsReq struct { func (x *ListTmplSetBoundUnnamedAppsReq) Reset() { *x = ListTmplSetBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[187] + mi := &file_data_service_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11784,7 +11949,7 @@ func (x *ListTmplSetBoundUnnamedAppsReq) String() string { func (*ListTmplSetBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListTmplSetBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[187] + mi := &file_data_service_proto_msgTypes[190] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11797,7 +11962,7 @@ func (x *ListTmplSetBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{187} + return file_data_service_proto_rawDescGZIP(), []int{190} } func (x *ListTmplSetBoundUnnamedAppsReq) GetBizId() uint32 { @@ -11854,7 +12019,7 @@ type ListTmplSetBoundUnnamedAppsResp struct { func (x *ListTmplSetBoundUnnamedAppsResp) Reset() { *x = ListTmplSetBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[188] + mi := &file_data_service_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11867,7 +12032,7 @@ func (x *ListTmplSetBoundUnnamedAppsResp) String() string { func (*ListTmplSetBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListTmplSetBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[188] + mi := &file_data_service_proto_msgTypes[191] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11880,7 +12045,7 @@ func (x *ListTmplSetBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{188} + return file_data_service_proto_rawDescGZIP(), []int{191} } func (x *ListTmplSetBoundUnnamedAppsResp) GetCount() uint32 { @@ -11913,7 +12078,7 @@ type ListMultiTmplSetBoundUnnamedAppsReq struct { func (x *ListMultiTmplSetBoundUnnamedAppsReq) Reset() { *x = ListMultiTmplSetBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[189] + mi := &file_data_service_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11926,7 +12091,7 @@ func (x *ListMultiTmplSetBoundUnnamedAppsReq) String() string { func (*ListMultiTmplSetBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListMultiTmplSetBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[189] + mi := &file_data_service_proto_msgTypes[192] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11939,7 +12104,7 @@ func (x *ListMultiTmplSetBoundUnnamedAppsReq) ProtoReflect() protoreflect.Messag // Deprecated: Use ListMultiTmplSetBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListMultiTmplSetBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{189} + return file_data_service_proto_rawDescGZIP(), []int{192} } func (x *ListMultiTmplSetBoundUnnamedAppsReq) GetBizId() uint32 { @@ -11996,7 +12161,7 @@ type ListMultiTmplSetBoundUnnamedAppsResp struct { func (x *ListMultiTmplSetBoundUnnamedAppsResp) Reset() { *x = ListMultiTmplSetBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[190] + mi := &file_data_service_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12009,7 +12174,7 @@ func (x *ListMultiTmplSetBoundUnnamedAppsResp) String() string { func (*ListMultiTmplSetBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListMultiTmplSetBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[190] + mi := &file_data_service_proto_msgTypes[193] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12022,7 +12187,7 @@ func (x *ListMultiTmplSetBoundUnnamedAppsResp) ProtoReflect() protoreflect.Messa // Deprecated: Use ListMultiTmplSetBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListMultiTmplSetBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{190} + return file_data_service_proto_rawDescGZIP(), []int{193} } func (x *ListMultiTmplSetBoundUnnamedAppsResp) GetCount() uint32 { @@ -12055,7 +12220,7 @@ type ListTmplSetBoundNamedAppsReq struct { func (x *ListTmplSetBoundNamedAppsReq) Reset() { *x = ListTmplSetBoundNamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[191] + mi := &file_data_service_proto_msgTypes[194] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12068,7 +12233,7 @@ func (x *ListTmplSetBoundNamedAppsReq) String() string { func (*ListTmplSetBoundNamedAppsReq) ProtoMessage() {} func (x *ListTmplSetBoundNamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[191] + mi := &file_data_service_proto_msgTypes[194] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12081,7 +12246,7 @@ func (x *ListTmplSetBoundNamedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundNamedAppsReq.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundNamedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{191} + return file_data_service_proto_rawDescGZIP(), []int{194} } func (x *ListTmplSetBoundNamedAppsReq) GetBizId() uint32 { @@ -12138,7 +12303,7 @@ type ListTmplSetBoundNamedAppsResp struct { func (x *ListTmplSetBoundNamedAppsResp) Reset() { *x = ListTmplSetBoundNamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[192] + mi := &file_data_service_proto_msgTypes[195] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12151,7 +12316,7 @@ func (x *ListTmplSetBoundNamedAppsResp) String() string { func (*ListTmplSetBoundNamedAppsResp) ProtoMessage() {} func (x *ListTmplSetBoundNamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[192] + mi := &file_data_service_proto_msgTypes[195] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12164,7 +12329,7 @@ func (x *ListTmplSetBoundNamedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTmplSetBoundNamedAppsResp.ProtoReflect.Descriptor instead. func (*ListTmplSetBoundNamedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{192} + return file_data_service_proto_rawDescGZIP(), []int{195} } func (x *ListTmplSetBoundNamedAppsResp) GetCount() uint32 { @@ -12197,7 +12362,7 @@ type ListLatestTmplBoundUnnamedAppsReq struct { func (x *ListLatestTmplBoundUnnamedAppsReq) Reset() { *x = ListLatestTmplBoundUnnamedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[193] + mi := &file_data_service_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12210,7 +12375,7 @@ func (x *ListLatestTmplBoundUnnamedAppsReq) String() string { func (*ListLatestTmplBoundUnnamedAppsReq) ProtoMessage() {} func (x *ListLatestTmplBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[193] + mi := &file_data_service_proto_msgTypes[196] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12223,7 +12388,7 @@ func (x *ListLatestTmplBoundUnnamedAppsReq) ProtoReflect() protoreflect.Message // Deprecated: Use ListLatestTmplBoundUnnamedAppsReq.ProtoReflect.Descriptor instead. func (*ListLatestTmplBoundUnnamedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{193} + return file_data_service_proto_rawDescGZIP(), []int{196} } func (x *ListLatestTmplBoundUnnamedAppsReq) GetBizId() uint32 { @@ -12280,7 +12445,7 @@ type ListLatestTmplBoundUnnamedAppsResp struct { func (x *ListLatestTmplBoundUnnamedAppsResp) Reset() { *x = ListLatestTmplBoundUnnamedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[194] + mi := &file_data_service_proto_msgTypes[197] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12293,7 +12458,7 @@ func (x *ListLatestTmplBoundUnnamedAppsResp) String() string { func (*ListLatestTmplBoundUnnamedAppsResp) ProtoMessage() {} func (x *ListLatestTmplBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[194] + mi := &file_data_service_proto_msgTypes[197] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12306,7 +12471,7 @@ func (x *ListLatestTmplBoundUnnamedAppsResp) ProtoReflect() protoreflect.Message // Deprecated: Use ListLatestTmplBoundUnnamedAppsResp.ProtoReflect.Descriptor instead. func (*ListLatestTmplBoundUnnamedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{194} + return file_data_service_proto_rawDescGZIP(), []int{197} } func (x *ListLatestTmplBoundUnnamedAppsResp) GetCount() uint32 { @@ -12336,7 +12501,7 @@ type RemoveAppBoundTmplSetReq struct { func (x *RemoveAppBoundTmplSetReq) Reset() { *x = RemoveAppBoundTmplSetReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[195] + mi := &file_data_service_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12349,7 +12514,7 @@ func (x *RemoveAppBoundTmplSetReq) String() string { func (*RemoveAppBoundTmplSetReq) ProtoMessage() {} func (x *RemoveAppBoundTmplSetReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[195] + mi := &file_data_service_proto_msgTypes[198] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12362,7 +12527,7 @@ func (x *RemoveAppBoundTmplSetReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveAppBoundTmplSetReq.ProtoReflect.Descriptor instead. func (*RemoveAppBoundTmplSetReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{195} + return file_data_service_proto_rawDescGZIP(), []int{198} } func (x *RemoveAppBoundTmplSetReq) GetBizId() uint32 { @@ -12400,7 +12565,7 @@ type CheckTemplateSetReferencesAppsReq struct { func (x *CheckTemplateSetReferencesAppsReq) Reset() { *x = CheckTemplateSetReferencesAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[196] + mi := &file_data_service_proto_msgTypes[199] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12413,7 +12578,7 @@ func (x *CheckTemplateSetReferencesAppsReq) String() string { func (*CheckTemplateSetReferencesAppsReq) ProtoMessage() {} func (x *CheckTemplateSetReferencesAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[196] + mi := &file_data_service_proto_msgTypes[199] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12426,7 +12591,7 @@ func (x *CheckTemplateSetReferencesAppsReq) ProtoReflect() protoreflect.Message // Deprecated: Use CheckTemplateSetReferencesAppsReq.ProtoReflect.Descriptor instead. func (*CheckTemplateSetReferencesAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{196} + return file_data_service_proto_rawDescGZIP(), []int{199} } func (x *CheckTemplateSetReferencesAppsReq) GetBizId() uint32 { @@ -12468,7 +12633,7 @@ type CheckTemplateSetReferencesAppsResp struct { func (x *CheckTemplateSetReferencesAppsResp) Reset() { *x = CheckTemplateSetReferencesAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[197] + mi := &file_data_service_proto_msgTypes[200] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12481,7 +12646,7 @@ func (x *CheckTemplateSetReferencesAppsResp) String() string { func (*CheckTemplateSetReferencesAppsResp) ProtoMessage() {} func (x *CheckTemplateSetReferencesAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[197] + mi := &file_data_service_proto_msgTypes[200] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12494,7 +12659,7 @@ func (x *CheckTemplateSetReferencesAppsResp) ProtoReflect() protoreflect.Message // Deprecated: Use CheckTemplateSetReferencesAppsResp.ProtoReflect.Descriptor instead. func (*CheckTemplateSetReferencesAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{197} + return file_data_service_proto_rawDescGZIP(), []int{200} } func (x *CheckTemplateSetReferencesAppsResp) GetItems() []*CheckTemplateSetReferencesAppsResp_Item { @@ -12516,7 +12681,7 @@ type CreateTemplateVariableReq struct { func (x *CreateTemplateVariableReq) Reset() { *x = CreateTemplateVariableReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[198] + mi := &file_data_service_proto_msgTypes[201] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12529,7 +12694,7 @@ func (x *CreateTemplateVariableReq) String() string { func (*CreateTemplateVariableReq) ProtoMessage() {} func (x *CreateTemplateVariableReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[198] + mi := &file_data_service_proto_msgTypes[201] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12542,7 +12707,7 @@ func (x *CreateTemplateVariableReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateVariableReq.ProtoReflect.Descriptor instead. func (*CreateTemplateVariableReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{198} + return file_data_service_proto_rawDescGZIP(), []int{201} } func (x *CreateTemplateVariableReq) GetAttachment() *template_variable.TemplateVariableAttachment { @@ -12571,7 +12736,7 @@ type ImportTemplateVariablesReq struct { func (x *ImportTemplateVariablesReq) Reset() { *x = ImportTemplateVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[199] + mi := &file_data_service_proto_msgTypes[202] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12584,7 +12749,7 @@ func (x *ImportTemplateVariablesReq) String() string { func (*ImportTemplateVariablesReq) ProtoMessage() {} func (x *ImportTemplateVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[199] + mi := &file_data_service_proto_msgTypes[202] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12597,7 +12762,7 @@ func (x *ImportTemplateVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportTemplateVariablesReq.ProtoReflect.Descriptor instead. func (*ImportTemplateVariablesReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{199} + return file_data_service_proto_rawDescGZIP(), []int{202} } func (x *ImportTemplateVariablesReq) GetBizId() uint32 { @@ -12625,7 +12790,7 @@ type ImportTemplateVariablesResp struct { func (x *ImportTemplateVariablesResp) Reset() { *x = ImportTemplateVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[200] + mi := &file_data_service_proto_msgTypes[203] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12638,7 +12803,7 @@ func (x *ImportTemplateVariablesResp) String() string { func (*ImportTemplateVariablesResp) ProtoMessage() {} func (x *ImportTemplateVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[200] + mi := &file_data_service_proto_msgTypes[203] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12651,7 +12816,7 @@ func (x *ImportTemplateVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ImportTemplateVariablesResp.ProtoReflect.Descriptor instead. func (*ImportTemplateVariablesResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{200} + return file_data_service_proto_rawDescGZIP(), []int{203} } func (x *ImportTemplateVariablesResp) GetVariableCount() uint32 { @@ -12677,7 +12842,7 @@ type ListTemplateVariablesReq struct { func (x *ListTemplateVariablesReq) Reset() { *x = ListTemplateVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[201] + mi := &file_data_service_proto_msgTypes[204] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12690,7 +12855,7 @@ func (x *ListTemplateVariablesReq) String() string { func (*ListTemplateVariablesReq) ProtoMessage() {} func (x *ListTemplateVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[201] + mi := &file_data_service_proto_msgTypes[204] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12703,7 +12868,7 @@ func (x *ListTemplateVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateVariablesReq.ProtoReflect.Descriptor instead. func (*ListTemplateVariablesReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{201} + return file_data_service_proto_rawDescGZIP(), []int{204} } func (x *ListTemplateVariablesReq) GetBizId() uint32 { @@ -12760,7 +12925,7 @@ type ListTemplateVariablesResp struct { func (x *ListTemplateVariablesResp) Reset() { *x = ListTemplateVariablesResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[202] + mi := &file_data_service_proto_msgTypes[205] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12773,7 +12938,7 @@ func (x *ListTemplateVariablesResp) String() string { func (*ListTemplateVariablesResp) ProtoMessage() {} func (x *ListTemplateVariablesResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[202] + mi := &file_data_service_proto_msgTypes[205] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12786,7 +12951,7 @@ func (x *ListTemplateVariablesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateVariablesResp.ProtoReflect.Descriptor instead. func (*ListTemplateVariablesResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{202} + return file_data_service_proto_rawDescGZIP(), []int{205} } func (x *ListTemplateVariablesResp) GetCount() uint32 { @@ -12816,7 +12981,7 @@ type UpdateTemplateVariableReq struct { func (x *UpdateTemplateVariableReq) Reset() { *x = UpdateTemplateVariableReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[203] + mi := &file_data_service_proto_msgTypes[206] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12829,7 +12994,7 @@ func (x *UpdateTemplateVariableReq) String() string { func (*UpdateTemplateVariableReq) ProtoMessage() {} func (x *UpdateTemplateVariableReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[203] + mi := &file_data_service_proto_msgTypes[206] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12842,7 +13007,7 @@ func (x *UpdateTemplateVariableReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateVariableReq.ProtoReflect.Descriptor instead. func (*UpdateTemplateVariableReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{203} + return file_data_service_proto_rawDescGZIP(), []int{206} } func (x *UpdateTemplateVariableReq) GetId() uint32 { @@ -12878,7 +13043,7 @@ type DeleteTemplateVariableReq struct { func (x *DeleteTemplateVariableReq) Reset() { *x = DeleteTemplateVariableReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[204] + mi := &file_data_service_proto_msgTypes[207] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12891,7 +13056,7 @@ func (x *DeleteTemplateVariableReq) String() string { func (*DeleteTemplateVariableReq) ProtoMessage() {} func (x *DeleteTemplateVariableReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[204] + mi := &file_data_service_proto_msgTypes[207] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12904,7 +13069,7 @@ func (x *DeleteTemplateVariableReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateVariableReq.ProtoReflect.Descriptor instead. func (*DeleteTemplateVariableReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{204} + return file_data_service_proto_rawDescGZIP(), []int{207} } func (x *DeleteTemplateVariableReq) GetId() uint32 { @@ -12933,7 +13098,7 @@ type TemplateVariableFetchIDsExcludingReq struct { func (x *TemplateVariableFetchIDsExcludingReq) Reset() { *x = TemplateVariableFetchIDsExcludingReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[205] + mi := &file_data_service_proto_msgTypes[208] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12946,7 +13111,7 @@ func (x *TemplateVariableFetchIDsExcludingReq) String() string { func (*TemplateVariableFetchIDsExcludingReq) ProtoMessage() {} func (x *TemplateVariableFetchIDsExcludingReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[205] + mi := &file_data_service_proto_msgTypes[208] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12959,7 +13124,7 @@ func (x *TemplateVariableFetchIDsExcludingReq) ProtoReflect() protoreflect.Messa // Deprecated: Use TemplateVariableFetchIDsExcludingReq.ProtoReflect.Descriptor instead. func (*TemplateVariableFetchIDsExcludingReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{205} + return file_data_service_proto_rawDescGZIP(), []int{208} } func (x *TemplateVariableFetchIDsExcludingReq) GetBizId() uint32 { @@ -12987,7 +13152,7 @@ type TemplateVariableFetchIDsExcludingResp struct { func (x *TemplateVariableFetchIDsExcludingResp) Reset() { *x = TemplateVariableFetchIDsExcludingResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[206] + mi := &file_data_service_proto_msgTypes[209] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13000,7 +13165,7 @@ func (x *TemplateVariableFetchIDsExcludingResp) String() string { func (*TemplateVariableFetchIDsExcludingResp) ProtoMessage() {} func (x *TemplateVariableFetchIDsExcludingResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[206] + mi := &file_data_service_proto_msgTypes[209] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13013,7 +13178,7 @@ func (x *TemplateVariableFetchIDsExcludingResp) ProtoReflect() protoreflect.Mess // Deprecated: Use TemplateVariableFetchIDsExcludingResp.ProtoReflect.Descriptor instead. func (*TemplateVariableFetchIDsExcludingResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{206} + return file_data_service_proto_rawDescGZIP(), []int{209} } func (x *TemplateVariableFetchIDsExcludingResp) GetIds() []uint32 { @@ -13035,7 +13200,7 @@ type CreateGroupReq struct { func (x *CreateGroupReq) Reset() { *x = CreateGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[207] + mi := &file_data_service_proto_msgTypes[210] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13048,7 +13213,7 @@ func (x *CreateGroupReq) String() string { func (*CreateGroupReq) ProtoMessage() {} func (x *CreateGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[207] + mi := &file_data_service_proto_msgTypes[210] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13061,7 +13226,7 @@ func (x *CreateGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGroupReq.ProtoReflect.Descriptor instead. func (*CreateGroupReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{207} + return file_data_service_proto_rawDescGZIP(), []int{210} } func (x *CreateGroupReq) GetAttachment() *group.GroupAttachment { @@ -13089,7 +13254,7 @@ type ListAllGroupsReq struct { func (x *ListAllGroupsReq) Reset() { *x = ListAllGroupsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[208] + mi := &file_data_service_proto_msgTypes[211] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13102,7 +13267,7 @@ func (x *ListAllGroupsReq) String() string { func (*ListAllGroupsReq) ProtoMessage() {} func (x *ListAllGroupsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[208] + mi := &file_data_service_proto_msgTypes[211] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13115,7 +13280,7 @@ func (x *ListAllGroupsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAllGroupsReq.ProtoReflect.Descriptor instead. func (*ListAllGroupsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{208} + return file_data_service_proto_rawDescGZIP(), []int{211} } func (x *ListAllGroupsReq) GetBizId() uint32 { @@ -13136,7 +13301,7 @@ type ListAllGroupsResp struct { func (x *ListAllGroupsResp) Reset() { *x = ListAllGroupsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[209] + mi := &file_data_service_proto_msgTypes[212] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13149,7 +13314,7 @@ func (x *ListAllGroupsResp) String() string { func (*ListAllGroupsResp) ProtoMessage() {} func (x *ListAllGroupsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[209] + mi := &file_data_service_proto_msgTypes[212] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13162,7 +13327,7 @@ func (x *ListAllGroupsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAllGroupsResp.ProtoReflect.Descriptor instead. func (*ListAllGroupsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{209} + return file_data_service_proto_rawDescGZIP(), []int{212} } func (x *ListAllGroupsResp) GetDetails() []*group.Group { @@ -13184,7 +13349,7 @@ type ListAppGroupsReq struct { func (x *ListAppGroupsReq) Reset() { *x = ListAppGroupsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[210] + mi := &file_data_service_proto_msgTypes[213] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13197,7 +13362,7 @@ func (x *ListAppGroupsReq) String() string { func (*ListAppGroupsReq) ProtoMessage() {} func (x *ListAppGroupsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[210] + mi := &file_data_service_proto_msgTypes[213] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13210,7 +13375,7 @@ func (x *ListAppGroupsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppGroupsReq.ProtoReflect.Descriptor instead. func (*ListAppGroupsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{210} + return file_data_service_proto_rawDescGZIP(), []int{213} } func (x *ListAppGroupsReq) GetBizId() uint32 { @@ -13238,7 +13403,7 @@ type ListAppGroupsResp struct { func (x *ListAppGroupsResp) Reset() { *x = ListAppGroupsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[211] + mi := &file_data_service_proto_msgTypes[214] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13251,7 +13416,7 @@ func (x *ListAppGroupsResp) String() string { func (*ListAppGroupsResp) ProtoMessage() {} func (x *ListAppGroupsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[211] + mi := &file_data_service_proto_msgTypes[214] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13264,7 +13429,7 @@ func (x *ListAppGroupsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppGroupsResp.ProtoReflect.Descriptor instead. func (*ListAppGroupsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{211} + return file_data_service_proto_rawDescGZIP(), []int{214} } func (x *ListAppGroupsResp) GetDetails() []*ListAppGroupsResp_ListAppGroupsData { @@ -13286,7 +13451,7 @@ type GetGroupByNameReq struct { func (x *GetGroupByNameReq) Reset() { *x = GetGroupByNameReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[212] + mi := &file_data_service_proto_msgTypes[215] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13299,7 +13464,7 @@ func (x *GetGroupByNameReq) String() string { func (*GetGroupByNameReq) ProtoMessage() {} func (x *GetGroupByNameReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[212] + mi := &file_data_service_proto_msgTypes[215] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13312,7 +13477,7 @@ func (x *GetGroupByNameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGroupByNameReq.ProtoReflect.Descriptor instead. func (*GetGroupByNameReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{212} + return file_data_service_proto_rawDescGZIP(), []int{215} } func (x *GetGroupByNameReq) GetBizId() uint32 { @@ -13342,7 +13507,7 @@ type UpdateGroupReq struct { func (x *UpdateGroupReq) Reset() { *x = UpdateGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[213] + mi := &file_data_service_proto_msgTypes[216] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13355,7 +13520,7 @@ func (x *UpdateGroupReq) String() string { func (*UpdateGroupReq) ProtoMessage() {} func (x *UpdateGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[213] + mi := &file_data_service_proto_msgTypes[216] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13368,7 +13533,7 @@ func (x *UpdateGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGroupReq.ProtoReflect.Descriptor instead. func (*UpdateGroupReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{213} + return file_data_service_proto_rawDescGZIP(), []int{216} } func (x *UpdateGroupReq) GetId() uint32 { @@ -13404,7 +13569,7 @@ type DeleteGroupReq struct { func (x *DeleteGroupReq) Reset() { *x = DeleteGroupReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[214] + mi := &file_data_service_proto_msgTypes[217] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13417,7 +13582,7 @@ func (x *DeleteGroupReq) String() string { func (*DeleteGroupReq) ProtoMessage() {} func (x *DeleteGroupReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[214] + mi := &file_data_service_proto_msgTypes[217] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13430,7 +13595,7 @@ func (x *DeleteGroupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGroupReq.ProtoReflect.Descriptor instead. func (*DeleteGroupReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{214} + return file_data_service_proto_rawDescGZIP(), []int{217} } func (x *DeleteGroupReq) GetId() uint32 { @@ -13459,7 +13624,7 @@ type CountGroupsReleasedAppsReq struct { func (x *CountGroupsReleasedAppsReq) Reset() { *x = CountGroupsReleasedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[215] + mi := &file_data_service_proto_msgTypes[218] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13472,7 +13637,7 @@ func (x *CountGroupsReleasedAppsReq) String() string { func (*CountGroupsReleasedAppsReq) ProtoMessage() {} func (x *CountGroupsReleasedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[215] + mi := &file_data_service_proto_msgTypes[218] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13485,7 +13650,7 @@ func (x *CountGroupsReleasedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CountGroupsReleasedAppsReq.ProtoReflect.Descriptor instead. func (*CountGroupsReleasedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{215} + return file_data_service_proto_rawDescGZIP(), []int{218} } func (x *CountGroupsReleasedAppsReq) GetBizId() uint32 { @@ -13513,7 +13678,7 @@ type CountGroupsReleasedAppsResp struct { func (x *CountGroupsReleasedAppsResp) Reset() { *x = CountGroupsReleasedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[216] + mi := &file_data_service_proto_msgTypes[219] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13526,7 +13691,7 @@ func (x *CountGroupsReleasedAppsResp) String() string { func (*CountGroupsReleasedAppsResp) ProtoMessage() {} func (x *CountGroupsReleasedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[216] + mi := &file_data_service_proto_msgTypes[219] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13539,7 +13704,7 @@ func (x *CountGroupsReleasedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CountGroupsReleasedAppsResp.ProtoReflect.Descriptor instead. func (*CountGroupsReleasedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{216} + return file_data_service_proto_rawDescGZIP(), []int{219} } func (x *CountGroupsReleasedAppsResp) GetData() []*CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData { @@ -13564,7 +13729,7 @@ type ListGroupReleasedAppsReq struct { func (x *ListGroupReleasedAppsReq) Reset() { *x = ListGroupReleasedAppsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[217] + mi := &file_data_service_proto_msgTypes[220] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13577,7 +13742,7 @@ func (x *ListGroupReleasedAppsReq) String() string { func (*ListGroupReleasedAppsReq) ProtoMessage() {} func (x *ListGroupReleasedAppsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[217] + mi := &file_data_service_proto_msgTypes[220] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13590,7 +13755,7 @@ func (x *ListGroupReleasedAppsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGroupReleasedAppsReq.ProtoReflect.Descriptor instead. func (*ListGroupReleasedAppsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{217} + return file_data_service_proto_rawDescGZIP(), []int{220} } func (x *ListGroupReleasedAppsReq) GetBizId() uint32 { @@ -13640,7 +13805,7 @@ type ListGroupReleasedAppsResp struct { func (x *ListGroupReleasedAppsResp) Reset() { *x = ListGroupReleasedAppsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[218] + mi := &file_data_service_proto_msgTypes[221] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13653,7 +13818,7 @@ func (x *ListGroupReleasedAppsResp) String() string { func (*ListGroupReleasedAppsResp) ProtoMessage() {} func (x *ListGroupReleasedAppsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[218] + mi := &file_data_service_proto_msgTypes[221] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13666,7 +13831,7 @@ func (x *ListGroupReleasedAppsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGroupReleasedAppsResp.ProtoReflect.Descriptor instead. func (*ListGroupReleasedAppsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{218} + return file_data_service_proto_rawDescGZIP(), []int{221} } func (x *ListGroupReleasedAppsResp) GetCount() uint32 { @@ -13703,7 +13868,7 @@ type PublishReq struct { func (x *PublishReq) Reset() { *x = PublishReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[219] + mi := &file_data_service_proto_msgTypes[222] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13716,7 +13881,7 @@ func (x *PublishReq) String() string { func (*PublishReq) ProtoMessage() {} func (x *PublishReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[219] + mi := &file_data_service_proto_msgTypes[222] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13729,7 +13894,7 @@ func (x *PublishReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishReq.ProtoReflect.Descriptor instead. func (*PublishReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{219} + return file_data_service_proto_rawDescGZIP(), []int{222} } func (x *PublishReq) GetBizId() uint32 { @@ -13822,7 +13987,7 @@ type GenerateReleaseAndPublishReq struct { func (x *GenerateReleaseAndPublishReq) Reset() { *x = GenerateReleaseAndPublishReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[220] + mi := &file_data_service_proto_msgTypes[223] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13835,7 +14000,7 @@ func (x *GenerateReleaseAndPublishReq) String() string { func (*GenerateReleaseAndPublishReq) ProtoMessage() {} func (x *GenerateReleaseAndPublishReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[220] + mi := &file_data_service_proto_msgTypes[223] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13848,7 +14013,7 @@ func (x *GenerateReleaseAndPublishReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateReleaseAndPublishReq.ProtoReflect.Descriptor instead. func (*GenerateReleaseAndPublishReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{220} + return file_data_service_proto_rawDescGZIP(), []int{223} } func (x *GenerateReleaseAndPublishReq) GetBizId() uint32 { @@ -13933,7 +14098,7 @@ type PublishResp struct { func (x *PublishResp) Reset() { *x = PublishResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[221] + mi := &file_data_service_proto_msgTypes[224] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -13946,7 +14111,7 @@ func (x *PublishResp) String() string { func (*PublishResp) ProtoMessage() {} func (x *PublishResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[221] + mi := &file_data_service_proto_msgTypes[224] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -13959,7 +14124,7 @@ func (x *PublishResp) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishResp.ProtoReflect.Descriptor instead. func (*PublishResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{221} + return file_data_service_proto_rawDescGZIP(), []int{224} } func (x *PublishResp) GetPublishedStrategyHistoryId() uint32 { @@ -13990,7 +14155,7 @@ type ListInstancesReq struct { func (x *ListInstancesReq) Reset() { *x = ListInstancesReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[222] + mi := &file_data_service_proto_msgTypes[225] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14003,7 +14168,7 @@ func (x *ListInstancesReq) String() string { func (*ListInstancesReq) ProtoMessage() {} func (x *ListInstancesReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[222] + mi := &file_data_service_proto_msgTypes[225] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14016,7 +14181,7 @@ func (x *ListInstancesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInstancesReq.ProtoReflect.Descriptor instead. func (*ListInstancesReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{222} + return file_data_service_proto_rawDescGZIP(), []int{225} } func (x *ListInstancesReq) GetResourceType() string { @@ -14059,7 +14224,7 @@ type ListInstancesResp struct { func (x *ListInstancesResp) Reset() { *x = ListInstancesResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[223] + mi := &file_data_service_proto_msgTypes[226] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14072,7 +14237,7 @@ func (x *ListInstancesResp) String() string { func (*ListInstancesResp) ProtoMessage() {} func (x *ListInstancesResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[223] + mi := &file_data_service_proto_msgTypes[226] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14085,7 +14250,7 @@ func (x *ListInstancesResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInstancesResp.ProtoReflect.Descriptor instead. func (*ListInstancesResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{223} + return file_data_service_proto_rawDescGZIP(), []int{226} } func (x *ListInstancesResp) GetCount() uint32 { @@ -14114,7 +14279,7 @@ type InstanceResource struct { func (x *InstanceResource) Reset() { *x = InstanceResource{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[224] + mi := &file_data_service_proto_msgTypes[227] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14127,7 +14292,7 @@ func (x *InstanceResource) String() string { func (*InstanceResource) ProtoMessage() {} func (x *InstanceResource) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[224] + mi := &file_data_service_proto_msgTypes[227] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14140,7 +14305,7 @@ func (x *InstanceResource) ProtoReflect() protoreflect.Message { // Deprecated: Use InstanceResource.ProtoReflect.Descriptor instead. func (*InstanceResource) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{224} + return file_data_service_proto_rawDescGZIP(), []int{227} } func (x *InstanceResource) GetId() string { @@ -14169,7 +14334,7 @@ type FetchInstanceInfoReq struct { func (x *FetchInstanceInfoReq) Reset() { *x = FetchInstanceInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[225] + mi := &file_data_service_proto_msgTypes[228] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14182,7 +14347,7 @@ func (x *FetchInstanceInfoReq) String() string { func (*FetchInstanceInfoReq) ProtoMessage() {} func (x *FetchInstanceInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[225] + mi := &file_data_service_proto_msgTypes[228] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14195,7 +14360,7 @@ func (x *FetchInstanceInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchInstanceInfoReq.ProtoReflect.Descriptor instead. func (*FetchInstanceInfoReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{225} + return file_data_service_proto_rawDescGZIP(), []int{228} } func (x *FetchInstanceInfoReq) GetResourceType() string { @@ -14223,7 +14388,7 @@ type FetchInstanceInfoResp struct { func (x *FetchInstanceInfoResp) Reset() { *x = FetchInstanceInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[226] + mi := &file_data_service_proto_msgTypes[229] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14236,7 +14401,7 @@ func (x *FetchInstanceInfoResp) String() string { func (*FetchInstanceInfoResp) ProtoMessage() {} func (x *FetchInstanceInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[226] + mi := &file_data_service_proto_msgTypes[229] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14249,7 +14414,7 @@ func (x *FetchInstanceInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchInstanceInfoResp.ProtoReflect.Descriptor instead. func (*FetchInstanceInfoResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{226} + return file_data_service_proto_rawDescGZIP(), []int{229} } func (x *FetchInstanceInfoResp) GetDetails() []*InstanceInfo { @@ -14273,7 +14438,7 @@ type InstanceInfo struct { func (x *InstanceInfo) Reset() { *x = InstanceInfo{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[227] + mi := &file_data_service_proto_msgTypes[230] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14286,7 +14451,7 @@ func (x *InstanceInfo) String() string { func (*InstanceInfo) ProtoMessage() {} func (x *InstanceInfo) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[227] + mi := &file_data_service_proto_msgTypes[230] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14299,7 +14464,7 @@ func (x *InstanceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use InstanceInfo.ProtoReflect.Descriptor instead. func (*InstanceInfo) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{227} + return file_data_service_proto_rawDescGZIP(), []int{230} } func (x *InstanceInfo) GetId() string { @@ -14341,7 +14506,7 @@ type PingMsg struct { func (x *PingMsg) Reset() { *x = PingMsg{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[228] + mi := &file_data_service_proto_msgTypes[231] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14354,7 +14519,7 @@ func (x *PingMsg) String() string { func (*PingMsg) ProtoMessage() {} func (x *PingMsg) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[228] + mi := &file_data_service_proto_msgTypes[231] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14367,7 +14532,7 @@ func (x *PingMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use PingMsg.ProtoReflect.Descriptor instead. func (*PingMsg) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{228} + return file_data_service_proto_rawDescGZIP(), []int{231} } func (x *PingMsg) GetData() string { @@ -14389,7 +14554,7 @@ type CreateKvReq struct { func (x *CreateKvReq) Reset() { *x = CreateKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[229] + mi := &file_data_service_proto_msgTypes[232] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14402,7 +14567,7 @@ func (x *CreateKvReq) String() string { func (*CreateKvReq) ProtoMessage() {} func (x *CreateKvReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[229] + mi := &file_data_service_proto_msgTypes[232] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14415,7 +14580,7 @@ func (x *CreateKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateKvReq.ProtoReflect.Descriptor instead. func (*CreateKvReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{229} + return file_data_service_proto_rawDescGZIP(), []int{232} } func (x *CreateKvReq) GetAttachment() *kv.KvAttachment { @@ -14445,7 +14610,7 @@ type UpdateKvReq struct { func (x *UpdateKvReq) Reset() { *x = UpdateKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[230] + mi := &file_data_service_proto_msgTypes[233] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14458,7 +14623,7 @@ func (x *UpdateKvReq) String() string { func (*UpdateKvReq) ProtoMessage() {} func (x *UpdateKvReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[230] + mi := &file_data_service_proto_msgTypes[233] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14471,7 +14636,7 @@ func (x *UpdateKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateKvReq.ProtoReflect.Descriptor instead. func (*UpdateKvReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{230} + return file_data_service_proto_rawDescGZIP(), []int{233} } func (x *UpdateKvReq) GetId() uint32 { @@ -14521,7 +14686,7 @@ type ListKvsReq struct { func (x *ListKvsReq) Reset() { *x = ListKvsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[231] + mi := &file_data_service_proto_msgTypes[234] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14534,7 +14699,7 @@ func (x *ListKvsReq) String() string { func (*ListKvsReq) ProtoMessage() {} func (x *ListKvsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[231] + mi := &file_data_service_proto_msgTypes[234] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14547,7 +14712,7 @@ func (x *ListKvsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListKvsReq.ProtoReflect.Descriptor instead. func (*ListKvsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{231} + return file_data_service_proto_rawDescGZIP(), []int{234} } func (x *ListKvsReq) GetBizId() uint32 { @@ -14668,7 +14833,7 @@ type ListKvsResp struct { func (x *ListKvsResp) Reset() { *x = ListKvsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[232] + mi := &file_data_service_proto_msgTypes[235] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14681,7 +14846,7 @@ func (x *ListKvsResp) String() string { func (*ListKvsResp) ProtoMessage() {} func (x *ListKvsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[232] + mi := &file_data_service_proto_msgTypes[235] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14694,7 +14859,7 @@ func (x *ListKvsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListKvsResp.ProtoReflect.Descriptor instead. func (*ListKvsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{232} + return file_data_service_proto_rawDescGZIP(), []int{235} } func (x *ListKvsResp) GetCount() uint32 { @@ -14731,7 +14896,7 @@ type DeleteKvReq struct { func (x *DeleteKvReq) Reset() { *x = DeleteKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[233] + mi := &file_data_service_proto_msgTypes[236] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14744,7 +14909,7 @@ func (x *DeleteKvReq) String() string { func (*DeleteKvReq) ProtoMessage() {} func (x *DeleteKvReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[233] + mi := &file_data_service_proto_msgTypes[236] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14757,7 +14922,7 @@ func (x *DeleteKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteKvReq.ProtoReflect.Descriptor instead. func (*DeleteKvReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{233} + return file_data_service_proto_rawDescGZIP(), []int{236} } func (x *DeleteKvReq) GetId() uint32 { @@ -14795,7 +14960,7 @@ type BatchUpsertKvsReq struct { func (x *BatchUpsertKvsReq) Reset() { *x = BatchUpsertKvsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[234] + mi := &file_data_service_proto_msgTypes[237] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14808,7 +14973,7 @@ func (x *BatchUpsertKvsReq) String() string { func (*BatchUpsertKvsReq) ProtoMessage() {} func (x *BatchUpsertKvsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[234] + mi := &file_data_service_proto_msgTypes[237] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14821,7 +14986,7 @@ func (x *BatchUpsertKvsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertKvsReq.ProtoReflect.Descriptor instead. func (*BatchUpsertKvsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{234} + return file_data_service_proto_rawDescGZIP(), []int{237} } func (x *BatchUpsertKvsReq) GetBizId() uint32 { @@ -14863,7 +15028,7 @@ type BatchUpsertKvsResp struct { func (x *BatchUpsertKvsResp) Reset() { *x = BatchUpsertKvsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[235] + mi := &file_data_service_proto_msgTypes[238] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14876,7 +15041,7 @@ func (x *BatchUpsertKvsResp) String() string { func (*BatchUpsertKvsResp) ProtoMessage() {} func (x *BatchUpsertKvsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[235] + mi := &file_data_service_proto_msgTypes[238] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14889,7 +15054,7 @@ func (x *BatchUpsertKvsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertKvsResp.ProtoReflect.Descriptor instead. func (*BatchUpsertKvsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{235} + return file_data_service_proto_rawDescGZIP(), []int{238} } func (x *BatchUpsertKvsResp) GetIds() []uint32 { @@ -14912,7 +15077,7 @@ type UnDeleteKvReq struct { func (x *UnDeleteKvReq) Reset() { *x = UnDeleteKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[236] + mi := &file_data_service_proto_msgTypes[239] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14925,7 +15090,7 @@ func (x *UnDeleteKvReq) String() string { func (*UnDeleteKvReq) ProtoMessage() {} func (x *UnDeleteKvReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[236] + mi := &file_data_service_proto_msgTypes[239] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -14938,7 +15103,7 @@ func (x *UnDeleteKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UnDeleteKvReq.ProtoReflect.Descriptor instead. func (*UnDeleteKvReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{236} + return file_data_service_proto_rawDescGZIP(), []int{239} } func (x *UnDeleteKvReq) GetBizId() uint32 { @@ -14975,7 +15140,7 @@ type UndoKvReq struct { func (x *UndoKvReq) Reset() { *x = UndoKvReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[237] + mi := &file_data_service_proto_msgTypes[240] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -14988,7 +15153,7 @@ func (x *UndoKvReq) String() string { func (*UndoKvReq) ProtoMessage() {} func (x *UndoKvReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[237] + mi := &file_data_service_proto_msgTypes[240] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15001,7 +15166,7 @@ func (x *UndoKvReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UndoKvReq.ProtoReflect.Descriptor instead. func (*UndoKvReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{237} + return file_data_service_proto_rawDescGZIP(), []int{240} } func (x *UndoKvReq) GetBizId() uint32 { @@ -15038,7 +15203,7 @@ type KvFetchIDsExcludingReq struct { func (x *KvFetchIDsExcludingReq) Reset() { *x = KvFetchIDsExcludingReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[238] + mi := &file_data_service_proto_msgTypes[241] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15051,7 +15216,7 @@ func (x *KvFetchIDsExcludingReq) String() string { func (*KvFetchIDsExcludingReq) ProtoMessage() {} func (x *KvFetchIDsExcludingReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[238] + mi := &file_data_service_proto_msgTypes[241] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15064,7 +15229,7 @@ func (x *KvFetchIDsExcludingReq) ProtoReflect() protoreflect.Message { // Deprecated: Use KvFetchIDsExcludingReq.ProtoReflect.Descriptor instead. func (*KvFetchIDsExcludingReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{238} + return file_data_service_proto_rawDescGZIP(), []int{241} } func (x *KvFetchIDsExcludingReq) GetBizId() uint32 { @@ -15099,7 +15264,7 @@ type KvFetchIDsExcludingResp struct { func (x *KvFetchIDsExcludingResp) Reset() { *x = KvFetchIDsExcludingResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[239] + mi := &file_data_service_proto_msgTypes[242] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15112,7 +15277,7 @@ func (x *KvFetchIDsExcludingResp) String() string { func (*KvFetchIDsExcludingResp) ProtoMessage() {} func (x *KvFetchIDsExcludingResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[239] + mi := &file_data_service_proto_msgTypes[242] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15125,7 +15290,7 @@ func (x *KvFetchIDsExcludingResp) ProtoReflect() protoreflect.Message { // Deprecated: Use KvFetchIDsExcludingResp.ProtoReflect.Descriptor instead. func (*KvFetchIDsExcludingResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{239} + return file_data_service_proto_rawDescGZIP(), []int{242} } func (x *KvFetchIDsExcludingResp) GetIds() []uint32 { @@ -15147,7 +15312,7 @@ type BatchUpsertClientMetricsReq struct { func (x *BatchUpsertClientMetricsReq) Reset() { *x = BatchUpsertClientMetricsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[240] + mi := &file_data_service_proto_msgTypes[243] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15160,7 +15325,7 @@ func (x *BatchUpsertClientMetricsReq) String() string { func (*BatchUpsertClientMetricsReq) ProtoMessage() {} func (x *BatchUpsertClientMetricsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[240] + mi := &file_data_service_proto_msgTypes[243] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15173,7 +15338,7 @@ func (x *BatchUpsertClientMetricsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertClientMetricsReq.ProtoReflect.Descriptor instead. func (*BatchUpsertClientMetricsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{240} + return file_data_service_proto_rawDescGZIP(), []int{243} } func (x *BatchUpsertClientMetricsReq) GetClientItems() []*client.Client { @@ -15199,7 +15364,7 @@ type BatchUpsertClientMetricsResp struct { func (x *BatchUpsertClientMetricsResp) Reset() { *x = BatchUpsertClientMetricsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[241] + mi := &file_data_service_proto_msgTypes[244] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15212,7 +15377,7 @@ func (x *BatchUpsertClientMetricsResp) String() string { func (*BatchUpsertClientMetricsResp) ProtoMessage() {} func (x *BatchUpsertClientMetricsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[241] + mi := &file_data_service_proto_msgTypes[244] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15225,7 +15390,7 @@ func (x *BatchUpsertClientMetricsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertClientMetricsResp.ProtoReflect.Descriptor instead. func (*BatchUpsertClientMetricsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{241} + return file_data_service_proto_rawDescGZIP(), []int{244} } type ListClientsReq struct { @@ -15246,7 +15411,7 @@ type ListClientsReq struct { func (x *ListClientsReq) Reset() { *x = ListClientsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[242] + mi := &file_data_service_proto_msgTypes[245] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15259,7 +15424,7 @@ func (x *ListClientsReq) String() string { func (*ListClientsReq) ProtoMessage() {} func (x *ListClientsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[242] + mi := &file_data_service_proto_msgTypes[245] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15272,7 +15437,7 @@ func (x *ListClientsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientsReq.ProtoReflect.Descriptor instead. func (*ListClientsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{242} + return file_data_service_proto_rawDescGZIP(), []int{245} } func (x *ListClientsReq) GetBizId() uint32 { @@ -15346,7 +15511,7 @@ type RetryClientsReq struct { func (x *RetryClientsReq) Reset() { *x = RetryClientsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[243] + mi := &file_data_service_proto_msgTypes[246] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15359,7 +15524,7 @@ func (x *RetryClientsReq) String() string { func (*RetryClientsReq) ProtoMessage() {} func (x *RetryClientsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[243] + mi := &file_data_service_proto_msgTypes[246] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15372,7 +15537,7 @@ func (x *RetryClientsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RetryClientsReq.ProtoReflect.Descriptor instead. func (*RetryClientsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{243} + return file_data_service_proto_rawDescGZIP(), []int{246} } func (x *RetryClientsReq) GetBizId() uint32 { @@ -15423,7 +15588,7 @@ type ListClientsResp struct { func (x *ListClientsResp) Reset() { *x = ListClientsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[244] + mi := &file_data_service_proto_msgTypes[247] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15436,7 +15601,7 @@ func (x *ListClientsResp) String() string { func (*ListClientsResp) ProtoMessage() {} func (x *ListClientsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[244] + mi := &file_data_service_proto_msgTypes[247] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15449,7 +15614,7 @@ func (x *ListClientsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientsResp.ProtoReflect.Descriptor instead. func (*ListClientsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{244} + return file_data_service_proto_rawDescGZIP(), []int{247} } func (x *ListClientsResp) GetCount() uint32 { @@ -15493,7 +15658,7 @@ type ListClientEventsReq struct { func (x *ListClientEventsReq) Reset() { *x = ListClientEventsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[245] + mi := &file_data_service_proto_msgTypes[248] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15506,7 +15671,7 @@ func (x *ListClientEventsReq) String() string { func (*ListClientEventsReq) ProtoMessage() {} func (x *ListClientEventsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[245] + mi := &file_data_service_proto_msgTypes[248] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15519,7 +15684,7 @@ func (x *ListClientEventsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientEventsReq.ProtoReflect.Descriptor instead. func (*ListClientEventsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{245} + return file_data_service_proto_rawDescGZIP(), []int{248} } func (x *ListClientEventsReq) GetBizId() uint32 { @@ -15604,7 +15769,7 @@ type ListClientEventsResp struct { func (x *ListClientEventsResp) Reset() { *x = ListClientEventsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[246] + mi := &file_data_service_proto_msgTypes[249] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15617,7 +15782,7 @@ func (x *ListClientEventsResp) String() string { func (*ListClientEventsResp) ProtoMessage() {} func (x *ListClientEventsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[246] + mi := &file_data_service_proto_msgTypes[249] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15630,7 +15795,7 @@ func (x *ListClientEventsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientEventsResp.ProtoReflect.Descriptor instead. func (*ListClientEventsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{246} + return file_data_service_proto_rawDescGZIP(), []int{249} } func (x *ListClientEventsResp) GetCount() uint32 { @@ -15663,7 +15828,7 @@ type ListClientQuerysReq struct { func (x *ListClientQuerysReq) Reset() { *x = ListClientQuerysReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[247] + mi := &file_data_service_proto_msgTypes[250] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15676,7 +15841,7 @@ func (x *ListClientQuerysReq) String() string { func (*ListClientQuerysReq) ProtoMessage() {} func (x *ListClientQuerysReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[247] + mi := &file_data_service_proto_msgTypes[250] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15689,7 +15854,7 @@ func (x *ListClientQuerysReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientQuerysReq.ProtoReflect.Descriptor instead. func (*ListClientQuerysReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{247} + return file_data_service_proto_rawDescGZIP(), []int{250} } func (x *ListClientQuerysReq) GetBizId() uint32 { @@ -15746,7 +15911,7 @@ type ListClientQuerysResp struct { func (x *ListClientQuerysResp) Reset() { *x = ListClientQuerysResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[248] + mi := &file_data_service_proto_msgTypes[251] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15759,7 +15924,7 @@ func (x *ListClientQuerysResp) String() string { func (*ListClientQuerysResp) ProtoMessage() {} func (x *ListClientQuerysResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[248] + mi := &file_data_service_proto_msgTypes[251] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15772,7 +15937,7 @@ func (x *ListClientQuerysResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientQuerysResp.ProtoReflect.Descriptor instead. func (*ListClientQuerysResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{248} + return file_data_service_proto_rawDescGZIP(), []int{251} } func (x *ListClientQuerysResp) GetCount() uint32 { @@ -15804,7 +15969,7 @@ type CreateClientQueryReq struct { func (x *CreateClientQueryReq) Reset() { *x = CreateClientQueryReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[249] + mi := &file_data_service_proto_msgTypes[252] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15817,7 +15982,7 @@ func (x *CreateClientQueryReq) String() string { func (*CreateClientQueryReq) ProtoMessage() {} func (x *CreateClientQueryReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[249] + mi := &file_data_service_proto_msgTypes[252] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15830,7 +15995,7 @@ func (x *CreateClientQueryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateClientQueryReq.ProtoReflect.Descriptor instead. func (*CreateClientQueryReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{249} + return file_data_service_proto_rawDescGZIP(), []int{252} } func (x *CreateClientQueryReq) GetBizId() uint32 { @@ -15879,7 +16044,7 @@ type CreateClientQueryResp struct { func (x *CreateClientQueryResp) Reset() { *x = CreateClientQueryResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[250] + mi := &file_data_service_proto_msgTypes[253] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15892,7 +16057,7 @@ func (x *CreateClientQueryResp) String() string { func (*CreateClientQueryResp) ProtoMessage() {} func (x *CreateClientQueryResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[250] + mi := &file_data_service_proto_msgTypes[253] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15905,7 +16070,7 @@ func (x *CreateClientQueryResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateClientQueryResp.ProtoReflect.Descriptor instead. func (*CreateClientQueryResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{250} + return file_data_service_proto_rawDescGZIP(), []int{253} } func (x *CreateClientQueryResp) GetId() uint32 { @@ -15930,7 +16095,7 @@ type UpdateClientQueryReq struct { func (x *UpdateClientQueryReq) Reset() { *x = UpdateClientQueryReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[251] + mi := &file_data_service_proto_msgTypes[254] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -15943,7 +16108,7 @@ func (x *UpdateClientQueryReq) String() string { func (*UpdateClientQueryReq) ProtoMessage() {} func (x *UpdateClientQueryReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[251] + mi := &file_data_service_proto_msgTypes[254] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -15956,7 +16121,7 @@ func (x *UpdateClientQueryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateClientQueryReq.ProtoReflect.Descriptor instead. func (*UpdateClientQueryReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{251} + return file_data_service_proto_rawDescGZIP(), []int{254} } func (x *UpdateClientQueryReq) GetId() uint32 { @@ -16007,7 +16172,7 @@ type DeleteClientQueryReq struct { func (x *DeleteClientQueryReq) Reset() { *x = DeleteClientQueryReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[252] + mi := &file_data_service_proto_msgTypes[255] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16020,7 +16185,7 @@ func (x *DeleteClientQueryReq) String() string { func (*DeleteClientQueryReq) ProtoMessage() {} func (x *DeleteClientQueryReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[252] + mi := &file_data_service_proto_msgTypes[255] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16033,7 +16198,7 @@ func (x *DeleteClientQueryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteClientQueryReq.ProtoReflect.Descriptor instead. func (*DeleteClientQueryReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{252} + return file_data_service_proto_rawDescGZIP(), []int{255} } func (x *DeleteClientQueryReq) GetId() uint32 { @@ -16070,7 +16235,7 @@ type CheckClientQueryNameReq struct { func (x *CheckClientQueryNameReq) Reset() { *x = CheckClientQueryNameReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[253] + mi := &file_data_service_proto_msgTypes[256] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16083,7 +16248,7 @@ func (x *CheckClientQueryNameReq) String() string { func (*CheckClientQueryNameReq) ProtoMessage() {} func (x *CheckClientQueryNameReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[253] + mi := &file_data_service_proto_msgTypes[256] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16096,7 +16261,7 @@ func (x *CheckClientQueryNameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckClientQueryNameReq.ProtoReflect.Descriptor instead. func (*CheckClientQueryNameReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{253} + return file_data_service_proto_rawDescGZIP(), []int{256} } func (x *CheckClientQueryNameReq) GetName() string { @@ -16131,7 +16296,7 @@ type CheckClientQueryNameResp struct { func (x *CheckClientQueryNameResp) Reset() { *x = CheckClientQueryNameResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[254] + mi := &file_data_service_proto_msgTypes[257] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16144,7 +16309,7 @@ func (x *CheckClientQueryNameResp) String() string { func (*CheckClientQueryNameResp) ProtoMessage() {} func (x *CheckClientQueryNameResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[254] + mi := &file_data_service_proto_msgTypes[257] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16157,7 +16322,7 @@ func (x *CheckClientQueryNameResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckClientQueryNameResp.ProtoReflect.Descriptor instead. func (*CheckClientQueryNameResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{254} + return file_data_service_proto_rawDescGZIP(), []int{257} } func (x *CheckClientQueryNameResp) GetExist() bool { @@ -16180,7 +16345,7 @@ type ListClientLabelAndAnnotationReq struct { func (x *ListClientLabelAndAnnotationReq) Reset() { *x = ListClientLabelAndAnnotationReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[255] + mi := &file_data_service_proto_msgTypes[258] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16193,7 +16358,7 @@ func (x *ListClientLabelAndAnnotationReq) String() string { func (*ListClientLabelAndAnnotationReq) ProtoMessage() {} func (x *ListClientLabelAndAnnotationReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[255] + mi := &file_data_service_proto_msgTypes[258] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16206,7 +16371,7 @@ func (x *ListClientLabelAndAnnotationReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientLabelAndAnnotationReq.ProtoReflect.Descriptor instead. func (*ListClientLabelAndAnnotationReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{255} + return file_data_service_proto_rawDescGZIP(), []int{258} } func (x *ListClientLabelAndAnnotationReq) GetBizId() uint32 { @@ -16244,7 +16409,7 @@ type CompareConfigItemConflictsReq struct { func (x *CompareConfigItemConflictsReq) Reset() { *x = CompareConfigItemConflictsReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[256] + mi := &file_data_service_proto_msgTypes[259] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16257,7 +16422,7 @@ func (x *CompareConfigItemConflictsReq) String() string { func (*CompareConfigItemConflictsReq) ProtoMessage() {} func (x *CompareConfigItemConflictsReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[256] + mi := &file_data_service_proto_msgTypes[259] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16270,7 +16435,7 @@ func (x *CompareConfigItemConflictsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CompareConfigItemConflictsReq.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{256} + return file_data_service_proto_rawDescGZIP(), []int{259} } func (x *CompareConfigItemConflictsReq) GetBizId() uint32 { @@ -16313,7 +16478,7 @@ type CompareConfigItemConflictsResp struct { func (x *CompareConfigItemConflictsResp) Reset() { *x = CompareConfigItemConflictsResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[257] + mi := &file_data_service_proto_msgTypes[260] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16326,7 +16491,7 @@ func (x *CompareConfigItemConflictsResp) String() string { func (*CompareConfigItemConflictsResp) ProtoMessage() {} func (x *CompareConfigItemConflictsResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[257] + mi := &file_data_service_proto_msgTypes[260] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16339,7 +16504,7 @@ func (x *CompareConfigItemConflictsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use CompareConfigItemConflictsResp.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{257} + return file_data_service_proto_rawDescGZIP(), []int{260} } func (x *CompareConfigItemConflictsResp) GetNonTemplateConfigs() []*CompareConfigItemConflictsResp_NonTemplateConfig { @@ -16368,7 +16533,7 @@ type GetTemplateAndNonTemplateCICountReq struct { func (x *GetTemplateAndNonTemplateCICountReq) Reset() { *x = GetTemplateAndNonTemplateCICountReq{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[258] + mi := &file_data_service_proto_msgTypes[261] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16381,7 +16546,7 @@ func (x *GetTemplateAndNonTemplateCICountReq) String() string { func (*GetTemplateAndNonTemplateCICountReq) ProtoMessage() {} func (x *GetTemplateAndNonTemplateCICountReq) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[258] + mi := &file_data_service_proto_msgTypes[261] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16394,7 +16559,7 @@ func (x *GetTemplateAndNonTemplateCICountReq) ProtoReflect() protoreflect.Messag // Deprecated: Use GetTemplateAndNonTemplateCICountReq.ProtoReflect.Descriptor instead. func (*GetTemplateAndNonTemplateCICountReq) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{258} + return file_data_service_proto_rawDescGZIP(), []int{261} } func (x *GetTemplateAndNonTemplateCICountReq) GetBizId() uint32 { @@ -16423,7 +16588,7 @@ type GetTemplateAndNonTemplateCICountResp struct { func (x *GetTemplateAndNonTemplateCICountResp) Reset() { *x = GetTemplateAndNonTemplateCICountResp{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[259] + mi := &file_data_service_proto_msgTypes[262] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16436,7 +16601,7 @@ func (x *GetTemplateAndNonTemplateCICountResp) String() string { func (*GetTemplateAndNonTemplateCICountResp) ProtoMessage() {} func (x *GetTemplateAndNonTemplateCICountResp) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[259] + mi := &file_data_service_proto_msgTypes[262] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16449,7 +16614,7 @@ func (x *GetTemplateAndNonTemplateCICountResp) ProtoReflect() protoreflect.Messa // Deprecated: Use GetTemplateAndNonTemplateCICountResp.ProtoReflect.Descriptor instead. func (*GetTemplateAndNonTemplateCICountResp) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{259} + return file_data_service_proto_rawDescGZIP(), []int{262} } func (x *GetTemplateAndNonTemplateCICountResp) GetConfigItemCount() uint64 { @@ -16478,7 +16643,7 @@ type CredentialScopePreviewResp_Detail struct { func (x *CredentialScopePreviewResp_Detail) Reset() { *x = CredentialScopePreviewResp_Detail{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[260] + mi := &file_data_service_proto_msgTypes[263] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16491,7 +16656,7 @@ func (x *CredentialScopePreviewResp_Detail) String() string { func (*CredentialScopePreviewResp_Detail) ProtoMessage() {} func (x *CredentialScopePreviewResp_Detail) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[260] + mi := &file_data_service_proto_msgTypes[263] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16534,7 +16699,7 @@ type BatchUpsertConfigItemsReq_ConfigItem struct { func (x *BatchUpsertConfigItemsReq_ConfigItem) Reset() { *x = BatchUpsertConfigItemsReq_ConfigItem{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[261] + mi := &file_data_service_proto_msgTypes[264] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16547,7 +16712,7 @@ func (x *BatchUpsertConfigItemsReq_ConfigItem) String() string { func (*BatchUpsertConfigItemsReq_ConfigItem) ProtoMessage() {} func (x *BatchUpsertConfigItemsReq_ConfigItem) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[261] + mi := &file_data_service_proto_msgTypes[264] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16596,7 +16761,7 @@ type BatchUpsertConfigItemsReq_TemplateBinding struct { func (x *BatchUpsertConfigItemsReq_TemplateBinding) Reset() { *x = BatchUpsertConfigItemsReq_TemplateBinding{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[262] + mi := &file_data_service_proto_msgTypes[265] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16609,7 +16774,7 @@ func (x *BatchUpsertConfigItemsReq_TemplateBinding) String() string { func (*BatchUpsertConfigItemsReq_TemplateBinding) ProtoMessage() {} func (x *BatchUpsertConfigItemsReq_TemplateBinding) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[262] + mi := &file_data_service_proto_msgTypes[265] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16653,7 +16818,7 @@ type ListConfigItemByTupleReq_Item struct { func (x *ListConfigItemByTupleReq_Item) Reset() { *x = ListConfigItemByTupleReq_Item{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[263] + mi := &file_data_service_proto_msgTypes[266] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16666,7 +16831,7 @@ func (x *ListConfigItemByTupleReq_Item) String() string { func (*ListConfigItemByTupleReq_Item) ProtoMessage() {} func (x *ListConfigItemByTupleReq_Item) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[263] + mi := &file_data_service_proto_msgTypes[266] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16721,7 +16886,7 @@ type GetHookInfoSpec_Releases struct { func (x *GetHookInfoSpec_Releases) Reset() { *x = GetHookInfoSpec_Releases{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[264] + mi := &file_data_service_proto_msgTypes[267] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16734,7 +16899,7 @@ func (x *GetHookInfoSpec_Releases) String() string { func (*GetHookInfoSpec_Releases) ProtoMessage() {} func (x *GetHookInfoSpec_Releases) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[264] + mi := &file_data_service_proto_msgTypes[267] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16771,7 +16936,7 @@ type ListHooksResp_Detail struct { func (x *ListHooksResp_Detail) Reset() { *x = ListHooksResp_Detail{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[265] + mi := &file_data_service_proto_msgTypes[268] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16784,7 +16949,7 @@ func (x *ListHooksResp_Detail) String() string { func (*ListHooksResp_Detail) ProtoMessage() {} func (x *ListHooksResp_Detail) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[265] + mi := &file_data_service_proto_msgTypes[268] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16846,7 +17011,7 @@ type ListHookReferencesResp_Detail struct { func (x *ListHookReferencesResp_Detail) Reset() { *x = ListHookReferencesResp_Detail{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[266] + mi := &file_data_service_proto_msgTypes[269] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16859,7 +17024,7 @@ func (x *ListHookReferencesResp_Detail) String() string { func (*ListHookReferencesResp_Detail) ProtoMessage() {} func (x *ListHookReferencesResp_Detail) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[266] + mi := &file_data_service_proto_msgTypes[269] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -16944,7 +17109,7 @@ type ListHookRevisionsResp_ListHookRevisionsData struct { func (x *ListHookRevisionsResp_ListHookRevisionsData) Reset() { *x = ListHookRevisionsResp_ListHookRevisionsData{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[267] + mi := &file_data_service_proto_msgTypes[270] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -16957,7 +17122,7 @@ func (x *ListHookRevisionsResp_ListHookRevisionsData) String() string { func (*ListHookRevisionsResp_ListHookRevisionsData) ProtoMessage() {} func (x *ListHookRevisionsResp_ListHookRevisionsData) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[267] + mi := &file_data_service_proto_msgTypes[270] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17012,7 +17177,7 @@ type ListHookRevisionReferencesResp_Detail struct { func (x *ListHookRevisionReferencesResp_Detail) Reset() { *x = ListHookRevisionReferencesResp_Detail{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[268] + mi := &file_data_service_proto_msgTypes[271] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17025,7 +17190,7 @@ func (x *ListHookRevisionReferencesResp_Detail) String() string { func (*ListHookRevisionReferencesResp_Detail) ProtoMessage() {} func (x *ListHookRevisionReferencesResp_Detail) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[268] + mi := &file_data_service_proto_msgTypes[271] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17114,7 +17279,7 @@ type GetReleaseHookResp_Hook struct { func (x *GetReleaseHookResp_Hook) Reset() { *x = GetReleaseHookResp_Hook{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[269] + mi := &file_data_service_proto_msgTypes[272] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17127,7 +17292,7 @@ func (x *GetReleaseHookResp_Hook) String() string { func (*GetReleaseHookResp_Hook) ProtoMessage() {} func (x *GetReleaseHookResp_Hook) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[269] + mi := &file_data_service_proto_msgTypes[272] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17192,6 +17357,61 @@ func (x *GetReleaseHookResp_Hook) GetContent() string { return "" } +type ListTemplateSetsAndRevisionsResp_Detail struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Template *template.Template `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` + TemplateRevision []*template_revision.TemplateRevision `protobuf:"bytes,2,rep,name=template_revision,json=templateRevision,proto3" json:"template_revision,omitempty"` +} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) Reset() { + *x = ListTemplateSetsAndRevisionsResp_Detail{} + if protoimpl.UnsafeEnabled { + mi := &file_data_service_proto_msgTypes[273] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTemplateSetsAndRevisionsResp_Detail) ProtoMessage() {} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) ProtoReflect() protoreflect.Message { + mi := &file_data_service_proto_msgTypes[273] + 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 ListTemplateSetsAndRevisionsResp_Detail.ProtoReflect.Descriptor instead. +func (*ListTemplateSetsAndRevisionsResp_Detail) Descriptor() ([]byte, []int) { + return file_data_service_proto_rawDescGZIP(), []int{116, 0} +} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) GetTemplate() *template.Template { + if x != nil { + return x.Template + } + return nil +} + +func (x *ListTemplateSetsAndRevisionsResp_Detail) GetTemplateRevision() []*template_revision.TemplateRevision { + if x != nil { + return x.TemplateRevision + } + return nil +} + type ListTemplateByTupleReq_Item struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -17206,7 +17426,7 @@ type ListTemplateByTupleReq_Item struct { func (x *ListTemplateByTupleReq_Item) Reset() { *x = ListTemplateByTupleReq_Item{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[270] + mi := &file_data_service_proto_msgTypes[274] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17219,7 +17439,7 @@ func (x *ListTemplateByTupleReq_Item) String() string { func (*ListTemplateByTupleReq_Item) ProtoMessage() {} func (x *ListTemplateByTupleReq_Item) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[270] + mi := &file_data_service_proto_msgTypes[274] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17232,7 +17452,7 @@ func (x *ListTemplateByTupleReq_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateByTupleReq_Item.ProtoReflect.Descriptor instead. func (*ListTemplateByTupleReq_Item) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{115, 0} + return file_data_service_proto_rawDescGZIP(), []int{117, 0} } func (x *ListTemplateByTupleReq_Item) GetBizId() uint32 { @@ -17275,7 +17495,7 @@ type ListTemplateByTupleReqResp_Item struct { func (x *ListTemplateByTupleReqResp_Item) Reset() { *x = ListTemplateByTupleReqResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[271] + mi := &file_data_service_proto_msgTypes[275] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17288,7 +17508,7 @@ func (x *ListTemplateByTupleReqResp_Item) String() string { func (*ListTemplateByTupleReqResp_Item) ProtoMessage() {} func (x *ListTemplateByTupleReqResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[271] + mi := &file_data_service_proto_msgTypes[275] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17301,7 +17521,7 @@ func (x *ListTemplateByTupleReqResp_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateByTupleReqResp_Item.ProtoReflect.Descriptor instead. func (*ListTemplateByTupleReqResp_Item) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{116, 0} + return file_data_service_proto_rawDescGZIP(), []int{118, 0} } func (x *ListTemplateByTupleReqResp_Item) GetTemplate() *template.Template { @@ -17330,7 +17550,7 @@ type BatchUpsertTemplatesReq_Item struct { func (x *BatchUpsertTemplatesReq_Item) Reset() { *x = BatchUpsertTemplatesReq_Item{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[272] + mi := &file_data_service_proto_msgTypes[276] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17343,7 +17563,7 @@ func (x *BatchUpsertTemplatesReq_Item) String() string { func (*BatchUpsertTemplatesReq_Item) ProtoMessage() {} func (x *BatchUpsertTemplatesReq_Item) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[272] + mi := &file_data_service_proto_msgTypes[276] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17356,7 +17576,7 @@ func (x *BatchUpsertTemplatesReq_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertTemplatesReq_Item.ProtoReflect.Descriptor instead. func (*BatchUpsertTemplatesReq_Item) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{117, 0} + return file_data_service_proto_rawDescGZIP(), []int{119, 0} } func (x *BatchUpsertTemplatesReq_Item) GetTemplate() *template.Template { @@ -17400,7 +17620,7 @@ type GetTemplateRevisionResp_TemplateRevision struct { func (x *GetTemplateRevisionResp_TemplateRevision) Reset() { *x = GetTemplateRevisionResp_TemplateRevision{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[273] + mi := &file_data_service_proto_msgTypes[277] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17413,7 +17633,7 @@ func (x *GetTemplateRevisionResp_TemplateRevision) String() string { func (*GetTemplateRevisionResp_TemplateRevision) ProtoMessage() {} func (x *GetTemplateRevisionResp_TemplateRevision) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[273] + mi := &file_data_service_proto_msgTypes[277] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17426,7 +17646,7 @@ func (x *GetTemplateRevisionResp_TemplateRevision) ProtoReflect() protoreflect.M // Deprecated: Use GetTemplateRevisionResp_TemplateRevision.ProtoReflect.Descriptor instead. func (*GetTemplateRevisionResp_TemplateRevision) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{126, 0} + return file_data_service_proto_rawDescGZIP(), []int{128, 0} } func (x *GetTemplateRevisionResp_TemplateRevision) GetTemplateId() uint32 { @@ -17548,6 +17768,164 @@ func (x *GetTemplateRevisionResp_TemplateRevision) GetIsLatest() bool { return false } +type ImportFromTemplateSetToAppReq_Binding struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TemplateSetId uint32 `protobuf:"varint,1,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` + TemplateSpaceId uint32 `protobuf:"varint,2,opt,name=template_space_id,json=templateSpaceId,proto3" json:"template_space_id,omitempty"` + TemplateSpaceName string `protobuf:"bytes,3,opt,name=template_space_name,json=templateSpaceName,proto3" json:"template_space_name,omitempty"` + TemplateSetName string `protobuf:"bytes,4,opt,name=template_set_name,json=templateSetName,proto3" json:"template_set_name,omitempty"` + TemplateRevisions []*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding `protobuf:"bytes,5,rep,name=template_revisions,json=templateRevisions,proto3" json:"template_revisions,omitempty"` +} + +func (x *ImportFromTemplateSetToAppReq_Binding) Reset() { + *x = ImportFromTemplateSetToAppReq_Binding{} + if protoimpl.UnsafeEnabled { + mi := &file_data_service_proto_msgTypes[278] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportFromTemplateSetToAppReq_Binding) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportFromTemplateSetToAppReq_Binding) ProtoMessage() {} + +func (x *ImportFromTemplateSetToAppReq_Binding) ProtoReflect() protoreflect.Message { + mi := &file_data_service_proto_msgTypes[278] + 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 ImportFromTemplateSetToAppReq_Binding.ProtoReflect.Descriptor instead. +func (*ImportFromTemplateSetToAppReq_Binding) Descriptor() ([]byte, []int) { + return file_data_service_proto_rawDescGZIP(), []int{160, 0} +} + +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateSetId() uint32 { + if x != nil { + return x.TemplateSetId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateSpaceId() uint32 { + if x != nil { + return x.TemplateSpaceId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateSpaceName() string { + if x != nil { + return x.TemplateSpaceName + } + return "" +} + +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateSetName() string { + if x != nil { + return x.TemplateSetName + } + return "" +} + +func (x *ImportFromTemplateSetToAppReq_Binding) GetTemplateRevisions() []*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding { + if x != nil { + return x.TemplateRevisions + } + return nil +} + +type ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TemplateId uint32 `protobuf:"varint,1,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` + TemplateRevisionId uint32 `protobuf:"varint,2,opt,name=template_revision_id,json=templateRevisionId,proto3" json:"template_revision_id,omitempty"` + IsLatest bool `protobuf:"varint,3,opt,name=is_latest,json=isLatest,proto3" json:"is_latest,omitempty"` + TemplateName string `protobuf:"bytes,4,opt,name=template_name,json=templateName,proto3" json:"template_name,omitempty"` + TemplateRevisionName string `protobuf:"bytes,5,opt,name=template_revision_name,json=templateRevisionName,proto3" json:"template_revision_name,omitempty"` +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) Reset() { + *x = ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding{} + if protoimpl.UnsafeEnabled { + mi := &file_data_service_proto_msgTypes[279] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) ProtoMessage() {} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) ProtoReflect() protoreflect.Message { + mi := &file_data_service_proto_msgTypes[279] + 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 ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding.ProtoReflect.Descriptor instead. +func (*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) Descriptor() ([]byte, []int) { + return file_data_service_proto_rawDescGZIP(), []int{160, 0, 0} +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetTemplateId() uint32 { + if x != nil { + return x.TemplateId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetTemplateRevisionId() uint32 { + if x != nil { + return x.TemplateRevisionId + } + return 0 +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetIsLatest() bool { + if x != nil { + return x.IsLatest + } + return false +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetTemplateName() string { + if x != nil { + return x.TemplateName + } + return "" +} + +func (x *ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding) GetTemplateRevisionName() string { + if x != nil { + return x.TemplateRevisionName + } + return "" +} + type CheckTemplateSetReferencesAppsReq_Item struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -17560,7 +17938,7 @@ type CheckTemplateSetReferencesAppsReq_Item struct { func (x *CheckTemplateSetReferencesAppsReq_Item) Reset() { *x = CheckTemplateSetReferencesAppsReq_Item{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[274] + mi := &file_data_service_proto_msgTypes[280] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17573,7 +17951,7 @@ func (x *CheckTemplateSetReferencesAppsReq_Item) String() string { func (*CheckTemplateSetReferencesAppsReq_Item) ProtoMessage() {} func (x *CheckTemplateSetReferencesAppsReq_Item) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[274] + mi := &file_data_service_proto_msgTypes[280] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17586,7 +17964,7 @@ func (x *CheckTemplateSetReferencesAppsReq_Item) ProtoReflect() protoreflect.Mes // Deprecated: Use CheckTemplateSetReferencesAppsReq_Item.ProtoReflect.Descriptor instead. func (*CheckTemplateSetReferencesAppsReq_Item) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{196, 0} + return file_data_service_proto_rawDescGZIP(), []int{199, 0} } func (x *CheckTemplateSetReferencesAppsReq_Item) GetId() uint32 { @@ -17608,18 +17986,20 @@ type CheckTemplateSetReferencesAppsResp_Item struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TemplateSetId uint32 `protobuf:"varint,1,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` - TemplateSetName string `protobuf:"bytes,2,opt,name=template_set_name,json=templateSetName,proto3" json:"template_set_name,omitempty"` - AppId uint32 `protobuf:"varint,3,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` - AppName string `protobuf:"bytes,4,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` - AppExceedsLimit bool `protobuf:"varint,5,opt,name=app_exceeds_limit,json=appExceedsLimit,proto3" json:"app_exceeds_limit,omitempty"` - TemplateSetExceedsLimit bool `protobuf:"varint,6,opt,name=template_set_exceeds_limit,json=templateSetExceedsLimit,proto3" json:"template_set_exceeds_limit,omitempty"` + TemplateSetId uint32 `protobuf:"varint,1,opt,name=template_set_id,json=templateSetId,proto3" json:"template_set_id,omitempty"` + TemplateSetName string `protobuf:"bytes,2,opt,name=template_set_name,json=templateSetName,proto3" json:"template_set_name,omitempty"` + AppId uint32 `protobuf:"varint,3,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + AppName string `protobuf:"bytes,4,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` + AppExceedsLimit bool `protobuf:"varint,5,opt,name=app_exceeds_limit,json=appExceedsLimit,proto3" json:"app_exceeds_limit,omitempty"` + TemplateSetExceedsLimit bool `protobuf:"varint,6,opt,name=template_set_exceeds_limit,json=templateSetExceedsLimit,proto3" json:"template_set_exceeds_limit,omitempty"` + AppExceedsQuantity uint32 `protobuf:"varint,7,opt,name=app_exceeds_quantity,json=appExceedsQuantity,proto3" json:"app_exceeds_quantity,omitempty"` + TemplateSetExceedsQuantity uint32 `protobuf:"varint,8,opt,name=template_set_exceeds_quantity,json=templateSetExceedsQuantity,proto3" json:"template_set_exceeds_quantity,omitempty"` } func (x *CheckTemplateSetReferencesAppsResp_Item) Reset() { *x = CheckTemplateSetReferencesAppsResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[275] + mi := &file_data_service_proto_msgTypes[281] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17632,7 +18012,7 @@ func (x *CheckTemplateSetReferencesAppsResp_Item) String() string { func (*CheckTemplateSetReferencesAppsResp_Item) ProtoMessage() {} func (x *CheckTemplateSetReferencesAppsResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[275] + mi := &file_data_service_proto_msgTypes[281] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17645,7 +18025,7 @@ func (x *CheckTemplateSetReferencesAppsResp_Item) ProtoReflect() protoreflect.Me // Deprecated: Use CheckTemplateSetReferencesAppsResp_Item.ProtoReflect.Descriptor instead. func (*CheckTemplateSetReferencesAppsResp_Item) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{197, 0} + return file_data_service_proto_rawDescGZIP(), []int{200, 0} } func (x *CheckTemplateSetReferencesAppsResp_Item) GetTemplateSetId() uint32 { @@ -17690,6 +18070,20 @@ func (x *CheckTemplateSetReferencesAppsResp_Item) GetTemplateSetExceedsLimit() b return false } +func (x *CheckTemplateSetReferencesAppsResp_Item) GetAppExceedsQuantity() uint32 { + if x != nil { + return x.AppExceedsQuantity + } + return 0 +} + +func (x *CheckTemplateSetReferencesAppsResp_Item) GetTemplateSetExceedsQuantity() uint32 { + if x != nil { + return x.TemplateSetExceedsQuantity + } + return 0 +} + type ListAppGroupsResp_ListAppGroupsData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -17707,7 +18101,7 @@ type ListAppGroupsResp_ListAppGroupsData struct { func (x *ListAppGroupsResp_ListAppGroupsData) Reset() { *x = ListAppGroupsResp_ListAppGroupsData{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[276] + mi := &file_data_service_proto_msgTypes[282] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17720,7 +18114,7 @@ func (x *ListAppGroupsResp_ListAppGroupsData) String() string { func (*ListAppGroupsResp_ListAppGroupsData) ProtoMessage() {} func (x *ListAppGroupsResp_ListAppGroupsData) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[276] + mi := &file_data_service_proto_msgTypes[282] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17733,7 +18127,7 @@ func (x *ListAppGroupsResp_ListAppGroupsData) ProtoReflect() protoreflect.Messag // Deprecated: Use ListAppGroupsResp_ListAppGroupsData.ProtoReflect.Descriptor instead. func (*ListAppGroupsResp_ListAppGroupsData) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{211, 0} + return file_data_service_proto_rawDescGZIP(), []int{214, 0} } func (x *ListAppGroupsResp_ListAppGroupsData) GetGroupId() uint32 { @@ -17798,7 +18192,7 @@ type CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData struct { func (x *CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData) Reset() { *x = CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[277] + mi := &file_data_service_proto_msgTypes[283] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17811,7 +18205,7 @@ func (x *CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData) String() strin func (*CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData) ProtoMessage() {} func (x *CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[277] + mi := &file_data_service_proto_msgTypes[283] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17824,7 +18218,7 @@ func (x *CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData) ProtoReflect() // Deprecated: Use CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData.ProtoReflect.Descriptor instead. func (*CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{216, 0} + return file_data_service_proto_rawDescGZIP(), []int{219, 0} } func (x *CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData) GetGroupId() uint32 { @@ -17863,7 +18257,7 @@ type ListGroupReleasedAppsResp_ListGroupReleasedAppsData struct { func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) Reset() { *x = ListGroupReleasedAppsResp_ListGroupReleasedAppsData{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[278] + mi := &file_data_service_proto_msgTypes[284] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17876,7 +18270,7 @@ func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) String() string { func (*ListGroupReleasedAppsResp_ListGroupReleasedAppsData) ProtoMessage() {} func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[278] + mi := &file_data_service_proto_msgTypes[284] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17889,7 +18283,7 @@ func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) ProtoReflect() pro // Deprecated: Use ListGroupReleasedAppsResp_ListGroupReleasedAppsData.ProtoReflect.Descriptor instead. func (*ListGroupReleasedAppsResp_ListGroupReleasedAppsData) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{218, 0} + return file_data_service_proto_rawDescGZIP(), []int{221, 0} } func (x *ListGroupReleasedAppsResp_ListGroupReleasedAppsData) GetAppId() uint32 { @@ -17939,7 +18333,7 @@ type BatchUpsertKvsReq_Kv struct { func (x *BatchUpsertKvsReq_Kv) Reset() { *x = BatchUpsertKvsReq_Kv{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[279] + mi := &file_data_service_proto_msgTypes[285] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -17952,7 +18346,7 @@ func (x *BatchUpsertKvsReq_Kv) String() string { func (*BatchUpsertKvsReq_Kv) ProtoMessage() {} func (x *BatchUpsertKvsReq_Kv) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[279] + mi := &file_data_service_proto_msgTypes[285] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -17965,7 +18359,7 @@ func (x *BatchUpsertKvsReq_Kv) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchUpsertKvsReq_Kv.ProtoReflect.Descriptor instead. func (*BatchUpsertKvsReq_Kv) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{234, 0} + return file_data_service_proto_rawDescGZIP(), []int{237, 0} } func (x *BatchUpsertKvsReq_Kv) GetKvAttachment() *kv.KvAttachment { @@ -17994,7 +18388,7 @@ type ListClientsReq_Order struct { func (x *ListClientsReq_Order) Reset() { *x = ListClientsReq_Order{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[280] + mi := &file_data_service_proto_msgTypes[286] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18007,7 +18401,7 @@ func (x *ListClientsReq_Order) String() string { func (*ListClientsReq_Order) ProtoMessage() {} func (x *ListClientsReq_Order) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[280] + mi := &file_data_service_proto_msgTypes[286] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18020,7 +18414,7 @@ func (x *ListClientsReq_Order) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientsReq_Order.ProtoReflect.Descriptor instead. func (*ListClientsReq_Order) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{242, 0} + return file_data_service_proto_rawDescGZIP(), []int{245, 0} } func (x *ListClientsReq_Order) GetDesc() string { @@ -18052,7 +18446,7 @@ type ListClientsResp_Item struct { func (x *ListClientsResp_Item) Reset() { *x = ListClientsResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[281] + mi := &file_data_service_proto_msgTypes[287] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18065,7 +18459,7 @@ func (x *ListClientsResp_Item) String() string { func (*ListClientsResp_Item) ProtoMessage() {} func (x *ListClientsResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[281] + mi := &file_data_service_proto_msgTypes[287] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18078,7 +18472,7 @@ func (x *ListClientsResp_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientsResp_Item.ProtoReflect.Descriptor instead. func (*ListClientsResp_Item) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{244, 0} + return file_data_service_proto_rawDescGZIP(), []int{247, 0} } func (x *ListClientsResp_Item) GetClient() *client.Client { @@ -18128,7 +18522,7 @@ type ListClientEventsReq_Order struct { func (x *ListClientEventsReq_Order) Reset() { *x = ListClientEventsReq_Order{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[282] + mi := &file_data_service_proto_msgTypes[288] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18141,7 +18535,7 @@ func (x *ListClientEventsReq_Order) String() string { func (*ListClientEventsReq_Order) ProtoMessage() {} func (x *ListClientEventsReq_Order) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[282] + mi := &file_data_service_proto_msgTypes[288] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18154,7 +18548,7 @@ func (x *ListClientEventsReq_Order) ProtoReflect() protoreflect.Message { // Deprecated: Use ListClientEventsReq_Order.ProtoReflect.Descriptor instead. func (*ListClientEventsReq_Order) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{245, 0} + return file_data_service_proto_rawDescGZIP(), []int{248, 0} } func (x *ListClientEventsReq_Order) GetDesc() string { @@ -18188,7 +18582,7 @@ type CompareConfigItemConflictsResp_NonTemplateConfig struct { func (x *CompareConfigItemConflictsResp_NonTemplateConfig) Reset() { *x = CompareConfigItemConflictsResp_NonTemplateConfig{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[283] + mi := &file_data_service_proto_msgTypes[289] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18201,7 +18595,7 @@ func (x *CompareConfigItemConflictsResp_NonTemplateConfig) String() string { func (*CompareConfigItemConflictsResp_NonTemplateConfig) ProtoMessage() {} func (x *CompareConfigItemConflictsResp_NonTemplateConfig) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[283] + mi := &file_data_service_proto_msgTypes[289] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18214,7 +18608,7 @@ func (x *CompareConfigItemConflictsResp_NonTemplateConfig) ProtoReflect() protor // Deprecated: Use CompareConfigItemConflictsResp_NonTemplateConfig.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsResp_NonTemplateConfig) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{257, 0} + return file_data_service_proto_rawDescGZIP(), []int{260, 0} } func (x *CompareConfigItemConflictsResp_NonTemplateConfig) GetId() uint32 { @@ -18285,7 +18679,7 @@ type CompareConfigItemConflictsResp_TemplateConfig struct { func (x *CompareConfigItemConflictsResp_TemplateConfig) Reset() { *x = CompareConfigItemConflictsResp_TemplateConfig{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[284] + mi := &file_data_service_proto_msgTypes[290] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18298,7 +18692,7 @@ func (x *CompareConfigItemConflictsResp_TemplateConfig) String() string { func (*CompareConfigItemConflictsResp_TemplateConfig) ProtoMessage() {} func (x *CompareConfigItemConflictsResp_TemplateConfig) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[284] + mi := &file_data_service_proto_msgTypes[290] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18311,7 +18705,7 @@ func (x *CompareConfigItemConflictsResp_TemplateConfig) ProtoReflect() protorefl // Deprecated: Use CompareConfigItemConflictsResp_TemplateConfig.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsResp_TemplateConfig) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{257, 1} + return file_data_service_proto_rawDescGZIP(), []int{260, 1} } func (x *CompareConfigItemConflictsResp_TemplateConfig) GetTemplateSpaceId() uint32 { @@ -18391,7 +18785,7 @@ type CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail struct func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) Reset() { *x = CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail{} if protoimpl.UnsafeEnabled { - mi := &file_data_service_proto_msgTypes[285] + mi := &file_data_service_proto_msgTypes[291] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -18404,7 +18798,7 @@ func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) S func (*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) ProtoMessage() {} func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) ProtoReflect() protoreflect.Message { - mi := &file_data_service_proto_msgTypes[285] + mi := &file_data_service_proto_msgTypes[291] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18417,7 +18811,7 @@ func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) P // Deprecated: Use CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail.ProtoReflect.Descriptor instead. func (*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) Descriptor() ([]byte, []int) { - return file_data_service_proto_rawDescGZIP(), []int{257, 1, 0} + return file_data_service_proto_rawDescGZIP(), []int{260, 1, 0} } func (x *CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail) GetTemplateId() uint32 { @@ -18821,7 +19215,7 @@ var file_data_service_proto_rawDesc = []byte{ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, @@ -19370,7 +19764,7 @@ var file_data_service_proto_rawDesc = []byte{ 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, + 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x59, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, @@ -19485,110 +19879,583 @@ var file_data_service_proto_rawDesc = []byte{ 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, + 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x5e, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x71, - 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, - 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x22, 0xd8, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x60, 0x0a, 0x1f, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x41, 0x6e, + 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, + 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, + 0x69, 0x7a, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0xec, 0x01, 0x0a, + 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x47, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x7f, 0x0a, 0x06, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x12, 0x30, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc4, 0x01, 0x0a, 0x16, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, + 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x37, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, + 0x71, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, + 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x22, 0xd8, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x52, 0x65, 0x73, - 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x7d, 0x0a, - 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x30, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x70, 0x12, 0x3b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x52, 0x65, + 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x7d, + 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x30, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x02, + 0x0a, 0x17, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, + 0x12, 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, + 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x49, 0x64, 0x73, 0x1a, 0x7d, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x30, 0x0a, 0x08, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x70, 0x62, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, + 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x72, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, + 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x03, 0x69, 0x64, 0x73, 0x22, 0xf6, 0x02, 0x0a, 0x21, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, + 0x6c, 0x65, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x12, 0x2f, + 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x63, + 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0e, 0x6e, 0x6f, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x36, 0x0a, + 0x22, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xbf, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x84, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, + 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x61, 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x63, + 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x02, 0x0a, - 0x17, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, - 0x38, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, - 0x49, 0x64, 0x73, 0x1a, 0x7d, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x30, 0x0a, 0x08, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x70, 0x62, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, - 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x22, 0x75, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, + 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, + 0x69, 0x7a, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x89, 0x05, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0xa5, + 0x04, 0x0a, 0x10, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x14, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x34, + 0x0a, 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, + 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, + 0x69, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, + 0x6c, 0x65, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x22, 0x6d, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, - 0x69, 0x64, 0x73, 0x22, 0xf6, 0x02, 0x0a, 0x21, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, - 0x6c, 0x65, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x61, 0x70, 0x70, 0x49, 0x64, 0x73, 0x12, 0x2f, 0x0a, - 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x63, 0x6c, - 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, - 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x6f, 0x5f, 0x73, 0x65, 0x74, - 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0e, 0x6e, 0x6f, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x31, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, + 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x52, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, + 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x5d, 0x0a, 0x21, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x22, 0x61, 0x0a, 0x22, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x82, + 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x3d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, + 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x22, 0xde, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, + 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x5b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x61, 0x74, + 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, + 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, + 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x7b, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, + 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, + 0x64, 0x22, 0x48, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x2c, 0x0a, 0x18, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, + 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x4a, 0x0a, 0x19, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, + 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x34, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x65, 0x66, 0x49, 0x6e, 0x66, + 0x6f, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x5b, 0x0a, 0x21, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, + 0x69, 0x65, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x36, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x65, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x44, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x71, + 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x51, + 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, + 0x42, 0x69, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, + 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x4f, 0x66, 0x42, + 0x69, 0x7a, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x95, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x12, 0x43, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, + 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, + 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x68, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x61, + 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa5, + 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x43, + 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, + 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x72, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, + 0x62, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, + 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xf3, 0x01, 0x0a, 0x1c, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, + 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, + 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x6c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, + 0x2e, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xf9, + 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, + 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x7c, 0x0a, 0x25, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, + 0x74, 0x62, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x62, + 0x0a, 0x23, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, + 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x22, 0x94, 0x01, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x12, 0x43, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, + 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x48, 0x0a, 0x1b, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x61, 0x74, + 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x22, 0xad, 0x05, 0x0a, 0x1d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, + 0x6f, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, + 0x70, 0x70, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6d, 0x70, + 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x08, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x94, 0x04, 0x0a, + 0x07, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x22, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x03, 0x69, 0x64, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, - 0x73, 0x70, 0x65, 0x63, 0x22, 0xbf, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, - 0x73, 0x70, 0x65, 0x63, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x84, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x72, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xe4, 0x01, 0x0a, + 0x17, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, + 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, + 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x1a, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, + 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, + 0x37, 0x0a, 0x1b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, + 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, + 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x66, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, + 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x76, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x22, 0x70, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x66, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x49, 0x64, 0x22, 0x63, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, + 0x76, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x44, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x62, 0x61, 0x74, + 0x76, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x61, 0x74, + 0x76, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, + 0x47, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, + 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x6e, 0x0a, 0x1f, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, + 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, + 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, + 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x20, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, + 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x22, 0x7e, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x49, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, + 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, + 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x13, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, + 0x22, 0x5f, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x88, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, + 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x55, 0x0a, 0x1a, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, + 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, @@ -19603,2136 +20470,1747 @@ var file_data_service_proto_rawDesc = []byte{ 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, - 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x63, 0x0a, - 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0x75, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, - 0x7a, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x89, 0x05, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0xa5, 0x04, - 0x0a, 0x10, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x14, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x34, 0x0a, - 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, - 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, - 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x69, - 0x6c, 0x65, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x22, 0x6d, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x31, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, - 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x52, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, - 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x5d, 0x0a, 0x21, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x22, 0x61, 0x0a, 0x22, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x3b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x62, 0x74, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x82, 0x01, - 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x3d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x74, - 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x22, 0xde, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, + 0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x74, 0x0a, + 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, + 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, + 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x70, 0x0a, 0x1a, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x3c, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbc, 0x01, + 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, - 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x61, 0x6c, 0x6c, 0x22, 0x5b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x2d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x22, 0xa8, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x61, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x7b, 0x0a, 0x14, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, - 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x46, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, - 0x22, 0x48, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x07, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, - 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x2c, 0x0a, 0x18, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, 0x79, - 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x4a, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x22, 0x34, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x65, 0x66, 0x49, 0x6e, 0x66, 0x6f, - 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x5b, 0x0a, 0x21, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, - 0x65, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x36, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x65, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x44, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x71, 0x12, - 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x51, 0x0a, - 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, - 0x69, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x74, 0x73, 0x65, 0x74, - 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x4f, 0x66, 0x42, 0x69, - 0x7a, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x22, 0x95, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, - 0x12, 0x43, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, - 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, - 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x61, 0x6c, 0x6c, 0x22, 0x68, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x61, 0x74, - 0x62, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa5, 0x01, - 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x43, 0x0a, - 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x72, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, - 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xf3, 0x01, 0x0a, 0x1c, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, - 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, - 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x61, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x1f, - 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x6c, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, - 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xf9, 0x01, - 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x7c, 0x0a, 0x25, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, - 0x62, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, - 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x62, 0x0a, - 0x23, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, - 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x22, 0x94, 0x01, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, - 0x12, 0x43, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, 0x2e, 0x41, 0x70, 0x70, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, - 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x48, 0x0a, 0x1b, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x29, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x62, - 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0x4a, 0x0a, 0x1a, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, - 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x37, - 0x0a, 0x1b, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x70, - 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, - 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, - 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x76, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, - 0x70, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, - 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, - 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, - 0x64, 0x22, 0x63, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x76, - 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x12, 0x44, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x76, - 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, - 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x61, 0x74, 0x76, - 0x2e, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x47, - 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x6e, 0x0a, 0x1f, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, - 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, - 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x20, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0x7e, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, - 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, - 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x49, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, - 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, - 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, - 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x13, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x22, - 0x5f, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x22, 0x88, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x55, 0x0a, 0x1a, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x74, - 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, + 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x72, 0x0a, 0x19, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x3f, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x22, 0xc3, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, + 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, - 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x74, 0x0a, 0x1c, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x70, 0x0a, 0x1a, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, - 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbc, 0x01, 0x0a, - 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, - 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x72, 0x0a, 0x19, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x7c, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x2a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, + 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, + 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, + 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x84, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, - 0xc3, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, - 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x7c, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, - 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, - 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, - 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x84, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbf, - 0x02, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, + 0xbf, 0x02, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, + 0x6c, 0x22, 0x80, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, + 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, + 0x22, 0x7a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x07, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x62, 0x74, + 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xd0, 0x01, 0x0a, + 0x23, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, + 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, - 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, + 0x84, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, + 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, + 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, + 0x22, 0x76, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, + 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, - 0x22, 0x80, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, + 0x22, 0x80, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, + 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, - 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, - 0x7a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x62, 0x74, 0x62, - 0x72, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x23, - 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x84, - 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, - 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x46, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, - 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, - 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, - 0x76, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, - 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, - 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, - 0x69, 0x7a, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, - 0x80, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x70, 0x62, 0x74, 0x62, 0x72, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x22, 0x70, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x74, 0x49, 0x64, 0x22, 0x80, 0x02, 0x0a, 0x21, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, - 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, - 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x2e, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x2a, 0x0a, 0x04, 0x49, - 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe1, 0x02, 0x0a, 0x22, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, - 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x1a, 0xf5, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x0f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, - 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, - 0x70, 0x70, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b, - 0x0a, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, - 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x17, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x45, - 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x19, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, - 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x65, 0x0a, 0x1a, 0x49, - 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x12, 0x30, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x05, 0x73, 0x70, 0x65, - 0x63, 0x73, 0x22, 0x44, 0x0a, 0x1b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb7, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, - 0x6c, 0x6c, 0x22, 0x63, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x07, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x9d, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x74, 0x76, - 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x6d, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4f, 0x0a, 0x24, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, - 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x39, 0x0a, 0x25, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, - 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, - 0x64, 0x73, 0x22, 0x72, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x12, 0x38, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, - 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, - 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x29, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, - 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, - 0x64, 0x22, 0x3d, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x22, 0x40, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, - 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x22, 0xfa, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x9f, 0x02, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x3a, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x05, 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, 0x0b, - 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x0c, 0x6e, - 0x65, 0x77, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 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, 0x0b, 0x6e, 0x65, 0x77, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x22, - 0x49, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x0e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, - 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, - 0x5a, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x38, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4b, 0x0a, 0x1a, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x1b, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, - 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x66, 0x0a, 0x1b, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x64, 0x69, - 0x74, 0x65, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb0, 0x02, - 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x53, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0xa7, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, - 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, - 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, - 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, - 0x22, 0xad, 0x02, 0x0a, 0x0a, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, + 0x69, 0x6c, 0x73, 0x22, 0x70, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, - 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, - 0x6c, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x61, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, - 0x72, 0x61, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x12, 0x2f, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 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, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0xf2, 0x02, 0x0a, 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, - 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x65, - 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x26, 0x0a, + 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x80, 0x02, 0x0a, 0x21, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, + 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x28, + 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x2a, 0x0a, 0x04, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd6, 0x03, 0x0a, 0x22, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x43, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xea, 0x02, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, + 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x65, + 0x64, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x61, 0x70, 0x70, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x3b, 0x0a, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x17, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x14, + 0x61, 0x70, 0x70, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x71, 0x75, 0x61, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x61, 0x70, 0x70, 0x45, + 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x41, + 0x0a, 0x1d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, + 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x45, 0x78, 0x63, 0x65, 0x65, 0x64, 0x73, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x22, 0x8d, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, + 0x40, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, + 0x63, 0x22, 0x65, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x05, 0x73, 0x70, 0x65, 0x63, 0x73, 0x22, 0x44, 0x0a, 0x1b, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0d, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb7, + 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, + 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, + 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x63, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, - 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x61, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, - 0x61, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x09, 0x20, 0x03, 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, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x0b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x1d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1a, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x68, 0x61, 0x76, 0x65, 0x5f, - 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x68, 0x61, 0x76, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, - 0x6c, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x70, 0x61, - 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x50, 0x61, 0x67, 0x65, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, - 0x22, 0x5b, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x36, 0x0a, - 0x10, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x14, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x23, 0x0a, + 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x9d, 0x01, + 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, + 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x6d, 0x0a, + 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x61, 0x74, + 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4f, 0x0a, 0x24, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x39, 0x0a, + 0x25, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x72, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x38, 0x0a, 0x0a, 0x61, 0x74, + 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, + 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x29, 0x0a, 0x10, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x28, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x40, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, + 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, + 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0xfa, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, + 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x1a, 0x9f, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 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, 0x0b, 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x3a, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x06, 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, 0x0b, 0x6e, 0x65, 0x77, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, + 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, + 0x64, 0x69, 0x74, 0x65, 0x64, 0x22, 0x49, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, + 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, + 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x82, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x52, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x5a, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x22, 0x4b, 0x0a, 0x1a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xd8, + 0x01, 0x0a, 0x1b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x51, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0x66, 0x0a, 0x1b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x18, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, + 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x19, 0x0a, + 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x22, 0xb0, 0x02, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0xa7, 0x01, 0x0a, + 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, + 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x22, 0xad, 0x02, 0x0a, 0x0a, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x61, 0x79, + 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x18, 0x09, 0x20, 0x03, 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, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf2, 0x02, 0x0a, 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, 0x6e, 0x64, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, + 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x38, 0x0a, 0x09, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x61, 0x79, 0x5f, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 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, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x0b, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x41, 0x0a, 0x1d, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, + 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x1a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x53, 0x74, 0x72, 0x61, + 0x74, 0x65, 0x67, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x29, 0x0a, + 0x10, 0x68, 0x61, 0x76, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x76, 0x65, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x03, 0x69, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x15, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, - 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x71, 0x0a, 0x0c, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x08, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x1d, - 0x0a, 0x07, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x63, 0x0a, - 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x32, 0x0a, 0x0a, - 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x20, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, - 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x22, 0x73, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, - 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x53, 0x70, 0x65, - 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x86, 0x03, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, - 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x07, - 0x6b, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6b, - 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, - 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x70, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, - 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, - 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x73, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, - 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, - 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, - 0x76, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xf6, 0x01, 0x0a, 0x11, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, - 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, - 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x03, 0x6b, - 0x76, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, - 0x71, 0x2e, 0x4b, 0x76, 0x52, 0x03, 0x6b, 0x76, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x41, 0x6c, 0x6c, 0x1a, 0x64, 0x0a, 0x02, 0x4b, 0x76, - 0x12, 0x37, 0x0a, 0x0d, 0x6b, 0x76, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, - 0x76, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x6b, 0x76, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x07, 0x6b, 0x76, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x6b, - 0x76, 0x2e, 0x4b, 0x76, 0x53, 0x70, 0x65, 0x63, 0x52, 0x06, 0x6b, 0x76, 0x53, 0x70, 0x65, 0x63, - 0x22, 0x26, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, - 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x0d, 0x55, 0x6e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, - 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x4b, 0x0a, 0x09, 0x55, 0x6e, 0x64, - 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x58, 0x0a, 0x16, 0x4b, 0x76, 0x46, 0x65, 0x74, 0x63, - 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, - 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, - 0x22, 0x2b, 0x0a, 0x17, 0x4b, 0x76, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, - 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x93, 0x01, - 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, - 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x12, 0x3f, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x70, 0x62, 0x63, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x22, 0xc5, 0x02, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, - 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, - 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x1a, 0x2d, 0x0a, 0x05, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x63, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x73, 0x63, 0x22, 0xa1, 0x01, 0x0a, 0x0f, - 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x24, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x50, 0x61, 0x67, 0x65, + 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0x5b, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x22, 0x36, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x14, 0x46, + 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x71, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x15, 0x46, 0x65, + 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x22, 0x71, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x22, 0x1d, 0x0a, 0x07, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x67, 0x12, + 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x63, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, + 0x65, 0x71, 0x12, 0x32, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x73, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, + 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x6b, 0x76, + 0x2e, 0x4b, 0x76, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x86, 0x03, + 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, + 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x77, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x6f, 0x72, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x70, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x76, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x70, + 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x73, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x0a, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xf6, 0x01, + 0x0a, 0x11, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, + 0x64, 0x12, 0x2c, 0x0a, 0x03, 0x6b, 0x76, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x4b, 0x76, 0x52, 0x03, 0x6b, 0x76, 0x73, 0x12, + 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x41, 0x6c, 0x6c, + 0x1a, 0x64, 0x0a, 0x02, 0x4b, 0x76, 0x12, 0x37, 0x0a, 0x0d, 0x6b, 0x76, 0x5f, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x0c, 0x6b, 0x76, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x25, 0x0a, 0x07, 0x6b, 0x76, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x70, 0x62, 0x6b, 0x76, 0x2e, 0x4b, 0x76, 0x53, 0x70, 0x65, 0x63, 0x52, 0x06, + 0x6b, 0x76, 0x53, 0x70, 0x65, 0x63, 0x22, 0x26, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x4f, + 0x0a, 0x0d, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, - 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2f, - 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x63, - 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0xe3, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xda, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x63, - 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x12, - 0x29, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, - 0x5f, 0x73, 0x74, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x70, 0x75, 0x4d, - 0x61, 0x78, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, - 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, - 0x65, 0x53, 0x74, 0x72, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, - 0x61, 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x55, 0x73, 0x61, - 0x67, 0x65, 0x53, 0x74, 0x72, 0x22, 0xe1, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, - 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, - 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, - 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x2d, 0x0a, 0x05, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x73, 0x63, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x73, 0x63, 0x22, 0x59, 0x0a, 0x14, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x65, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, + 0x4b, 0x0a, 0x09, 0x55, 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x59, 0x0a, 0x14, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x71, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x22, 0xca, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, - 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, - 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, - 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x05, 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, 0x0f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x27, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb9, 0x01, 0x0a, 0x14, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x58, 0x0a, 0x16, + 0x4b, 0x76, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, + 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, + 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x2b, 0x0a, 0x17, 0x4b, 0x76, 0x46, 0x65, 0x74, 0x63, + 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x03, + 0x69, 0x64, 0x73, 0x22, 0x93, 0x01, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, + 0x65, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x3f, 0x0a, 0x12, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x63, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0xc5, 0x02, 0x0a, 0x0e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, + 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, + 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x62, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x1a, 0x2d, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x65, 0x73, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, + 0x10, 0x0a, 0x03, 0x61, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x73, + 0x63, 0x22, 0xa1, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x12, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe3, 0x02, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, + 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xda, + 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x28, 0x0a, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x74, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, + 0x67, 0x65, 0x53, 0x74, 0x72, 0x12, 0x29, 0x0a, 0x11, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x63, 0x70, 0x75, 0x4d, 0x61, 0x78, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, + 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x74, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, + 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, + 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x74, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, + 0x4d, 0x61, 0x78, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x22, 0xe1, 0x02, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 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, 0x0f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x17, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x62, - 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, - 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x18, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x22, 0x7f, 0x0a, 0x1f, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x6e, - 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, - 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x8e, 0x01, 0x0a, - 0x1d, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, - 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, - 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, - 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6f, - 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x22, 0xa3, 0x09, - 0x0a, 0x1e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, - 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x68, 0x0a, 0x14, 0x6e, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x6e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x5e, 0x0a, 0x10, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x1a, 0x85, 0x02, 0x0a, 0x11, 0x4e, - 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x05, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x1a, 0x2d, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, + 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x73, 0x63, 0x22, + 0x59, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x70, 0x62, 0x63, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x13, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, + 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, + 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, + 0x59, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, + 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x70, 0x62, 0x63, 0x71, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xca, 0x01, 0x0a, 0x14, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 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, 0x0f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x3e, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x63, - 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, - 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, - 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, - 0x64, 0x35, 0x1a, 0xae, 0x05, 0x0a, 0x0e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x69, 0x73, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x12, 0x79, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x65, 0x78, - 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, - 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, - 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x73, 0x5f, 0x65, - 0x6d, 0x70, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0xc2, - 0x01, 0x0a, 0x16, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, - 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, - 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, - 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, + 0x22, 0xb9, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, + 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 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, 0x0f, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, + 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, + 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, + 0x30, 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x78, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x22, 0x7f, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x41, 0x6e, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, + 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, + 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, + 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x1d, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, + 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, + 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x49, + 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x49, 0x64, 0x22, 0xa3, 0x09, 0x0a, 0x1e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x14, 0x6e, 0x6f, 0x6e, 0x5f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, + 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x4e, 0x6f, 0x6e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x6e, 0x6f, + 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x12, 0x5e, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, + 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x1a, 0x85, 0x02, 0x0a, 0x11, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x70, 0x62, 0x63, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, + 0x65, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, + 0x65, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, + 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x79, 0x74, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x62, 0x79, + 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x1a, 0xae, 0x05, 0x0a, 0x0e, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, + 0x73, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, + 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x79, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, + 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x11, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x45, 0x78, + 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x69, 0x73, + 0x74, 0x12, 0x31, 0x0a, 0x15, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x69, 0x73, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x12, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x49, 0x73, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0xc2, 0x01, 0x0a, 0x16, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, + 0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64, + 0x12, 0x30, 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, + 0x38, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x74, 0x76, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, + 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x53, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, - 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x17, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xda, 0x6a, 0x0a, 0x04, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, - 0x12, 0x12, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, - 0x70, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x61, 0x70, - 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x27, 0x0a, - 0x06, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, - 0x2e, 0x41, 0x70, 0x70, 0x22, 0x00, 0x12, 0x2f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, - 0x42, 0x79, 0x49, 0x44, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x70, 0x70, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x61, 0x70, - 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x70, - 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0a, - 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0c, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x74, 0x12, 0x15, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x70, 0x70, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, - 0x70, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x41, 0x0a, - 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x5d, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x42, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, - 0x74, 0x65, 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x11, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x8f, + 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, + 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x32, 0xa3, 0x6c, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x09, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2d, + 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, + 0x0a, 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x00, 0x12, 0x34, 0x0a, + 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x12, 0x55, 0x6e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x3e, 0x0a, 0x0e, 0x55, 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x3b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x69, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, - 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, + 0x70, 0x22, 0x00, 0x12, 0x27, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x12, 0x0f, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0a, + 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x00, 0x12, 0x2f, 0x0a, 0x0a, + 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x79, 0x49, 0x44, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, + 0x0a, 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, 0x22, 0x00, 0x12, 0x33, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x70, 0x62, 0x61, 0x70, 0x70, 0x2e, 0x41, 0x70, 0x70, + 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, + 0x73, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x42, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, + 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, + 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, + 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, + 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x10, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x19, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, + 0x12, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, + 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0e, 0x55, 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, + 0x6e, 0x64, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, + 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x10, + 0x2e, 0x70, 0x62, 0x63, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, + 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, - 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, - 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, - 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, - 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, - 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x10, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x19, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3b, - 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, - 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x0a, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, - 0x2e, 0x70, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x3f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, - 0x62, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x22, 0x00, - 0x12, 0x3b, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, - 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12, 0x15, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x42, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, - 0x70, 0x62, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x72, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x10, - 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x46, 0x0a, 0x12, 0x55, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x6e, - 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, - 0x49, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x72, 0x63, 0x69, 0x2e, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x22, - 0x00, 0x12, 0x3c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, - 0x4b, 0x76, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x72, - 0x6b, 0x76, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x22, 0x00, 0x12, - 0x46, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, - 0x76, 0x73, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, - 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, - 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x12, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, - 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, + 0x74, 0x65, 0x6d, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x42, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, + 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x37, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, + 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0c, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x73, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2e, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x0a, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, + 0x62, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x42, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, - 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x73, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x12, 0x55, 0x6e, 0x44, 0x65, 0x70, 0x72, + 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, + 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, + 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x15, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x49, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x70, 0x62, 0x72, + 0x63, 0x69, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x52, 0x65, 0x71, + 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x72, 0x6b, 0x76, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x64, 0x4b, 0x76, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x73, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x52, 0x65, + 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x64, 0x4b, 0x76, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x35, 0x0a, + 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, + 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, + 0x73, 0x12, 0x12, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, + 0x6b, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0a, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, + 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, + 0x6f, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0c, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x73, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, - 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x48, - 0x6f, 0x6f, 0x6b, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, - 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x48, 0x6f, - 0x6f, 0x6b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x46, - 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x46, - 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, - 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x49, 0x44, 0x73, 0x12, 0x1d, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x45, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, - 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, - 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x49, 0x44, 0x12, 0x1c, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, - 0x68, 0x72, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x00, 0x12, 0x46, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, + 0x6f, 0x6b, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x30, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x5a, 0x0a, 0x15, 0x48, 0x6f, 0x6f, 0x6b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, + 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, + 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, + 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x64, 0x49, 0x44, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x49, 0x44, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x49, 0x44, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, + 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, + 0x79, 0x49, 0x44, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x68, 0x72, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x48, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x13, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x48, - 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, - 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x50, 0x75, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x79, 0x50, 0x75, 0x62, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x70, 0x62, 0x68, 0x72, 0x2e, - 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x46, - 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, - 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, - 0x6f, 0x6f, 0x6b, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, - 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x51, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, - 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x6c, 0x42, 0x69, 0x7a, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x6c, 0x42, 0x69, 0x7a, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, + 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x50, 0x75, + 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x79, 0x50, 0x75, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x12, + 0x2e, 0x70, 0x62, 0x68, 0x72, 0x2e, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x1a, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x24, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x47, + 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1c, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3d, 0x0a, - 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, - 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x16, 0x2e, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x3e, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x3e, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x13, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x7a, 0x73, 0x4f, 0x66, 0x54, 0x6d, + 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x42, 0x69, 0x7a, 0x73, 0x4f, 0x66, 0x54, 0x6d, + 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4d, + 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, + 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, + 0x79, 0x49, 0x44, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, + 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, + 0x70, 0x6c, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x48, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x12, 0x41, 0x64, + 0x12, 0x46, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x54, 0x6f, 0x54, 0x6d, + 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x54, 0x6f, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, - 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x73, - 0x54, 0x6f, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, - 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x50, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6d, 0x70, 0x6c, - 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x20, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6d, 0x70, 0x6c, 0x73, - 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, - 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, - 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, - 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x12, 0x1c, 0x2e, + 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6d, 0x70, 0x6c, 0x53, + 0x65, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, + 0x12, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, - 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x5a, 0x0a, 0x14, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, + 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, + 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, 0x6f, + 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x12, + 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, + 0x4f, 0x66, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x73, 0x4f, 0x66, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x1c, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, + 0x41, 0x6e, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, + 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, + 0x75, 0x70, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x79, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x14, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1d, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x4d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x16, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, - 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x69, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, - 0x12, 0x23, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, - 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x16, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x75, 0x0a, - 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x12, - 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, + 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, + 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, - 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x79, 0x54, 0x6d, 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, 0x19, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x11, + 0x70, 0x6c, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x11, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x4b, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x74, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x44, 0x0a, + 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, + 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, - 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, - 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x65, 0x66, 0x49, 0x6e, 0x66, 0x6f, - 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x65, - 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x65, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x49, - 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x12, 0x1a, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, - 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, - 0x69, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, + 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x65, 0x74, 0x73, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, + 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x73, + 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x1d, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, + 0x69, 0x65, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x49, 0x44, 0x73, 0x12, 0x26, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x65, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x49, 0x44, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x65, 0x66, + 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x79, 0x49, 0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x4e, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, + 0x66, 0x42, 0x69, 0x7a, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x71, + 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x53, 0x65, 0x74, 0x73, 0x4f, 0x66, 0x42, 0x69, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x51, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x10, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, + 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x12, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, + 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x52, 0x0a, - 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, - 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x52, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, - 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, - 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x7e, 0x0a, - 0x21, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x19, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, + 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, - 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2b, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x78, 0x0a, - 0x1f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, - 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x45, 0x78, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x1a, 0x29, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, + 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x70, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x56, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x12, 0x23, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x6f, 0x6d, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x54, 0x6f, 0x41, 0x70, 0x70, + 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x45, 0x78, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x66, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, + 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x45, 0x78, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x12, 0x27, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, + 0x52, 0x65, 0x66, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x66, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x66, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x4e, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, - 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, - 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x57, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x4e, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, + 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x57, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x1c, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, - 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x26, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x6c, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x12, 0x24, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x5d, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x1c, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x26, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x54, 0x6d, 0x70, 0x6c, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x6c, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, + 0x24, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5d, + 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x63, - 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, - 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, - 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1f, 0x2e, + 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x63, 0x0a, + 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, + 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, + 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1f, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x69, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, - 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, - 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x20, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x29, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, - 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, - 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, - 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, - 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6c, 0x0a, - 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x24, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, + 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x69, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x29, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, - 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x20, 0x4c, - 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, - 0x29, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, - 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, - 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x1b, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x25, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x20, 0x4c, 0x69, + 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x29, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, + 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x61, 0x6d, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x75, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, - 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, - 0x70, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, - 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, + 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x75, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, - 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, - 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, + 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x6d, 0x70, 0x6c, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x41, 0x70, 0x70, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x12, + 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6d, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x1e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x16, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x28, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x16, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x21, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, - 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, - 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x12, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x21, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, + 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x46, + 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x49, 0x6d, 0x70, 0x6f, 0x72, + 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x49, 0x6d, 0x70, 0x6f, - 0x72, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x0b, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x10, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, - 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, - 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, - 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x38, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, + 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x38, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x17, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, - 0x15, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, - 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x07, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x19, 0x47, + 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, + 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x64, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x64, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x41, 0x70, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x07, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x19, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, 0x6e, 0x64, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, 0x6e, - 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x22, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, - 0x6e, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x41, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, - 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, - 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x10, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x42, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x41, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x1a, - 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x14, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, - 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1f, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, + 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x1a, + 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x10, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, + 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x42, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x1a, 0x11, + 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, + 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x14, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, + 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x53, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x1f, 0x2e, 0x70, + 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x5d, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x1f, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, 0x6f, + 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, - 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x31, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x12, 0x11, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, - 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, - 0x12, 0x11, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, - 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, - 0x4b, 0x76, 0x73, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, - 0x76, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x08, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, - 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, - 0x12, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, - 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0a, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4b, 0x76, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, + 0x6f, 0x70, 0x65, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x31, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x12, 0x11, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, + 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x12, + 0x11, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x76, 0x52, + 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x4b, + 0x76, 0x73, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x76, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x4b, 0x76, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x08, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4b, 0x76, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2e, 0x0a, - 0x06, 0x55, 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, - 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, - 0x13, 0x4b, 0x76, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, - 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4b, 0x76, 0x46, 0x65, - 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4b, 0x76, 0x46, 0x65, 0x74, 0x63, - 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x15, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, - 0x10, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x12, 0x19, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, - 0x62, 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x44, 0x0a, - 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x11, - 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x62, - 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x64, + 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x45, 0x0a, + 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x12, + 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, + 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x4b, 0x76, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x0a, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4b, 0x76, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x6e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x06, + 0x55, 0x6e, 0x64, 0x6f, 0x4b, 0x76, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x55, 0x6e, + 0x64, 0x6f, 0x4b, 0x76, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x13, + 0x4b, 0x76, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, + 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4b, 0x76, 0x46, 0x65, 0x74, + 0x63, 0x68, 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4b, 0x76, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x49, 0x44, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x15, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x19, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x10, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, 0x12, 0x19, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x70, 0x62, + 0x64, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x11, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, + 0x70, 0x62, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x57, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x1d, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, + 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x1d, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, + 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x22, 0x00, 0x12, 0x51, 0x0a, 0x19, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x6c, 0x6c, + 0x54, 0x72, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, + 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, + 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x19, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x6c, - 0x6c, 0x54, 0x72, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, + 0x74, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x15, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, + 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x22, 0x00, 0x12, 0x52, 0x0a, 0x1a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x50, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, - 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x15, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, - 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x1a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, + 0x72, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x17, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x17, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, - 0x63, 0x73, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x6e, 0x64, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, - 0x6e, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x1a, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x42, - 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, - 0x16, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x46, - 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x36, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x64, - 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x67, 0x1a, 0x0d, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x67, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, - 0x3a, 0x01, 0x2a, 0x22, 0x05, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x63, 0x0a, 0x18, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x69, 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x23, 0x2e, - 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, - 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x20, 0x47, 0x65, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, - 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, - 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x64, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, - 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x58, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, - 0x65, 0x4b, 0x69, 0x6e, 0x67, 0x2f, 0x62, 0x6b, 0x2d, 0x62, 0x63, 0x73, 0x2f, 0x62, 0x63, 0x73, - 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x62, 0x63, 0x73, 0x2d, 0x62, 0x73, - 0x63, 0x70, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3b, 0x70, 0x62, 0x64, - 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x6e, 0x64, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x41, 0x6e, + 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x1a, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x70, 0x62, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x42, 0x0a, + 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x16, + 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x46, 0x65, + 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x00, 0x12, 0x36, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x64, 0x73, + 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x67, 0x1a, 0x0d, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x73, 0x67, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x3a, + 0x01, 0x2a, 0x22, 0x05, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x63, 0x0a, 0x18, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x69, + 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, + 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x23, 0x2e, 0x70, + 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x1a, 0x24, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x20, 0x47, 0x65, 0x74, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x2e, + 0x70, 0x62, 0x64, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x70, 0x62, 0x64, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x4e, 0x6f, + 0x6e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x49, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x58, 0x5a, 0x56, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, + 0x4b, 0x69, 0x6e, 0x67, 0x2f, 0x62, 0x6b, 0x2d, 0x62, 0x63, 0x73, 0x2f, 0x62, 0x63, 0x73, 0x2d, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x62, 0x63, 0x73, 0x2d, 0x62, 0x73, 0x63, + 0x70, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x64, + 0x61, 0x74, 0x61, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3b, 0x70, 0x62, 0x64, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -21747,923 +22225,938 @@ func file_data_service_proto_rawDescGZIP() []byte { return file_data_service_proto_rawDescData } -var file_data_service_proto_msgTypes = make([]protoimpl.MessageInfo, 286) +var file_data_service_proto_msgTypes = make([]protoimpl.MessageInfo, 292) var file_data_service_proto_goTypes = []interface{}{ - (*UpdateCredentialScopesReq)(nil), // 0: pbds.UpdateCredentialScopesReq - (*UpdateCredentialScopesResp)(nil), // 1: pbds.UpdateCredentialScopesResp - (*CredentialScopePreviewReq)(nil), // 2: pbds.CredentialScopePreviewReq - (*CredentialScopePreviewResp)(nil), // 3: pbds.CredentialScopePreviewResp - (*DeleteCredentialScopesReq)(nil), // 4: pbds.DeleteCredentialScopesReq - (*DeleteCredentialScopesResp)(nil), // 5: pbds.DeleteCredentialScopesResp - (*ListCredentialScopesReq)(nil), // 6: pbds.ListCredentialScopesReq - (*ListCredentialScopesResp)(nil), // 7: pbds.ListCredentialScopesResp - (*CreateCredentialScopeReq)(nil), // 8: pbds.CreateCredentialScopeReq - (*CreateCredentialReq)(nil), // 9: pbds.CreateCredentialReq - (*ListCredentialReq)(nil), // 10: pbds.ListCredentialReq - (*ListCredentialResp)(nil), // 11: pbds.ListCredentialResp - (*UpdateCredentialReq)(nil), // 12: pbds.UpdateCredentialReq - (*CheckCredentialNameReq)(nil), // 13: pbds.CheckCredentialNameReq - (*CheckCredentialNameResp)(nil), // 14: pbds.CheckCredentialNameResp - (*DeleteCredentialReq)(nil), // 15: pbds.DeleteCredentialReq - (*EnableCredentialReq)(nil), // 16: pbds.EnableCredentialReq - (*CreateResp)(nil), // 17: pbds.CreateResp - (*UpdateConfigHookReq)(nil), // 18: pbds.UpdateConfigHookReq - (*GetConfigHookReq)(nil), // 19: pbds.GetConfigHookReq - (*CreateAppReq)(nil), // 20: pbds.CreateAppReq - (*UpdateAppReq)(nil), // 21: pbds.UpdateAppReq - (*DeleteAppReq)(nil), // 22: pbds.DeleteAppReq - (*GetAppReq)(nil), // 23: pbds.GetAppReq - (*GetAppByIDReq)(nil), // 24: pbds.GetAppByIDReq - (*GetAppByNameReq)(nil), // 25: pbds.GetAppByNameReq - (*ListAppsRestReq)(nil), // 26: pbds.ListAppsRestReq - (*ListAppsResp)(nil), // 27: pbds.ListAppsResp - (*ListAppsByIDsReq)(nil), // 28: pbds.ListAppsByIDsReq - (*ListAppsByIDsResp)(nil), // 29: pbds.ListAppsByIDsResp - (*CreateConfigItemReq)(nil), // 30: pbds.CreateConfigItemReq - (*BatchUpsertConfigItemsReq)(nil), // 31: pbds.BatchUpsertConfigItemsReq - (*BatchUpsertConfigItemsResp)(nil), // 32: pbds.BatchUpsertConfigItemsResp - (*UpdateConfigItemReq)(nil), // 33: pbds.UpdateConfigItemReq - (*DeleteConfigItemReq)(nil), // 34: pbds.DeleteConfigItemReq - (*UnDeleteConfigItemReq)(nil), // 35: pbds.UnDeleteConfigItemReq - (*UndoConfigItemReq)(nil), // 36: pbds.UndoConfigItemReq - (*GetConfigItemReq)(nil), // 37: pbds.GetConfigItemReq - (*ListConfigItemsReq)(nil), // 38: pbds.ListConfigItemsReq - (*ListConfigItemsResp)(nil), // 39: pbds.ListConfigItemsResp - (*ListReleasedConfigItemsReq)(nil), // 40: pbds.ListReleasedConfigItemsReq - (*ListReleasedConfigItemsResp)(nil), // 41: pbds.ListReleasedConfigItemsResp - (*ListConfigItemCountReq)(nil), // 42: pbds.ListConfigItemCountReq - (*ListConfigItemCountResp)(nil), // 43: pbds.ListConfigItemCountResp - (*ListConfigItemByTupleReq)(nil), // 44: pbds.ListConfigItemByTupleReq - (*ListConfigItemByTupleResp)(nil), // 45: pbds.ListConfigItemByTupleResp - (*CreateContentReq)(nil), // 46: pbds.CreateContentReq - (*GetContentReq)(nil), // 47: pbds.GetContentReq - (*CreateCommitReq)(nil), // 48: pbds.CreateCommitReq - (*GetLatestCommitReq)(nil), // 49: pbds.GetLatestCommitReq - (*CreateReleaseReq)(nil), // 50: pbds.CreateReleaseReq - (*ListReleasesReq)(nil), // 51: pbds.ListReleasesReq - (*ListReleasesResp)(nil), // 52: pbds.ListReleasesResp - (*GetReleaseByNameReq)(nil), // 53: pbds.GetReleaseByNameReq - (*GetReleaseReq)(nil), // 54: pbds.GetReleaseReq - (*DeprecateReleaseReq)(nil), // 55: pbds.DeprecateReleaseReq - (*UnDeprecateReleaseReq)(nil), // 56: pbds.UnDeprecateReleaseReq - (*DeleteReleaseReq)(nil), // 57: pbds.DeleteReleaseReq - (*CheckReleaseNameReq)(nil), // 58: pbds.CheckReleaseNameReq - (*CheckReleaseNameResp)(nil), // 59: pbds.CheckReleaseNameResp - (*GetReleasedCIReq)(nil), // 60: pbds.GetReleasedCIReq - (*GetReleasedKvReq)(nil), // 61: pbds.GetReleasedKvReq - (*ListReleasedKvReq)(nil), // 62: pbds.ListReleasedKvReq - (*ListReleasedKvResp)(nil), // 63: pbds.ListReleasedKvResp - (*CreateHookReq)(nil), // 64: pbds.CreateHookReq - (*ListHookTagReq)(nil), // 65: pbds.ListHookTagReq - (*GetHookReq)(nil), // 66: pbds.GetHookReq - (*GetHookResp)(nil), // 67: pbds.GetHookResp - (*HookFetchIDsExcludingReq)(nil), // 68: pbds.HookFetchIDsExcludingReq - (*HookFetchIDsExcludingResp)(nil), // 69: pbds.HookFetchIDsExcludingResp - (*GetHookReferencedIDsReq)(nil), // 70: pbds.GetHookReferencedIDsReq - (*GetHookReferencedIDsResp)(nil), // 71: pbds.GetHookReferencedIDsResp - (*GetHookInfoSpec)(nil), // 72: pbds.GetHookInfoSpec - (*ListHooksReq)(nil), // 73: pbds.ListHooksReq - (*ListHooksResp)(nil), // 74: pbds.ListHooksResp - (*ListHookTagResp)(nil), // 75: pbds.ListHookTagResp - (*ListHookReferencesReq)(nil), // 76: pbds.ListHookReferencesReq - (*ListHookReferencesResp)(nil), // 77: pbds.ListHookReferencesResp - (*DeleteHookReq)(nil), // 78: pbds.DeleteHookReq - (*UpdateHookReq)(nil), // 79: pbds.UpdateHookReq - (*CreateHookRevisionReq)(nil), // 80: pbds.CreateHookRevisionReq - (*ListHookRevisionsReq)(nil), // 81: pbds.ListHookRevisionsReq - (*ListHookRevisionsResp)(nil), // 82: pbds.ListHookRevisionsResp - (*GetHookRevisionByIdReq)(nil), // 83: pbds.GetHookRevisionByIdReq - (*DeleteHookRevisionReq)(nil), // 84: pbds.DeleteHookRevisionReq - (*PublishHookRevisionReq)(nil), // 85: pbds.PublishHookRevisionReq - (*GetByPubStateReq)(nil), // 86: pbds.GetByPubStateReq - (*UpdateHookRevisionReq)(nil), // 87: pbds.UpdateHookRevisionReq - (*ListHookRevisionReferencesReq)(nil), // 88: pbds.ListHookRevisionReferencesReq - (*ListHookRevisionReferencesResp)(nil), // 89: pbds.ListHookRevisionReferencesResp - (*GetReleaseHookReq)(nil), // 90: pbds.GetReleaseHookReq - (*GetReleaseHookResp)(nil), // 91: pbds.GetReleaseHookResp - (*CreateTemplateSpaceReq)(nil), // 92: pbds.CreateTemplateSpaceReq - (*ListTemplateSpacesReq)(nil), // 93: pbds.ListTemplateSpacesReq - (*ListTemplateSpacesResp)(nil), // 94: pbds.ListTemplateSpacesResp - (*UpdateTemplateSpaceReq)(nil), // 95: pbds.UpdateTemplateSpaceReq - (*DeleteTemplateSpaceReq)(nil), // 96: pbds.DeleteTemplateSpaceReq - (*GetAllBizsOfTmplSpacesResp)(nil), // 97: pbds.GetAllBizsOfTmplSpacesResp - (*CreateDefaultTmplSpaceReq)(nil), // 98: pbds.CreateDefaultTmplSpaceReq - (*ListTmplSpacesByIDsReq)(nil), // 99: pbds.ListTmplSpacesByIDsReq - (*ListTmplSpacesByIDsResp)(nil), // 100: pbds.ListTmplSpacesByIDsResp - (*CreateTemplateReq)(nil), // 101: pbds.CreateTemplateReq - (*ListTemplatesReq)(nil), // 102: pbds.ListTemplatesReq - (*ListTemplatesResp)(nil), // 103: pbds.ListTemplatesResp - (*UpdateTemplateReq)(nil), // 104: pbds.UpdateTemplateReq - (*DeleteTemplateReq)(nil), // 105: pbds.DeleteTemplateReq - (*BatchDeleteTemplateReq)(nil), // 106: pbds.BatchDeleteTemplateReq - (*AddTmplsToTmplSetsReq)(nil), // 107: pbds.AddTmplsToTmplSetsReq - (*DeleteTmplsFromTmplSetsReq)(nil), // 108: pbds.DeleteTmplsFromTmplSetsReq - (*ListTemplatesByIDsReq)(nil), // 109: pbds.ListTemplatesByIDsReq - (*ListTemplatesByIDsResp)(nil), // 110: pbds.ListTemplatesByIDsResp - (*ListTemplatesNotBoundReq)(nil), // 111: pbds.ListTemplatesNotBoundReq - (*ListTemplatesNotBoundResp)(nil), // 112: pbds.ListTemplatesNotBoundResp - (*ListTmplsOfTmplSetReq)(nil), // 113: pbds.ListTmplsOfTmplSetReq - (*ListTmplsOfTmplSetResp)(nil), // 114: pbds.ListTmplsOfTmplSetResp - (*ListTemplateByTupleReq)(nil), // 115: pbds.ListTemplateByTupleReq - (*ListTemplateByTupleReqResp)(nil), // 116: pbds.ListTemplateByTupleReqResp - (*BatchUpsertTemplatesReq)(nil), // 117: pbds.BatchUpsertTemplatesReq - (*BatchUpsertTemplatesReqResp)(nil), // 118: pbds.BatchUpsertTemplatesReqResp - (*BatchUpdateTemplatePermissionsReq)(nil), // 119: pbds.BatchUpdateTemplatePermissionsReq - (*BatchUpdateTemplatePermissionsResp)(nil), // 120: pbds.BatchUpdateTemplatePermissionsResp - (*CreateTemplateRevisionReq)(nil), // 121: pbds.CreateTemplateRevisionReq - (*UpdateTemplateRevisionReq)(nil), // 122: pbds.UpdateTemplateRevisionReq - (*ListTemplateRevisionsReq)(nil), // 123: pbds.ListTemplateRevisionsReq - (*ListTemplateRevisionsResp)(nil), // 124: pbds.ListTemplateRevisionsResp - (*GetTemplateRevisionReq)(nil), // 125: pbds.GetTemplateRevisionReq - (*GetTemplateRevisionResp)(nil), // 126: pbds.GetTemplateRevisionResp - (*DeleteTemplateRevisionReq)(nil), // 127: pbds.DeleteTemplateRevisionReq - (*ListTemplateRevisionsByIDsReq)(nil), // 128: pbds.ListTemplateRevisionsByIDsReq - (*ListTemplateRevisionsByIDsResp)(nil), // 129: pbds.ListTemplateRevisionsByIDsResp - (*ListTmplRevisionNamesByTmplIDsReq)(nil), // 130: pbds.ListTmplRevisionNamesByTmplIDsReq - (*ListTmplRevisionNamesByTmplIDsResp)(nil), // 131: pbds.ListTmplRevisionNamesByTmplIDsResp - (*CreateTemplateSetReq)(nil), // 132: pbds.CreateTemplateSetReq - (*ListTemplateSetsReq)(nil), // 133: pbds.ListTemplateSetsReq - (*ListTemplateSetsResp)(nil), // 134: pbds.ListTemplateSetsResp - (*UpdateTemplateSetReq)(nil), // 135: pbds.UpdateTemplateSetReq - (*DeleteTemplateSetReq)(nil), // 136: pbds.DeleteTemplateSetReq - (*ListAppTemplateSetsReq)(nil), // 137: pbds.ListAppTemplateSetsReq - (*ListAppTemplateSetsResp)(nil), // 138: pbds.ListAppTemplateSetsResp - (*ListTemplateSetsByIDsReq)(nil), // 139: pbds.ListTemplateSetsByIDsReq - (*ListTemplateSetsByIDsResp)(nil), // 140: pbds.ListTemplateSetsByIDsResp - (*ListTemplateSetBriefInfoByIDsReq)(nil), // 141: pbds.ListTemplateSetBriefInfoByIDsReq - (*ListTemplateSetBriefInfoByIDsResp)(nil), // 142: pbds.ListTemplateSetBriefInfoByIDsResp - (*ListTmplSetsOfBizReq)(nil), // 143: pbds.ListTmplSetsOfBizReq - (*ListTmplSetsOfBizResp)(nil), // 144: pbds.ListTmplSetsOfBizResp - (*CreateAppTemplateBindingReq)(nil), // 145: pbds.CreateAppTemplateBindingReq - (*ListAppTemplateBindingsReq)(nil), // 146: pbds.ListAppTemplateBindingsReq - (*ListAppTemplateBindingsResp)(nil), // 147: pbds.ListAppTemplateBindingsResp - (*UpdateAppTemplateBindingReq)(nil), // 148: pbds.UpdateAppTemplateBindingReq - (*DeleteAppTemplateBindingReq)(nil), // 149: pbds.DeleteAppTemplateBindingReq - (*ListAppBoundTmplRevisionsReq)(nil), // 150: pbds.ListAppBoundTmplRevisionsReq - (*ListAppBoundTmplRevisionsResp)(nil), // 151: pbds.ListAppBoundTmplRevisionsResp - (*ListReleasedAppBoundTmplRevisionsReq)(nil), // 152: pbds.ListReleasedAppBoundTmplRevisionsReq - (*ListReleasedAppBoundTmplRevisionsResp)(nil), // 153: pbds.ListReleasedAppBoundTmplRevisionsResp - (*GetReleasedAppBoundTmplRevisionReq)(nil), // 154: pbds.GetReleasedAppBoundTmplRevisionReq - (*GetReleasedAppBoundTmplRevisionResp)(nil), // 155: pbds.GetReleasedAppBoundTmplRevisionResp - (*CheckAppTemplateBindingReq)(nil), // 156: pbds.CheckAppTemplateBindingReq - (*CheckAppTemplateBindingResp)(nil), // 157: pbds.CheckAppTemplateBindingResp - (*ExtractAppTmplVariablesReq)(nil), // 158: pbds.ExtractAppTmplVariablesReq - (*ExtractAppTmplVariablesResp)(nil), // 159: pbds.ExtractAppTmplVariablesResp - (*GetAppTmplVariableRefsReq)(nil), // 160: pbds.GetAppTmplVariableRefsReq - (*GetAppTmplVariableRefsResp)(nil), // 161: pbds.GetAppTmplVariableRefsResp - (*GetReleasedAppTmplVariableRefsReq)(nil), // 162: pbds.GetReleasedAppTmplVariableRefsReq - (*GetReleasedAppTmplVariableRefsResp)(nil), // 163: pbds.GetReleasedAppTmplVariableRefsResp - (*UpdateAppTmplVariablesReq)(nil), // 164: pbds.UpdateAppTmplVariablesReq - (*ListAppTmplVariablesReq)(nil), // 165: pbds.ListAppTmplVariablesReq - (*ListAppTmplVariablesResp)(nil), // 166: pbds.ListAppTmplVariablesResp - (*ListReleasedAppTmplVariablesReq)(nil), // 167: pbds.ListReleasedAppTmplVariablesReq - (*ListReleasedAppTmplVariablesResp)(nil), // 168: pbds.ListReleasedAppTmplVariablesResp - (*ListTmplBoundCountsReq)(nil), // 169: pbds.ListTmplBoundCountsReq - (*ListTmplBoundCountsResp)(nil), // 170: pbds.ListTmplBoundCountsResp - (*ListTmplRevisionBoundCountsReq)(nil), // 171: pbds.ListTmplRevisionBoundCountsReq - (*ListTmplRevisionBoundCountsResp)(nil), // 172: pbds.ListTmplRevisionBoundCountsResp - (*ListTmplSetBoundCountsReq)(nil), // 173: pbds.ListTmplSetBoundCountsReq - (*ListTmplSetBoundCountsResp)(nil), // 174: pbds.ListTmplSetBoundCountsResp - (*ListTmplBoundUnnamedAppsReq)(nil), // 175: pbds.ListTmplBoundUnnamedAppsReq - (*ListTmplBoundUnnamedAppsResp)(nil), // 176: pbds.ListTmplBoundUnnamedAppsResp - (*ListTmplBoundNamedAppsReq)(nil), // 177: pbds.ListTmplBoundNamedAppsReq - (*ListTmplBoundNamedAppsResp)(nil), // 178: pbds.ListTmplBoundNamedAppsResp - (*ListTmplBoundTmplSetsReq)(nil), // 179: pbds.ListTmplBoundTmplSetsReq - (*ListTmplBoundTmplSetsResp)(nil), // 180: pbds.ListTmplBoundTmplSetsResp - (*ListMultiTmplBoundTmplSetsReq)(nil), // 181: pbds.ListMultiTmplBoundTmplSetsReq - (*ListMultiTmplBoundTmplSetsResp)(nil), // 182: pbds.ListMultiTmplBoundTmplSetsResp - (*ListTmplRevisionBoundUnnamedAppsReq)(nil), // 183: pbds.ListTmplRevisionBoundUnnamedAppsReq - (*ListTmplRevisionBoundUnnamedAppsResp)(nil), // 184: pbds.ListTmplRevisionBoundUnnamedAppsResp - (*ListTmplRevisionBoundNamedAppsReq)(nil), // 185: pbds.ListTmplRevisionBoundNamedAppsReq - (*ListTmplRevisionBoundNamedAppsResp)(nil), // 186: pbds.ListTmplRevisionBoundNamedAppsResp - (*ListTmplSetBoundUnnamedAppsReq)(nil), // 187: pbds.ListTmplSetBoundUnnamedAppsReq - (*ListTmplSetBoundUnnamedAppsResp)(nil), // 188: pbds.ListTmplSetBoundUnnamedAppsResp - (*ListMultiTmplSetBoundUnnamedAppsReq)(nil), // 189: pbds.ListMultiTmplSetBoundUnnamedAppsReq - (*ListMultiTmplSetBoundUnnamedAppsResp)(nil), // 190: pbds.ListMultiTmplSetBoundUnnamedAppsResp - (*ListTmplSetBoundNamedAppsReq)(nil), // 191: pbds.ListTmplSetBoundNamedAppsReq - (*ListTmplSetBoundNamedAppsResp)(nil), // 192: pbds.ListTmplSetBoundNamedAppsResp - (*ListLatestTmplBoundUnnamedAppsReq)(nil), // 193: pbds.ListLatestTmplBoundUnnamedAppsReq - (*ListLatestTmplBoundUnnamedAppsResp)(nil), // 194: pbds.ListLatestTmplBoundUnnamedAppsResp - (*RemoveAppBoundTmplSetReq)(nil), // 195: pbds.RemoveAppBoundTmplSetReq - (*CheckTemplateSetReferencesAppsReq)(nil), // 196: pbds.CheckTemplateSetReferencesAppsReq - (*CheckTemplateSetReferencesAppsResp)(nil), // 197: pbds.CheckTemplateSetReferencesAppsResp - (*CreateTemplateVariableReq)(nil), // 198: pbds.CreateTemplateVariableReq - (*ImportTemplateVariablesReq)(nil), // 199: pbds.ImportTemplateVariablesReq - (*ImportTemplateVariablesResp)(nil), // 200: pbds.ImportTemplateVariablesResp - (*ListTemplateVariablesReq)(nil), // 201: pbds.ListTemplateVariablesReq - (*ListTemplateVariablesResp)(nil), // 202: pbds.ListTemplateVariablesResp - (*UpdateTemplateVariableReq)(nil), // 203: pbds.UpdateTemplateVariableReq - (*DeleteTemplateVariableReq)(nil), // 204: pbds.DeleteTemplateVariableReq - (*TemplateVariableFetchIDsExcludingReq)(nil), // 205: pbds.TemplateVariableFetchIDsExcludingReq - (*TemplateVariableFetchIDsExcludingResp)(nil), // 206: pbds.TemplateVariableFetchIDsExcludingResp - (*CreateGroupReq)(nil), // 207: pbds.CreateGroupReq - (*ListAllGroupsReq)(nil), // 208: pbds.ListAllGroupsReq - (*ListAllGroupsResp)(nil), // 209: pbds.ListAllGroupsResp - (*ListAppGroupsReq)(nil), // 210: pbds.ListAppGroupsReq - (*ListAppGroupsResp)(nil), // 211: pbds.ListAppGroupsResp - (*GetGroupByNameReq)(nil), // 212: pbds.GetGroupByNameReq - (*UpdateGroupReq)(nil), // 213: pbds.UpdateGroupReq - (*DeleteGroupReq)(nil), // 214: pbds.DeleteGroupReq - (*CountGroupsReleasedAppsReq)(nil), // 215: pbds.CountGroupsReleasedAppsReq - (*CountGroupsReleasedAppsResp)(nil), // 216: pbds.CountGroupsReleasedAppsResp - (*ListGroupReleasedAppsReq)(nil), // 217: pbds.ListGroupReleasedAppsReq - (*ListGroupReleasedAppsResp)(nil), // 218: pbds.ListGroupReleasedAppsResp - (*PublishReq)(nil), // 219: pbds.PublishReq - (*GenerateReleaseAndPublishReq)(nil), // 220: pbds.GenerateReleaseAndPublishReq - (*PublishResp)(nil), // 221: pbds.PublishResp - (*ListInstancesReq)(nil), // 222: pbds.ListInstancesReq - (*ListInstancesResp)(nil), // 223: pbds.ListInstancesResp - (*InstanceResource)(nil), // 224: pbds.InstanceResource - (*FetchInstanceInfoReq)(nil), // 225: pbds.FetchInstanceInfoReq - (*FetchInstanceInfoResp)(nil), // 226: pbds.FetchInstanceInfoResp - (*InstanceInfo)(nil), // 227: pbds.InstanceInfo - (*PingMsg)(nil), // 228: pbds.PingMsg - (*CreateKvReq)(nil), // 229: pbds.CreateKvReq - (*UpdateKvReq)(nil), // 230: pbds.UpdateKvReq - (*ListKvsReq)(nil), // 231: pbds.ListKvsReq - (*ListKvsResp)(nil), // 232: pbds.ListKvsResp - (*DeleteKvReq)(nil), // 233: pbds.DeleteKvReq - (*BatchUpsertKvsReq)(nil), // 234: pbds.BatchUpsertKvsReq - (*BatchUpsertKvsResp)(nil), // 235: pbds.BatchUpsertKvsResp - (*UnDeleteKvReq)(nil), // 236: pbds.UnDeleteKvReq - (*UndoKvReq)(nil), // 237: pbds.UndoKvReq - (*KvFetchIDsExcludingReq)(nil), // 238: pbds.KvFetchIDsExcludingReq - (*KvFetchIDsExcludingResp)(nil), // 239: pbds.KvFetchIDsExcludingResp - (*BatchUpsertClientMetricsReq)(nil), // 240: pbds.BatchUpsertClientMetricsReq - (*BatchUpsertClientMetricsResp)(nil), // 241: pbds.BatchUpsertClientMetricsResp - (*ListClientsReq)(nil), // 242: pbds.ListClientsReq - (*RetryClientsReq)(nil), // 243: pbds.RetryClientsReq - (*ListClientsResp)(nil), // 244: pbds.ListClientsResp - (*ListClientEventsReq)(nil), // 245: pbds.ListClientEventsReq - (*ListClientEventsResp)(nil), // 246: pbds.ListClientEventsResp - (*ListClientQuerysReq)(nil), // 247: pbds.ListClientQuerysReq - (*ListClientQuerysResp)(nil), // 248: pbds.ListClientQuerysResp - (*CreateClientQueryReq)(nil), // 249: pbds.CreateClientQueryReq - (*CreateClientQueryResp)(nil), // 250: pbds.CreateClientQueryResp - (*UpdateClientQueryReq)(nil), // 251: pbds.UpdateClientQueryReq - (*DeleteClientQueryReq)(nil), // 252: pbds.DeleteClientQueryReq - (*CheckClientQueryNameReq)(nil), // 253: pbds.CheckClientQueryNameReq - (*CheckClientQueryNameResp)(nil), // 254: pbds.CheckClientQueryNameResp - (*ListClientLabelAndAnnotationReq)(nil), // 255: pbds.ListClientLabelAndAnnotationReq - (*CompareConfigItemConflictsReq)(nil), // 256: pbds.CompareConfigItemConflictsReq - (*CompareConfigItemConflictsResp)(nil), // 257: pbds.CompareConfigItemConflictsResp - (*GetTemplateAndNonTemplateCICountReq)(nil), // 258: pbds.GetTemplateAndNonTemplateCICountReq - (*GetTemplateAndNonTemplateCICountResp)(nil), // 259: pbds.GetTemplateAndNonTemplateCICountResp - (*CredentialScopePreviewResp_Detail)(nil), // 260: pbds.CredentialScopePreviewResp.Detail - (*BatchUpsertConfigItemsReq_ConfigItem)(nil), // 261: pbds.BatchUpsertConfigItemsReq.ConfigItem - (*BatchUpsertConfigItemsReq_TemplateBinding)(nil), // 262: pbds.BatchUpsertConfigItemsReq.TemplateBinding - (*ListConfigItemByTupleReq_Item)(nil), // 263: pbds.ListConfigItemByTupleReq.Item - (*GetHookInfoSpec_Releases)(nil), // 264: pbds.GetHookInfoSpec.Releases - (*ListHooksResp_Detail)(nil), // 265: pbds.ListHooksResp.Detail - (*ListHookReferencesResp_Detail)(nil), // 266: pbds.ListHookReferencesResp.Detail - (*ListHookRevisionsResp_ListHookRevisionsData)(nil), // 267: pbds.ListHookRevisionsResp.ListHookRevisionsData - (*ListHookRevisionReferencesResp_Detail)(nil), // 268: pbds.ListHookRevisionReferencesResp.Detail - (*GetReleaseHookResp_Hook)(nil), // 269: pbds.GetReleaseHookResp.Hook - (*ListTemplateByTupleReq_Item)(nil), // 270: pbds.ListTemplateByTupleReq.Item - (*ListTemplateByTupleReqResp_Item)(nil), // 271: pbds.ListTemplateByTupleReqResp.Item - (*BatchUpsertTemplatesReq_Item)(nil), // 272: pbds.BatchUpsertTemplatesReq.Item - (*GetTemplateRevisionResp_TemplateRevision)(nil), // 273: pbds.GetTemplateRevisionResp.TemplateRevision - (*CheckTemplateSetReferencesAppsReq_Item)(nil), // 274: pbds.CheckTemplateSetReferencesAppsReq.Item - (*CheckTemplateSetReferencesAppsResp_Item)(nil), // 275: pbds.CheckTemplateSetReferencesAppsResp.Item - (*ListAppGroupsResp_ListAppGroupsData)(nil), // 276: pbds.ListAppGroupsResp.ListAppGroupsData - (*CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData)(nil), // 277: pbds.CountGroupsReleasedAppsResp.CountGroupsReleasedAppsData - (*ListGroupReleasedAppsResp_ListGroupReleasedAppsData)(nil), // 278: pbds.ListGroupReleasedAppsResp.ListGroupReleasedAppsData - (*BatchUpsertKvsReq_Kv)(nil), // 279: pbds.BatchUpsertKvsReq.Kv - (*ListClientsReq_Order)(nil), // 280: pbds.ListClientsReq.Order - (*ListClientsResp_Item)(nil), // 281: pbds.ListClientsResp.Item - (*ListClientEventsReq_Order)(nil), // 282: pbds.ListClientEventsReq.Order - (*CompareConfigItemConflictsResp_NonTemplateConfig)(nil), // 283: pbds.CompareConfigItemConflictsResp.NonTemplateConfig - (*CompareConfigItemConflictsResp_TemplateConfig)(nil), // 284: pbds.CompareConfigItemConflictsResp.TemplateConfig - (*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail)(nil), // 285: pbds.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail - (*credential_scope.CredentialScopeSpec)(nil), // 286: pbcrs.CredentialScopeSpec - (*credential_scope.UpdateScopeSpec)(nil), // 287: pbcrs.UpdateScopeSpec - (*credential_scope.CredentialScopeAttachment)(nil), // 288: pbcrs.CredentialScopeAttachment - (*credential_scope.CredentialScopeList)(nil), // 289: pbcrs.CredentialScopeList - (*credential.CredentialAttachment)(nil), // 290: pbcredential.CredentialAttachment - (*credential.CredentialSpec)(nil), // 291: pbcredential.CredentialSpec - (*credential.CredentialList)(nil), // 292: pbcredential.CredentialList - (*app.AppSpec)(nil), // 293: pbapp.AppSpec - (*app.App)(nil), // 294: pbapp.App - (*config_item.ConfigItemAttachment)(nil), // 295: pbci.ConfigItemAttachment - (*config_item.ConfigItemSpec)(nil), // 296: pbci.ConfigItemSpec - (*content.ContentSpec)(nil), // 297: pbcontent.ContentSpec - (*template_variable.TemplateVariableSpec)(nil), // 298: pbtv.TemplateVariableSpec - (*config_item.ConfigItem)(nil), // 299: pbci.ConfigItem - (*released_ci.ReleasedConfigItem)(nil), // 300: pbrci.ReleasedConfigItem - (*config_item.ListConfigItemCounts)(nil), // 301: pbci.ListConfigItemCounts - (*content.ContentAttachment)(nil), // 302: pbcontent.ContentAttachment - (*commit.CommitAttachment)(nil), // 303: pbcommit.CommitAttachment - (*release.ReleaseAttachment)(nil), // 304: pbrelease.ReleaseAttachment - (*release.ReleaseSpec)(nil), // 305: pbrelease.ReleaseSpec - (*release.Release)(nil), // 306: pbrelease.Release - (*released_kv.ReleasedKv)(nil), // 307: pbrkv.ReleasedKv - (*hook.HookAttachment)(nil), // 308: pbhook.HookAttachment - (*hook.HookSpec)(nil), // 309: pbhook.HookSpec - (*base.Revision)(nil), // 310: pbbase.Revision - (*hook.CountHookTags)(nil), // 311: pbhook.CountHookTags - (*hook_revision.HookRevisionAttachment)(nil), // 312: pbhr.HookRevisionAttachment - (*hook_revision.HookRevisionSpec)(nil), // 313: pbhr.HookRevisionSpec - (*template_space.TemplateSpaceAttachment)(nil), // 314: pbts.TemplateSpaceAttachment - (*template_space.TemplateSpaceSpec)(nil), // 315: pbts.TemplateSpaceSpec - (*template_space.TemplateSpace)(nil), // 316: pbts.TemplateSpace - (*template.TemplateAttachment)(nil), // 317: pbtemplate.TemplateAttachment - (*template.TemplateSpec)(nil), // 318: pbtemplate.TemplateSpec - (*template_revision.TemplateRevisionSpec)(nil), // 319: pbtr.TemplateRevisionSpec - (*template.Template)(nil), // 320: pbtemplate.Template - (*template_revision.TemplateRevisionAttachment)(nil), // 321: pbtr.TemplateRevisionAttachment - (*template_revision.TemplateRevision)(nil), // 322: pbtr.TemplateRevision - (*template_revision.TemplateRevisionNamesDetail)(nil), // 323: pbtr.TemplateRevisionNamesDetail - (*template_set.TemplateSetAttachment)(nil), // 324: pbtset.TemplateSetAttachment - (*template_set.TemplateSetSpec)(nil), // 325: pbtset.TemplateSetSpec - (*template_set.TemplateSet)(nil), // 326: pbtset.TemplateSet - (*template_set.TemplateSetBriefInfo)(nil), // 327: pbtset.TemplateSetBriefInfo - (*template_set.TemplateSetOfBizDetail)(nil), // 328: pbtset.TemplateSetOfBizDetail - (*app_template_binding.AppTemplateBindingAttachment)(nil), // 329: pbatb.AppTemplateBindingAttachment - (*app_template_binding.AppTemplateBindingSpec)(nil), // 330: pbatb.AppTemplateBindingSpec - (*app_template_binding.AppTemplateBinding)(nil), // 331: pbatb.AppTemplateBinding - (*app_template_binding.AppBoundTmplRevision)(nil), // 332: pbatb.AppBoundTmplRevision - (*app_template_binding.ReleasedAppBoundTmplRevision)(nil), // 333: pbatb.ReleasedAppBoundTmplRevision - (*app_template_binding.Conflict)(nil), // 334: pbatb.Conflict - (*app_template_variable.AppTemplateVariableReference)(nil), // 335: pbatv.AppTemplateVariableReference - (*app_template_variable.AppTemplateVariableAttachment)(nil), // 336: pbatv.AppTemplateVariableAttachment - (*app_template_variable.AppTemplateVariableSpec)(nil), // 337: pbatv.AppTemplateVariableSpec - (*template_binding_relation.TemplateBoundCounts)(nil), // 338: pbtbr.TemplateBoundCounts - (*template_binding_relation.TemplateRevisionBoundCounts)(nil), // 339: pbtbr.TemplateRevisionBoundCounts - (*template_binding_relation.TemplateSetBoundCounts)(nil), // 340: pbtbr.TemplateSetBoundCounts - (*template_binding_relation.TemplateBoundUnnamedAppDetail)(nil), // 341: pbtbr.TemplateBoundUnnamedAppDetail - (*template_binding_relation.TemplateBoundNamedAppDetail)(nil), // 342: pbtbr.TemplateBoundNamedAppDetail - (*template_binding_relation.TemplateBoundTemplateSetDetail)(nil), // 343: pbtbr.TemplateBoundTemplateSetDetail - (*template_binding_relation.MultiTemplateBoundTemplateSetDetail)(nil), // 344: pbtbr.MultiTemplateBoundTemplateSetDetail - (*template_binding_relation.TemplateRevisionBoundUnnamedAppDetail)(nil), // 345: pbtbr.TemplateRevisionBoundUnnamedAppDetail - (*template_binding_relation.TemplateRevisionBoundNamedAppDetail)(nil), // 346: pbtbr.TemplateRevisionBoundNamedAppDetail - (*template_binding_relation.TemplateSetBoundUnnamedAppDetail)(nil), // 347: pbtbr.TemplateSetBoundUnnamedAppDetail - (*template_binding_relation.MultiTemplateSetBoundUnnamedAppDetail)(nil), // 348: pbtbr.MultiTemplateSetBoundUnnamedAppDetail - (*template_binding_relation.TemplateSetBoundNamedAppDetail)(nil), // 349: pbtbr.TemplateSetBoundNamedAppDetail - (*template_binding_relation.LatestTemplateBoundUnnamedAppDetail)(nil), // 350: pbtbr.LatestTemplateBoundUnnamedAppDetail - (*template_variable.TemplateVariableAttachment)(nil), // 351: pbtv.TemplateVariableAttachment - (*template_variable.TemplateVariable)(nil), // 352: pbtv.TemplateVariable - (*group.GroupAttachment)(nil), // 353: pbgroup.GroupAttachment - (*group.GroupSpec)(nil), // 354: pbgroup.GroupSpec - (*group.Group)(nil), // 355: pbgroup.Group - (*structpb.Struct)(nil), // 356: google.protobuf.Struct - (*base.BasePage)(nil), // 357: pbbase.BasePage - (*kv.KvAttachment)(nil), // 358: pbkv.KvAttachment - (*kv.KvSpec)(nil), // 359: pbkv.KvSpec - (*kv.Kv)(nil), // 360: pbkv.Kv - (*client.Client)(nil), // 361: pbclient.Client - (*client_event.ClientEvent)(nil), // 362: pbce.ClientEvent - (*client.ClientQueryCondition)(nil), // 363: pbclient.ClientQueryCondition - (*client_query.ClientQuery)(nil), // 364: pbcq.ClientQuery - (*app_template_binding.TemplateBinding)(nil), // 365: pbatb.TemplateBinding - (*hook.Hook)(nil), // 366: pbhook.Hook - (*hook_revision.HookRevision)(nil), // 367: pbhr.HookRevision - (*base.EmptyReq)(nil), // 368: pbbase.EmptyReq - (*client.ClientCommonReq)(nil), // 369: pbclient.ClientCommonReq - (*base.EmptyResp)(nil), // 370: pbbase.EmptyResp - (*content.Content)(nil), // 371: pbcontent.Content - (*commit.Commit)(nil), // 372: pbcommit.Commit + (*UpdateCredentialScopesReq)(nil), // 0: pbds.UpdateCredentialScopesReq + (*UpdateCredentialScopesResp)(nil), // 1: pbds.UpdateCredentialScopesResp + (*CredentialScopePreviewReq)(nil), // 2: pbds.CredentialScopePreviewReq + (*CredentialScopePreviewResp)(nil), // 3: pbds.CredentialScopePreviewResp + (*DeleteCredentialScopesReq)(nil), // 4: pbds.DeleteCredentialScopesReq + (*DeleteCredentialScopesResp)(nil), // 5: pbds.DeleteCredentialScopesResp + (*ListCredentialScopesReq)(nil), // 6: pbds.ListCredentialScopesReq + (*ListCredentialScopesResp)(nil), // 7: pbds.ListCredentialScopesResp + (*CreateCredentialScopeReq)(nil), // 8: pbds.CreateCredentialScopeReq + (*CreateCredentialReq)(nil), // 9: pbds.CreateCredentialReq + (*ListCredentialReq)(nil), // 10: pbds.ListCredentialReq + (*ListCredentialResp)(nil), // 11: pbds.ListCredentialResp + (*UpdateCredentialReq)(nil), // 12: pbds.UpdateCredentialReq + (*CheckCredentialNameReq)(nil), // 13: pbds.CheckCredentialNameReq + (*CheckCredentialNameResp)(nil), // 14: pbds.CheckCredentialNameResp + (*DeleteCredentialReq)(nil), // 15: pbds.DeleteCredentialReq + (*EnableCredentialReq)(nil), // 16: pbds.EnableCredentialReq + (*CreateResp)(nil), // 17: pbds.CreateResp + (*UpdateConfigHookReq)(nil), // 18: pbds.UpdateConfigHookReq + (*GetConfigHookReq)(nil), // 19: pbds.GetConfigHookReq + (*CreateAppReq)(nil), // 20: pbds.CreateAppReq + (*UpdateAppReq)(nil), // 21: pbds.UpdateAppReq + (*DeleteAppReq)(nil), // 22: pbds.DeleteAppReq + (*GetAppReq)(nil), // 23: pbds.GetAppReq + (*GetAppByIDReq)(nil), // 24: pbds.GetAppByIDReq + (*GetAppByNameReq)(nil), // 25: pbds.GetAppByNameReq + (*ListAppsRestReq)(nil), // 26: pbds.ListAppsRestReq + (*ListAppsResp)(nil), // 27: pbds.ListAppsResp + (*ListAppsByIDsReq)(nil), // 28: pbds.ListAppsByIDsReq + (*ListAppsByIDsResp)(nil), // 29: pbds.ListAppsByIDsResp + (*CreateConfigItemReq)(nil), // 30: pbds.CreateConfigItemReq + (*BatchUpsertConfigItemsReq)(nil), // 31: pbds.BatchUpsertConfigItemsReq + (*BatchUpsertConfigItemsResp)(nil), // 32: pbds.BatchUpsertConfigItemsResp + (*UpdateConfigItemReq)(nil), // 33: pbds.UpdateConfigItemReq + (*DeleteConfigItemReq)(nil), // 34: pbds.DeleteConfigItemReq + (*UnDeleteConfigItemReq)(nil), // 35: pbds.UnDeleteConfigItemReq + (*UndoConfigItemReq)(nil), // 36: pbds.UndoConfigItemReq + (*GetConfigItemReq)(nil), // 37: pbds.GetConfigItemReq + (*ListConfigItemsReq)(nil), // 38: pbds.ListConfigItemsReq + (*ListConfigItemsResp)(nil), // 39: pbds.ListConfigItemsResp + (*ListReleasedConfigItemsReq)(nil), // 40: pbds.ListReleasedConfigItemsReq + (*ListReleasedConfigItemsResp)(nil), // 41: pbds.ListReleasedConfigItemsResp + (*ListConfigItemCountReq)(nil), // 42: pbds.ListConfigItemCountReq + (*ListConfigItemCountResp)(nil), // 43: pbds.ListConfigItemCountResp + (*ListConfigItemByTupleReq)(nil), // 44: pbds.ListConfigItemByTupleReq + (*ListConfigItemByTupleResp)(nil), // 45: pbds.ListConfigItemByTupleResp + (*CreateContentReq)(nil), // 46: pbds.CreateContentReq + (*GetContentReq)(nil), // 47: pbds.GetContentReq + (*CreateCommitReq)(nil), // 48: pbds.CreateCommitReq + (*GetLatestCommitReq)(nil), // 49: pbds.GetLatestCommitReq + (*CreateReleaseReq)(nil), // 50: pbds.CreateReleaseReq + (*ListReleasesReq)(nil), // 51: pbds.ListReleasesReq + (*ListReleasesResp)(nil), // 52: pbds.ListReleasesResp + (*GetReleaseByNameReq)(nil), // 53: pbds.GetReleaseByNameReq + (*GetReleaseReq)(nil), // 54: pbds.GetReleaseReq + (*DeprecateReleaseReq)(nil), // 55: pbds.DeprecateReleaseReq + (*UnDeprecateReleaseReq)(nil), // 56: pbds.UnDeprecateReleaseReq + (*DeleteReleaseReq)(nil), // 57: pbds.DeleteReleaseReq + (*CheckReleaseNameReq)(nil), // 58: pbds.CheckReleaseNameReq + (*CheckReleaseNameResp)(nil), // 59: pbds.CheckReleaseNameResp + (*GetReleasedCIReq)(nil), // 60: pbds.GetReleasedCIReq + (*GetReleasedKvReq)(nil), // 61: pbds.GetReleasedKvReq + (*ListReleasedKvReq)(nil), // 62: pbds.ListReleasedKvReq + (*ListReleasedKvResp)(nil), // 63: pbds.ListReleasedKvResp + (*CreateHookReq)(nil), // 64: pbds.CreateHookReq + (*ListHookTagReq)(nil), // 65: pbds.ListHookTagReq + (*GetHookReq)(nil), // 66: pbds.GetHookReq + (*GetHookResp)(nil), // 67: pbds.GetHookResp + (*HookFetchIDsExcludingReq)(nil), // 68: pbds.HookFetchIDsExcludingReq + (*HookFetchIDsExcludingResp)(nil), // 69: pbds.HookFetchIDsExcludingResp + (*GetHookReferencedIDsReq)(nil), // 70: pbds.GetHookReferencedIDsReq + (*GetHookReferencedIDsResp)(nil), // 71: pbds.GetHookReferencedIDsResp + (*GetHookInfoSpec)(nil), // 72: pbds.GetHookInfoSpec + (*ListHooksReq)(nil), // 73: pbds.ListHooksReq + (*ListHooksResp)(nil), // 74: pbds.ListHooksResp + (*ListHookTagResp)(nil), // 75: pbds.ListHookTagResp + (*ListHookReferencesReq)(nil), // 76: pbds.ListHookReferencesReq + (*ListHookReferencesResp)(nil), // 77: pbds.ListHookReferencesResp + (*DeleteHookReq)(nil), // 78: pbds.DeleteHookReq + (*UpdateHookReq)(nil), // 79: pbds.UpdateHookReq + (*CreateHookRevisionReq)(nil), // 80: pbds.CreateHookRevisionReq + (*ListHookRevisionsReq)(nil), // 81: pbds.ListHookRevisionsReq + (*ListHookRevisionsResp)(nil), // 82: pbds.ListHookRevisionsResp + (*GetHookRevisionByIdReq)(nil), // 83: pbds.GetHookRevisionByIdReq + (*DeleteHookRevisionReq)(nil), // 84: pbds.DeleteHookRevisionReq + (*PublishHookRevisionReq)(nil), // 85: pbds.PublishHookRevisionReq + (*GetByPubStateReq)(nil), // 86: pbds.GetByPubStateReq + (*UpdateHookRevisionReq)(nil), // 87: pbds.UpdateHookRevisionReq + (*ListHookRevisionReferencesReq)(nil), // 88: pbds.ListHookRevisionReferencesReq + (*ListHookRevisionReferencesResp)(nil), // 89: pbds.ListHookRevisionReferencesResp + (*GetReleaseHookReq)(nil), // 90: pbds.GetReleaseHookReq + (*GetReleaseHookResp)(nil), // 91: pbds.GetReleaseHookResp + (*CreateTemplateSpaceReq)(nil), // 92: pbds.CreateTemplateSpaceReq + (*ListTemplateSpacesReq)(nil), // 93: pbds.ListTemplateSpacesReq + (*ListTemplateSpacesResp)(nil), // 94: pbds.ListTemplateSpacesResp + (*UpdateTemplateSpaceReq)(nil), // 95: pbds.UpdateTemplateSpaceReq + (*DeleteTemplateSpaceReq)(nil), // 96: pbds.DeleteTemplateSpaceReq + (*GetAllBizsOfTmplSpacesResp)(nil), // 97: pbds.GetAllBizsOfTmplSpacesResp + (*CreateDefaultTmplSpaceReq)(nil), // 98: pbds.CreateDefaultTmplSpaceReq + (*ListTmplSpacesByIDsReq)(nil), // 99: pbds.ListTmplSpacesByIDsReq + (*ListTmplSpacesByIDsResp)(nil), // 100: pbds.ListTmplSpacesByIDsResp + (*CreateTemplateReq)(nil), // 101: pbds.CreateTemplateReq + (*ListTemplatesReq)(nil), // 102: pbds.ListTemplatesReq + (*ListTemplatesResp)(nil), // 103: pbds.ListTemplatesResp + (*UpdateTemplateReq)(nil), // 104: pbds.UpdateTemplateReq + (*DeleteTemplateReq)(nil), // 105: pbds.DeleteTemplateReq + (*BatchDeleteTemplateReq)(nil), // 106: pbds.BatchDeleteTemplateReq + (*AddTmplsToTmplSetsReq)(nil), // 107: pbds.AddTmplsToTmplSetsReq + (*DeleteTmplsFromTmplSetsReq)(nil), // 108: pbds.DeleteTmplsFromTmplSetsReq + (*ListTemplatesByIDsReq)(nil), // 109: pbds.ListTemplatesByIDsReq + (*ListTemplatesByIDsResp)(nil), // 110: pbds.ListTemplatesByIDsResp + (*ListTemplatesNotBoundReq)(nil), // 111: pbds.ListTemplatesNotBoundReq + (*ListTemplatesNotBoundResp)(nil), // 112: pbds.ListTemplatesNotBoundResp + (*ListTmplsOfTmplSetReq)(nil), // 113: pbds.ListTmplsOfTmplSetReq + (*ListTmplsOfTmplSetResp)(nil), // 114: pbds.ListTmplsOfTmplSetResp + (*ListTemplateSetsAndRevisionsReq)(nil), // 115: pbds.ListTemplateSetsAndRevisionsReq + (*ListTemplateSetsAndRevisionsResp)(nil), // 116: pbds.ListTemplateSetsAndRevisionsResp + (*ListTemplateByTupleReq)(nil), // 117: pbds.ListTemplateByTupleReq + (*ListTemplateByTupleReqResp)(nil), // 118: pbds.ListTemplateByTupleReqResp + (*BatchUpsertTemplatesReq)(nil), // 119: pbds.BatchUpsertTemplatesReq + (*BatchUpsertTemplatesReqResp)(nil), // 120: pbds.BatchUpsertTemplatesReqResp + (*BatchUpdateTemplatePermissionsReq)(nil), // 121: pbds.BatchUpdateTemplatePermissionsReq + (*BatchUpdateTemplatePermissionsResp)(nil), // 122: pbds.BatchUpdateTemplatePermissionsResp + (*CreateTemplateRevisionReq)(nil), // 123: pbds.CreateTemplateRevisionReq + (*UpdateTemplateRevisionReq)(nil), // 124: pbds.UpdateTemplateRevisionReq + (*ListTemplateRevisionsReq)(nil), // 125: pbds.ListTemplateRevisionsReq + (*ListTemplateRevisionsResp)(nil), // 126: pbds.ListTemplateRevisionsResp + (*GetTemplateRevisionReq)(nil), // 127: pbds.GetTemplateRevisionReq + (*GetTemplateRevisionResp)(nil), // 128: pbds.GetTemplateRevisionResp + (*DeleteTemplateRevisionReq)(nil), // 129: pbds.DeleteTemplateRevisionReq + (*ListTemplateRevisionsByIDsReq)(nil), // 130: pbds.ListTemplateRevisionsByIDsReq + (*ListTemplateRevisionsByIDsResp)(nil), // 131: pbds.ListTemplateRevisionsByIDsResp + (*ListTmplRevisionNamesByTmplIDsReq)(nil), // 132: pbds.ListTmplRevisionNamesByTmplIDsReq + (*ListTmplRevisionNamesByTmplIDsResp)(nil), // 133: pbds.ListTmplRevisionNamesByTmplIDsResp + (*CreateTemplateSetReq)(nil), // 134: pbds.CreateTemplateSetReq + (*ListTemplateSetsReq)(nil), // 135: pbds.ListTemplateSetsReq + (*ListTemplateSetsResp)(nil), // 136: pbds.ListTemplateSetsResp + (*UpdateTemplateSetReq)(nil), // 137: pbds.UpdateTemplateSetReq + (*DeleteTemplateSetReq)(nil), // 138: pbds.DeleteTemplateSetReq + (*ListAppTemplateSetsReq)(nil), // 139: pbds.ListAppTemplateSetsReq + (*ListAppTemplateSetsResp)(nil), // 140: pbds.ListAppTemplateSetsResp + (*ListTemplateSetsByIDsReq)(nil), // 141: pbds.ListTemplateSetsByIDsReq + (*ListTemplateSetsByIDsResp)(nil), // 142: pbds.ListTemplateSetsByIDsResp + (*ListTemplateSetBriefInfoByIDsReq)(nil), // 143: pbds.ListTemplateSetBriefInfoByIDsReq + (*ListTemplateSetBriefInfoByIDsResp)(nil), // 144: pbds.ListTemplateSetBriefInfoByIDsResp + (*ListTmplSetsOfBizReq)(nil), // 145: pbds.ListTmplSetsOfBizReq + (*ListTmplSetsOfBizResp)(nil), // 146: pbds.ListTmplSetsOfBizResp + (*CreateAppTemplateBindingReq)(nil), // 147: pbds.CreateAppTemplateBindingReq + (*ListAppTemplateBindingsReq)(nil), // 148: pbds.ListAppTemplateBindingsReq + (*ListAppTemplateBindingsResp)(nil), // 149: pbds.ListAppTemplateBindingsResp + (*UpdateAppTemplateBindingReq)(nil), // 150: pbds.UpdateAppTemplateBindingReq + (*DeleteAppTemplateBindingReq)(nil), // 151: pbds.DeleteAppTemplateBindingReq + (*ListAppBoundTmplRevisionsReq)(nil), // 152: pbds.ListAppBoundTmplRevisionsReq + (*ListAppBoundTmplRevisionsResp)(nil), // 153: pbds.ListAppBoundTmplRevisionsResp + (*ListReleasedAppBoundTmplRevisionsReq)(nil), // 154: pbds.ListReleasedAppBoundTmplRevisionsReq + (*ListReleasedAppBoundTmplRevisionsResp)(nil), // 155: pbds.ListReleasedAppBoundTmplRevisionsResp + (*GetReleasedAppBoundTmplRevisionReq)(nil), // 156: pbds.GetReleasedAppBoundTmplRevisionReq + (*GetReleasedAppBoundTmplRevisionResp)(nil), // 157: pbds.GetReleasedAppBoundTmplRevisionResp + (*CheckAppTemplateBindingReq)(nil), // 158: pbds.CheckAppTemplateBindingReq + (*CheckAppTemplateBindingResp)(nil), // 159: pbds.CheckAppTemplateBindingResp + (*ImportFromTemplateSetToAppReq)(nil), // 160: pbds.ImportFromTemplateSetToAppReq + (*ExtractAppTmplVariablesReq)(nil), // 161: pbds.ExtractAppTmplVariablesReq + (*ExtractAppTmplVariablesResp)(nil), // 162: pbds.ExtractAppTmplVariablesResp + (*GetAppTmplVariableRefsReq)(nil), // 163: pbds.GetAppTmplVariableRefsReq + (*GetAppTmplVariableRefsResp)(nil), // 164: pbds.GetAppTmplVariableRefsResp + (*GetReleasedAppTmplVariableRefsReq)(nil), // 165: pbds.GetReleasedAppTmplVariableRefsReq + (*GetReleasedAppTmplVariableRefsResp)(nil), // 166: pbds.GetReleasedAppTmplVariableRefsResp + (*UpdateAppTmplVariablesReq)(nil), // 167: pbds.UpdateAppTmplVariablesReq + (*ListAppTmplVariablesReq)(nil), // 168: pbds.ListAppTmplVariablesReq + (*ListAppTmplVariablesResp)(nil), // 169: pbds.ListAppTmplVariablesResp + (*ListReleasedAppTmplVariablesReq)(nil), // 170: pbds.ListReleasedAppTmplVariablesReq + (*ListReleasedAppTmplVariablesResp)(nil), // 171: pbds.ListReleasedAppTmplVariablesResp + (*ListTmplBoundCountsReq)(nil), // 172: pbds.ListTmplBoundCountsReq + (*ListTmplBoundCountsResp)(nil), // 173: pbds.ListTmplBoundCountsResp + (*ListTmplRevisionBoundCountsReq)(nil), // 174: pbds.ListTmplRevisionBoundCountsReq + (*ListTmplRevisionBoundCountsResp)(nil), // 175: pbds.ListTmplRevisionBoundCountsResp + (*ListTmplSetBoundCountsReq)(nil), // 176: pbds.ListTmplSetBoundCountsReq + (*ListTmplSetBoundCountsResp)(nil), // 177: pbds.ListTmplSetBoundCountsResp + (*ListTmplBoundUnnamedAppsReq)(nil), // 178: pbds.ListTmplBoundUnnamedAppsReq + (*ListTmplBoundUnnamedAppsResp)(nil), // 179: pbds.ListTmplBoundUnnamedAppsResp + (*ListTmplBoundNamedAppsReq)(nil), // 180: pbds.ListTmplBoundNamedAppsReq + (*ListTmplBoundNamedAppsResp)(nil), // 181: pbds.ListTmplBoundNamedAppsResp + (*ListTmplBoundTmplSetsReq)(nil), // 182: pbds.ListTmplBoundTmplSetsReq + (*ListTmplBoundTmplSetsResp)(nil), // 183: pbds.ListTmplBoundTmplSetsResp + (*ListMultiTmplBoundTmplSetsReq)(nil), // 184: pbds.ListMultiTmplBoundTmplSetsReq + (*ListMultiTmplBoundTmplSetsResp)(nil), // 185: pbds.ListMultiTmplBoundTmplSetsResp + (*ListTmplRevisionBoundUnnamedAppsReq)(nil), // 186: pbds.ListTmplRevisionBoundUnnamedAppsReq + (*ListTmplRevisionBoundUnnamedAppsResp)(nil), // 187: pbds.ListTmplRevisionBoundUnnamedAppsResp + (*ListTmplRevisionBoundNamedAppsReq)(nil), // 188: pbds.ListTmplRevisionBoundNamedAppsReq + (*ListTmplRevisionBoundNamedAppsResp)(nil), // 189: pbds.ListTmplRevisionBoundNamedAppsResp + (*ListTmplSetBoundUnnamedAppsReq)(nil), // 190: pbds.ListTmplSetBoundUnnamedAppsReq + (*ListTmplSetBoundUnnamedAppsResp)(nil), // 191: pbds.ListTmplSetBoundUnnamedAppsResp + (*ListMultiTmplSetBoundUnnamedAppsReq)(nil), // 192: pbds.ListMultiTmplSetBoundUnnamedAppsReq + (*ListMultiTmplSetBoundUnnamedAppsResp)(nil), // 193: pbds.ListMultiTmplSetBoundUnnamedAppsResp + (*ListTmplSetBoundNamedAppsReq)(nil), // 194: pbds.ListTmplSetBoundNamedAppsReq + (*ListTmplSetBoundNamedAppsResp)(nil), // 195: pbds.ListTmplSetBoundNamedAppsResp + (*ListLatestTmplBoundUnnamedAppsReq)(nil), // 196: pbds.ListLatestTmplBoundUnnamedAppsReq + (*ListLatestTmplBoundUnnamedAppsResp)(nil), // 197: pbds.ListLatestTmplBoundUnnamedAppsResp + (*RemoveAppBoundTmplSetReq)(nil), // 198: pbds.RemoveAppBoundTmplSetReq + (*CheckTemplateSetReferencesAppsReq)(nil), // 199: pbds.CheckTemplateSetReferencesAppsReq + (*CheckTemplateSetReferencesAppsResp)(nil), // 200: pbds.CheckTemplateSetReferencesAppsResp + (*CreateTemplateVariableReq)(nil), // 201: pbds.CreateTemplateVariableReq + (*ImportTemplateVariablesReq)(nil), // 202: pbds.ImportTemplateVariablesReq + (*ImportTemplateVariablesResp)(nil), // 203: pbds.ImportTemplateVariablesResp + (*ListTemplateVariablesReq)(nil), // 204: pbds.ListTemplateVariablesReq + (*ListTemplateVariablesResp)(nil), // 205: pbds.ListTemplateVariablesResp + (*UpdateTemplateVariableReq)(nil), // 206: pbds.UpdateTemplateVariableReq + (*DeleteTemplateVariableReq)(nil), // 207: pbds.DeleteTemplateVariableReq + (*TemplateVariableFetchIDsExcludingReq)(nil), // 208: pbds.TemplateVariableFetchIDsExcludingReq + (*TemplateVariableFetchIDsExcludingResp)(nil), // 209: pbds.TemplateVariableFetchIDsExcludingResp + (*CreateGroupReq)(nil), // 210: pbds.CreateGroupReq + (*ListAllGroupsReq)(nil), // 211: pbds.ListAllGroupsReq + (*ListAllGroupsResp)(nil), // 212: pbds.ListAllGroupsResp + (*ListAppGroupsReq)(nil), // 213: pbds.ListAppGroupsReq + (*ListAppGroupsResp)(nil), // 214: pbds.ListAppGroupsResp + (*GetGroupByNameReq)(nil), // 215: pbds.GetGroupByNameReq + (*UpdateGroupReq)(nil), // 216: pbds.UpdateGroupReq + (*DeleteGroupReq)(nil), // 217: pbds.DeleteGroupReq + (*CountGroupsReleasedAppsReq)(nil), // 218: pbds.CountGroupsReleasedAppsReq + (*CountGroupsReleasedAppsResp)(nil), // 219: pbds.CountGroupsReleasedAppsResp + (*ListGroupReleasedAppsReq)(nil), // 220: pbds.ListGroupReleasedAppsReq + (*ListGroupReleasedAppsResp)(nil), // 221: pbds.ListGroupReleasedAppsResp + (*PublishReq)(nil), // 222: pbds.PublishReq + (*GenerateReleaseAndPublishReq)(nil), // 223: pbds.GenerateReleaseAndPublishReq + (*PublishResp)(nil), // 224: pbds.PublishResp + (*ListInstancesReq)(nil), // 225: pbds.ListInstancesReq + (*ListInstancesResp)(nil), // 226: pbds.ListInstancesResp + (*InstanceResource)(nil), // 227: pbds.InstanceResource + (*FetchInstanceInfoReq)(nil), // 228: pbds.FetchInstanceInfoReq + (*FetchInstanceInfoResp)(nil), // 229: pbds.FetchInstanceInfoResp + (*InstanceInfo)(nil), // 230: pbds.InstanceInfo + (*PingMsg)(nil), // 231: pbds.PingMsg + (*CreateKvReq)(nil), // 232: pbds.CreateKvReq + (*UpdateKvReq)(nil), // 233: pbds.UpdateKvReq + (*ListKvsReq)(nil), // 234: pbds.ListKvsReq + (*ListKvsResp)(nil), // 235: pbds.ListKvsResp + (*DeleteKvReq)(nil), // 236: pbds.DeleteKvReq + (*BatchUpsertKvsReq)(nil), // 237: pbds.BatchUpsertKvsReq + (*BatchUpsertKvsResp)(nil), // 238: pbds.BatchUpsertKvsResp + (*UnDeleteKvReq)(nil), // 239: pbds.UnDeleteKvReq + (*UndoKvReq)(nil), // 240: pbds.UndoKvReq + (*KvFetchIDsExcludingReq)(nil), // 241: pbds.KvFetchIDsExcludingReq + (*KvFetchIDsExcludingResp)(nil), // 242: pbds.KvFetchIDsExcludingResp + (*BatchUpsertClientMetricsReq)(nil), // 243: pbds.BatchUpsertClientMetricsReq + (*BatchUpsertClientMetricsResp)(nil), // 244: pbds.BatchUpsertClientMetricsResp + (*ListClientsReq)(nil), // 245: pbds.ListClientsReq + (*RetryClientsReq)(nil), // 246: pbds.RetryClientsReq + (*ListClientsResp)(nil), // 247: pbds.ListClientsResp + (*ListClientEventsReq)(nil), // 248: pbds.ListClientEventsReq + (*ListClientEventsResp)(nil), // 249: pbds.ListClientEventsResp + (*ListClientQuerysReq)(nil), // 250: pbds.ListClientQuerysReq + (*ListClientQuerysResp)(nil), // 251: pbds.ListClientQuerysResp + (*CreateClientQueryReq)(nil), // 252: pbds.CreateClientQueryReq + (*CreateClientQueryResp)(nil), // 253: pbds.CreateClientQueryResp + (*UpdateClientQueryReq)(nil), // 254: pbds.UpdateClientQueryReq + (*DeleteClientQueryReq)(nil), // 255: pbds.DeleteClientQueryReq + (*CheckClientQueryNameReq)(nil), // 256: pbds.CheckClientQueryNameReq + (*CheckClientQueryNameResp)(nil), // 257: pbds.CheckClientQueryNameResp + (*ListClientLabelAndAnnotationReq)(nil), // 258: pbds.ListClientLabelAndAnnotationReq + (*CompareConfigItemConflictsReq)(nil), // 259: pbds.CompareConfigItemConflictsReq + (*CompareConfigItemConflictsResp)(nil), // 260: pbds.CompareConfigItemConflictsResp + (*GetTemplateAndNonTemplateCICountReq)(nil), // 261: pbds.GetTemplateAndNonTemplateCICountReq + (*GetTemplateAndNonTemplateCICountResp)(nil), // 262: pbds.GetTemplateAndNonTemplateCICountResp + (*CredentialScopePreviewResp_Detail)(nil), // 263: pbds.CredentialScopePreviewResp.Detail + (*BatchUpsertConfigItemsReq_ConfigItem)(nil), // 264: pbds.BatchUpsertConfigItemsReq.ConfigItem + (*BatchUpsertConfigItemsReq_TemplateBinding)(nil), // 265: pbds.BatchUpsertConfigItemsReq.TemplateBinding + (*ListConfigItemByTupleReq_Item)(nil), // 266: pbds.ListConfigItemByTupleReq.Item + (*GetHookInfoSpec_Releases)(nil), // 267: pbds.GetHookInfoSpec.Releases + (*ListHooksResp_Detail)(nil), // 268: pbds.ListHooksResp.Detail + (*ListHookReferencesResp_Detail)(nil), // 269: pbds.ListHookReferencesResp.Detail + (*ListHookRevisionsResp_ListHookRevisionsData)(nil), // 270: pbds.ListHookRevisionsResp.ListHookRevisionsData + (*ListHookRevisionReferencesResp_Detail)(nil), // 271: pbds.ListHookRevisionReferencesResp.Detail + (*GetReleaseHookResp_Hook)(nil), // 272: pbds.GetReleaseHookResp.Hook + (*ListTemplateSetsAndRevisionsResp_Detail)(nil), // 273: pbds.ListTemplateSetsAndRevisionsResp.Detail + (*ListTemplateByTupleReq_Item)(nil), // 274: pbds.ListTemplateByTupleReq.Item + (*ListTemplateByTupleReqResp_Item)(nil), // 275: pbds.ListTemplateByTupleReqResp.Item + (*BatchUpsertTemplatesReq_Item)(nil), // 276: pbds.BatchUpsertTemplatesReq.Item + (*GetTemplateRevisionResp_TemplateRevision)(nil), // 277: pbds.GetTemplateRevisionResp.TemplateRevision + (*ImportFromTemplateSetToAppReq_Binding)(nil), // 278: pbds.ImportFromTemplateSetToAppReq.Binding + (*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding)(nil), // 279: pbds.ImportFromTemplateSetToAppReq.Binding.TemplateRevisionBinding + (*CheckTemplateSetReferencesAppsReq_Item)(nil), // 280: pbds.CheckTemplateSetReferencesAppsReq.Item + (*CheckTemplateSetReferencesAppsResp_Item)(nil), // 281: pbds.CheckTemplateSetReferencesAppsResp.Item + (*ListAppGroupsResp_ListAppGroupsData)(nil), // 282: pbds.ListAppGroupsResp.ListAppGroupsData + (*CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData)(nil), // 283: pbds.CountGroupsReleasedAppsResp.CountGroupsReleasedAppsData + (*ListGroupReleasedAppsResp_ListGroupReleasedAppsData)(nil), // 284: pbds.ListGroupReleasedAppsResp.ListGroupReleasedAppsData + (*BatchUpsertKvsReq_Kv)(nil), // 285: pbds.BatchUpsertKvsReq.Kv + (*ListClientsReq_Order)(nil), // 286: pbds.ListClientsReq.Order + (*ListClientsResp_Item)(nil), // 287: pbds.ListClientsResp.Item + (*ListClientEventsReq_Order)(nil), // 288: pbds.ListClientEventsReq.Order + (*CompareConfigItemConflictsResp_NonTemplateConfig)(nil), // 289: pbds.CompareConfigItemConflictsResp.NonTemplateConfig + (*CompareConfigItemConflictsResp_TemplateConfig)(nil), // 290: pbds.CompareConfigItemConflictsResp.TemplateConfig + (*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail)(nil), // 291: pbds.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail + (*credential_scope.CredentialScopeSpec)(nil), // 292: pbcrs.CredentialScopeSpec + (*credential_scope.UpdateScopeSpec)(nil), // 293: pbcrs.UpdateScopeSpec + (*credential_scope.CredentialScopeAttachment)(nil), // 294: pbcrs.CredentialScopeAttachment + (*credential_scope.CredentialScopeList)(nil), // 295: pbcrs.CredentialScopeList + (*credential.CredentialAttachment)(nil), // 296: pbcredential.CredentialAttachment + (*credential.CredentialSpec)(nil), // 297: pbcredential.CredentialSpec + (*credential.CredentialList)(nil), // 298: pbcredential.CredentialList + (*app.AppSpec)(nil), // 299: pbapp.AppSpec + (*app.App)(nil), // 300: pbapp.App + (*config_item.ConfigItemAttachment)(nil), // 301: pbci.ConfigItemAttachment + (*config_item.ConfigItemSpec)(nil), // 302: pbci.ConfigItemSpec + (*content.ContentSpec)(nil), // 303: pbcontent.ContentSpec + (*template_variable.TemplateVariableSpec)(nil), // 304: pbtv.TemplateVariableSpec + (*config_item.ConfigItem)(nil), // 305: pbci.ConfigItem + (*released_ci.ReleasedConfigItem)(nil), // 306: pbrci.ReleasedConfigItem + (*config_item.ListConfigItemCounts)(nil), // 307: pbci.ListConfigItemCounts + (*content.ContentAttachment)(nil), // 308: pbcontent.ContentAttachment + (*commit.CommitAttachment)(nil), // 309: pbcommit.CommitAttachment + (*release.ReleaseAttachment)(nil), // 310: pbrelease.ReleaseAttachment + (*release.ReleaseSpec)(nil), // 311: pbrelease.ReleaseSpec + (*release.Release)(nil), // 312: pbrelease.Release + (*released_kv.ReleasedKv)(nil), // 313: pbrkv.ReleasedKv + (*hook.HookAttachment)(nil), // 314: pbhook.HookAttachment + (*hook.HookSpec)(nil), // 315: pbhook.HookSpec + (*base.Revision)(nil), // 316: pbbase.Revision + (*hook.CountHookTags)(nil), // 317: pbhook.CountHookTags + (*hook_revision.HookRevisionAttachment)(nil), // 318: pbhr.HookRevisionAttachment + (*hook_revision.HookRevisionSpec)(nil), // 319: pbhr.HookRevisionSpec + (*template_space.TemplateSpaceAttachment)(nil), // 320: pbts.TemplateSpaceAttachment + (*template_space.TemplateSpaceSpec)(nil), // 321: pbts.TemplateSpaceSpec + (*template_space.TemplateSpace)(nil), // 322: pbts.TemplateSpace + (*template.TemplateAttachment)(nil), // 323: pbtemplate.TemplateAttachment + (*template.TemplateSpec)(nil), // 324: pbtemplate.TemplateSpec + (*template_revision.TemplateRevisionSpec)(nil), // 325: pbtr.TemplateRevisionSpec + (*template.Template)(nil), // 326: pbtemplate.Template + (*template_revision.TemplateRevisionAttachment)(nil), // 327: pbtr.TemplateRevisionAttachment + (*template_revision.TemplateRevision)(nil), // 328: pbtr.TemplateRevision + (*template_revision.TemplateRevisionNamesDetail)(nil), // 329: pbtr.TemplateRevisionNamesDetail + (*template_set.TemplateSetAttachment)(nil), // 330: pbtset.TemplateSetAttachment + (*template_set.TemplateSetSpec)(nil), // 331: pbtset.TemplateSetSpec + (*template_set.TemplateSet)(nil), // 332: pbtset.TemplateSet + (*template_set.TemplateSetBriefInfo)(nil), // 333: pbtset.TemplateSetBriefInfo + (*template_set.TemplateSetOfBizDetail)(nil), // 334: pbtset.TemplateSetOfBizDetail + (*app_template_binding.AppTemplateBindingAttachment)(nil), // 335: pbatb.AppTemplateBindingAttachment + (*app_template_binding.AppTemplateBindingSpec)(nil), // 336: pbatb.AppTemplateBindingSpec + (*app_template_binding.AppTemplateBinding)(nil), // 337: pbatb.AppTemplateBinding + (*app_template_binding.AppBoundTmplRevision)(nil), // 338: pbatb.AppBoundTmplRevision + (*app_template_binding.ReleasedAppBoundTmplRevision)(nil), // 339: pbatb.ReleasedAppBoundTmplRevision + (*app_template_binding.Conflict)(nil), // 340: pbatb.Conflict + (*app_template_variable.AppTemplateVariableReference)(nil), // 341: pbatv.AppTemplateVariableReference + (*app_template_variable.AppTemplateVariableAttachment)(nil), // 342: pbatv.AppTemplateVariableAttachment + (*app_template_variable.AppTemplateVariableSpec)(nil), // 343: pbatv.AppTemplateVariableSpec + (*template_binding_relation.TemplateBoundCounts)(nil), // 344: pbtbr.TemplateBoundCounts + (*template_binding_relation.TemplateRevisionBoundCounts)(nil), // 345: pbtbr.TemplateRevisionBoundCounts + (*template_binding_relation.TemplateSetBoundCounts)(nil), // 346: pbtbr.TemplateSetBoundCounts + (*template_binding_relation.TemplateBoundUnnamedAppDetail)(nil), // 347: pbtbr.TemplateBoundUnnamedAppDetail + (*template_binding_relation.TemplateBoundNamedAppDetail)(nil), // 348: pbtbr.TemplateBoundNamedAppDetail + (*template_binding_relation.TemplateBoundTemplateSetDetail)(nil), // 349: pbtbr.TemplateBoundTemplateSetDetail + (*template_binding_relation.MultiTemplateBoundTemplateSetDetail)(nil), // 350: pbtbr.MultiTemplateBoundTemplateSetDetail + (*template_binding_relation.TemplateRevisionBoundUnnamedAppDetail)(nil), // 351: pbtbr.TemplateRevisionBoundUnnamedAppDetail + (*template_binding_relation.TemplateRevisionBoundNamedAppDetail)(nil), // 352: pbtbr.TemplateRevisionBoundNamedAppDetail + (*template_binding_relation.TemplateSetBoundUnnamedAppDetail)(nil), // 353: pbtbr.TemplateSetBoundUnnamedAppDetail + (*template_binding_relation.MultiTemplateSetBoundUnnamedAppDetail)(nil), // 354: pbtbr.MultiTemplateSetBoundUnnamedAppDetail + (*template_binding_relation.TemplateSetBoundNamedAppDetail)(nil), // 355: pbtbr.TemplateSetBoundNamedAppDetail + (*template_binding_relation.LatestTemplateBoundUnnamedAppDetail)(nil), // 356: pbtbr.LatestTemplateBoundUnnamedAppDetail + (*template_variable.TemplateVariableAttachment)(nil), // 357: pbtv.TemplateVariableAttachment + (*template_variable.TemplateVariable)(nil), // 358: pbtv.TemplateVariable + (*group.GroupAttachment)(nil), // 359: pbgroup.GroupAttachment + (*group.GroupSpec)(nil), // 360: pbgroup.GroupSpec + (*group.Group)(nil), // 361: pbgroup.Group + (*structpb.Struct)(nil), // 362: google.protobuf.Struct + (*base.BasePage)(nil), // 363: pbbase.BasePage + (*kv.KvAttachment)(nil), // 364: pbkv.KvAttachment + (*kv.KvSpec)(nil), // 365: pbkv.KvSpec + (*kv.Kv)(nil), // 366: pbkv.Kv + (*client.Client)(nil), // 367: pbclient.Client + (*client_event.ClientEvent)(nil), // 368: pbce.ClientEvent + (*client.ClientQueryCondition)(nil), // 369: pbclient.ClientQueryCondition + (*client_query.ClientQuery)(nil), // 370: pbcq.ClientQuery + (*app_template_binding.TemplateBinding)(nil), // 371: pbatb.TemplateBinding + (*hook.Hook)(nil), // 372: pbhook.Hook + (*hook_revision.HookRevision)(nil), // 373: pbhr.HookRevision + (*base.EmptyReq)(nil), // 374: pbbase.EmptyReq + (*client.ClientCommonReq)(nil), // 375: pbclient.ClientCommonReq + (*base.EmptyResp)(nil), // 376: pbbase.EmptyResp + (*content.Content)(nil), // 377: pbcontent.Content + (*commit.Commit)(nil), // 378: pbcommit.Commit } var file_data_service_proto_depIdxs = []int32{ - 286, // 0: pbds.UpdateCredentialScopesReq.created:type_name -> pbcrs.CredentialScopeSpec - 287, // 1: pbds.UpdateCredentialScopesReq.updated:type_name -> pbcrs.UpdateScopeSpec - 260, // 2: pbds.CredentialScopePreviewResp.details:type_name -> pbds.CredentialScopePreviewResp.Detail - 288, // 3: pbds.DeleteCredentialScopesReq.attachment:type_name -> pbcrs.CredentialScopeAttachment - 289, // 4: pbds.ListCredentialScopesResp.details:type_name -> pbcrs.CredentialScopeList - 288, // 5: pbds.CreateCredentialScopeReq.attachment:type_name -> pbcrs.CredentialScopeAttachment - 290, // 6: pbds.CreateCredentialReq.attachment:type_name -> pbcredential.CredentialAttachment - 291, // 7: pbds.CreateCredentialReq.spec:type_name -> pbcredential.CredentialSpec - 292, // 8: pbds.ListCredentialResp.details:type_name -> pbcredential.CredentialList - 290, // 9: pbds.UpdateCredentialReq.attachment:type_name -> pbcredential.CredentialAttachment - 291, // 10: pbds.UpdateCredentialReq.spec:type_name -> pbcredential.CredentialSpec - 290, // 11: pbds.DeleteCredentialReq.attachment:type_name -> pbcredential.CredentialAttachment - 293, // 12: pbds.CreateAppReq.spec:type_name -> pbapp.AppSpec - 293, // 13: pbds.UpdateAppReq.spec:type_name -> pbapp.AppSpec - 294, // 14: pbds.ListAppsResp.details:type_name -> pbapp.App - 294, // 15: pbds.ListAppsByIDsResp.details:type_name -> pbapp.App - 295, // 16: pbds.CreateConfigItemReq.config_item_attachment:type_name -> pbci.ConfigItemAttachment - 296, // 17: pbds.CreateConfigItemReq.config_item_spec:type_name -> pbci.ConfigItemSpec - 297, // 18: pbds.CreateConfigItemReq.content_spec:type_name -> pbcontent.ContentSpec - 261, // 19: pbds.BatchUpsertConfigItemsReq.items:type_name -> pbds.BatchUpsertConfigItemsReq.ConfigItem - 298, // 20: pbds.BatchUpsertConfigItemsReq.variables:type_name -> pbtv.TemplateVariableSpec - 262, // 21: pbds.BatchUpsertConfigItemsReq.bindings:type_name -> pbds.BatchUpsertConfigItemsReq.TemplateBinding - 295, // 22: pbds.UpdateConfigItemReq.attachment:type_name -> pbci.ConfigItemAttachment - 296, // 23: pbds.UpdateConfigItemReq.spec:type_name -> pbci.ConfigItemSpec - 295, // 24: pbds.DeleteConfigItemReq.attachment:type_name -> pbci.ConfigItemAttachment - 295, // 25: pbds.UnDeleteConfigItemReq.attachment:type_name -> pbci.ConfigItemAttachment - 295, // 26: pbds.UndoConfigItemReq.attachment:type_name -> pbci.ConfigItemAttachment - 299, // 27: pbds.ListConfigItemsResp.details:type_name -> pbci.ConfigItem - 300, // 28: pbds.ListReleasedConfigItemsResp.details:type_name -> pbrci.ReleasedConfigItem - 301, // 29: pbds.ListConfigItemCountResp.details:type_name -> pbci.ListConfigItemCounts - 263, // 30: pbds.ListConfigItemByTupleReq.items:type_name -> pbds.ListConfigItemByTupleReq.Item - 299, // 31: pbds.ListConfigItemByTupleResp.config_items:type_name -> pbci.ConfigItem - 302, // 32: pbds.CreateContentReq.attachment:type_name -> pbcontent.ContentAttachment - 297, // 33: pbds.CreateContentReq.spec:type_name -> pbcontent.ContentSpec - 303, // 34: pbds.CreateCommitReq.attachment:type_name -> pbcommit.CommitAttachment - 304, // 35: pbds.CreateReleaseReq.attachment:type_name -> pbrelease.ReleaseAttachment - 305, // 36: pbds.CreateReleaseReq.spec:type_name -> pbrelease.ReleaseSpec - 298, // 37: pbds.CreateReleaseReq.variables:type_name -> pbtv.TemplateVariableSpec - 306, // 38: pbds.ListReleasesResp.details:type_name -> pbrelease.Release - 307, // 39: pbds.ListReleasedKvResp.details:type_name -> pbrkv.ReleasedKv - 308, // 40: pbds.CreateHookReq.attachment:type_name -> pbhook.HookAttachment - 309, // 41: pbds.CreateHookReq.spec:type_name -> pbhook.HookSpec + 292, // 0: pbds.UpdateCredentialScopesReq.created:type_name -> pbcrs.CredentialScopeSpec + 293, // 1: pbds.UpdateCredentialScopesReq.updated:type_name -> pbcrs.UpdateScopeSpec + 263, // 2: pbds.CredentialScopePreviewResp.details:type_name -> pbds.CredentialScopePreviewResp.Detail + 294, // 3: pbds.DeleteCredentialScopesReq.attachment:type_name -> pbcrs.CredentialScopeAttachment + 295, // 4: pbds.ListCredentialScopesResp.details:type_name -> pbcrs.CredentialScopeList + 294, // 5: pbds.CreateCredentialScopeReq.attachment:type_name -> pbcrs.CredentialScopeAttachment + 296, // 6: pbds.CreateCredentialReq.attachment:type_name -> pbcredential.CredentialAttachment + 297, // 7: pbds.CreateCredentialReq.spec:type_name -> pbcredential.CredentialSpec + 298, // 8: pbds.ListCredentialResp.details:type_name -> pbcredential.CredentialList + 296, // 9: pbds.UpdateCredentialReq.attachment:type_name -> pbcredential.CredentialAttachment + 297, // 10: pbds.UpdateCredentialReq.spec:type_name -> pbcredential.CredentialSpec + 296, // 11: pbds.DeleteCredentialReq.attachment:type_name -> pbcredential.CredentialAttachment + 299, // 12: pbds.CreateAppReq.spec:type_name -> pbapp.AppSpec + 299, // 13: pbds.UpdateAppReq.spec:type_name -> pbapp.AppSpec + 300, // 14: pbds.ListAppsResp.details:type_name -> pbapp.App + 300, // 15: pbds.ListAppsByIDsResp.details:type_name -> pbapp.App + 301, // 16: pbds.CreateConfigItemReq.config_item_attachment:type_name -> pbci.ConfigItemAttachment + 302, // 17: pbds.CreateConfigItemReq.config_item_spec:type_name -> pbci.ConfigItemSpec + 303, // 18: pbds.CreateConfigItemReq.content_spec:type_name -> pbcontent.ContentSpec + 264, // 19: pbds.BatchUpsertConfigItemsReq.items:type_name -> pbds.BatchUpsertConfigItemsReq.ConfigItem + 304, // 20: pbds.BatchUpsertConfigItemsReq.variables:type_name -> pbtv.TemplateVariableSpec + 265, // 21: pbds.BatchUpsertConfigItemsReq.bindings:type_name -> pbds.BatchUpsertConfigItemsReq.TemplateBinding + 301, // 22: pbds.UpdateConfigItemReq.attachment:type_name -> pbci.ConfigItemAttachment + 302, // 23: pbds.UpdateConfigItemReq.spec:type_name -> pbci.ConfigItemSpec + 301, // 24: pbds.DeleteConfigItemReq.attachment:type_name -> pbci.ConfigItemAttachment + 301, // 25: pbds.UnDeleteConfigItemReq.attachment:type_name -> pbci.ConfigItemAttachment + 301, // 26: pbds.UndoConfigItemReq.attachment:type_name -> pbci.ConfigItemAttachment + 305, // 27: pbds.ListConfigItemsResp.details:type_name -> pbci.ConfigItem + 306, // 28: pbds.ListReleasedConfigItemsResp.details:type_name -> pbrci.ReleasedConfigItem + 307, // 29: pbds.ListConfigItemCountResp.details:type_name -> pbci.ListConfigItemCounts + 266, // 30: pbds.ListConfigItemByTupleReq.items:type_name -> pbds.ListConfigItemByTupleReq.Item + 305, // 31: pbds.ListConfigItemByTupleResp.config_items:type_name -> pbci.ConfigItem + 308, // 32: pbds.CreateContentReq.attachment:type_name -> pbcontent.ContentAttachment + 303, // 33: pbds.CreateContentReq.spec:type_name -> pbcontent.ContentSpec + 309, // 34: pbds.CreateCommitReq.attachment:type_name -> pbcommit.CommitAttachment + 310, // 35: pbds.CreateReleaseReq.attachment:type_name -> pbrelease.ReleaseAttachment + 311, // 36: pbds.CreateReleaseReq.spec:type_name -> pbrelease.ReleaseSpec + 304, // 37: pbds.CreateReleaseReq.variables:type_name -> pbtv.TemplateVariableSpec + 312, // 38: pbds.ListReleasesResp.details:type_name -> pbrelease.Release + 313, // 39: pbds.ListReleasedKvResp.details:type_name -> pbrkv.ReleasedKv + 314, // 40: pbds.CreateHookReq.attachment:type_name -> pbhook.HookAttachment + 315, // 41: pbds.CreateHookReq.spec:type_name -> pbhook.HookSpec 72, // 42: pbds.GetHookResp.spec:type_name -> pbds.GetHookInfoSpec - 308, // 43: pbds.GetHookResp.attachment:type_name -> pbhook.HookAttachment - 310, // 44: pbds.GetHookResp.revision:type_name -> pbbase.Revision - 264, // 45: pbds.GetHookInfoSpec.releases:type_name -> pbds.GetHookInfoSpec.Releases - 265, // 46: pbds.ListHooksResp.details:type_name -> pbds.ListHooksResp.Detail - 311, // 47: pbds.ListHookTagResp.details:type_name -> pbhook.CountHookTags - 266, // 48: pbds.ListHookReferencesResp.details:type_name -> pbds.ListHookReferencesResp.Detail - 308, // 49: pbds.UpdateHookReq.attachment:type_name -> pbhook.HookAttachment - 309, // 50: pbds.UpdateHookReq.spec:type_name -> pbhook.HookSpec - 312, // 51: pbds.CreateHookRevisionReq.attachment:type_name -> pbhr.HookRevisionAttachment - 313, // 52: pbds.CreateHookRevisionReq.spec:type_name -> pbhr.HookRevisionSpec - 267, // 53: pbds.ListHookRevisionsResp.details:type_name -> pbds.ListHookRevisionsResp.ListHookRevisionsData - 312, // 54: pbds.UpdateHookRevisionReq.attachment:type_name -> pbhr.HookRevisionAttachment - 313, // 55: pbds.UpdateHookRevisionReq.spec:type_name -> pbhr.HookRevisionSpec - 268, // 56: pbds.ListHookRevisionReferencesResp.details:type_name -> pbds.ListHookRevisionReferencesResp.Detail - 269, // 57: pbds.GetReleaseHookResp.pre_hook:type_name -> pbds.GetReleaseHookResp.Hook - 269, // 58: pbds.GetReleaseHookResp.post_hook:type_name -> pbds.GetReleaseHookResp.Hook - 314, // 59: pbds.CreateTemplateSpaceReq.attachment:type_name -> pbts.TemplateSpaceAttachment - 315, // 60: pbds.CreateTemplateSpaceReq.spec:type_name -> pbts.TemplateSpaceSpec - 316, // 61: pbds.ListTemplateSpacesResp.details:type_name -> pbts.TemplateSpace - 314, // 62: pbds.UpdateTemplateSpaceReq.attachment:type_name -> pbts.TemplateSpaceAttachment - 315, // 63: pbds.UpdateTemplateSpaceReq.spec:type_name -> pbts.TemplateSpaceSpec - 314, // 64: pbds.DeleteTemplateSpaceReq.attachment:type_name -> pbts.TemplateSpaceAttachment - 316, // 65: pbds.ListTmplSpacesByIDsResp.details:type_name -> pbts.TemplateSpace - 317, // 66: pbds.CreateTemplateReq.attachment:type_name -> pbtemplate.TemplateAttachment - 318, // 67: pbds.CreateTemplateReq.spec:type_name -> pbtemplate.TemplateSpec - 319, // 68: pbds.CreateTemplateReq.tr_spec:type_name -> pbtr.TemplateRevisionSpec - 320, // 69: pbds.ListTemplatesResp.details:type_name -> pbtemplate.Template - 317, // 70: pbds.UpdateTemplateReq.attachment:type_name -> pbtemplate.TemplateAttachment - 318, // 71: pbds.UpdateTemplateReq.spec:type_name -> pbtemplate.TemplateSpec - 317, // 72: pbds.DeleteTemplateReq.attachment:type_name -> pbtemplate.TemplateAttachment - 317, // 73: pbds.BatchDeleteTemplateReq.attachment:type_name -> pbtemplate.TemplateAttachment - 320, // 74: pbds.ListTemplatesByIDsResp.details:type_name -> pbtemplate.Template - 320, // 75: pbds.ListTemplatesNotBoundResp.details:type_name -> pbtemplate.Template - 320, // 76: pbds.ListTmplsOfTmplSetResp.details:type_name -> pbtemplate.Template - 270, // 77: pbds.ListTemplateByTupleReq.items:type_name -> pbds.ListTemplateByTupleReq.Item - 271, // 78: pbds.ListTemplateByTupleReqResp.items:type_name -> pbds.ListTemplateByTupleReqResp.Item - 272, // 79: pbds.BatchUpsertTemplatesReq.items:type_name -> pbds.BatchUpsertTemplatesReq.Item - 321, // 80: pbds.CreateTemplateRevisionReq.attachment:type_name -> pbtr.TemplateRevisionAttachment - 319, // 81: pbds.CreateTemplateRevisionReq.spec:type_name -> pbtr.TemplateRevisionSpec - 321, // 82: pbds.UpdateTemplateRevisionReq.attachment:type_name -> pbtr.TemplateRevisionAttachment - 319, // 83: pbds.UpdateTemplateRevisionReq.spec:type_name -> pbtr.TemplateRevisionSpec - 322, // 84: pbds.ListTemplateRevisionsResp.details:type_name -> pbtr.TemplateRevision - 273, // 85: pbds.GetTemplateRevisionResp.detail:type_name -> pbds.GetTemplateRevisionResp.TemplateRevision - 321, // 86: pbds.DeleteTemplateRevisionReq.attachment:type_name -> pbtr.TemplateRevisionAttachment - 322, // 87: pbds.ListTemplateRevisionsByIDsResp.details:type_name -> pbtr.TemplateRevision - 323, // 88: pbds.ListTmplRevisionNamesByTmplIDsResp.details:type_name -> pbtr.TemplateRevisionNamesDetail - 324, // 89: pbds.CreateTemplateSetReq.attachment:type_name -> pbtset.TemplateSetAttachment - 325, // 90: pbds.CreateTemplateSetReq.spec:type_name -> pbtset.TemplateSetSpec - 326, // 91: pbds.ListTemplateSetsResp.details:type_name -> pbtset.TemplateSet - 324, // 92: pbds.UpdateTemplateSetReq.attachment:type_name -> pbtset.TemplateSetAttachment - 325, // 93: pbds.UpdateTemplateSetReq.spec:type_name -> pbtset.TemplateSetSpec - 324, // 94: pbds.DeleteTemplateSetReq.attachment:type_name -> pbtset.TemplateSetAttachment - 326, // 95: pbds.ListAppTemplateSetsResp.details:type_name -> pbtset.TemplateSet - 326, // 96: pbds.ListTemplateSetsByIDsResp.details:type_name -> pbtset.TemplateSet - 327, // 97: pbds.ListTemplateSetBriefInfoByIDsResp.details:type_name -> pbtset.TemplateSetBriefInfo - 328, // 98: pbds.ListTmplSetsOfBizResp.details:type_name -> pbtset.TemplateSetOfBizDetail - 329, // 99: pbds.CreateAppTemplateBindingReq.attachment:type_name -> pbatb.AppTemplateBindingAttachment - 330, // 100: pbds.CreateAppTemplateBindingReq.spec:type_name -> pbatb.AppTemplateBindingSpec - 331, // 101: pbds.ListAppTemplateBindingsResp.details:type_name -> pbatb.AppTemplateBinding - 329, // 102: pbds.UpdateAppTemplateBindingReq.attachment:type_name -> pbatb.AppTemplateBindingAttachment - 330, // 103: pbds.UpdateAppTemplateBindingReq.spec:type_name -> pbatb.AppTemplateBindingSpec - 329, // 104: pbds.DeleteAppTemplateBindingReq.attachment:type_name -> pbatb.AppTemplateBindingAttachment - 332, // 105: pbds.ListAppBoundTmplRevisionsResp.details:type_name -> pbatb.AppBoundTmplRevision - 333, // 106: pbds.ListReleasedAppBoundTmplRevisionsResp.details:type_name -> pbatb.ReleasedAppBoundTmplRevision - 333, // 107: pbds.GetReleasedAppBoundTmplRevisionResp.detail:type_name -> pbatb.ReleasedAppBoundTmplRevision - 329, // 108: pbds.CheckAppTemplateBindingReq.attachment:type_name -> pbatb.AppTemplateBindingAttachment - 330, // 109: pbds.CheckAppTemplateBindingReq.spec:type_name -> pbatb.AppTemplateBindingSpec - 334, // 110: pbds.CheckAppTemplateBindingResp.details:type_name -> pbatb.Conflict - 335, // 111: pbds.GetAppTmplVariableRefsResp.details:type_name -> pbatv.AppTemplateVariableReference - 335, // 112: pbds.GetReleasedAppTmplVariableRefsResp.details:type_name -> pbatv.AppTemplateVariableReference - 336, // 113: pbds.UpdateAppTmplVariablesReq.attachment:type_name -> pbatv.AppTemplateVariableAttachment - 337, // 114: pbds.UpdateAppTmplVariablesReq.spec:type_name -> pbatv.AppTemplateVariableSpec - 298, // 115: pbds.ListAppTmplVariablesResp.details:type_name -> pbtv.TemplateVariableSpec - 298, // 116: pbds.ListReleasedAppTmplVariablesResp.details:type_name -> pbtv.TemplateVariableSpec - 338, // 117: pbds.ListTmplBoundCountsResp.details:type_name -> pbtbr.TemplateBoundCounts - 339, // 118: pbds.ListTmplRevisionBoundCountsResp.details:type_name -> pbtbr.TemplateRevisionBoundCounts - 340, // 119: pbds.ListTmplSetBoundCountsResp.details:type_name -> pbtbr.TemplateSetBoundCounts - 341, // 120: pbds.ListTmplBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateBoundUnnamedAppDetail - 342, // 121: pbds.ListTmplBoundNamedAppsResp.details:type_name -> pbtbr.TemplateBoundNamedAppDetail - 343, // 122: pbds.ListTmplBoundTmplSetsResp.details:type_name -> pbtbr.TemplateBoundTemplateSetDetail - 344, // 123: pbds.ListMultiTmplBoundTmplSetsResp.details:type_name -> pbtbr.MultiTemplateBoundTemplateSetDetail - 345, // 124: pbds.ListTmplRevisionBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateRevisionBoundUnnamedAppDetail - 346, // 125: pbds.ListTmplRevisionBoundNamedAppsResp.details:type_name -> pbtbr.TemplateRevisionBoundNamedAppDetail - 347, // 126: pbds.ListTmplSetBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateSetBoundUnnamedAppDetail - 348, // 127: pbds.ListMultiTmplSetBoundUnnamedAppsResp.details:type_name -> pbtbr.MultiTemplateSetBoundUnnamedAppDetail - 349, // 128: pbds.ListTmplSetBoundNamedAppsResp.details:type_name -> pbtbr.TemplateSetBoundNamedAppDetail - 350, // 129: pbds.ListLatestTmplBoundUnnamedAppsResp.details:type_name -> pbtbr.LatestTemplateBoundUnnamedAppDetail - 274, // 130: pbds.CheckTemplateSetReferencesAppsReq.items:type_name -> pbds.CheckTemplateSetReferencesAppsReq.Item - 275, // 131: pbds.CheckTemplateSetReferencesAppsResp.items:type_name -> pbds.CheckTemplateSetReferencesAppsResp.Item - 351, // 132: pbds.CreateTemplateVariableReq.attachment:type_name -> pbtv.TemplateVariableAttachment - 298, // 133: pbds.CreateTemplateVariableReq.spec:type_name -> pbtv.TemplateVariableSpec - 298, // 134: pbds.ImportTemplateVariablesReq.specs:type_name -> pbtv.TemplateVariableSpec - 352, // 135: pbds.ListTemplateVariablesResp.details:type_name -> pbtv.TemplateVariable - 351, // 136: pbds.UpdateTemplateVariableReq.attachment:type_name -> pbtv.TemplateVariableAttachment - 298, // 137: pbds.UpdateTemplateVariableReq.spec:type_name -> pbtv.TemplateVariableSpec - 351, // 138: pbds.DeleteTemplateVariableReq.attachment:type_name -> pbtv.TemplateVariableAttachment - 353, // 139: pbds.CreateGroupReq.attachment:type_name -> pbgroup.GroupAttachment - 354, // 140: pbds.CreateGroupReq.spec:type_name -> pbgroup.GroupSpec - 355, // 141: pbds.ListAllGroupsResp.details:type_name -> pbgroup.Group - 276, // 142: pbds.ListAppGroupsResp.details:type_name -> pbds.ListAppGroupsResp.ListAppGroupsData - 353, // 143: pbds.UpdateGroupReq.attachment:type_name -> pbgroup.GroupAttachment - 354, // 144: pbds.UpdateGroupReq.spec:type_name -> pbgroup.GroupSpec - 353, // 145: pbds.DeleteGroupReq.attachment:type_name -> pbgroup.GroupAttachment - 277, // 146: pbds.CountGroupsReleasedAppsResp.data:type_name -> pbds.CountGroupsReleasedAppsResp.CountGroupsReleasedAppsData - 278, // 147: pbds.ListGroupReleasedAppsResp.details:type_name -> pbds.ListGroupReleasedAppsResp.ListGroupReleasedAppsData - 356, // 148: pbds.PublishReq.labels:type_name -> google.protobuf.Struct - 298, // 149: pbds.GenerateReleaseAndPublishReq.variables:type_name -> pbtv.TemplateVariableSpec - 356, // 150: pbds.GenerateReleaseAndPublishReq.labels:type_name -> google.protobuf.Struct - 357, // 151: pbds.ListInstancesReq.page:type_name -> pbbase.BasePage - 224, // 152: pbds.ListInstancesResp.details:type_name -> pbds.InstanceResource - 227, // 153: pbds.FetchInstanceInfoResp.details:type_name -> pbds.InstanceInfo - 358, // 154: pbds.CreateKvReq.attachment:type_name -> pbkv.KvAttachment - 359, // 155: pbds.CreateKvReq.spec:type_name -> pbkv.KvSpec - 358, // 156: pbds.UpdateKvReq.attachment:type_name -> pbkv.KvAttachment - 359, // 157: pbds.UpdateKvReq.spec:type_name -> pbkv.KvSpec - 360, // 158: pbds.ListKvsResp.details:type_name -> pbkv.Kv - 359, // 159: pbds.DeleteKvReq.spec:type_name -> pbkv.KvSpec - 358, // 160: pbds.DeleteKvReq.attachment:type_name -> pbkv.KvAttachment - 279, // 161: pbds.BatchUpsertKvsReq.kvs:type_name -> pbds.BatchUpsertKvsReq.Kv - 361, // 162: pbds.BatchUpsertClientMetricsReq.client_items:type_name -> pbclient.Client - 362, // 163: pbds.BatchUpsertClientMetricsReq.client_event_items:type_name -> pbce.ClientEvent - 280, // 164: pbds.ListClientsReq.order:type_name -> pbds.ListClientsReq.Order - 363, // 165: pbds.ListClientsReq.search:type_name -> pbclient.ClientQueryCondition - 281, // 166: pbds.ListClientsResp.details:type_name -> pbds.ListClientsResp.Item - 282, // 167: pbds.ListClientEventsReq.order:type_name -> pbds.ListClientEventsReq.Order - 362, // 168: pbds.ListClientEventsResp.details:type_name -> pbce.ClientEvent - 364, // 169: pbds.ListClientQuerysResp.details:type_name -> pbcq.ClientQuery - 356, // 170: pbds.CreateClientQueryReq.search_condition:type_name -> google.protobuf.Struct - 356, // 171: pbds.UpdateClientQueryReq.search_condition:type_name -> google.protobuf.Struct - 283, // 172: pbds.CompareConfigItemConflictsResp.non_template_configs:type_name -> pbds.CompareConfigItemConflictsResp.NonTemplateConfig - 284, // 173: pbds.CompareConfigItemConflictsResp.template_configs:type_name -> pbds.CompareConfigItemConflictsResp.TemplateConfig - 295, // 174: pbds.BatchUpsertConfigItemsReq.ConfigItem.config_item_attachment:type_name -> pbci.ConfigItemAttachment - 296, // 175: pbds.BatchUpsertConfigItemsReq.ConfigItem.config_item_spec:type_name -> pbci.ConfigItemSpec - 297, // 176: pbds.BatchUpsertConfigItemsReq.ConfigItem.content_spec:type_name -> pbcontent.ContentSpec - 365, // 177: pbds.BatchUpsertConfigItemsReq.TemplateBinding.template_binding:type_name -> pbatb.TemplateBinding - 366, // 178: pbds.ListHooksResp.Detail.hook:type_name -> pbhook.Hook - 367, // 179: pbds.ListHookRevisionsResp.ListHookRevisionsData.hook_revision:type_name -> pbhr.HookRevision - 320, // 180: pbds.ListTemplateByTupleReqResp.Item.template:type_name -> pbtemplate.Template - 322, // 181: pbds.ListTemplateByTupleReqResp.Item.template_revision:type_name -> pbtr.TemplateRevision - 320, // 182: pbds.BatchUpsertTemplatesReq.Item.template:type_name -> pbtemplate.Template - 322, // 183: pbds.BatchUpsertTemplatesReq.Item.template_revision:type_name -> pbtr.TemplateRevision - 356, // 184: pbds.ListAppGroupsResp.ListAppGroupsData.old_selector:type_name -> google.protobuf.Struct - 356, // 185: pbds.ListAppGroupsResp.ListAppGroupsData.new_selector:type_name -> google.protobuf.Struct - 358, // 186: pbds.BatchUpsertKvsReq.Kv.kv_attachment:type_name -> pbkv.KvAttachment - 359, // 187: pbds.BatchUpsertKvsReq.Kv.kv_spec:type_name -> pbkv.KvSpec - 361, // 188: pbds.ListClientsResp.Item.client:type_name -> pbclient.Client - 296, // 189: pbds.CompareConfigItemConflictsResp.NonTemplateConfig.config_item_spec:type_name -> pbci.ConfigItemSpec - 298, // 190: pbds.CompareConfigItemConflictsResp.NonTemplateConfig.variables:type_name -> pbtv.TemplateVariableSpec - 285, // 191: pbds.CompareConfigItemConflictsResp.TemplateConfig.template_revisions:type_name -> pbds.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail - 298, // 192: pbds.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail.variables:type_name -> pbtv.TemplateVariableSpec - 20, // 193: pbds.Data.CreateApp:input_type -> pbds.CreateAppReq - 21, // 194: pbds.Data.UpdateApp:input_type -> pbds.UpdateAppReq - 22, // 195: pbds.Data.DeleteApp:input_type -> pbds.DeleteAppReq - 23, // 196: pbds.Data.GetApp:input_type -> pbds.GetAppReq - 24, // 197: pbds.Data.GetAppByID:input_type -> pbds.GetAppByIDReq - 25, // 198: pbds.Data.GetAppByName:input_type -> pbds.GetAppByNameReq - 26, // 199: pbds.Data.ListAppsRest:input_type -> pbds.ListAppsRestReq - 28, // 200: pbds.Data.ListAppsByIDs:input_type -> pbds.ListAppsByIDsReq - 30, // 201: pbds.Data.CreateConfigItem:input_type -> pbds.CreateConfigItemReq - 31, // 202: pbds.Data.BatchUpsertConfigItems:input_type -> pbds.BatchUpsertConfigItemsReq - 33, // 203: pbds.Data.UpdateConfigItem:input_type -> pbds.UpdateConfigItemReq - 34, // 204: pbds.Data.DeleteConfigItem:input_type -> pbds.DeleteConfigItemReq - 35, // 205: pbds.Data.UnDeleteConfigItem:input_type -> pbds.UnDeleteConfigItemReq - 36, // 206: pbds.Data.UndoConfigItem:input_type -> pbds.UndoConfigItemReq - 37, // 207: pbds.Data.GetConfigItem:input_type -> pbds.GetConfigItemReq - 38, // 208: pbds.Data.ListConfigItems:input_type -> pbds.ListConfigItemsReq - 40, // 209: pbds.Data.ListReleasedConfigItems:input_type -> pbds.ListReleasedConfigItemsReq - 42, // 210: pbds.Data.ListConfigItemCount:input_type -> pbds.ListConfigItemCountReq - 44, // 211: pbds.Data.ListConfigItemByTuple:input_type -> pbds.ListConfigItemByTupleReq - 18, // 212: pbds.Data.UpdateConfigHook:input_type -> pbds.UpdateConfigHookReq - 46, // 213: pbds.Data.CreateContent:input_type -> pbds.CreateContentReq - 47, // 214: pbds.Data.GetContent:input_type -> pbds.GetContentReq - 48, // 215: pbds.Data.CreateCommit:input_type -> pbds.CreateCommitReq - 49, // 216: pbds.Data.GetLatestCommit:input_type -> pbds.GetLatestCommitReq - 50, // 217: pbds.Data.CreateRelease:input_type -> pbds.CreateReleaseReq - 51, // 218: pbds.Data.ListReleases:input_type -> pbds.ListReleasesReq - 53, // 219: pbds.Data.GetReleaseByName:input_type -> pbds.GetReleaseByNameReq - 54, // 220: pbds.Data.GetRelease:input_type -> pbds.GetReleaseReq - 55, // 221: pbds.Data.DeprecateRelease:input_type -> pbds.DeprecateReleaseReq - 56, // 222: pbds.Data.UnDeprecateRelease:input_type -> pbds.UnDeprecateReleaseReq - 57, // 223: pbds.Data.DeleteRelease:input_type -> pbds.DeleteReleaseReq - 58, // 224: pbds.Data.CheckReleaseName:input_type -> pbds.CheckReleaseNameReq - 60, // 225: pbds.Data.GetReleasedConfigItem:input_type -> pbds.GetReleasedCIReq - 61, // 226: pbds.Data.GetReleasedKv:input_type -> pbds.GetReleasedKvReq - 62, // 227: pbds.Data.ListReleasedKvs:input_type -> pbds.ListReleasedKvReq - 64, // 228: pbds.Data.CreateHook:input_type -> pbds.CreateHookReq - 73, // 229: pbds.Data.ListHooks:input_type -> pbds.ListHooksReq - 78, // 230: pbds.Data.DeleteHook:input_type -> pbds.DeleteHookReq - 79, // 231: pbds.Data.UpdateHook:input_type -> pbds.UpdateHookReq - 65, // 232: pbds.Data.ListHookTags:input_type -> pbds.ListHookTagReq - 76, // 233: pbds.Data.ListHookReferences:input_type -> pbds.ListHookReferencesReq - 66, // 234: pbds.Data.GetHook:input_type -> pbds.GetHookReq - 68, // 235: pbds.Data.HookFetchIDsExcluding:input_type -> pbds.HookFetchIDsExcludingReq - 70, // 236: pbds.Data.GetHookReferencedIDs:input_type -> pbds.GetHookReferencedIDsReq - 80, // 237: pbds.Data.CreateHookRevision:input_type -> pbds.CreateHookRevisionReq - 81, // 238: pbds.Data.ListHookRevisions:input_type -> pbds.ListHookRevisionsReq - 83, // 239: pbds.Data.GetHookRevisionByID:input_type -> pbds.GetHookRevisionByIdReq - 84, // 240: pbds.Data.DeleteHookRevision:input_type -> pbds.DeleteHookRevisionReq - 85, // 241: pbds.Data.PublishHookRevision:input_type -> pbds.PublishHookRevisionReq - 86, // 242: pbds.Data.GetHookRevisionByPubState:input_type -> pbds.GetByPubStateReq - 87, // 243: pbds.Data.UpdateHookRevision:input_type -> pbds.UpdateHookRevisionReq - 88, // 244: pbds.Data.ListHookRevisionReferences:input_type -> pbds.ListHookRevisionReferencesReq - 90, // 245: pbds.Data.GetReleaseHook:input_type -> pbds.GetReleaseHookReq - 92, // 246: pbds.Data.CreateTemplateSpace:input_type -> pbds.CreateTemplateSpaceReq - 93, // 247: pbds.Data.ListTemplateSpaces:input_type -> pbds.ListTemplateSpacesReq - 95, // 248: pbds.Data.UpdateTemplateSpace:input_type -> pbds.UpdateTemplateSpaceReq - 96, // 249: pbds.Data.DeleteTemplateSpace:input_type -> pbds.DeleteTemplateSpaceReq - 368, // 250: pbds.Data.GetAllBizsOfTmplSpaces:input_type -> pbbase.EmptyReq - 98, // 251: pbds.Data.CreateDefaultTmplSpace:input_type -> pbds.CreateDefaultTmplSpaceReq - 99, // 252: pbds.Data.ListTmplSpacesByIDs:input_type -> pbds.ListTmplSpacesByIDsReq - 101, // 253: pbds.Data.CreateTemplate:input_type -> pbds.CreateTemplateReq - 102, // 254: pbds.Data.ListTemplates:input_type -> pbds.ListTemplatesReq - 104, // 255: pbds.Data.UpdateTemplate:input_type -> pbds.UpdateTemplateReq - 105, // 256: pbds.Data.DeleteTemplate:input_type -> pbds.DeleteTemplateReq - 106, // 257: pbds.Data.BatchDeleteTemplate:input_type -> pbds.BatchDeleteTemplateReq - 107, // 258: pbds.Data.AddTmplsToTmplSets:input_type -> pbds.AddTmplsToTmplSetsReq - 108, // 259: pbds.Data.DeleteTmplsFromTmplSets:input_type -> pbds.DeleteTmplsFromTmplSetsReq - 109, // 260: pbds.Data.ListTemplatesByIDs:input_type -> pbds.ListTemplatesByIDsReq - 111, // 261: pbds.Data.ListTemplatesNotBound:input_type -> pbds.ListTemplatesNotBoundReq - 113, // 262: pbds.Data.ListTmplsOfTmplSet:input_type -> pbds.ListTmplsOfTmplSetReq - 115, // 263: pbds.Data.ListTemplateByTuple:input_type -> pbds.ListTemplateByTupleReq - 117, // 264: pbds.Data.BatchUpsertTemplates:input_type -> pbds.BatchUpsertTemplatesReq - 119, // 265: pbds.Data.BatchUpdateTemplatePermissions:input_type -> pbds.BatchUpdateTemplatePermissionsReq - 121, // 266: pbds.Data.CreateTemplateRevision:input_type -> pbds.CreateTemplateRevisionReq - 122, // 267: pbds.Data.UpdateTemplateRevision:input_type -> pbds.UpdateTemplateRevisionReq - 123, // 268: pbds.Data.ListTemplateRevisions:input_type -> pbds.ListTemplateRevisionsReq - 125, // 269: pbds.Data.GetTemplateRevision:input_type -> pbds.GetTemplateRevisionReq - 127, // 270: pbds.Data.DeleteTemplateRevision:input_type -> pbds.DeleteTemplateRevisionReq - 128, // 271: pbds.Data.ListTemplateRevisionsByIDs:input_type -> pbds.ListTemplateRevisionsByIDsReq - 130, // 272: pbds.Data.ListTmplRevisionNamesByTmplIDs:input_type -> pbds.ListTmplRevisionNamesByTmplIDsReq - 132, // 273: pbds.Data.CreateTemplateSet:input_type -> pbds.CreateTemplateSetReq - 133, // 274: pbds.Data.ListTemplateSets:input_type -> pbds.ListTemplateSetsReq - 135, // 275: pbds.Data.UpdateTemplateSet:input_type -> pbds.UpdateTemplateSetReq - 136, // 276: pbds.Data.DeleteTemplateSet:input_type -> pbds.DeleteTemplateSetReq - 137, // 277: pbds.Data.ListAppTemplateSets:input_type -> pbds.ListAppTemplateSetsReq - 139, // 278: pbds.Data.ListTemplateSetsByIDs:input_type -> pbds.ListTemplateSetsByIDsReq - 141, // 279: pbds.Data.ListTemplateSetBriefInfoByIDs:input_type -> pbds.ListTemplateSetBriefInfoByIDsReq - 143, // 280: pbds.Data.ListTmplSetsOfBiz:input_type -> pbds.ListTmplSetsOfBizReq - 145, // 281: pbds.Data.CreateAppTemplateBinding:input_type -> pbds.CreateAppTemplateBindingReq - 146, // 282: pbds.Data.ListAppTemplateBindings:input_type -> pbds.ListAppTemplateBindingsReq - 148, // 283: pbds.Data.UpdateAppTemplateBinding:input_type -> pbds.UpdateAppTemplateBindingReq - 149, // 284: pbds.Data.DeleteAppTemplateBinding:input_type -> pbds.DeleteAppTemplateBindingReq - 150, // 285: pbds.Data.ListAppBoundTmplRevisions:input_type -> pbds.ListAppBoundTmplRevisionsReq - 152, // 286: pbds.Data.ListReleasedAppBoundTmplRevisions:input_type -> pbds.ListReleasedAppBoundTmplRevisionsReq - 154, // 287: pbds.Data.GetReleasedAppBoundTmplRevision:input_type -> pbds.GetReleasedAppBoundTmplRevisionReq - 156, // 288: pbds.Data.CheckAppTemplateBinding:input_type -> pbds.CheckAppTemplateBindingReq - 158, // 289: pbds.Data.ExtractAppTmplVariables:input_type -> pbds.ExtractAppTmplVariablesReq - 160, // 290: pbds.Data.GetAppTmplVariableRefs:input_type -> pbds.GetAppTmplVariableRefsReq - 162, // 291: pbds.Data.GetReleasedAppTmplVariableRefs:input_type -> pbds.GetReleasedAppTmplVariableRefsReq - 164, // 292: pbds.Data.UpdateAppTmplVariables:input_type -> pbds.UpdateAppTmplVariablesReq - 165, // 293: pbds.Data.ListAppTmplVariables:input_type -> pbds.ListAppTmplVariablesReq - 167, // 294: pbds.Data.ListReleasedAppTmplVariables:input_type -> pbds.ListReleasedAppTmplVariablesReq - 169, // 295: pbds.Data.ListTmplBoundCounts:input_type -> pbds.ListTmplBoundCountsReq - 171, // 296: pbds.Data.ListTmplRevisionBoundCounts:input_type -> pbds.ListTmplRevisionBoundCountsReq - 173, // 297: pbds.Data.ListTmplSetBoundCounts:input_type -> pbds.ListTmplSetBoundCountsReq - 175, // 298: pbds.Data.ListTmplBoundUnnamedApps:input_type -> pbds.ListTmplBoundUnnamedAppsReq - 177, // 299: pbds.Data.ListTmplBoundNamedApps:input_type -> pbds.ListTmplBoundNamedAppsReq - 179, // 300: pbds.Data.ListTmplBoundTmplSets:input_type -> pbds.ListTmplBoundTmplSetsReq - 181, // 301: pbds.Data.ListMultiTmplBoundTmplSets:input_type -> pbds.ListMultiTmplBoundTmplSetsReq - 183, // 302: pbds.Data.ListTmplRevisionBoundUnnamedApps:input_type -> pbds.ListTmplRevisionBoundUnnamedAppsReq - 185, // 303: pbds.Data.ListTmplRevisionBoundNamedApps:input_type -> pbds.ListTmplRevisionBoundNamedAppsReq - 187, // 304: pbds.Data.ListTmplSetBoundUnnamedApps:input_type -> pbds.ListTmplSetBoundUnnamedAppsReq - 189, // 305: pbds.Data.ListMultiTmplSetBoundUnnamedApps:input_type -> pbds.ListMultiTmplSetBoundUnnamedAppsReq - 191, // 306: pbds.Data.ListTmplSetBoundNamedApps:input_type -> pbds.ListTmplSetBoundNamedAppsReq - 193, // 307: pbds.Data.ListLatestTmplBoundUnnamedApps:input_type -> pbds.ListLatestTmplBoundUnnamedAppsReq - 195, // 308: pbds.Data.RemoveAppBoundTmplSet:input_type -> pbds.RemoveAppBoundTmplSetReq - 196, // 309: pbds.Data.CheckTemplateSetReferencesApps:input_type -> pbds.CheckTemplateSetReferencesAppsReq - 198, // 310: pbds.Data.CreateTemplateVariable:input_type -> pbds.CreateTemplateVariableReq - 201, // 311: pbds.Data.ListTemplateVariables:input_type -> pbds.ListTemplateVariablesReq - 203, // 312: pbds.Data.UpdateTemplateVariable:input_type -> pbds.UpdateTemplateVariableReq - 204, // 313: pbds.Data.DeleteTemplateVariable:input_type -> pbds.DeleteTemplateVariableReq - 205, // 314: pbds.Data.TemplateVariableFetchIDsExcluding:input_type -> pbds.TemplateVariableFetchIDsExcludingReq - 199, // 315: pbds.Data.ImportTemplateVariables:input_type -> pbds.ImportTemplateVariablesReq - 207, // 316: pbds.Data.CreateGroup:input_type -> pbds.CreateGroupReq - 208, // 317: pbds.Data.ListAllGroups:input_type -> pbds.ListAllGroupsReq - 210, // 318: pbds.Data.ListAppGroups:input_type -> pbds.ListAppGroupsReq - 212, // 319: pbds.Data.GetGroupByName:input_type -> pbds.GetGroupByNameReq - 213, // 320: pbds.Data.UpdateGroup:input_type -> pbds.UpdateGroupReq - 214, // 321: pbds.Data.DeleteGroup:input_type -> pbds.DeleteGroupReq - 215, // 322: pbds.Data.CountGroupsReleasedApps:input_type -> pbds.CountGroupsReleasedAppsReq - 217, // 323: pbds.Data.ListGroupReleasedApps:input_type -> pbds.ListGroupReleasedAppsReq - 219, // 324: pbds.Data.Publish:input_type -> pbds.PublishReq - 220, // 325: pbds.Data.GenerateReleaseAndPublish:input_type -> pbds.GenerateReleaseAndPublishReq - 9, // 326: pbds.Data.CreateCredential:input_type -> pbds.CreateCredentialReq - 10, // 327: pbds.Data.ListCredentials:input_type -> pbds.ListCredentialReq - 15, // 328: pbds.Data.DeleteCredential:input_type -> pbds.DeleteCredentialReq - 12, // 329: pbds.Data.UpdateCredential:input_type -> pbds.UpdateCredentialReq - 13, // 330: pbds.Data.CheckCredentialName:input_type -> pbds.CheckCredentialNameReq - 6, // 331: pbds.Data.ListCredentialScopes:input_type -> pbds.ListCredentialScopesReq - 0, // 332: pbds.Data.UpdateCredentialScopes:input_type -> pbds.UpdateCredentialScopesReq - 2, // 333: pbds.Data.CredentialScopePreview:input_type -> pbds.CredentialScopePreviewReq - 229, // 334: pbds.Data.CreateKv:input_type -> pbds.CreateKvReq - 230, // 335: pbds.Data.UpdateKv:input_type -> pbds.UpdateKvReq - 231, // 336: pbds.Data.ListKvs:input_type -> pbds.ListKvsReq - 233, // 337: pbds.Data.DeleteKv:input_type -> pbds.DeleteKvReq - 234, // 338: pbds.Data.BatchUpsertKvs:input_type -> pbds.BatchUpsertKvsReq - 236, // 339: pbds.Data.UnDeleteKv:input_type -> pbds.UnDeleteKvReq - 237, // 340: pbds.Data.UndoKv:input_type -> pbds.UndoKvReq - 238, // 341: pbds.Data.KvFetchIDsExcluding:input_type -> pbds.KvFetchIDsExcludingReq - 242, // 342: pbds.Data.ListClients:input_type -> pbds.ListClientsReq - 243, // 343: pbds.Data.RetryClients:input_type -> pbds.RetryClientsReq - 245, // 344: pbds.Data.ListClientEvents:input_type -> pbds.ListClientEventsReq - 247, // 345: pbds.Data.ListClientQuerys:input_type -> pbds.ListClientQuerysReq - 249, // 346: pbds.Data.CreateClientQuery:input_type -> pbds.CreateClientQueryReq - 251, // 347: pbds.Data.UpdateClientQuery:input_type -> pbds.UpdateClientQueryReq - 252, // 348: pbds.Data.DeleteClientQuery:input_type -> pbds.DeleteClientQueryReq - 253, // 349: pbds.Data.CheckClientQueryName:input_type -> pbds.CheckClientQueryNameReq - 369, // 350: pbds.Data.ClientConfigVersionStatistics:input_type -> pbclient.ClientCommonReq - 369, // 351: pbds.Data.ClientPullTrendStatistics:input_type -> pbclient.ClientCommonReq - 369, // 352: pbds.Data.ClientPullStatistics:input_type -> pbclient.ClientCommonReq - 369, // 353: pbds.Data.ClientLabelStatistics:input_type -> pbclient.ClientCommonReq - 369, // 354: pbds.Data.ClientAnnotationStatistics:input_type -> pbclient.ClientCommonReq - 369, // 355: pbds.Data.ClientVersionStatistics:input_type -> pbclient.ClientCommonReq - 255, // 356: pbds.Data.ListClientLabelAndAnnotation:input_type -> pbds.ListClientLabelAndAnnotationReq - 369, // 357: pbds.Data.ClientSpecificFailedReason:input_type -> pbclient.ClientCommonReq - 222, // 358: pbds.Data.ListInstances:input_type -> pbds.ListInstancesReq - 225, // 359: pbds.Data.FetchInstanceInfo:input_type -> pbds.FetchInstanceInfoReq - 228, // 360: pbds.Data.Ping:input_type -> pbds.PingMsg - 240, // 361: pbds.Data.BatchUpsertClientMetrics:input_type -> pbds.BatchUpsertClientMetricsReq - 256, // 362: pbds.Data.CompareConfigItemConflicts:input_type -> pbds.CompareConfigItemConflictsReq - 258, // 363: pbds.Data.GetTemplateAndNonTemplateCICount:input_type -> pbds.GetTemplateAndNonTemplateCICountReq - 17, // 364: pbds.Data.CreateApp:output_type -> pbds.CreateResp - 294, // 365: pbds.Data.UpdateApp:output_type -> pbapp.App - 370, // 366: pbds.Data.DeleteApp:output_type -> pbbase.EmptyResp - 294, // 367: pbds.Data.GetApp:output_type -> pbapp.App - 294, // 368: pbds.Data.GetAppByID:output_type -> pbapp.App - 294, // 369: pbds.Data.GetAppByName:output_type -> pbapp.App - 27, // 370: pbds.Data.ListAppsRest:output_type -> pbds.ListAppsResp - 29, // 371: pbds.Data.ListAppsByIDs:output_type -> pbds.ListAppsByIDsResp - 17, // 372: pbds.Data.CreateConfigItem:output_type -> pbds.CreateResp - 32, // 373: pbds.Data.BatchUpsertConfigItems:output_type -> pbds.BatchUpsertConfigItemsResp - 370, // 374: pbds.Data.UpdateConfigItem:output_type -> pbbase.EmptyResp - 370, // 375: pbds.Data.DeleteConfigItem:output_type -> pbbase.EmptyResp - 370, // 376: pbds.Data.UnDeleteConfigItem:output_type -> pbbase.EmptyResp - 370, // 377: pbds.Data.UndoConfigItem:output_type -> pbbase.EmptyResp - 299, // 378: pbds.Data.GetConfigItem:output_type -> pbci.ConfigItem - 39, // 379: pbds.Data.ListConfigItems:output_type -> pbds.ListConfigItemsResp - 41, // 380: pbds.Data.ListReleasedConfigItems:output_type -> pbds.ListReleasedConfigItemsResp - 43, // 381: pbds.Data.ListConfigItemCount:output_type -> pbds.ListConfigItemCountResp - 45, // 382: pbds.Data.ListConfigItemByTuple:output_type -> pbds.ListConfigItemByTupleResp - 370, // 383: pbds.Data.UpdateConfigHook:output_type -> pbbase.EmptyResp - 17, // 384: pbds.Data.CreateContent:output_type -> pbds.CreateResp - 371, // 385: pbds.Data.GetContent:output_type -> pbcontent.Content - 17, // 386: pbds.Data.CreateCommit:output_type -> pbds.CreateResp - 372, // 387: pbds.Data.GetLatestCommit:output_type -> pbcommit.Commit - 17, // 388: pbds.Data.CreateRelease:output_type -> pbds.CreateResp - 52, // 389: pbds.Data.ListReleases:output_type -> pbds.ListReleasesResp - 306, // 390: pbds.Data.GetReleaseByName:output_type -> pbrelease.Release - 306, // 391: pbds.Data.GetRelease:output_type -> pbrelease.Release - 370, // 392: pbds.Data.DeprecateRelease:output_type -> pbbase.EmptyResp - 370, // 393: pbds.Data.UnDeprecateRelease:output_type -> pbbase.EmptyResp - 370, // 394: pbds.Data.DeleteRelease:output_type -> pbbase.EmptyResp - 59, // 395: pbds.Data.CheckReleaseName:output_type -> pbds.CheckReleaseNameResp - 300, // 396: pbds.Data.GetReleasedConfigItem:output_type -> pbrci.ReleasedConfigItem - 307, // 397: pbds.Data.GetReleasedKv:output_type -> pbrkv.ReleasedKv - 63, // 398: pbds.Data.ListReleasedKvs:output_type -> pbds.ListReleasedKvResp - 17, // 399: pbds.Data.CreateHook:output_type -> pbds.CreateResp - 74, // 400: pbds.Data.ListHooks:output_type -> pbds.ListHooksResp - 370, // 401: pbds.Data.DeleteHook:output_type -> pbbase.EmptyResp - 370, // 402: pbds.Data.UpdateHook:output_type -> pbbase.EmptyResp - 75, // 403: pbds.Data.ListHookTags:output_type -> pbds.ListHookTagResp - 77, // 404: pbds.Data.ListHookReferences:output_type -> pbds.ListHookReferencesResp - 67, // 405: pbds.Data.GetHook:output_type -> pbds.GetHookResp - 69, // 406: pbds.Data.HookFetchIDsExcluding:output_type -> pbds.HookFetchIDsExcludingResp - 71, // 407: pbds.Data.GetHookReferencedIDs:output_type -> pbds.GetHookReferencedIDsResp - 17, // 408: pbds.Data.CreateHookRevision:output_type -> pbds.CreateResp - 82, // 409: pbds.Data.ListHookRevisions:output_type -> pbds.ListHookRevisionsResp - 367, // 410: pbds.Data.GetHookRevisionByID:output_type -> pbhr.HookRevision - 370, // 411: pbds.Data.DeleteHookRevision:output_type -> pbbase.EmptyResp - 370, // 412: pbds.Data.PublishHookRevision:output_type -> pbbase.EmptyResp - 367, // 413: pbds.Data.GetHookRevisionByPubState:output_type -> pbhr.HookRevision - 370, // 414: pbds.Data.UpdateHookRevision:output_type -> pbbase.EmptyResp - 89, // 415: pbds.Data.ListHookRevisionReferences:output_type -> pbds.ListHookRevisionReferencesResp - 91, // 416: pbds.Data.GetReleaseHook:output_type -> pbds.GetReleaseHookResp - 17, // 417: pbds.Data.CreateTemplateSpace:output_type -> pbds.CreateResp - 94, // 418: pbds.Data.ListTemplateSpaces:output_type -> pbds.ListTemplateSpacesResp - 370, // 419: pbds.Data.UpdateTemplateSpace:output_type -> pbbase.EmptyResp - 370, // 420: pbds.Data.DeleteTemplateSpace:output_type -> pbbase.EmptyResp - 97, // 421: pbds.Data.GetAllBizsOfTmplSpaces:output_type -> pbds.GetAllBizsOfTmplSpacesResp - 17, // 422: pbds.Data.CreateDefaultTmplSpace:output_type -> pbds.CreateResp - 100, // 423: pbds.Data.ListTmplSpacesByIDs:output_type -> pbds.ListTmplSpacesByIDsResp - 17, // 424: pbds.Data.CreateTemplate:output_type -> pbds.CreateResp - 103, // 425: pbds.Data.ListTemplates:output_type -> pbds.ListTemplatesResp - 370, // 426: pbds.Data.UpdateTemplate:output_type -> pbbase.EmptyResp - 370, // 427: pbds.Data.DeleteTemplate:output_type -> pbbase.EmptyResp - 370, // 428: pbds.Data.BatchDeleteTemplate:output_type -> pbbase.EmptyResp - 370, // 429: pbds.Data.AddTmplsToTmplSets:output_type -> pbbase.EmptyResp - 370, // 430: pbds.Data.DeleteTmplsFromTmplSets:output_type -> pbbase.EmptyResp - 110, // 431: pbds.Data.ListTemplatesByIDs:output_type -> pbds.ListTemplatesByIDsResp - 112, // 432: pbds.Data.ListTemplatesNotBound:output_type -> pbds.ListTemplatesNotBoundResp - 114, // 433: pbds.Data.ListTmplsOfTmplSet:output_type -> pbds.ListTmplsOfTmplSetResp - 116, // 434: pbds.Data.ListTemplateByTuple:output_type -> pbds.ListTemplateByTupleReqResp - 118, // 435: pbds.Data.BatchUpsertTemplates:output_type -> pbds.BatchUpsertTemplatesReqResp - 120, // 436: pbds.Data.BatchUpdateTemplatePermissions:output_type -> pbds.BatchUpdateTemplatePermissionsResp - 17, // 437: pbds.Data.CreateTemplateRevision:output_type -> pbds.CreateResp - 17, // 438: pbds.Data.UpdateTemplateRevision:output_type -> pbds.CreateResp - 124, // 439: pbds.Data.ListTemplateRevisions:output_type -> pbds.ListTemplateRevisionsResp - 126, // 440: pbds.Data.GetTemplateRevision:output_type -> pbds.GetTemplateRevisionResp - 370, // 441: pbds.Data.DeleteTemplateRevision:output_type -> pbbase.EmptyResp - 129, // 442: pbds.Data.ListTemplateRevisionsByIDs:output_type -> pbds.ListTemplateRevisionsByIDsResp - 131, // 443: pbds.Data.ListTmplRevisionNamesByTmplIDs:output_type -> pbds.ListTmplRevisionNamesByTmplIDsResp - 17, // 444: pbds.Data.CreateTemplateSet:output_type -> pbds.CreateResp - 134, // 445: pbds.Data.ListTemplateSets:output_type -> pbds.ListTemplateSetsResp - 370, // 446: pbds.Data.UpdateTemplateSet:output_type -> pbbase.EmptyResp - 370, // 447: pbds.Data.DeleteTemplateSet:output_type -> pbbase.EmptyResp - 138, // 448: pbds.Data.ListAppTemplateSets:output_type -> pbds.ListAppTemplateSetsResp - 140, // 449: pbds.Data.ListTemplateSetsByIDs:output_type -> pbds.ListTemplateSetsByIDsResp - 142, // 450: pbds.Data.ListTemplateSetBriefInfoByIDs:output_type -> pbds.ListTemplateSetBriefInfoByIDsResp - 144, // 451: pbds.Data.ListTmplSetsOfBiz:output_type -> pbds.ListTmplSetsOfBizResp - 17, // 452: pbds.Data.CreateAppTemplateBinding:output_type -> pbds.CreateResp - 147, // 453: pbds.Data.ListAppTemplateBindings:output_type -> pbds.ListAppTemplateBindingsResp - 370, // 454: pbds.Data.UpdateAppTemplateBinding:output_type -> pbbase.EmptyResp - 370, // 455: pbds.Data.DeleteAppTemplateBinding:output_type -> pbbase.EmptyResp - 151, // 456: pbds.Data.ListAppBoundTmplRevisions:output_type -> pbds.ListAppBoundTmplRevisionsResp - 153, // 457: pbds.Data.ListReleasedAppBoundTmplRevisions:output_type -> pbds.ListReleasedAppBoundTmplRevisionsResp - 155, // 458: pbds.Data.GetReleasedAppBoundTmplRevision:output_type -> pbds.GetReleasedAppBoundTmplRevisionResp - 157, // 459: pbds.Data.CheckAppTemplateBinding:output_type -> pbds.CheckAppTemplateBindingResp - 159, // 460: pbds.Data.ExtractAppTmplVariables:output_type -> pbds.ExtractAppTmplVariablesResp - 161, // 461: pbds.Data.GetAppTmplVariableRefs:output_type -> pbds.GetAppTmplVariableRefsResp - 163, // 462: pbds.Data.GetReleasedAppTmplVariableRefs:output_type -> pbds.GetReleasedAppTmplVariableRefsResp - 370, // 463: pbds.Data.UpdateAppTmplVariables:output_type -> pbbase.EmptyResp - 166, // 464: pbds.Data.ListAppTmplVariables:output_type -> pbds.ListAppTmplVariablesResp - 168, // 465: pbds.Data.ListReleasedAppTmplVariables:output_type -> pbds.ListReleasedAppTmplVariablesResp - 170, // 466: pbds.Data.ListTmplBoundCounts:output_type -> pbds.ListTmplBoundCountsResp - 172, // 467: pbds.Data.ListTmplRevisionBoundCounts:output_type -> pbds.ListTmplRevisionBoundCountsResp - 174, // 468: pbds.Data.ListTmplSetBoundCounts:output_type -> pbds.ListTmplSetBoundCountsResp - 176, // 469: pbds.Data.ListTmplBoundUnnamedApps:output_type -> pbds.ListTmplBoundUnnamedAppsResp - 178, // 470: pbds.Data.ListTmplBoundNamedApps:output_type -> pbds.ListTmplBoundNamedAppsResp - 180, // 471: pbds.Data.ListTmplBoundTmplSets:output_type -> pbds.ListTmplBoundTmplSetsResp - 182, // 472: pbds.Data.ListMultiTmplBoundTmplSets:output_type -> pbds.ListMultiTmplBoundTmplSetsResp - 184, // 473: pbds.Data.ListTmplRevisionBoundUnnamedApps:output_type -> pbds.ListTmplRevisionBoundUnnamedAppsResp - 186, // 474: pbds.Data.ListTmplRevisionBoundNamedApps:output_type -> pbds.ListTmplRevisionBoundNamedAppsResp - 188, // 475: pbds.Data.ListTmplSetBoundUnnamedApps:output_type -> pbds.ListTmplSetBoundUnnamedAppsResp - 190, // 476: pbds.Data.ListMultiTmplSetBoundUnnamedApps:output_type -> pbds.ListMultiTmplSetBoundUnnamedAppsResp - 192, // 477: pbds.Data.ListTmplSetBoundNamedApps:output_type -> pbds.ListTmplSetBoundNamedAppsResp - 194, // 478: pbds.Data.ListLatestTmplBoundUnnamedApps:output_type -> pbds.ListLatestTmplBoundUnnamedAppsResp - 370, // 479: pbds.Data.RemoveAppBoundTmplSet:output_type -> pbbase.EmptyResp - 197, // 480: pbds.Data.CheckTemplateSetReferencesApps:output_type -> pbds.CheckTemplateSetReferencesAppsResp - 17, // 481: pbds.Data.CreateTemplateVariable:output_type -> pbds.CreateResp - 202, // 482: pbds.Data.ListTemplateVariables:output_type -> pbds.ListTemplateVariablesResp - 370, // 483: pbds.Data.UpdateTemplateVariable:output_type -> pbbase.EmptyResp - 370, // 484: pbds.Data.DeleteTemplateVariable:output_type -> pbbase.EmptyResp - 206, // 485: pbds.Data.TemplateVariableFetchIDsExcluding:output_type -> pbds.TemplateVariableFetchIDsExcludingResp - 200, // 486: pbds.Data.ImportTemplateVariables:output_type -> pbds.ImportTemplateVariablesResp - 17, // 487: pbds.Data.CreateGroup:output_type -> pbds.CreateResp - 209, // 488: pbds.Data.ListAllGroups:output_type -> pbds.ListAllGroupsResp - 211, // 489: pbds.Data.ListAppGroups:output_type -> pbds.ListAppGroupsResp - 355, // 490: pbds.Data.GetGroupByName:output_type -> pbgroup.Group - 370, // 491: pbds.Data.UpdateGroup:output_type -> pbbase.EmptyResp - 370, // 492: pbds.Data.DeleteGroup:output_type -> pbbase.EmptyResp - 216, // 493: pbds.Data.CountGroupsReleasedApps:output_type -> pbds.CountGroupsReleasedAppsResp - 218, // 494: pbds.Data.ListGroupReleasedApps:output_type -> pbds.ListGroupReleasedAppsResp - 221, // 495: pbds.Data.Publish:output_type -> pbds.PublishResp - 221, // 496: pbds.Data.GenerateReleaseAndPublish:output_type -> pbds.PublishResp - 17, // 497: pbds.Data.CreateCredential:output_type -> pbds.CreateResp - 11, // 498: pbds.Data.ListCredentials:output_type -> pbds.ListCredentialResp - 370, // 499: pbds.Data.DeleteCredential:output_type -> pbbase.EmptyResp - 370, // 500: pbds.Data.UpdateCredential:output_type -> pbbase.EmptyResp - 14, // 501: pbds.Data.CheckCredentialName:output_type -> pbds.CheckCredentialNameResp - 7, // 502: pbds.Data.ListCredentialScopes:output_type -> pbds.ListCredentialScopesResp - 1, // 503: pbds.Data.UpdateCredentialScopes:output_type -> pbds.UpdateCredentialScopesResp - 3, // 504: pbds.Data.CredentialScopePreview:output_type -> pbds.CredentialScopePreviewResp - 17, // 505: pbds.Data.CreateKv:output_type -> pbds.CreateResp - 370, // 506: pbds.Data.UpdateKv:output_type -> pbbase.EmptyResp - 232, // 507: pbds.Data.ListKvs:output_type -> pbds.ListKvsResp - 370, // 508: pbds.Data.DeleteKv:output_type -> pbbase.EmptyResp - 235, // 509: pbds.Data.BatchUpsertKvs:output_type -> pbds.BatchUpsertKvsResp - 370, // 510: pbds.Data.UnDeleteKv:output_type -> pbbase.EmptyResp - 370, // 511: pbds.Data.UndoKv:output_type -> pbbase.EmptyResp - 239, // 512: pbds.Data.KvFetchIDsExcluding:output_type -> pbds.KvFetchIDsExcludingResp - 244, // 513: pbds.Data.ListClients:output_type -> pbds.ListClientsResp - 370, // 514: pbds.Data.RetryClients:output_type -> pbbase.EmptyResp - 246, // 515: pbds.Data.ListClientEvents:output_type -> pbds.ListClientEventsResp - 248, // 516: pbds.Data.ListClientQuerys:output_type -> pbds.ListClientQuerysResp - 250, // 517: pbds.Data.CreateClientQuery:output_type -> pbds.CreateClientQueryResp - 370, // 518: pbds.Data.UpdateClientQuery:output_type -> pbbase.EmptyResp - 370, // 519: pbds.Data.DeleteClientQuery:output_type -> pbbase.EmptyResp - 254, // 520: pbds.Data.CheckClientQueryName:output_type -> pbds.CheckClientQueryNameResp - 356, // 521: pbds.Data.ClientConfigVersionStatistics:output_type -> google.protobuf.Struct - 356, // 522: pbds.Data.ClientPullTrendStatistics:output_type -> google.protobuf.Struct - 356, // 523: pbds.Data.ClientPullStatistics:output_type -> google.protobuf.Struct - 356, // 524: pbds.Data.ClientLabelStatistics:output_type -> google.protobuf.Struct - 356, // 525: pbds.Data.ClientAnnotationStatistics:output_type -> google.protobuf.Struct - 356, // 526: pbds.Data.ClientVersionStatistics:output_type -> google.protobuf.Struct - 356, // 527: pbds.Data.ListClientLabelAndAnnotation:output_type -> google.protobuf.Struct - 356, // 528: pbds.Data.ClientSpecificFailedReason:output_type -> google.protobuf.Struct - 223, // 529: pbds.Data.ListInstances:output_type -> pbds.ListInstancesResp - 226, // 530: pbds.Data.FetchInstanceInfo:output_type -> pbds.FetchInstanceInfoResp - 228, // 531: pbds.Data.Ping:output_type -> pbds.PingMsg - 241, // 532: pbds.Data.BatchUpsertClientMetrics:output_type -> pbds.BatchUpsertClientMetricsResp - 257, // 533: pbds.Data.CompareConfigItemConflicts:output_type -> pbds.CompareConfigItemConflictsResp - 259, // 534: pbds.Data.GetTemplateAndNonTemplateCICount:output_type -> pbds.GetTemplateAndNonTemplateCICountResp - 364, // [364:535] is the sub-list for method output_type - 193, // [193:364] is the sub-list for method input_type - 193, // [193:193] is the sub-list for extension type_name - 193, // [193:193] is the sub-list for extension extendee - 0, // [0:193] is the sub-list for field type_name + 314, // 43: pbds.GetHookResp.attachment:type_name -> pbhook.HookAttachment + 316, // 44: pbds.GetHookResp.revision:type_name -> pbbase.Revision + 267, // 45: pbds.GetHookInfoSpec.releases:type_name -> pbds.GetHookInfoSpec.Releases + 268, // 46: pbds.ListHooksResp.details:type_name -> pbds.ListHooksResp.Detail + 317, // 47: pbds.ListHookTagResp.details:type_name -> pbhook.CountHookTags + 269, // 48: pbds.ListHookReferencesResp.details:type_name -> pbds.ListHookReferencesResp.Detail + 314, // 49: pbds.UpdateHookReq.attachment:type_name -> pbhook.HookAttachment + 315, // 50: pbds.UpdateHookReq.spec:type_name -> pbhook.HookSpec + 318, // 51: pbds.CreateHookRevisionReq.attachment:type_name -> pbhr.HookRevisionAttachment + 319, // 52: pbds.CreateHookRevisionReq.spec:type_name -> pbhr.HookRevisionSpec + 270, // 53: pbds.ListHookRevisionsResp.details:type_name -> pbds.ListHookRevisionsResp.ListHookRevisionsData + 318, // 54: pbds.UpdateHookRevisionReq.attachment:type_name -> pbhr.HookRevisionAttachment + 319, // 55: pbds.UpdateHookRevisionReq.spec:type_name -> pbhr.HookRevisionSpec + 271, // 56: pbds.ListHookRevisionReferencesResp.details:type_name -> pbds.ListHookRevisionReferencesResp.Detail + 272, // 57: pbds.GetReleaseHookResp.pre_hook:type_name -> pbds.GetReleaseHookResp.Hook + 272, // 58: pbds.GetReleaseHookResp.post_hook:type_name -> pbds.GetReleaseHookResp.Hook + 320, // 59: pbds.CreateTemplateSpaceReq.attachment:type_name -> pbts.TemplateSpaceAttachment + 321, // 60: pbds.CreateTemplateSpaceReq.spec:type_name -> pbts.TemplateSpaceSpec + 322, // 61: pbds.ListTemplateSpacesResp.details:type_name -> pbts.TemplateSpace + 320, // 62: pbds.UpdateTemplateSpaceReq.attachment:type_name -> pbts.TemplateSpaceAttachment + 321, // 63: pbds.UpdateTemplateSpaceReq.spec:type_name -> pbts.TemplateSpaceSpec + 320, // 64: pbds.DeleteTemplateSpaceReq.attachment:type_name -> pbts.TemplateSpaceAttachment + 322, // 65: pbds.ListTmplSpacesByIDsResp.details:type_name -> pbts.TemplateSpace + 323, // 66: pbds.CreateTemplateReq.attachment:type_name -> pbtemplate.TemplateAttachment + 324, // 67: pbds.CreateTemplateReq.spec:type_name -> pbtemplate.TemplateSpec + 325, // 68: pbds.CreateTemplateReq.tr_spec:type_name -> pbtr.TemplateRevisionSpec + 326, // 69: pbds.ListTemplatesResp.details:type_name -> pbtemplate.Template + 323, // 70: pbds.UpdateTemplateReq.attachment:type_name -> pbtemplate.TemplateAttachment + 324, // 71: pbds.UpdateTemplateReq.spec:type_name -> pbtemplate.TemplateSpec + 323, // 72: pbds.DeleteTemplateReq.attachment:type_name -> pbtemplate.TemplateAttachment + 323, // 73: pbds.BatchDeleteTemplateReq.attachment:type_name -> pbtemplate.TemplateAttachment + 326, // 74: pbds.ListTemplatesByIDsResp.details:type_name -> pbtemplate.Template + 326, // 75: pbds.ListTemplatesNotBoundResp.details:type_name -> pbtemplate.Template + 326, // 76: pbds.ListTmplsOfTmplSetResp.details:type_name -> pbtemplate.Template + 273, // 77: pbds.ListTemplateSetsAndRevisionsResp.details:type_name -> pbds.ListTemplateSetsAndRevisionsResp.Detail + 274, // 78: pbds.ListTemplateByTupleReq.items:type_name -> pbds.ListTemplateByTupleReq.Item + 275, // 79: pbds.ListTemplateByTupleReqResp.items:type_name -> pbds.ListTemplateByTupleReqResp.Item + 276, // 80: pbds.BatchUpsertTemplatesReq.items:type_name -> pbds.BatchUpsertTemplatesReq.Item + 327, // 81: pbds.CreateTemplateRevisionReq.attachment:type_name -> pbtr.TemplateRevisionAttachment + 325, // 82: pbds.CreateTemplateRevisionReq.spec:type_name -> pbtr.TemplateRevisionSpec + 327, // 83: pbds.UpdateTemplateRevisionReq.attachment:type_name -> pbtr.TemplateRevisionAttachment + 325, // 84: pbds.UpdateTemplateRevisionReq.spec:type_name -> pbtr.TemplateRevisionSpec + 328, // 85: pbds.ListTemplateRevisionsResp.details:type_name -> pbtr.TemplateRevision + 277, // 86: pbds.GetTemplateRevisionResp.detail:type_name -> pbds.GetTemplateRevisionResp.TemplateRevision + 327, // 87: pbds.DeleteTemplateRevisionReq.attachment:type_name -> pbtr.TemplateRevisionAttachment + 328, // 88: pbds.ListTemplateRevisionsByIDsResp.details:type_name -> pbtr.TemplateRevision + 329, // 89: pbds.ListTmplRevisionNamesByTmplIDsResp.details:type_name -> pbtr.TemplateRevisionNamesDetail + 330, // 90: pbds.CreateTemplateSetReq.attachment:type_name -> pbtset.TemplateSetAttachment + 331, // 91: pbds.CreateTemplateSetReq.spec:type_name -> pbtset.TemplateSetSpec + 332, // 92: pbds.ListTemplateSetsResp.details:type_name -> pbtset.TemplateSet + 330, // 93: pbds.UpdateTemplateSetReq.attachment:type_name -> pbtset.TemplateSetAttachment + 331, // 94: pbds.UpdateTemplateSetReq.spec:type_name -> pbtset.TemplateSetSpec + 330, // 95: pbds.DeleteTemplateSetReq.attachment:type_name -> pbtset.TemplateSetAttachment + 332, // 96: pbds.ListAppTemplateSetsResp.details:type_name -> pbtset.TemplateSet + 332, // 97: pbds.ListTemplateSetsByIDsResp.details:type_name -> pbtset.TemplateSet + 333, // 98: pbds.ListTemplateSetBriefInfoByIDsResp.details:type_name -> pbtset.TemplateSetBriefInfo + 334, // 99: pbds.ListTmplSetsOfBizResp.details:type_name -> pbtset.TemplateSetOfBizDetail + 335, // 100: pbds.CreateAppTemplateBindingReq.attachment:type_name -> pbatb.AppTemplateBindingAttachment + 336, // 101: pbds.CreateAppTemplateBindingReq.spec:type_name -> pbatb.AppTemplateBindingSpec + 337, // 102: pbds.ListAppTemplateBindingsResp.details:type_name -> pbatb.AppTemplateBinding + 335, // 103: pbds.UpdateAppTemplateBindingReq.attachment:type_name -> pbatb.AppTemplateBindingAttachment + 336, // 104: pbds.UpdateAppTemplateBindingReq.spec:type_name -> pbatb.AppTemplateBindingSpec + 335, // 105: pbds.DeleteAppTemplateBindingReq.attachment:type_name -> pbatb.AppTemplateBindingAttachment + 338, // 106: pbds.ListAppBoundTmplRevisionsResp.details:type_name -> pbatb.AppBoundTmplRevision + 339, // 107: pbds.ListReleasedAppBoundTmplRevisionsResp.details:type_name -> pbatb.ReleasedAppBoundTmplRevision + 339, // 108: pbds.GetReleasedAppBoundTmplRevisionResp.detail:type_name -> pbatb.ReleasedAppBoundTmplRevision + 335, // 109: pbds.CheckAppTemplateBindingReq.attachment:type_name -> pbatb.AppTemplateBindingAttachment + 336, // 110: pbds.CheckAppTemplateBindingReq.spec:type_name -> pbatb.AppTemplateBindingSpec + 340, // 111: pbds.CheckAppTemplateBindingResp.details:type_name -> pbatb.Conflict + 278, // 112: pbds.ImportFromTemplateSetToAppReq.bindings:type_name -> pbds.ImportFromTemplateSetToAppReq.Binding + 341, // 113: pbds.GetAppTmplVariableRefsResp.details:type_name -> pbatv.AppTemplateVariableReference + 341, // 114: pbds.GetReleasedAppTmplVariableRefsResp.details:type_name -> pbatv.AppTemplateVariableReference + 342, // 115: pbds.UpdateAppTmplVariablesReq.attachment:type_name -> pbatv.AppTemplateVariableAttachment + 343, // 116: pbds.UpdateAppTmplVariablesReq.spec:type_name -> pbatv.AppTemplateVariableSpec + 304, // 117: pbds.ListAppTmplVariablesResp.details:type_name -> pbtv.TemplateVariableSpec + 304, // 118: pbds.ListReleasedAppTmplVariablesResp.details:type_name -> pbtv.TemplateVariableSpec + 344, // 119: pbds.ListTmplBoundCountsResp.details:type_name -> pbtbr.TemplateBoundCounts + 345, // 120: pbds.ListTmplRevisionBoundCountsResp.details:type_name -> pbtbr.TemplateRevisionBoundCounts + 346, // 121: pbds.ListTmplSetBoundCountsResp.details:type_name -> pbtbr.TemplateSetBoundCounts + 347, // 122: pbds.ListTmplBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateBoundUnnamedAppDetail + 348, // 123: pbds.ListTmplBoundNamedAppsResp.details:type_name -> pbtbr.TemplateBoundNamedAppDetail + 349, // 124: pbds.ListTmplBoundTmplSetsResp.details:type_name -> pbtbr.TemplateBoundTemplateSetDetail + 350, // 125: pbds.ListMultiTmplBoundTmplSetsResp.details:type_name -> pbtbr.MultiTemplateBoundTemplateSetDetail + 351, // 126: pbds.ListTmplRevisionBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateRevisionBoundUnnamedAppDetail + 352, // 127: pbds.ListTmplRevisionBoundNamedAppsResp.details:type_name -> pbtbr.TemplateRevisionBoundNamedAppDetail + 353, // 128: pbds.ListTmplSetBoundUnnamedAppsResp.details:type_name -> pbtbr.TemplateSetBoundUnnamedAppDetail + 354, // 129: pbds.ListMultiTmplSetBoundUnnamedAppsResp.details:type_name -> pbtbr.MultiTemplateSetBoundUnnamedAppDetail + 355, // 130: pbds.ListTmplSetBoundNamedAppsResp.details:type_name -> pbtbr.TemplateSetBoundNamedAppDetail + 356, // 131: pbds.ListLatestTmplBoundUnnamedAppsResp.details:type_name -> pbtbr.LatestTemplateBoundUnnamedAppDetail + 280, // 132: pbds.CheckTemplateSetReferencesAppsReq.items:type_name -> pbds.CheckTemplateSetReferencesAppsReq.Item + 281, // 133: pbds.CheckTemplateSetReferencesAppsResp.items:type_name -> pbds.CheckTemplateSetReferencesAppsResp.Item + 357, // 134: pbds.CreateTemplateVariableReq.attachment:type_name -> pbtv.TemplateVariableAttachment + 304, // 135: pbds.CreateTemplateVariableReq.spec:type_name -> pbtv.TemplateVariableSpec + 304, // 136: pbds.ImportTemplateVariablesReq.specs:type_name -> pbtv.TemplateVariableSpec + 358, // 137: pbds.ListTemplateVariablesResp.details:type_name -> pbtv.TemplateVariable + 357, // 138: pbds.UpdateTemplateVariableReq.attachment:type_name -> pbtv.TemplateVariableAttachment + 304, // 139: pbds.UpdateTemplateVariableReq.spec:type_name -> pbtv.TemplateVariableSpec + 357, // 140: pbds.DeleteTemplateVariableReq.attachment:type_name -> pbtv.TemplateVariableAttachment + 359, // 141: pbds.CreateGroupReq.attachment:type_name -> pbgroup.GroupAttachment + 360, // 142: pbds.CreateGroupReq.spec:type_name -> pbgroup.GroupSpec + 361, // 143: pbds.ListAllGroupsResp.details:type_name -> pbgroup.Group + 282, // 144: pbds.ListAppGroupsResp.details:type_name -> pbds.ListAppGroupsResp.ListAppGroupsData + 359, // 145: pbds.UpdateGroupReq.attachment:type_name -> pbgroup.GroupAttachment + 360, // 146: pbds.UpdateGroupReq.spec:type_name -> pbgroup.GroupSpec + 359, // 147: pbds.DeleteGroupReq.attachment:type_name -> pbgroup.GroupAttachment + 283, // 148: pbds.CountGroupsReleasedAppsResp.data:type_name -> pbds.CountGroupsReleasedAppsResp.CountGroupsReleasedAppsData + 284, // 149: pbds.ListGroupReleasedAppsResp.details:type_name -> pbds.ListGroupReleasedAppsResp.ListGroupReleasedAppsData + 362, // 150: pbds.PublishReq.labels:type_name -> google.protobuf.Struct + 304, // 151: pbds.GenerateReleaseAndPublishReq.variables:type_name -> pbtv.TemplateVariableSpec + 362, // 152: pbds.GenerateReleaseAndPublishReq.labels:type_name -> google.protobuf.Struct + 363, // 153: pbds.ListInstancesReq.page:type_name -> pbbase.BasePage + 227, // 154: pbds.ListInstancesResp.details:type_name -> pbds.InstanceResource + 230, // 155: pbds.FetchInstanceInfoResp.details:type_name -> pbds.InstanceInfo + 364, // 156: pbds.CreateKvReq.attachment:type_name -> pbkv.KvAttachment + 365, // 157: pbds.CreateKvReq.spec:type_name -> pbkv.KvSpec + 364, // 158: pbds.UpdateKvReq.attachment:type_name -> pbkv.KvAttachment + 365, // 159: pbds.UpdateKvReq.spec:type_name -> pbkv.KvSpec + 366, // 160: pbds.ListKvsResp.details:type_name -> pbkv.Kv + 365, // 161: pbds.DeleteKvReq.spec:type_name -> pbkv.KvSpec + 364, // 162: pbds.DeleteKvReq.attachment:type_name -> pbkv.KvAttachment + 285, // 163: pbds.BatchUpsertKvsReq.kvs:type_name -> pbds.BatchUpsertKvsReq.Kv + 367, // 164: pbds.BatchUpsertClientMetricsReq.client_items:type_name -> pbclient.Client + 368, // 165: pbds.BatchUpsertClientMetricsReq.client_event_items:type_name -> pbce.ClientEvent + 286, // 166: pbds.ListClientsReq.order:type_name -> pbds.ListClientsReq.Order + 369, // 167: pbds.ListClientsReq.search:type_name -> pbclient.ClientQueryCondition + 287, // 168: pbds.ListClientsResp.details:type_name -> pbds.ListClientsResp.Item + 288, // 169: pbds.ListClientEventsReq.order:type_name -> pbds.ListClientEventsReq.Order + 368, // 170: pbds.ListClientEventsResp.details:type_name -> pbce.ClientEvent + 370, // 171: pbds.ListClientQuerysResp.details:type_name -> pbcq.ClientQuery + 362, // 172: pbds.CreateClientQueryReq.search_condition:type_name -> google.protobuf.Struct + 362, // 173: pbds.UpdateClientQueryReq.search_condition:type_name -> google.protobuf.Struct + 289, // 174: pbds.CompareConfigItemConflictsResp.non_template_configs:type_name -> pbds.CompareConfigItemConflictsResp.NonTemplateConfig + 290, // 175: pbds.CompareConfigItemConflictsResp.template_configs:type_name -> pbds.CompareConfigItemConflictsResp.TemplateConfig + 301, // 176: pbds.BatchUpsertConfigItemsReq.ConfigItem.config_item_attachment:type_name -> pbci.ConfigItemAttachment + 302, // 177: pbds.BatchUpsertConfigItemsReq.ConfigItem.config_item_spec:type_name -> pbci.ConfigItemSpec + 303, // 178: pbds.BatchUpsertConfigItemsReq.ConfigItem.content_spec:type_name -> pbcontent.ContentSpec + 371, // 179: pbds.BatchUpsertConfigItemsReq.TemplateBinding.template_binding:type_name -> pbatb.TemplateBinding + 372, // 180: pbds.ListHooksResp.Detail.hook:type_name -> pbhook.Hook + 373, // 181: pbds.ListHookRevisionsResp.ListHookRevisionsData.hook_revision:type_name -> pbhr.HookRevision + 326, // 182: pbds.ListTemplateSetsAndRevisionsResp.Detail.template:type_name -> pbtemplate.Template + 328, // 183: pbds.ListTemplateSetsAndRevisionsResp.Detail.template_revision:type_name -> pbtr.TemplateRevision + 326, // 184: pbds.ListTemplateByTupleReqResp.Item.template:type_name -> pbtemplate.Template + 328, // 185: pbds.ListTemplateByTupleReqResp.Item.template_revision:type_name -> pbtr.TemplateRevision + 326, // 186: pbds.BatchUpsertTemplatesReq.Item.template:type_name -> pbtemplate.Template + 328, // 187: pbds.BatchUpsertTemplatesReq.Item.template_revision:type_name -> pbtr.TemplateRevision + 279, // 188: pbds.ImportFromTemplateSetToAppReq.Binding.template_revisions:type_name -> pbds.ImportFromTemplateSetToAppReq.Binding.TemplateRevisionBinding + 362, // 189: pbds.ListAppGroupsResp.ListAppGroupsData.old_selector:type_name -> google.protobuf.Struct + 362, // 190: pbds.ListAppGroupsResp.ListAppGroupsData.new_selector:type_name -> google.protobuf.Struct + 364, // 191: pbds.BatchUpsertKvsReq.Kv.kv_attachment:type_name -> pbkv.KvAttachment + 365, // 192: pbds.BatchUpsertKvsReq.Kv.kv_spec:type_name -> pbkv.KvSpec + 367, // 193: pbds.ListClientsResp.Item.client:type_name -> pbclient.Client + 302, // 194: pbds.CompareConfigItemConflictsResp.NonTemplateConfig.config_item_spec:type_name -> pbci.ConfigItemSpec + 304, // 195: pbds.CompareConfigItemConflictsResp.NonTemplateConfig.variables:type_name -> pbtv.TemplateVariableSpec + 291, // 196: pbds.CompareConfigItemConflictsResp.TemplateConfig.template_revisions:type_name -> pbds.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail + 304, // 197: pbds.CompareConfigItemConflictsResp.TemplateConfig.TemplateRevisionDetail.variables:type_name -> pbtv.TemplateVariableSpec + 20, // 198: pbds.Data.CreateApp:input_type -> pbds.CreateAppReq + 21, // 199: pbds.Data.UpdateApp:input_type -> pbds.UpdateAppReq + 22, // 200: pbds.Data.DeleteApp:input_type -> pbds.DeleteAppReq + 23, // 201: pbds.Data.GetApp:input_type -> pbds.GetAppReq + 24, // 202: pbds.Data.GetAppByID:input_type -> pbds.GetAppByIDReq + 25, // 203: pbds.Data.GetAppByName:input_type -> pbds.GetAppByNameReq + 26, // 204: pbds.Data.ListAppsRest:input_type -> pbds.ListAppsRestReq + 28, // 205: pbds.Data.ListAppsByIDs:input_type -> pbds.ListAppsByIDsReq + 30, // 206: pbds.Data.CreateConfigItem:input_type -> pbds.CreateConfigItemReq + 31, // 207: pbds.Data.BatchUpsertConfigItems:input_type -> pbds.BatchUpsertConfigItemsReq + 33, // 208: pbds.Data.UpdateConfigItem:input_type -> pbds.UpdateConfigItemReq + 34, // 209: pbds.Data.DeleteConfigItem:input_type -> pbds.DeleteConfigItemReq + 35, // 210: pbds.Data.UnDeleteConfigItem:input_type -> pbds.UnDeleteConfigItemReq + 36, // 211: pbds.Data.UndoConfigItem:input_type -> pbds.UndoConfigItemReq + 37, // 212: pbds.Data.GetConfigItem:input_type -> pbds.GetConfigItemReq + 38, // 213: pbds.Data.ListConfigItems:input_type -> pbds.ListConfigItemsReq + 40, // 214: pbds.Data.ListReleasedConfigItems:input_type -> pbds.ListReleasedConfigItemsReq + 42, // 215: pbds.Data.ListConfigItemCount:input_type -> pbds.ListConfigItemCountReq + 44, // 216: pbds.Data.ListConfigItemByTuple:input_type -> pbds.ListConfigItemByTupleReq + 18, // 217: pbds.Data.UpdateConfigHook:input_type -> pbds.UpdateConfigHookReq + 46, // 218: pbds.Data.CreateContent:input_type -> pbds.CreateContentReq + 47, // 219: pbds.Data.GetContent:input_type -> pbds.GetContentReq + 48, // 220: pbds.Data.CreateCommit:input_type -> pbds.CreateCommitReq + 49, // 221: pbds.Data.GetLatestCommit:input_type -> pbds.GetLatestCommitReq + 50, // 222: pbds.Data.CreateRelease:input_type -> pbds.CreateReleaseReq + 51, // 223: pbds.Data.ListReleases:input_type -> pbds.ListReleasesReq + 53, // 224: pbds.Data.GetReleaseByName:input_type -> pbds.GetReleaseByNameReq + 54, // 225: pbds.Data.GetRelease:input_type -> pbds.GetReleaseReq + 55, // 226: pbds.Data.DeprecateRelease:input_type -> pbds.DeprecateReleaseReq + 56, // 227: pbds.Data.UnDeprecateRelease:input_type -> pbds.UnDeprecateReleaseReq + 57, // 228: pbds.Data.DeleteRelease:input_type -> pbds.DeleteReleaseReq + 58, // 229: pbds.Data.CheckReleaseName:input_type -> pbds.CheckReleaseNameReq + 60, // 230: pbds.Data.GetReleasedConfigItem:input_type -> pbds.GetReleasedCIReq + 61, // 231: pbds.Data.GetReleasedKv:input_type -> pbds.GetReleasedKvReq + 62, // 232: pbds.Data.ListReleasedKvs:input_type -> pbds.ListReleasedKvReq + 64, // 233: pbds.Data.CreateHook:input_type -> pbds.CreateHookReq + 73, // 234: pbds.Data.ListHooks:input_type -> pbds.ListHooksReq + 78, // 235: pbds.Data.DeleteHook:input_type -> pbds.DeleteHookReq + 79, // 236: pbds.Data.UpdateHook:input_type -> pbds.UpdateHookReq + 65, // 237: pbds.Data.ListHookTags:input_type -> pbds.ListHookTagReq + 76, // 238: pbds.Data.ListHookReferences:input_type -> pbds.ListHookReferencesReq + 66, // 239: pbds.Data.GetHook:input_type -> pbds.GetHookReq + 68, // 240: pbds.Data.HookFetchIDsExcluding:input_type -> pbds.HookFetchIDsExcludingReq + 70, // 241: pbds.Data.GetHookReferencedIDs:input_type -> pbds.GetHookReferencedIDsReq + 80, // 242: pbds.Data.CreateHookRevision:input_type -> pbds.CreateHookRevisionReq + 81, // 243: pbds.Data.ListHookRevisions:input_type -> pbds.ListHookRevisionsReq + 83, // 244: pbds.Data.GetHookRevisionByID:input_type -> pbds.GetHookRevisionByIdReq + 84, // 245: pbds.Data.DeleteHookRevision:input_type -> pbds.DeleteHookRevisionReq + 85, // 246: pbds.Data.PublishHookRevision:input_type -> pbds.PublishHookRevisionReq + 86, // 247: pbds.Data.GetHookRevisionByPubState:input_type -> pbds.GetByPubStateReq + 87, // 248: pbds.Data.UpdateHookRevision:input_type -> pbds.UpdateHookRevisionReq + 88, // 249: pbds.Data.ListHookRevisionReferences:input_type -> pbds.ListHookRevisionReferencesReq + 90, // 250: pbds.Data.GetReleaseHook:input_type -> pbds.GetReleaseHookReq + 92, // 251: pbds.Data.CreateTemplateSpace:input_type -> pbds.CreateTemplateSpaceReq + 93, // 252: pbds.Data.ListTemplateSpaces:input_type -> pbds.ListTemplateSpacesReq + 95, // 253: pbds.Data.UpdateTemplateSpace:input_type -> pbds.UpdateTemplateSpaceReq + 96, // 254: pbds.Data.DeleteTemplateSpace:input_type -> pbds.DeleteTemplateSpaceReq + 374, // 255: pbds.Data.GetAllBizsOfTmplSpaces:input_type -> pbbase.EmptyReq + 98, // 256: pbds.Data.CreateDefaultTmplSpace:input_type -> pbds.CreateDefaultTmplSpaceReq + 99, // 257: pbds.Data.ListTmplSpacesByIDs:input_type -> pbds.ListTmplSpacesByIDsReq + 101, // 258: pbds.Data.CreateTemplate:input_type -> pbds.CreateTemplateReq + 102, // 259: pbds.Data.ListTemplates:input_type -> pbds.ListTemplatesReq + 104, // 260: pbds.Data.UpdateTemplate:input_type -> pbds.UpdateTemplateReq + 105, // 261: pbds.Data.DeleteTemplate:input_type -> pbds.DeleteTemplateReq + 106, // 262: pbds.Data.BatchDeleteTemplate:input_type -> pbds.BatchDeleteTemplateReq + 107, // 263: pbds.Data.AddTmplsToTmplSets:input_type -> pbds.AddTmplsToTmplSetsReq + 108, // 264: pbds.Data.DeleteTmplsFromTmplSets:input_type -> pbds.DeleteTmplsFromTmplSetsReq + 109, // 265: pbds.Data.ListTemplatesByIDs:input_type -> pbds.ListTemplatesByIDsReq + 111, // 266: pbds.Data.ListTemplatesNotBound:input_type -> pbds.ListTemplatesNotBoundReq + 113, // 267: pbds.Data.ListTmplsOfTmplSet:input_type -> pbds.ListTmplsOfTmplSetReq + 115, // 268: pbds.Data.ListTemplateSetsAndRevisions:input_type -> pbds.ListTemplateSetsAndRevisionsReq + 117, // 269: pbds.Data.ListTemplateByTuple:input_type -> pbds.ListTemplateByTupleReq + 119, // 270: pbds.Data.BatchUpsertTemplates:input_type -> pbds.BatchUpsertTemplatesReq + 121, // 271: pbds.Data.BatchUpdateTemplatePermissions:input_type -> pbds.BatchUpdateTemplatePermissionsReq + 123, // 272: pbds.Data.CreateTemplateRevision:input_type -> pbds.CreateTemplateRevisionReq + 124, // 273: pbds.Data.UpdateTemplateRevision:input_type -> pbds.UpdateTemplateRevisionReq + 125, // 274: pbds.Data.ListTemplateRevisions:input_type -> pbds.ListTemplateRevisionsReq + 127, // 275: pbds.Data.GetTemplateRevision:input_type -> pbds.GetTemplateRevisionReq + 129, // 276: pbds.Data.DeleteTemplateRevision:input_type -> pbds.DeleteTemplateRevisionReq + 130, // 277: pbds.Data.ListTemplateRevisionsByIDs:input_type -> pbds.ListTemplateRevisionsByIDsReq + 132, // 278: pbds.Data.ListTmplRevisionNamesByTmplIDs:input_type -> pbds.ListTmplRevisionNamesByTmplIDsReq + 134, // 279: pbds.Data.CreateTemplateSet:input_type -> pbds.CreateTemplateSetReq + 135, // 280: pbds.Data.ListTemplateSets:input_type -> pbds.ListTemplateSetsReq + 137, // 281: pbds.Data.UpdateTemplateSet:input_type -> pbds.UpdateTemplateSetReq + 138, // 282: pbds.Data.DeleteTemplateSet:input_type -> pbds.DeleteTemplateSetReq + 139, // 283: pbds.Data.ListAppTemplateSets:input_type -> pbds.ListAppTemplateSetsReq + 141, // 284: pbds.Data.ListTemplateSetsByIDs:input_type -> pbds.ListTemplateSetsByIDsReq + 143, // 285: pbds.Data.ListTemplateSetBriefInfoByIDs:input_type -> pbds.ListTemplateSetBriefInfoByIDsReq + 145, // 286: pbds.Data.ListTmplSetsOfBiz:input_type -> pbds.ListTmplSetsOfBizReq + 147, // 287: pbds.Data.CreateAppTemplateBinding:input_type -> pbds.CreateAppTemplateBindingReq + 148, // 288: pbds.Data.ListAppTemplateBindings:input_type -> pbds.ListAppTemplateBindingsReq + 150, // 289: pbds.Data.UpdateAppTemplateBinding:input_type -> pbds.UpdateAppTemplateBindingReq + 151, // 290: pbds.Data.DeleteAppTemplateBinding:input_type -> pbds.DeleteAppTemplateBindingReq + 152, // 291: pbds.Data.ListAppBoundTmplRevisions:input_type -> pbds.ListAppBoundTmplRevisionsReq + 154, // 292: pbds.Data.ListReleasedAppBoundTmplRevisions:input_type -> pbds.ListReleasedAppBoundTmplRevisionsReq + 156, // 293: pbds.Data.GetReleasedAppBoundTmplRevision:input_type -> pbds.GetReleasedAppBoundTmplRevisionReq + 158, // 294: pbds.Data.CheckAppTemplateBinding:input_type -> pbds.CheckAppTemplateBindingReq + 160, // 295: pbds.Data.ImportFromTemplateSetToApp:input_type -> pbds.ImportFromTemplateSetToAppReq + 161, // 296: pbds.Data.ExtractAppTmplVariables:input_type -> pbds.ExtractAppTmplVariablesReq + 163, // 297: pbds.Data.GetAppTmplVariableRefs:input_type -> pbds.GetAppTmplVariableRefsReq + 165, // 298: pbds.Data.GetReleasedAppTmplVariableRefs:input_type -> pbds.GetReleasedAppTmplVariableRefsReq + 167, // 299: pbds.Data.UpdateAppTmplVariables:input_type -> pbds.UpdateAppTmplVariablesReq + 168, // 300: pbds.Data.ListAppTmplVariables:input_type -> pbds.ListAppTmplVariablesReq + 170, // 301: pbds.Data.ListReleasedAppTmplVariables:input_type -> pbds.ListReleasedAppTmplVariablesReq + 172, // 302: pbds.Data.ListTmplBoundCounts:input_type -> pbds.ListTmplBoundCountsReq + 174, // 303: pbds.Data.ListTmplRevisionBoundCounts:input_type -> pbds.ListTmplRevisionBoundCountsReq + 176, // 304: pbds.Data.ListTmplSetBoundCounts:input_type -> pbds.ListTmplSetBoundCountsReq + 178, // 305: pbds.Data.ListTmplBoundUnnamedApps:input_type -> pbds.ListTmplBoundUnnamedAppsReq + 180, // 306: pbds.Data.ListTmplBoundNamedApps:input_type -> pbds.ListTmplBoundNamedAppsReq + 182, // 307: pbds.Data.ListTmplBoundTmplSets:input_type -> pbds.ListTmplBoundTmplSetsReq + 184, // 308: pbds.Data.ListMultiTmplBoundTmplSets:input_type -> pbds.ListMultiTmplBoundTmplSetsReq + 186, // 309: pbds.Data.ListTmplRevisionBoundUnnamedApps:input_type -> pbds.ListTmplRevisionBoundUnnamedAppsReq + 188, // 310: pbds.Data.ListTmplRevisionBoundNamedApps:input_type -> pbds.ListTmplRevisionBoundNamedAppsReq + 190, // 311: pbds.Data.ListTmplSetBoundUnnamedApps:input_type -> pbds.ListTmplSetBoundUnnamedAppsReq + 192, // 312: pbds.Data.ListMultiTmplSetBoundUnnamedApps:input_type -> pbds.ListMultiTmplSetBoundUnnamedAppsReq + 194, // 313: pbds.Data.ListTmplSetBoundNamedApps:input_type -> pbds.ListTmplSetBoundNamedAppsReq + 196, // 314: pbds.Data.ListLatestTmplBoundUnnamedApps:input_type -> pbds.ListLatestTmplBoundUnnamedAppsReq + 198, // 315: pbds.Data.RemoveAppBoundTmplSet:input_type -> pbds.RemoveAppBoundTmplSetReq + 199, // 316: pbds.Data.CheckTemplateSetReferencesApps:input_type -> pbds.CheckTemplateSetReferencesAppsReq + 201, // 317: pbds.Data.CreateTemplateVariable:input_type -> pbds.CreateTemplateVariableReq + 204, // 318: pbds.Data.ListTemplateVariables:input_type -> pbds.ListTemplateVariablesReq + 206, // 319: pbds.Data.UpdateTemplateVariable:input_type -> pbds.UpdateTemplateVariableReq + 207, // 320: pbds.Data.DeleteTemplateVariable:input_type -> pbds.DeleteTemplateVariableReq + 208, // 321: pbds.Data.TemplateVariableFetchIDsExcluding:input_type -> pbds.TemplateVariableFetchIDsExcludingReq + 202, // 322: pbds.Data.ImportTemplateVariables:input_type -> pbds.ImportTemplateVariablesReq + 210, // 323: pbds.Data.CreateGroup:input_type -> pbds.CreateGroupReq + 211, // 324: pbds.Data.ListAllGroups:input_type -> pbds.ListAllGroupsReq + 213, // 325: pbds.Data.ListAppGroups:input_type -> pbds.ListAppGroupsReq + 215, // 326: pbds.Data.GetGroupByName:input_type -> pbds.GetGroupByNameReq + 216, // 327: pbds.Data.UpdateGroup:input_type -> pbds.UpdateGroupReq + 217, // 328: pbds.Data.DeleteGroup:input_type -> pbds.DeleteGroupReq + 218, // 329: pbds.Data.CountGroupsReleasedApps:input_type -> pbds.CountGroupsReleasedAppsReq + 220, // 330: pbds.Data.ListGroupReleasedApps:input_type -> pbds.ListGroupReleasedAppsReq + 222, // 331: pbds.Data.Publish:input_type -> pbds.PublishReq + 223, // 332: pbds.Data.GenerateReleaseAndPublish:input_type -> pbds.GenerateReleaseAndPublishReq + 9, // 333: pbds.Data.CreateCredential:input_type -> pbds.CreateCredentialReq + 10, // 334: pbds.Data.ListCredentials:input_type -> pbds.ListCredentialReq + 15, // 335: pbds.Data.DeleteCredential:input_type -> pbds.DeleteCredentialReq + 12, // 336: pbds.Data.UpdateCredential:input_type -> pbds.UpdateCredentialReq + 13, // 337: pbds.Data.CheckCredentialName:input_type -> pbds.CheckCredentialNameReq + 6, // 338: pbds.Data.ListCredentialScopes:input_type -> pbds.ListCredentialScopesReq + 0, // 339: pbds.Data.UpdateCredentialScopes:input_type -> pbds.UpdateCredentialScopesReq + 2, // 340: pbds.Data.CredentialScopePreview:input_type -> pbds.CredentialScopePreviewReq + 232, // 341: pbds.Data.CreateKv:input_type -> pbds.CreateKvReq + 233, // 342: pbds.Data.UpdateKv:input_type -> pbds.UpdateKvReq + 234, // 343: pbds.Data.ListKvs:input_type -> pbds.ListKvsReq + 236, // 344: pbds.Data.DeleteKv:input_type -> pbds.DeleteKvReq + 237, // 345: pbds.Data.BatchUpsertKvs:input_type -> pbds.BatchUpsertKvsReq + 239, // 346: pbds.Data.UnDeleteKv:input_type -> pbds.UnDeleteKvReq + 240, // 347: pbds.Data.UndoKv:input_type -> pbds.UndoKvReq + 241, // 348: pbds.Data.KvFetchIDsExcluding:input_type -> pbds.KvFetchIDsExcludingReq + 245, // 349: pbds.Data.ListClients:input_type -> pbds.ListClientsReq + 246, // 350: pbds.Data.RetryClients:input_type -> pbds.RetryClientsReq + 248, // 351: pbds.Data.ListClientEvents:input_type -> pbds.ListClientEventsReq + 250, // 352: pbds.Data.ListClientQuerys:input_type -> pbds.ListClientQuerysReq + 252, // 353: pbds.Data.CreateClientQuery:input_type -> pbds.CreateClientQueryReq + 254, // 354: pbds.Data.UpdateClientQuery:input_type -> pbds.UpdateClientQueryReq + 255, // 355: pbds.Data.DeleteClientQuery:input_type -> pbds.DeleteClientQueryReq + 256, // 356: pbds.Data.CheckClientQueryName:input_type -> pbds.CheckClientQueryNameReq + 375, // 357: pbds.Data.ClientConfigVersionStatistics:input_type -> pbclient.ClientCommonReq + 375, // 358: pbds.Data.ClientPullTrendStatistics:input_type -> pbclient.ClientCommonReq + 375, // 359: pbds.Data.ClientPullStatistics:input_type -> pbclient.ClientCommonReq + 375, // 360: pbds.Data.ClientLabelStatistics:input_type -> pbclient.ClientCommonReq + 375, // 361: pbds.Data.ClientAnnotationStatistics:input_type -> pbclient.ClientCommonReq + 375, // 362: pbds.Data.ClientVersionStatistics:input_type -> pbclient.ClientCommonReq + 258, // 363: pbds.Data.ListClientLabelAndAnnotation:input_type -> pbds.ListClientLabelAndAnnotationReq + 375, // 364: pbds.Data.ClientSpecificFailedReason:input_type -> pbclient.ClientCommonReq + 225, // 365: pbds.Data.ListInstances:input_type -> pbds.ListInstancesReq + 228, // 366: pbds.Data.FetchInstanceInfo:input_type -> pbds.FetchInstanceInfoReq + 231, // 367: pbds.Data.Ping:input_type -> pbds.PingMsg + 243, // 368: pbds.Data.BatchUpsertClientMetrics:input_type -> pbds.BatchUpsertClientMetricsReq + 259, // 369: pbds.Data.CompareConfigItemConflicts:input_type -> pbds.CompareConfigItemConflictsReq + 261, // 370: pbds.Data.GetTemplateAndNonTemplateCICount:input_type -> pbds.GetTemplateAndNonTemplateCICountReq + 17, // 371: pbds.Data.CreateApp:output_type -> pbds.CreateResp + 300, // 372: pbds.Data.UpdateApp:output_type -> pbapp.App + 376, // 373: pbds.Data.DeleteApp:output_type -> pbbase.EmptyResp + 300, // 374: pbds.Data.GetApp:output_type -> pbapp.App + 300, // 375: pbds.Data.GetAppByID:output_type -> pbapp.App + 300, // 376: pbds.Data.GetAppByName:output_type -> pbapp.App + 27, // 377: pbds.Data.ListAppsRest:output_type -> pbds.ListAppsResp + 29, // 378: pbds.Data.ListAppsByIDs:output_type -> pbds.ListAppsByIDsResp + 17, // 379: pbds.Data.CreateConfigItem:output_type -> pbds.CreateResp + 32, // 380: pbds.Data.BatchUpsertConfigItems:output_type -> pbds.BatchUpsertConfigItemsResp + 376, // 381: pbds.Data.UpdateConfigItem:output_type -> pbbase.EmptyResp + 376, // 382: pbds.Data.DeleteConfigItem:output_type -> pbbase.EmptyResp + 376, // 383: pbds.Data.UnDeleteConfigItem:output_type -> pbbase.EmptyResp + 376, // 384: pbds.Data.UndoConfigItem:output_type -> pbbase.EmptyResp + 305, // 385: pbds.Data.GetConfigItem:output_type -> pbci.ConfigItem + 39, // 386: pbds.Data.ListConfigItems:output_type -> pbds.ListConfigItemsResp + 41, // 387: pbds.Data.ListReleasedConfigItems:output_type -> pbds.ListReleasedConfigItemsResp + 43, // 388: pbds.Data.ListConfigItemCount:output_type -> pbds.ListConfigItemCountResp + 45, // 389: pbds.Data.ListConfigItemByTuple:output_type -> pbds.ListConfigItemByTupleResp + 376, // 390: pbds.Data.UpdateConfigHook:output_type -> pbbase.EmptyResp + 17, // 391: pbds.Data.CreateContent:output_type -> pbds.CreateResp + 377, // 392: pbds.Data.GetContent:output_type -> pbcontent.Content + 17, // 393: pbds.Data.CreateCommit:output_type -> pbds.CreateResp + 378, // 394: pbds.Data.GetLatestCommit:output_type -> pbcommit.Commit + 17, // 395: pbds.Data.CreateRelease:output_type -> pbds.CreateResp + 52, // 396: pbds.Data.ListReleases:output_type -> pbds.ListReleasesResp + 312, // 397: pbds.Data.GetReleaseByName:output_type -> pbrelease.Release + 312, // 398: pbds.Data.GetRelease:output_type -> pbrelease.Release + 376, // 399: pbds.Data.DeprecateRelease:output_type -> pbbase.EmptyResp + 376, // 400: pbds.Data.UnDeprecateRelease:output_type -> pbbase.EmptyResp + 376, // 401: pbds.Data.DeleteRelease:output_type -> pbbase.EmptyResp + 59, // 402: pbds.Data.CheckReleaseName:output_type -> pbds.CheckReleaseNameResp + 306, // 403: pbds.Data.GetReleasedConfigItem:output_type -> pbrci.ReleasedConfigItem + 313, // 404: pbds.Data.GetReleasedKv:output_type -> pbrkv.ReleasedKv + 63, // 405: pbds.Data.ListReleasedKvs:output_type -> pbds.ListReleasedKvResp + 17, // 406: pbds.Data.CreateHook:output_type -> pbds.CreateResp + 74, // 407: pbds.Data.ListHooks:output_type -> pbds.ListHooksResp + 376, // 408: pbds.Data.DeleteHook:output_type -> pbbase.EmptyResp + 376, // 409: pbds.Data.UpdateHook:output_type -> pbbase.EmptyResp + 75, // 410: pbds.Data.ListHookTags:output_type -> pbds.ListHookTagResp + 77, // 411: pbds.Data.ListHookReferences:output_type -> pbds.ListHookReferencesResp + 67, // 412: pbds.Data.GetHook:output_type -> pbds.GetHookResp + 69, // 413: pbds.Data.HookFetchIDsExcluding:output_type -> pbds.HookFetchIDsExcludingResp + 71, // 414: pbds.Data.GetHookReferencedIDs:output_type -> pbds.GetHookReferencedIDsResp + 17, // 415: pbds.Data.CreateHookRevision:output_type -> pbds.CreateResp + 82, // 416: pbds.Data.ListHookRevisions:output_type -> pbds.ListHookRevisionsResp + 373, // 417: pbds.Data.GetHookRevisionByID:output_type -> pbhr.HookRevision + 376, // 418: pbds.Data.DeleteHookRevision:output_type -> pbbase.EmptyResp + 376, // 419: pbds.Data.PublishHookRevision:output_type -> pbbase.EmptyResp + 373, // 420: pbds.Data.GetHookRevisionByPubState:output_type -> pbhr.HookRevision + 376, // 421: pbds.Data.UpdateHookRevision:output_type -> pbbase.EmptyResp + 89, // 422: pbds.Data.ListHookRevisionReferences:output_type -> pbds.ListHookRevisionReferencesResp + 91, // 423: pbds.Data.GetReleaseHook:output_type -> pbds.GetReleaseHookResp + 17, // 424: pbds.Data.CreateTemplateSpace:output_type -> pbds.CreateResp + 94, // 425: pbds.Data.ListTemplateSpaces:output_type -> pbds.ListTemplateSpacesResp + 376, // 426: pbds.Data.UpdateTemplateSpace:output_type -> pbbase.EmptyResp + 376, // 427: pbds.Data.DeleteTemplateSpace:output_type -> pbbase.EmptyResp + 97, // 428: pbds.Data.GetAllBizsOfTmplSpaces:output_type -> pbds.GetAllBizsOfTmplSpacesResp + 17, // 429: pbds.Data.CreateDefaultTmplSpace:output_type -> pbds.CreateResp + 100, // 430: pbds.Data.ListTmplSpacesByIDs:output_type -> pbds.ListTmplSpacesByIDsResp + 17, // 431: pbds.Data.CreateTemplate:output_type -> pbds.CreateResp + 103, // 432: pbds.Data.ListTemplates:output_type -> pbds.ListTemplatesResp + 376, // 433: pbds.Data.UpdateTemplate:output_type -> pbbase.EmptyResp + 376, // 434: pbds.Data.DeleteTemplate:output_type -> pbbase.EmptyResp + 376, // 435: pbds.Data.BatchDeleteTemplate:output_type -> pbbase.EmptyResp + 376, // 436: pbds.Data.AddTmplsToTmplSets:output_type -> pbbase.EmptyResp + 376, // 437: pbds.Data.DeleteTmplsFromTmplSets:output_type -> pbbase.EmptyResp + 110, // 438: pbds.Data.ListTemplatesByIDs:output_type -> pbds.ListTemplatesByIDsResp + 112, // 439: pbds.Data.ListTemplatesNotBound:output_type -> pbds.ListTemplatesNotBoundResp + 114, // 440: pbds.Data.ListTmplsOfTmplSet:output_type -> pbds.ListTmplsOfTmplSetResp + 116, // 441: pbds.Data.ListTemplateSetsAndRevisions:output_type -> pbds.ListTemplateSetsAndRevisionsResp + 118, // 442: pbds.Data.ListTemplateByTuple:output_type -> pbds.ListTemplateByTupleReqResp + 120, // 443: pbds.Data.BatchUpsertTemplates:output_type -> pbds.BatchUpsertTemplatesReqResp + 122, // 444: pbds.Data.BatchUpdateTemplatePermissions:output_type -> pbds.BatchUpdateTemplatePermissionsResp + 17, // 445: pbds.Data.CreateTemplateRevision:output_type -> pbds.CreateResp + 17, // 446: pbds.Data.UpdateTemplateRevision:output_type -> pbds.CreateResp + 126, // 447: pbds.Data.ListTemplateRevisions:output_type -> pbds.ListTemplateRevisionsResp + 128, // 448: pbds.Data.GetTemplateRevision:output_type -> pbds.GetTemplateRevisionResp + 376, // 449: pbds.Data.DeleteTemplateRevision:output_type -> pbbase.EmptyResp + 131, // 450: pbds.Data.ListTemplateRevisionsByIDs:output_type -> pbds.ListTemplateRevisionsByIDsResp + 133, // 451: pbds.Data.ListTmplRevisionNamesByTmplIDs:output_type -> pbds.ListTmplRevisionNamesByTmplIDsResp + 17, // 452: pbds.Data.CreateTemplateSet:output_type -> pbds.CreateResp + 136, // 453: pbds.Data.ListTemplateSets:output_type -> pbds.ListTemplateSetsResp + 376, // 454: pbds.Data.UpdateTemplateSet:output_type -> pbbase.EmptyResp + 376, // 455: pbds.Data.DeleteTemplateSet:output_type -> pbbase.EmptyResp + 140, // 456: pbds.Data.ListAppTemplateSets:output_type -> pbds.ListAppTemplateSetsResp + 142, // 457: pbds.Data.ListTemplateSetsByIDs:output_type -> pbds.ListTemplateSetsByIDsResp + 144, // 458: pbds.Data.ListTemplateSetBriefInfoByIDs:output_type -> pbds.ListTemplateSetBriefInfoByIDsResp + 146, // 459: pbds.Data.ListTmplSetsOfBiz:output_type -> pbds.ListTmplSetsOfBizResp + 17, // 460: pbds.Data.CreateAppTemplateBinding:output_type -> pbds.CreateResp + 149, // 461: pbds.Data.ListAppTemplateBindings:output_type -> pbds.ListAppTemplateBindingsResp + 376, // 462: pbds.Data.UpdateAppTemplateBinding:output_type -> pbbase.EmptyResp + 376, // 463: pbds.Data.DeleteAppTemplateBinding:output_type -> pbbase.EmptyResp + 153, // 464: pbds.Data.ListAppBoundTmplRevisions:output_type -> pbds.ListAppBoundTmplRevisionsResp + 155, // 465: pbds.Data.ListReleasedAppBoundTmplRevisions:output_type -> pbds.ListReleasedAppBoundTmplRevisionsResp + 157, // 466: pbds.Data.GetReleasedAppBoundTmplRevision:output_type -> pbds.GetReleasedAppBoundTmplRevisionResp + 159, // 467: pbds.Data.CheckAppTemplateBinding:output_type -> pbds.CheckAppTemplateBindingResp + 376, // 468: pbds.Data.ImportFromTemplateSetToApp:output_type -> pbbase.EmptyResp + 162, // 469: pbds.Data.ExtractAppTmplVariables:output_type -> pbds.ExtractAppTmplVariablesResp + 164, // 470: pbds.Data.GetAppTmplVariableRefs:output_type -> pbds.GetAppTmplVariableRefsResp + 166, // 471: pbds.Data.GetReleasedAppTmplVariableRefs:output_type -> pbds.GetReleasedAppTmplVariableRefsResp + 376, // 472: pbds.Data.UpdateAppTmplVariables:output_type -> pbbase.EmptyResp + 169, // 473: pbds.Data.ListAppTmplVariables:output_type -> pbds.ListAppTmplVariablesResp + 171, // 474: pbds.Data.ListReleasedAppTmplVariables:output_type -> pbds.ListReleasedAppTmplVariablesResp + 173, // 475: pbds.Data.ListTmplBoundCounts:output_type -> pbds.ListTmplBoundCountsResp + 175, // 476: pbds.Data.ListTmplRevisionBoundCounts:output_type -> pbds.ListTmplRevisionBoundCountsResp + 177, // 477: pbds.Data.ListTmplSetBoundCounts:output_type -> pbds.ListTmplSetBoundCountsResp + 179, // 478: pbds.Data.ListTmplBoundUnnamedApps:output_type -> pbds.ListTmplBoundUnnamedAppsResp + 181, // 479: pbds.Data.ListTmplBoundNamedApps:output_type -> pbds.ListTmplBoundNamedAppsResp + 183, // 480: pbds.Data.ListTmplBoundTmplSets:output_type -> pbds.ListTmplBoundTmplSetsResp + 185, // 481: pbds.Data.ListMultiTmplBoundTmplSets:output_type -> pbds.ListMultiTmplBoundTmplSetsResp + 187, // 482: pbds.Data.ListTmplRevisionBoundUnnamedApps:output_type -> pbds.ListTmplRevisionBoundUnnamedAppsResp + 189, // 483: pbds.Data.ListTmplRevisionBoundNamedApps:output_type -> pbds.ListTmplRevisionBoundNamedAppsResp + 191, // 484: pbds.Data.ListTmplSetBoundUnnamedApps:output_type -> pbds.ListTmplSetBoundUnnamedAppsResp + 193, // 485: pbds.Data.ListMultiTmplSetBoundUnnamedApps:output_type -> pbds.ListMultiTmplSetBoundUnnamedAppsResp + 195, // 486: pbds.Data.ListTmplSetBoundNamedApps:output_type -> pbds.ListTmplSetBoundNamedAppsResp + 197, // 487: pbds.Data.ListLatestTmplBoundUnnamedApps:output_type -> pbds.ListLatestTmplBoundUnnamedAppsResp + 376, // 488: pbds.Data.RemoveAppBoundTmplSet:output_type -> pbbase.EmptyResp + 200, // 489: pbds.Data.CheckTemplateSetReferencesApps:output_type -> pbds.CheckTemplateSetReferencesAppsResp + 17, // 490: pbds.Data.CreateTemplateVariable:output_type -> pbds.CreateResp + 205, // 491: pbds.Data.ListTemplateVariables:output_type -> pbds.ListTemplateVariablesResp + 376, // 492: pbds.Data.UpdateTemplateVariable:output_type -> pbbase.EmptyResp + 376, // 493: pbds.Data.DeleteTemplateVariable:output_type -> pbbase.EmptyResp + 209, // 494: pbds.Data.TemplateVariableFetchIDsExcluding:output_type -> pbds.TemplateVariableFetchIDsExcludingResp + 203, // 495: pbds.Data.ImportTemplateVariables:output_type -> pbds.ImportTemplateVariablesResp + 17, // 496: pbds.Data.CreateGroup:output_type -> pbds.CreateResp + 212, // 497: pbds.Data.ListAllGroups:output_type -> pbds.ListAllGroupsResp + 214, // 498: pbds.Data.ListAppGroups:output_type -> pbds.ListAppGroupsResp + 361, // 499: pbds.Data.GetGroupByName:output_type -> pbgroup.Group + 376, // 500: pbds.Data.UpdateGroup:output_type -> pbbase.EmptyResp + 376, // 501: pbds.Data.DeleteGroup:output_type -> pbbase.EmptyResp + 219, // 502: pbds.Data.CountGroupsReleasedApps:output_type -> pbds.CountGroupsReleasedAppsResp + 221, // 503: pbds.Data.ListGroupReleasedApps:output_type -> pbds.ListGroupReleasedAppsResp + 224, // 504: pbds.Data.Publish:output_type -> pbds.PublishResp + 224, // 505: pbds.Data.GenerateReleaseAndPublish:output_type -> pbds.PublishResp + 17, // 506: pbds.Data.CreateCredential:output_type -> pbds.CreateResp + 11, // 507: pbds.Data.ListCredentials:output_type -> pbds.ListCredentialResp + 376, // 508: pbds.Data.DeleteCredential:output_type -> pbbase.EmptyResp + 376, // 509: pbds.Data.UpdateCredential:output_type -> pbbase.EmptyResp + 14, // 510: pbds.Data.CheckCredentialName:output_type -> pbds.CheckCredentialNameResp + 7, // 511: pbds.Data.ListCredentialScopes:output_type -> pbds.ListCredentialScopesResp + 1, // 512: pbds.Data.UpdateCredentialScopes:output_type -> pbds.UpdateCredentialScopesResp + 3, // 513: pbds.Data.CredentialScopePreview:output_type -> pbds.CredentialScopePreviewResp + 17, // 514: pbds.Data.CreateKv:output_type -> pbds.CreateResp + 376, // 515: pbds.Data.UpdateKv:output_type -> pbbase.EmptyResp + 235, // 516: pbds.Data.ListKvs:output_type -> pbds.ListKvsResp + 376, // 517: pbds.Data.DeleteKv:output_type -> pbbase.EmptyResp + 238, // 518: pbds.Data.BatchUpsertKvs:output_type -> pbds.BatchUpsertKvsResp + 376, // 519: pbds.Data.UnDeleteKv:output_type -> pbbase.EmptyResp + 376, // 520: pbds.Data.UndoKv:output_type -> pbbase.EmptyResp + 242, // 521: pbds.Data.KvFetchIDsExcluding:output_type -> pbds.KvFetchIDsExcludingResp + 247, // 522: pbds.Data.ListClients:output_type -> pbds.ListClientsResp + 376, // 523: pbds.Data.RetryClients:output_type -> pbbase.EmptyResp + 249, // 524: pbds.Data.ListClientEvents:output_type -> pbds.ListClientEventsResp + 251, // 525: pbds.Data.ListClientQuerys:output_type -> pbds.ListClientQuerysResp + 253, // 526: pbds.Data.CreateClientQuery:output_type -> pbds.CreateClientQueryResp + 376, // 527: pbds.Data.UpdateClientQuery:output_type -> pbbase.EmptyResp + 376, // 528: pbds.Data.DeleteClientQuery:output_type -> pbbase.EmptyResp + 257, // 529: pbds.Data.CheckClientQueryName:output_type -> pbds.CheckClientQueryNameResp + 362, // 530: pbds.Data.ClientConfigVersionStatistics:output_type -> google.protobuf.Struct + 362, // 531: pbds.Data.ClientPullTrendStatistics:output_type -> google.protobuf.Struct + 362, // 532: pbds.Data.ClientPullStatistics:output_type -> google.protobuf.Struct + 362, // 533: pbds.Data.ClientLabelStatistics:output_type -> google.protobuf.Struct + 362, // 534: pbds.Data.ClientAnnotationStatistics:output_type -> google.protobuf.Struct + 362, // 535: pbds.Data.ClientVersionStatistics:output_type -> google.protobuf.Struct + 362, // 536: pbds.Data.ListClientLabelAndAnnotation:output_type -> google.protobuf.Struct + 362, // 537: pbds.Data.ClientSpecificFailedReason:output_type -> google.protobuf.Struct + 226, // 538: pbds.Data.ListInstances:output_type -> pbds.ListInstancesResp + 229, // 539: pbds.Data.FetchInstanceInfo:output_type -> pbds.FetchInstanceInfoResp + 231, // 540: pbds.Data.Ping:output_type -> pbds.PingMsg + 244, // 541: pbds.Data.BatchUpsertClientMetrics:output_type -> pbds.BatchUpsertClientMetricsResp + 260, // 542: pbds.Data.CompareConfigItemConflicts:output_type -> pbds.CompareConfigItemConflictsResp + 262, // 543: pbds.Data.GetTemplateAndNonTemplateCICount:output_type -> pbds.GetTemplateAndNonTemplateCICountResp + 371, // [371:544] is the sub-list for method output_type + 198, // [198:371] is the sub-list for method input_type + 198, // [198:198] is the sub-list for extension type_name + 198, // [198:198] is the sub-list for extension extendee + 0, // [0:198] is the sub-list for field type_name } func init() { file_data_service_proto_init() } @@ -24053,7 +24546,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateByTupleReq); i { + switch v := v.(*ListTemplateSetsAndRevisionsReq); i { case 0: return &v.state case 1: @@ -24065,7 +24558,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateByTupleReqResp); i { + switch v := v.(*ListTemplateSetsAndRevisionsResp); i { case 0: return &v.state case 1: @@ -24077,7 +24570,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchUpsertTemplatesReq); i { + switch v := v.(*ListTemplateByTupleReq); i { case 0: return &v.state case 1: @@ -24089,7 +24582,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchUpsertTemplatesReqResp); i { + switch v := v.(*ListTemplateByTupleReqResp); i { case 0: return &v.state case 1: @@ -24101,7 +24594,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchUpdateTemplatePermissionsReq); i { + switch v := v.(*BatchUpsertTemplatesReq); i { case 0: return &v.state case 1: @@ -24113,7 +24606,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchUpdateTemplatePermissionsResp); i { + switch v := v.(*BatchUpsertTemplatesReqResp); i { case 0: return &v.state case 1: @@ -24125,7 +24618,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTemplateRevisionReq); i { + switch v := v.(*BatchUpdateTemplatePermissionsReq); i { case 0: return &v.state case 1: @@ -24137,7 +24630,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTemplateRevisionReq); i { + switch v := v.(*BatchUpdateTemplatePermissionsResp); i { case 0: return &v.state case 1: @@ -24149,7 +24642,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateRevisionsReq); i { + switch v := v.(*CreateTemplateRevisionReq); i { case 0: return &v.state case 1: @@ -24161,7 +24654,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateRevisionsResp); i { + switch v := v.(*UpdateTemplateRevisionReq); i { case 0: return &v.state case 1: @@ -24173,7 +24666,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTemplateRevisionReq); i { + switch v := v.(*ListTemplateRevisionsReq); i { case 0: return &v.state case 1: @@ -24185,7 +24678,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTemplateRevisionResp); i { + switch v := v.(*ListTemplateRevisionsResp); i { case 0: return &v.state case 1: @@ -24197,7 +24690,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateRevisionReq); i { + switch v := v.(*GetTemplateRevisionReq); i { case 0: return &v.state case 1: @@ -24209,7 +24702,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateRevisionsByIDsReq); i { + switch v := v.(*GetTemplateRevisionResp); i { case 0: return &v.state case 1: @@ -24221,7 +24714,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateRevisionsByIDsResp); i { + switch v := v.(*DeleteTemplateRevisionReq); i { case 0: return &v.state case 1: @@ -24233,7 +24726,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionNamesByTmplIDsReq); i { + switch v := v.(*ListTemplateRevisionsByIDsReq); i { case 0: return &v.state case 1: @@ -24245,7 +24738,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplRevisionNamesByTmplIDsResp); i { + switch v := v.(*ListTemplateRevisionsByIDsResp); i { case 0: return &v.state case 1: @@ -24257,7 +24750,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTemplateSetReq); i { + switch v := v.(*ListTmplRevisionNamesByTmplIDsReq); i { case 0: return &v.state case 1: @@ -24269,7 +24762,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetsReq); i { + switch v := v.(*ListTmplRevisionNamesByTmplIDsResp); i { case 0: return &v.state case 1: @@ -24281,7 +24774,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetsResp); i { + switch v := v.(*CreateTemplateSetReq); i { case 0: return &v.state case 1: @@ -24293,7 +24786,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTemplateSetReq); i { + switch v := v.(*ListTemplateSetsReq); i { case 0: return &v.state case 1: @@ -24305,7 +24798,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateSetReq); i { + switch v := v.(*ListTemplateSetsResp); i { case 0: return &v.state case 1: @@ -24317,7 +24810,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTemplateSetsReq); i { + switch v := v.(*UpdateTemplateSetReq); i { case 0: return &v.state case 1: @@ -24329,7 +24822,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTemplateSetsResp); i { + switch v := v.(*DeleteTemplateSetReq); i { case 0: return &v.state case 1: @@ -24341,7 +24834,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetsByIDsReq); i { + switch v := v.(*ListAppTemplateSetsReq); i { case 0: return &v.state case 1: @@ -24353,7 +24846,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetsByIDsResp); i { + switch v := v.(*ListAppTemplateSetsResp); i { case 0: return &v.state case 1: @@ -24365,7 +24858,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetBriefInfoByIDsReq); i { + switch v := v.(*ListTemplateSetsByIDsReq); i { case 0: return &v.state case 1: @@ -24377,7 +24870,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateSetBriefInfoByIDsResp); i { + switch v := v.(*ListTemplateSetsByIDsResp); i { case 0: return &v.state case 1: @@ -24389,7 +24882,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplSetsOfBizReq); i { + switch v := v.(*ListTemplateSetBriefInfoByIDsReq); i { case 0: return &v.state case 1: @@ -24401,7 +24894,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplSetsOfBizResp); i { + switch v := v.(*ListTemplateSetBriefInfoByIDsResp); i { case 0: return &v.state case 1: @@ -24413,7 +24906,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateAppTemplateBindingReq); i { + switch v := v.(*ListTmplSetsOfBizReq); i { case 0: return &v.state case 1: @@ -24425,7 +24918,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTemplateBindingsReq); i { + switch v := v.(*ListTmplSetsOfBizResp); i { case 0: return &v.state case 1: @@ -24437,7 +24930,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTemplateBindingsResp); i { + switch v := v.(*CreateAppTemplateBindingReq); i { case 0: return &v.state case 1: @@ -24449,7 +24942,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAppTemplateBindingReq); i { + switch v := v.(*ListAppTemplateBindingsReq); i { case 0: return &v.state case 1: @@ -24461,7 +24954,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAppTemplateBindingReq); i { + switch v := v.(*ListAppTemplateBindingsResp); i { case 0: return &v.state case 1: @@ -24473,7 +24966,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppBoundTmplRevisionsReq); i { + switch v := v.(*UpdateAppTemplateBindingReq); i { case 0: return &v.state case 1: @@ -24485,7 +24978,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppBoundTmplRevisionsResp); i { + switch v := v.(*DeleteAppTemplateBindingReq); i { case 0: return &v.state case 1: @@ -24497,7 +24990,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReleasedAppBoundTmplRevisionsReq); i { + switch v := v.(*ListAppBoundTmplRevisionsReq); i { case 0: return &v.state case 1: @@ -24509,7 +25002,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReleasedAppBoundTmplRevisionsResp); i { + switch v := v.(*ListAppBoundTmplRevisionsResp); i { case 0: return &v.state case 1: @@ -24521,7 +25014,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReleasedAppBoundTmplRevisionReq); i { + switch v := v.(*ListReleasedAppBoundTmplRevisionsReq); i { case 0: return &v.state case 1: @@ -24533,7 +25026,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReleasedAppBoundTmplRevisionResp); i { + switch v := v.(*ListReleasedAppBoundTmplRevisionsResp); i { case 0: return &v.state case 1: @@ -24545,7 +25038,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckAppTemplateBindingReq); i { + switch v := v.(*GetReleasedAppBoundTmplRevisionReq); i { case 0: return &v.state case 1: @@ -24557,7 +25050,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckAppTemplateBindingResp); i { + switch v := v.(*GetReleasedAppBoundTmplRevisionResp); i { case 0: return &v.state case 1: @@ -24569,7 +25062,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtractAppTmplVariablesReq); i { + switch v := v.(*CheckAppTemplateBindingReq); i { case 0: return &v.state case 1: @@ -24581,7 +25074,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtractAppTmplVariablesResp); i { + switch v := v.(*CheckAppTemplateBindingResp); i { case 0: return &v.state case 1: @@ -24593,7 +25086,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAppTmplVariableRefsReq); i { + switch v := v.(*ImportFromTemplateSetToAppReq); i { case 0: return &v.state case 1: @@ -24605,7 +25098,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAppTmplVariableRefsResp); i { + switch v := v.(*ExtractAppTmplVariablesReq); i { case 0: return &v.state case 1: @@ -24617,7 +25110,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReleasedAppTmplVariableRefsReq); i { + switch v := v.(*ExtractAppTmplVariablesResp); i { case 0: return &v.state case 1: @@ -24629,7 +25122,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetReleasedAppTmplVariableRefsResp); i { + switch v := v.(*GetAppTmplVariableRefsReq); i { case 0: return &v.state case 1: @@ -24641,7 +25134,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateAppTmplVariablesReq); i { + switch v := v.(*GetAppTmplVariableRefsResp); i { case 0: return &v.state case 1: @@ -24653,7 +25146,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTmplVariablesReq); i { + switch v := v.(*GetReleasedAppTmplVariableRefsReq); i { case 0: return &v.state case 1: @@ -24665,7 +25158,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAppTmplVariablesResp); i { + switch v := v.(*GetReleasedAppTmplVariableRefsResp); i { case 0: return &v.state case 1: @@ -24677,7 +25170,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReleasedAppTmplVariablesReq); i { + switch v := v.(*UpdateAppTmplVariablesReq); i { case 0: return &v.state case 1: @@ -24689,7 +25182,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListReleasedAppTmplVariablesResp); i { + switch v := v.(*ListAppTmplVariablesReq); i { case 0: return &v.state case 1: @@ -24701,7 +25194,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundCountsReq); i { + switch v := v.(*ListAppTmplVariablesResp); i { case 0: return &v.state case 1: @@ -24713,7 +25206,7 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTmplBoundCountsResp); i { + switch v := v.(*ListReleasedAppTmplVariablesReq); i { case 0: return &v.state case 1: @@ -24725,6 +25218,42 @@ func file_data_service_proto_init() { } } file_data_service_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListReleasedAppTmplVariablesResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_service_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTmplBoundCountsReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_service_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTmplBoundCountsResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_service_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplRevisionBoundCountsReq); i { case 0: return &v.state @@ -24736,7 +25265,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplRevisionBoundCountsResp); i { case 0: return &v.state @@ -24748,7 +25277,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplSetBoundCountsReq); i { case 0: return &v.state @@ -24760,7 +25289,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplSetBoundCountsResp); i { case 0: return &v.state @@ -24772,7 +25301,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplBoundUnnamedAppsReq); i { case 0: return &v.state @@ -24784,7 +25313,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplBoundUnnamedAppsResp); i { case 0: return &v.state @@ -24796,7 +25325,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplBoundNamedAppsReq); i { case 0: return &v.state @@ -24808,7 +25337,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplBoundNamedAppsResp); i { case 0: return &v.state @@ -24820,7 +25349,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplBoundTmplSetsReq); i { case 0: return &v.state @@ -24832,7 +25361,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplBoundTmplSetsResp); i { case 0: return &v.state @@ -24844,7 +25373,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMultiTmplBoundTmplSetsReq); i { case 0: return &v.state @@ -24856,7 +25385,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMultiTmplBoundTmplSetsResp); i { case 0: return &v.state @@ -24868,7 +25397,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplRevisionBoundUnnamedAppsReq); i { case 0: return &v.state @@ -24880,7 +25409,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplRevisionBoundUnnamedAppsResp); i { case 0: return &v.state @@ -24892,7 +25421,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplRevisionBoundNamedAppsReq); i { case 0: return &v.state @@ -24904,7 +25433,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplRevisionBoundNamedAppsResp); i { case 0: return &v.state @@ -24916,7 +25445,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplSetBoundUnnamedAppsReq); i { case 0: return &v.state @@ -24928,7 +25457,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplSetBoundUnnamedAppsResp); i { case 0: return &v.state @@ -24940,7 +25469,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMultiTmplSetBoundUnnamedAppsReq); i { case 0: return &v.state @@ -24952,7 +25481,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMultiTmplSetBoundUnnamedAppsResp); i { case 0: return &v.state @@ -24964,7 +25493,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplSetBoundNamedAppsReq); i { case 0: return &v.state @@ -24976,7 +25505,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTmplSetBoundNamedAppsResp); i { case 0: return &v.state @@ -24988,7 +25517,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLatestTmplBoundUnnamedAppsReq); i { case 0: return &v.state @@ -25000,7 +25529,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLatestTmplBoundUnnamedAppsResp); i { case 0: return &v.state @@ -25012,7 +25541,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveAppBoundTmplSetReq); i { case 0: return &v.state @@ -25024,7 +25553,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckTemplateSetReferencesAppsReq); i { case 0: return &v.state @@ -25036,7 +25565,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckTemplateSetReferencesAppsResp); i { case 0: return &v.state @@ -25048,7 +25577,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTemplateVariableReq); i { case 0: return &v.state @@ -25060,7 +25589,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImportTemplateVariablesReq); i { case 0: return &v.state @@ -25072,7 +25601,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ImportTemplateVariablesResp); i { case 0: return &v.state @@ -25084,7 +25613,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTemplateVariablesReq); i { case 0: return &v.state @@ -25096,7 +25625,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTemplateVariablesResp); i { case 0: return &v.state @@ -25108,7 +25637,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateTemplateVariableReq); i { case 0: return &v.state @@ -25120,7 +25649,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteTemplateVariableReq); i { case 0: return &v.state @@ -25132,7 +25661,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TemplateVariableFetchIDsExcludingReq); i { case 0: return &v.state @@ -25144,7 +25673,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TemplateVariableFetchIDsExcludingResp); i { case 0: return &v.state @@ -25156,7 +25685,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateGroupReq); i { case 0: return &v.state @@ -25168,7 +25697,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllGroupsReq); i { case 0: return &v.state @@ -25180,7 +25709,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllGroupsResp); i { case 0: return &v.state @@ -25192,7 +25721,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAppGroupsReq); i { case 0: return &v.state @@ -25204,7 +25733,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAppGroupsResp); i { case 0: return &v.state @@ -25216,7 +25745,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetGroupByNameReq); i { case 0: return &v.state @@ -25228,7 +25757,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateGroupReq); i { case 0: return &v.state @@ -25240,7 +25769,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteGroupReq); i { case 0: return &v.state @@ -25252,7 +25781,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CountGroupsReleasedAppsReq); i { case 0: return &v.state @@ -25264,7 +25793,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CountGroupsReleasedAppsResp); i { case 0: return &v.state @@ -25276,7 +25805,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGroupReleasedAppsReq); i { case 0: return &v.state @@ -25288,7 +25817,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGroupReleasedAppsResp); i { case 0: return &v.state @@ -25300,7 +25829,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PublishReq); i { case 0: return &v.state @@ -25312,7 +25841,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateReleaseAndPublishReq); i { case 0: return &v.state @@ -25324,7 +25853,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PublishResp); i { case 0: return &v.state @@ -25336,7 +25865,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListInstancesReq); i { case 0: return &v.state @@ -25348,7 +25877,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListInstancesResp); i { case 0: return &v.state @@ -25360,7 +25889,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstanceResource); i { case 0: return &v.state @@ -25372,7 +25901,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FetchInstanceInfoReq); i { case 0: return &v.state @@ -25384,7 +25913,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FetchInstanceInfoResp); i { case 0: return &v.state @@ -25396,7 +25925,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InstanceInfo); i { case 0: return &v.state @@ -25408,7 +25937,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PingMsg); i { case 0: return &v.state @@ -25420,7 +25949,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateKvReq); i { case 0: return &v.state @@ -25432,7 +25961,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateKvReq); i { case 0: return &v.state @@ -25444,7 +25973,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKvsReq); i { case 0: return &v.state @@ -25456,7 +25985,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKvsResp); i { case 0: return &v.state @@ -25468,7 +25997,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteKvReq); i { case 0: return &v.state @@ -25480,7 +26009,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertKvsReq); i { case 0: return &v.state @@ -25492,7 +26021,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertKvsResp); i { case 0: return &v.state @@ -25504,7 +26033,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnDeleteKvReq); i { case 0: return &v.state @@ -25516,7 +26045,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UndoKvReq); i { case 0: return &v.state @@ -25528,7 +26057,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KvFetchIDsExcludingReq); i { case 0: return &v.state @@ -25540,7 +26069,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KvFetchIDsExcludingResp); i { case 0: return &v.state @@ -25552,7 +26081,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertClientMetricsReq); i { case 0: return &v.state @@ -25564,7 +26093,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertClientMetricsResp); i { case 0: return &v.state @@ -25576,7 +26105,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientsReq); i { case 0: return &v.state @@ -25588,7 +26117,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RetryClientsReq); i { case 0: return &v.state @@ -25600,7 +26129,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientsResp); i { case 0: return &v.state @@ -25612,7 +26141,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientEventsReq); i { case 0: return &v.state @@ -25624,7 +26153,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientEventsResp); i { case 0: return &v.state @@ -25636,7 +26165,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientQuerysReq); i { case 0: return &v.state @@ -25648,7 +26177,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientQuerysResp); i { case 0: return &v.state @@ -25660,7 +26189,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateClientQueryReq); i { case 0: return &v.state @@ -25672,7 +26201,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateClientQueryResp); i { case 0: return &v.state @@ -25684,7 +26213,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateClientQueryReq); i { case 0: return &v.state @@ -25696,7 +26225,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteClientQueryReq); i { case 0: return &v.state @@ -25708,7 +26237,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckClientQueryNameReq); i { case 0: return &v.state @@ -25720,7 +26249,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckClientQueryNameResp); i { case 0: return &v.state @@ -25732,7 +26261,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientLabelAndAnnotationReq); i { case 0: return &v.state @@ -25744,7 +26273,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsReq); i { case 0: return &v.state @@ -25756,7 +26285,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsResp); i { case 0: return &v.state @@ -25768,7 +26297,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTemplateAndNonTemplateCICountReq); i { case 0: return &v.state @@ -25780,7 +26309,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTemplateAndNonTemplateCICountResp); i { case 0: return &v.state @@ -25792,7 +26321,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CredentialScopePreviewResp_Detail); i { case 0: return &v.state @@ -25804,7 +26333,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertConfigItemsReq_ConfigItem); i { case 0: return &v.state @@ -25816,7 +26345,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertConfigItemsReq_TemplateBinding); i { case 0: return &v.state @@ -25828,7 +26357,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConfigItemByTupleReq_Item); i { case 0: return &v.state @@ -25840,7 +26369,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetHookInfoSpec_Releases); i { case 0: return &v.state @@ -25852,7 +26381,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListHooksResp_Detail); i { case 0: return &v.state @@ -25864,7 +26393,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListHookReferencesResp_Detail); i { case 0: return &v.state @@ -25876,7 +26405,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListHookRevisionsResp_ListHookRevisionsData); i { case 0: return &v.state @@ -25888,7 +26417,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListHookRevisionReferencesResp_Detail); i { case 0: return &v.state @@ -25900,7 +26429,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetReleaseHookResp_Hook); i { case 0: return &v.state @@ -25912,7 +26441,19 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTemplateSetsAndRevisionsResp_Detail); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_service_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTemplateByTupleReq_Item); i { case 0: return &v.state @@ -25924,7 +26465,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTemplateByTupleReqResp_Item); i { case 0: return &v.state @@ -25936,7 +26477,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertTemplatesReq_Item); i { case 0: return &v.state @@ -25948,7 +26489,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTemplateRevisionResp_TemplateRevision); i { case 0: return &v.state @@ -25960,7 +26501,31 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImportFromTemplateSetToAppReq_Binding); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_service_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ImportFromTemplateSetToAppReq_Binding_TemplateRevisionBinding); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_service_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckTemplateSetReferencesAppsReq_Item); i { case 0: return &v.state @@ -25972,7 +26537,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckTemplateSetReferencesAppsResp_Item); i { case 0: return &v.state @@ -25984,7 +26549,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAppGroupsResp_ListAppGroupsData); i { case 0: return &v.state @@ -25996,7 +26561,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CountGroupsReleasedAppsResp_CountGroupsReleasedAppsData); i { case 0: return &v.state @@ -26008,7 +26573,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGroupReleasedAppsResp_ListGroupReleasedAppsData); i { case 0: return &v.state @@ -26020,7 +26585,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpsertKvsReq_Kv); i { case 0: return &v.state @@ -26032,7 +26597,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientsReq_Order); i { case 0: return &v.state @@ -26044,7 +26609,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientsResp_Item); i { case 0: return &v.state @@ -26056,7 +26621,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListClientEventsReq_Order); i { case 0: return &v.state @@ -26068,7 +26633,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsResp_NonTemplateConfig); i { case 0: return &v.state @@ -26080,7 +26645,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsResp_TemplateConfig); i { case 0: return &v.state @@ -26092,7 +26657,7 @@ func file_data_service_proto_init() { return nil } } - file_data_service_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { + file_data_service_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompareConfigItemConflictsResp_TemplateConfig_TemplateRevisionDetail); i { case 0: return &v.state @@ -26112,7 +26677,7 @@ func file_data_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_data_service_proto_rawDesc, NumEnums: 0, - NumMessages: 286, + NumMessages: 292, NumExtensions: 0, NumServices: 1, }, diff --git a/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service.proto b/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service.proto index 21459e1fd2..92feba5eb1 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service.proto +++ b/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service.proto @@ -127,6 +127,7 @@ service Data { rpc ListTemplatesByIDs(ListTemplatesByIDsReq) returns (ListTemplatesByIDsResp) {} rpc ListTemplatesNotBound(ListTemplatesNotBoundReq) returns (ListTemplatesNotBoundResp) {} rpc ListTmplsOfTmplSet(ListTmplsOfTmplSetReq) returns (ListTmplsOfTmplSetResp) {} + rpc ListTemplateSetsAndRevisions(ListTemplateSetsAndRevisionsReq) returns (ListTemplateSetsAndRevisionsResp) {} rpc ListTemplateByTuple(ListTemplateByTupleReq) returns (ListTemplateByTupleReqResp) {} rpc BatchUpsertTemplates(BatchUpsertTemplatesReq) returns (BatchUpsertTemplatesReqResp) {} rpc BatchUpdateTemplatePermissions(BatchUpdateTemplatePermissionsReq) returns (BatchUpdateTemplatePermissionsResp) {} @@ -161,6 +162,7 @@ service Data { rpc GetReleasedAppBoundTmplRevision(GetReleasedAppBoundTmplRevisionReq) returns (GetReleasedAppBoundTmplRevisionResp) {} rpc CheckAppTemplateBinding(CheckAppTemplateBindingReq) returns (CheckAppTemplateBindingResp) {} + rpc ImportFromTemplateSetToApp(ImportFromTemplateSetToAppReq) returns (pbbase.EmptyResp) {} // app template variables related interface. rpc ExtractAppTmplVariables(ExtractAppTmplVariablesReq) returns (ExtractAppTmplVariablesResp) {} @@ -508,7 +510,7 @@ message ListConfigItemsReq { string search_value = 4; uint32 start = 5; uint32 limit = 6; - string ids = 7; + repeated uint32 ids = 7; bool all = 8; bool with_status = 9; // ADD、REVISE、DELETE、UNCHANGE @@ -949,7 +951,7 @@ message ListTemplatesReq { string search_value = 4; uint32 start = 5; uint32 limit = 6; - string ids = 7; + repeated uint32 ids = 7; bool all = 8; } @@ -1027,7 +1029,7 @@ message ListTmplsOfTmplSetReq { string search_value = 5; uint32 start = 6; uint32 limit = 7; - string ids = 8; + repeated uint32 ids = 8; bool all = 9; } @@ -1036,6 +1038,19 @@ message ListTmplsOfTmplSetResp { repeated pbtemplate.Template details = 2; } +message ListTemplateSetsAndRevisionsReq { + uint32 biz_id = 1; + uint32 template_set_id = 2; +} + +message ListTemplateSetsAndRevisionsResp { + message Detail { + pbtemplate.Template template = 1; + repeated pbtr.TemplateRevision template_revision = 2; + } + repeated Detail details = 1; +} + message ListTemplateByTupleReq { message Item { uint32 biz_id = 1; @@ -1311,6 +1326,26 @@ message CheckAppTemplateBindingResp { repeated pbatb.Conflict details = 1; } +message ImportFromTemplateSetToAppReq { + message Binding { + message TemplateRevisionBinding { + uint32 template_id = 1; + uint32 template_revision_id = 2; + bool is_latest = 3; + string template_name = 4; + string template_revision_name = 5; + } + uint32 template_set_id = 1; + uint32 template_space_id = 2; + string template_space_name = 3; + string template_set_name = 4; + repeated TemplateRevisionBinding template_revisions = 5; + } + uint32 biz_id = 1; + uint32 app_id = 2; + repeated Binding bindings = 3; +} + message ExtractAppTmplVariablesReq { uint32 biz_id = 1; uint32 app_id = 2; @@ -1569,6 +1604,8 @@ message CheckTemplateSetReferencesAppsResp { string app_name = 4; bool app_exceeds_limit = 5; bool template_set_exceeds_limit = 6; + uint32 app_exceeds_quantity = 7; + uint32 template_set_exceeds_quantity = 8; } repeated Item items = 1; } diff --git a/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service_grpc.pb.go b/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service_grpc.pb.go index 58dbf31fb0..8e62dc78fb 100644 --- a/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service_grpc.pb.go +++ b/bcs-services/bcs-bscp/pkg/protocol/data-service/data_service_grpc.pb.go @@ -101,6 +101,7 @@ const ( Data_ListTemplatesByIDs_FullMethodName = "/pbds.Data/ListTemplatesByIDs" Data_ListTemplatesNotBound_FullMethodName = "/pbds.Data/ListTemplatesNotBound" Data_ListTmplsOfTmplSet_FullMethodName = "/pbds.Data/ListTmplsOfTmplSet" + Data_ListTemplateSetsAndRevisions_FullMethodName = "/pbds.Data/ListTemplateSetsAndRevisions" Data_ListTemplateByTuple_FullMethodName = "/pbds.Data/ListTemplateByTuple" Data_BatchUpsertTemplates_FullMethodName = "/pbds.Data/BatchUpsertTemplates" Data_BatchUpdateTemplatePermissions_FullMethodName = "/pbds.Data/BatchUpdateTemplatePermissions" @@ -127,6 +128,7 @@ const ( Data_ListReleasedAppBoundTmplRevisions_FullMethodName = "/pbds.Data/ListReleasedAppBoundTmplRevisions" Data_GetReleasedAppBoundTmplRevision_FullMethodName = "/pbds.Data/GetReleasedAppBoundTmplRevision" Data_CheckAppTemplateBinding_FullMethodName = "/pbds.Data/CheckAppTemplateBinding" + Data_ImportFromTemplateSetToApp_FullMethodName = "/pbds.Data/ImportFromTemplateSetToApp" Data_ExtractAppTmplVariables_FullMethodName = "/pbds.Data/ExtractAppTmplVariables" Data_GetAppTmplVariableRefs_FullMethodName = "/pbds.Data/GetAppTmplVariableRefs" Data_GetReleasedAppTmplVariableRefs_FullMethodName = "/pbds.Data/GetReleasedAppTmplVariableRefs" @@ -290,6 +292,7 @@ type DataClient interface { ListTemplatesByIDs(ctx context.Context, in *ListTemplatesByIDsReq, opts ...grpc.CallOption) (*ListTemplatesByIDsResp, error) ListTemplatesNotBound(ctx context.Context, in *ListTemplatesNotBoundReq, opts ...grpc.CallOption) (*ListTemplatesNotBoundResp, error) ListTmplsOfTmplSet(ctx context.Context, in *ListTmplsOfTmplSetReq, opts ...grpc.CallOption) (*ListTmplsOfTmplSetResp, error) + ListTemplateSetsAndRevisions(ctx context.Context, in *ListTemplateSetsAndRevisionsReq, opts ...grpc.CallOption) (*ListTemplateSetsAndRevisionsResp, error) ListTemplateByTuple(ctx context.Context, in *ListTemplateByTupleReq, opts ...grpc.CallOption) (*ListTemplateByTupleReqResp, error) BatchUpsertTemplates(ctx context.Context, in *BatchUpsertTemplatesReq, opts ...grpc.CallOption) (*BatchUpsertTemplatesReqResp, error) BatchUpdateTemplatePermissions(ctx context.Context, in *BatchUpdateTemplatePermissionsReq, opts ...grpc.CallOption) (*BatchUpdateTemplatePermissionsResp, error) @@ -319,6 +322,7 @@ type DataClient interface { ListReleasedAppBoundTmplRevisions(ctx context.Context, in *ListReleasedAppBoundTmplRevisionsReq, opts ...grpc.CallOption) (*ListReleasedAppBoundTmplRevisionsResp, error) GetReleasedAppBoundTmplRevision(ctx context.Context, in *GetReleasedAppBoundTmplRevisionReq, opts ...grpc.CallOption) (*GetReleasedAppBoundTmplRevisionResp, error) CheckAppTemplateBinding(ctx context.Context, in *CheckAppTemplateBindingReq, opts ...grpc.CallOption) (*CheckAppTemplateBindingResp, error) + ImportFromTemplateSetToApp(ctx context.Context, in *ImportFromTemplateSetToAppReq, opts ...grpc.CallOption) (*base.EmptyResp, error) // app template variables related interface. ExtractAppTmplVariables(ctx context.Context, in *ExtractAppTmplVariablesReq, opts ...grpc.CallOption) (*ExtractAppTmplVariablesResp, error) GetAppTmplVariableRefs(ctx context.Context, in *GetAppTmplVariableRefsReq, opts ...grpc.CallOption) (*GetAppTmplVariableRefsResp, error) @@ -1052,6 +1056,15 @@ func (c *dataClient) ListTmplsOfTmplSet(ctx context.Context, in *ListTmplsOfTmpl return out, nil } +func (c *dataClient) ListTemplateSetsAndRevisions(ctx context.Context, in *ListTemplateSetsAndRevisionsReq, opts ...grpc.CallOption) (*ListTemplateSetsAndRevisionsResp, error) { + out := new(ListTemplateSetsAndRevisionsResp) + err := c.cc.Invoke(ctx, Data_ListTemplateSetsAndRevisions_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *dataClient) ListTemplateByTuple(ctx context.Context, in *ListTemplateByTupleReq, opts ...grpc.CallOption) (*ListTemplateByTupleReqResp, error) { out := new(ListTemplateByTupleReqResp) err := c.cc.Invoke(ctx, Data_ListTemplateByTuple_FullMethodName, in, out, opts...) @@ -1286,6 +1299,15 @@ func (c *dataClient) CheckAppTemplateBinding(ctx context.Context, in *CheckAppTe return out, nil } +func (c *dataClient) ImportFromTemplateSetToApp(ctx context.Context, in *ImportFromTemplateSetToAppReq, opts ...grpc.CallOption) (*base.EmptyResp, error) { + out := new(base.EmptyResp) + err := c.cc.Invoke(ctx, Data_ImportFromTemplateSetToApp_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *dataClient) ExtractAppTmplVariables(ctx context.Context, in *ExtractAppTmplVariablesReq, opts ...grpc.CallOption) (*ExtractAppTmplVariablesResp, error) { out := new(ExtractAppTmplVariablesResp) err := c.cc.Invoke(ctx, Data_ExtractAppTmplVariables_FullMethodName, in, out, opts...) @@ -2047,6 +2069,7 @@ type DataServer interface { ListTemplatesByIDs(context.Context, *ListTemplatesByIDsReq) (*ListTemplatesByIDsResp, error) ListTemplatesNotBound(context.Context, *ListTemplatesNotBoundReq) (*ListTemplatesNotBoundResp, error) ListTmplsOfTmplSet(context.Context, *ListTmplsOfTmplSetReq) (*ListTmplsOfTmplSetResp, error) + ListTemplateSetsAndRevisions(context.Context, *ListTemplateSetsAndRevisionsReq) (*ListTemplateSetsAndRevisionsResp, error) ListTemplateByTuple(context.Context, *ListTemplateByTupleReq) (*ListTemplateByTupleReqResp, error) BatchUpsertTemplates(context.Context, *BatchUpsertTemplatesReq) (*BatchUpsertTemplatesReqResp, error) BatchUpdateTemplatePermissions(context.Context, *BatchUpdateTemplatePermissionsReq) (*BatchUpdateTemplatePermissionsResp, error) @@ -2076,6 +2099,7 @@ type DataServer interface { ListReleasedAppBoundTmplRevisions(context.Context, *ListReleasedAppBoundTmplRevisionsReq) (*ListReleasedAppBoundTmplRevisionsResp, error) GetReleasedAppBoundTmplRevision(context.Context, *GetReleasedAppBoundTmplRevisionReq) (*GetReleasedAppBoundTmplRevisionResp, error) CheckAppTemplateBinding(context.Context, *CheckAppTemplateBindingReq) (*CheckAppTemplateBindingResp, error) + ImportFromTemplateSetToApp(context.Context, *ImportFromTemplateSetToAppReq) (*base.EmptyResp, error) // app template variables related interface. ExtractAppTmplVariables(context.Context, *ExtractAppTmplVariablesReq) (*ExtractAppTmplVariablesResp, error) GetAppTmplVariableRefs(context.Context, *GetAppTmplVariableRefsReq) (*GetAppTmplVariableRefsResp, error) @@ -2385,6 +2409,9 @@ func (UnimplementedDataServer) ListTemplatesNotBound(context.Context, *ListTempl func (UnimplementedDataServer) ListTmplsOfTmplSet(context.Context, *ListTmplsOfTmplSetReq) (*ListTmplsOfTmplSetResp, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTmplsOfTmplSet not implemented") } +func (UnimplementedDataServer) ListTemplateSetsAndRevisions(context.Context, *ListTemplateSetsAndRevisionsReq) (*ListTemplateSetsAndRevisionsResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTemplateSetsAndRevisions not implemented") +} func (UnimplementedDataServer) ListTemplateByTuple(context.Context, *ListTemplateByTupleReq) (*ListTemplateByTupleReqResp, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTemplateByTuple not implemented") } @@ -2463,6 +2490,9 @@ func (UnimplementedDataServer) GetReleasedAppBoundTmplRevision(context.Context, func (UnimplementedDataServer) CheckAppTemplateBinding(context.Context, *CheckAppTemplateBindingReq) (*CheckAppTemplateBindingResp, error) { return nil, status.Errorf(codes.Unimplemented, "method CheckAppTemplateBinding not implemented") } +func (UnimplementedDataServer) ImportFromTemplateSetToApp(context.Context, *ImportFromTemplateSetToAppReq) (*base.EmptyResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ImportFromTemplateSetToApp not implemented") +} func (UnimplementedDataServer) ExtractAppTmplVariables(context.Context, *ExtractAppTmplVariablesReq) (*ExtractAppTmplVariablesResp, error) { return nil, status.Errorf(codes.Unimplemented, "method ExtractAppTmplVariables not implemented") } @@ -3960,6 +3990,24 @@ func _Data_ListTmplsOfTmplSet_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Data_ListTemplateSetsAndRevisions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTemplateSetsAndRevisionsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DataServer).ListTemplateSetsAndRevisions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Data_ListTemplateSetsAndRevisions_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DataServer).ListTemplateSetsAndRevisions(ctx, req.(*ListTemplateSetsAndRevisionsReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Data_ListTemplateByTuple_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListTemplateByTupleReq) if err := dec(in); err != nil { @@ -4428,6 +4476,24 @@ func _Data_CheckAppTemplateBinding_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _Data_ImportFromTemplateSetToApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ImportFromTemplateSetToAppReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DataServer).ImportFromTemplateSetToApp(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Data_ImportFromTemplateSetToApp_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DataServer).ImportFromTemplateSetToApp(ctx, req.(*ImportFromTemplateSetToAppReq)) + } + return interceptor(ctx, in, info, handler) +} + func _Data_ExtractAppTmplVariables_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ExtractAppTmplVariablesReq) if err := dec(in); err != nil { @@ -6065,6 +6131,10 @@ var Data_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListTmplsOfTmplSet", Handler: _Data_ListTmplsOfTmplSet_Handler, }, + { + MethodName: "ListTemplateSetsAndRevisions", + Handler: _Data_ListTemplateSetsAndRevisions_Handler, + }, { MethodName: "ListTemplateByTuple", Handler: _Data_ListTemplateByTuple_Handler, @@ -6169,6 +6239,10 @@ var Data_ServiceDesc = grpc.ServiceDesc{ MethodName: "CheckAppTemplateBinding", Handler: _Data_CheckAppTemplateBinding_Handler, }, + { + MethodName: "ImportFromTemplateSetToApp", + Handler: _Data_ImportFromTemplateSetToApp_Handler, + }, { MethodName: "ExtractAppTmplVariables", Handler: _Data_ExtractAppTmplVariables_Handler, diff --git a/bcs-services/bcs-bscp/pkg/sf-share/types.go b/bcs-services/bcs-bscp/pkg/sf-share/types.go index 2f34d699e3..33b858e130 100644 --- a/bcs-services/bcs-bscp/pkg/sf-share/types.go +++ b/bcs-services/bcs-bscp/pkg/sf-share/types.go @@ -23,6 +23,7 @@ import ( "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/cc" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/criteria/validator" "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/dal/table" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" pbbase "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/core/base" pbcommit "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/core/commit" pbci "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/protocol/core/config-item" @@ -169,7 +170,7 @@ func (s SideAppMeta) Validate() error { } if len(s.Namespace) != 0 { - if err := validator.ValidateNamespace(s.Namespace); err != nil { + if err := validator.ValidateNamespace(kit.New(), s.Namespace); err != nil { return fmt.Errorf("invalid sidecar's app namespace, err: %v", err) } } diff --git a/bcs-services/bcs-bscp/pkg/space/space.go b/bcs-services/bcs-bscp/pkg/space/space.go index 64cd66c256..190048efb8 100644 --- a/bcs-services/bcs-bscp/pkg/space/space.go +++ b/bcs-services/bcs-bscp/pkg/space/space.go @@ -28,15 +28,16 @@ import ( // Type 空间类型 type Type struct { - ID string - Name string + ID string + Name string + EnName string } var ( // BCS 项目类型 - BCS = Type{ID: "bcs", Name: "容器项目"} + BCS = Type{ID: "bcs", Name: "容器项目", EnName: "Container Project"} // BK_CMDB cmdb 业务类型 - BK_CMDB = Type{ID: "bkcmdb", Name: "业务"} + BK_CMDB = Type{ID: "bkcmdb", Name: "业务", EnName: "Business"} ) // Status 空间状态, 预留 @@ -54,6 +55,7 @@ type Space struct { SpaceTypeID string SpaceTypeName string SpaceUid string + SpaceEnName string } // Manager Space定时拉取 @@ -204,6 +206,7 @@ func (s *Manager) fetchAllSpace(ctx context.Context) error { SpaceName: biz.BizName, SpaceTypeID: BK_CMDB.ID, SpaceTypeName: BK_CMDB.Name, + SpaceEnName: BK_CMDB.EnName, SpaceUid: BuildSpaceUid(BK_CMDB, strconv.FormatInt(biz.BizID, 10)), }) cmdbSpaces[bizID] = struct{}{} diff --git a/bcs-services/bcs-bscp/pkg/tools/tools.go b/bcs-services/bcs-bscp/pkg/tools/tools.go index 70449f2189..98a67eb317 100644 --- a/bcs-services/bcs-bscp/pkg/tools/tools.go +++ b/bcs-services/bcs-bscp/pkg/tools/tools.go @@ -14,11 +14,15 @@ package tools import ( + "errors" "fmt" "path" "sort" "strconv" "strings" + + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/i18n" + "github.com/TencentBlueKing/bk-bcs/bcs-services/bcs-bscp/pkg/kit" ) // GetIntList 获取Int列表, 解析BizID时使用 @@ -220,7 +224,7 @@ type CIUniqueKey struct { // DetectFilePathConflicts 检测文件路径冲突 // 示例 /a 和 /a 两者路径+名称全等忽略 // 示例 /a 和 /a/1.txt 两者同级下出现同名的文件夹和文件会视为错误 -func DetectFilePathConflicts(a []CIUniqueKey, b []CIUniqueKey) error { +func DetectFilePathConflicts(kt *kit.Kit, a []CIUniqueKey, b []CIUniqueKey) error { for _, v1 := range a { path1 := path.Join(v1.Path, v1.Name) for _, v2 := range b { @@ -229,7 +233,7 @@ func DetectFilePathConflicts(a []CIUniqueKey, b []CIUniqueKey) error { continue } if strings.HasPrefix(path1+"/", path2+"/") || strings.HasPrefix(path2+"/", path1+"/") { - return fmt.Errorf("%s and %s path file conflict", path2, path1) + return errors.New(i18n.T(kt, "%s and %s path file conflict", path2, path1)) } } } diff --git a/bcs-services/bcs-bscp/ui/package.json b/bcs-services/bcs-bscp/ui/package.json index cd4a37fb7d..538ea43326 100644 --- a/bcs-services/bcs-bscp/ui/package.json +++ b/bcs-services/bcs-bscp/ui/package.json @@ -34,7 +34,8 @@ "tippy.js": "^6.3.7", "vue": "^3.4.21", "vue-i18n": "9", - "vue-router": "^4.1.5" + "vue-router": "^4.1.5", + "vue-virtual-scroller": "^2.0.0-beta.8" }, "devDependencies": { "@babel/core": "^7.23.0", diff --git a/bcs-services/bcs-bscp/ui/src/App.vue b/bcs-services/bcs-bscp/ui/src/App.vue index 3f13d044e3..cd3d90180c 100644 --- a/bcs-services/bcs-bscp/ui/src/App.vue +++ b/bcs-services/bcs-bscp/ui/src/App.vue @@ -24,7 +24,7 @@ // @ts-ignore const noticeApiURL = `${window.BK_BCS_BSCP_API}/api/v1/announcements`; // @ts-ignore - const enableNotice = window.ENABLE_BK_NOTICE === true; + const enableNotice = window.ENABLE_BK_NOTICE === 'true'; onMounted(() => { globalStore.getAppGlobalConfig(); diff --git a/bcs-services/bcs-bscp/ui/src/api/config.ts b/bcs-services/bcs-bscp/ui/src/api/config.ts index fb7d0ef474..f0e3dc3daf 100644 --- a/bcs-services/bcs-bscp/ui/src/api/config.ts +++ b/bcs-services/bcs-bscp/ui/src/api/config.ts @@ -28,7 +28,7 @@ export const getDefaultConfigScriptData = () => ({ */ export const getConfigList = (biz_id: string, app_id: number, query: ICommonQuery) => http - .get(`/config/biz/${biz_id}/apps/${app_id}/config_items`, { params: { ...query, with_status: true } }) + .post(`/config/biz/${biz_id}/apps/${app_id}/config_items`, { ...query, with_status: true }) .then((res) => res.data); /** @@ -536,9 +536,10 @@ export const deleteKv = (bizId: string, appId: number, configId: number) => * @param bizId 业务ID * @param appId 应用ID * @param ids 配置项ID列表 + * @param exclusion_operation 是否跨页 */ -export const batchDeleteKv = (bizId: string, appId: number, ids: number[]) => - http.post(`config/biz/${bizId}/apps/${appId}/kvs/batch_delete`, { ids }); +export const batchDeleteKv = (bizId: string, appId: number, ids: number[], exclusion_operation: boolean) => + http.post(`config/biz/${bizId}/apps/${appId}/kvs/batch_delete`, { ids, exclusion_operation }); /** * 获取已发布kv @@ -689,6 +690,17 @@ export const importKvFormYaml = (bizId: string, appId: number, content: string) export const createVersionNameCheck = (bizId: string, appId: number, name: string) => http.get(`/config/biz_id/${bizId}/app_id/${appId}/release/${name}/check`); +/** + * 从配置模板导入配置文件 + * @param bizId 业务ID + * @param appId 应用ID + * @param bindingId 模板和服务绑定关系ID + * @param params 更新参数 + * @returns + */ +export const importConfigFromTemplate = (bizId: string, appId: number, query: any) => + http.post(`/config/biz/${bizId}/apps/${appId}/template_bindings/import_template_set`, query); + /** * 上次上线方式查询 * @param bizId 业务ID diff --git a/bcs-services/bcs-bscp/ui/src/api/template.ts b/bcs-services/bcs-bscp/ui/src/api/template.ts index 2e9744ac18..2a47b40a20 100644 --- a/bcs-services/bcs-bscp/ui/src/api/template.ts +++ b/bcs-services/bcs-bscp/ui/src/api/template.ts @@ -110,7 +110,7 @@ export const getAllPackagesGroupBySpace = (biz_id: string, params: { app_id?: nu * @returns */ export const getTemplatesBySpaceId = (biz_id: string, template_space_id: number, params: ICommonQuery) => - http.get(`/config/biz/${biz_id}/template_spaces/${template_space_id}/templates`, { params }).then((res) => res.data); + http.post(`/config/biz/${biz_id}/template_spaces/${template_space_id}/templates_list`, params).then((res) => res.data); /** * 获取模板空间下未指定套餐的模板列表 @@ -223,9 +223,10 @@ export const getTemplatesByPackageId = ( params: ICommonQuery, ) => http - .get(`/config/biz/${biz_id}/template_spaces/${template_space_id}/template_sets/${template_set_id}/templates`, { + .post( + `/config/biz/${biz_id}/template_spaces/${template_space_id}/template_sets/${template_set_id}/templates`, params, - }) + ) .then((res) => res.data); /** @@ -762,3 +763,12 @@ export const updateTemplateConfig = ( params, ) .then((res) => res.data); + +/** + * 根据模板套餐获取模板版本列表 + * @param biz_id 业务ID + * @param template_id 模板ID + * @returns + */ +export const getTemplateRevisionsFromPkgId = (biz_id: string, pkgId: number) => + http.get(`/config/biz/${biz_id}/template_sets/${pkgId}/template_revisions`).then((res) => res.data); diff --git a/bcs-services/bcs-bscp/ui/src/i18n/en-us.ts b/bcs-services/bcs-bscp/ui/src/i18n/en-us.ts index 8251dc9347..a23d1db5ee 100644 --- a/bcs-services/bcs-bscp/ui/src/i18n/en-us.ts +++ b/bcs-services/bcs-bscp/ui/src/i18n/en-us.ts @@ -470,8 +470,8 @@ export default { 上一步: 'Previous', 上传至模板套餐: 'Upload to template package', '上传后,部分套餐/服务的配置文件数量将超过最大限制 ({n} 个文件)': 'After uploading, the number of configuration files in some packages/services will exceed the maximum limit ({n} files)', - '上传后,该套餐配置文件数量将超过最大限制': 'After uploading, the number of configuration files in the package will exceed the maximum limit', - '上传后,该服务配置文件数量将超过最大限制': 'After uploading, the number of configuration files in the service will exceed the maximum limit', + '上传后,该套餐的配置文件数量将达到 {n} 个,超过了最大限制': 'After uploading, the number of configuration files in the package will reach {n}, exceeding the maximum limit', + '上传后,该服务的配置文件数量将达到 {n} 个,超过了最大限制': 'After uploading, the number of configuration files in the service will reach {n}, exceeding the maximum limit', '文件上传准备中,请稍候…': 'File upload is in preparation, please wait...', '( 后台已存在此文件,上传快速完成 )': '( The background already has this file, the upload is completed quickly )', '立即上线:点击“确认上线”后,配置版本将立即上线,适用于紧急更新等立即生效的场景定时上线:点击“确认上线”后,配置版本不会立即生效,可设定具体时间点,使版本在该时间自动上线,适用于非紧急更新场景,避免高峰时段上线,降低用户影响': '立即上线:点击“确认上线”后,配置版本将立即上线,适用于紧急更新等立即生效的场景\n定时上线:点击“确认上线”后,配置版本不会立即生效,可设定具体时间点,使版本在该时间自动上线,适用于非紧急更新场景,避免高峰时段上线,降低用户影响', @@ -628,6 +628,7 @@ export default { 批量移出套餐: 'Move out of package in batches', 从其他空间导入: 'Import from another space', '确认删除所选的 {n} 个配置文件?': 'Confirm the deletion of the selected {n} configuration fils?', + 'latest(当前最新为{n})': 'latest (current latest is {n})', // 脚本管理 全部脚本: 'All scripts', diff --git a/bcs-services/bcs-bscp/ui/src/i18n/zh-cn.ts b/bcs-services/bcs-bscp/ui/src/i18n/zh-cn.ts index 3ef3a32f00..f6c3fab7c8 100644 --- a/bcs-services/bcs-bscp/ui/src/i18n/zh-cn.ts +++ b/bcs-services/bcs-bscp/ui/src/i18n/zh-cn.ts @@ -473,8 +473,8 @@ export default { 上一步: '上一步', 上传至模板套餐: '上传至模板套餐', '上传后,部分套餐/服务的配置文件数量将超过最大限制 ({n} 个文件)': '上传后,部分套餐/服务的配置文件数量将超过最大限制 ({n} 个文件)', - '上传后,该套餐配置文件数量将超过最大限制': '上传后,该套餐配置文件数量将超过最大限制', - '上传后,该服务配置文件数量将超过最大限制': '上传后,该服务配置文件数量将超过最大限制', + '上传后,该套餐的配置文件数量将达到 {n} 个,超过了最大限制': '上传后,该套餐的配置文件数量将达到 {n} 个,超过了最大限制', + '上传后,该服务的配置文件数量将达到 {n} 个,超过了最大限制': '上传后,该服务的配置文件数量将达到 {n} 个,超过了最大限制', '文件上传准备中,请稍候…': '文件上传准备中,请稍候…', '( 后台已存在此文件,上传快速完成 )': '( 后台已存在此文件,上传快速完成 )', 审批开启的文案: '此服务版本上线已启用审批流程,请选择审批通过后的上线方式\n手动上线:适用于需人工干预和确认的场景,常用于重要业务或正式环\n境中的模块配置上线\n审批通过后立即上线:适用于高度自动化的场景,常用于非正式环境的\n配置上线,以提升部署效率\n定时上线:适用于需在特定时间上线的场景;若在指定时间前审批流程\n未完成,则将自动切换为手动上线', @@ -651,6 +651,7 @@ export default { '确认恢复该配置项?': '确认恢复该配置项?', '文件下载中,请稍后': '文件下载中,请稍后', '确认删除所选的 {n} 个配置文件?': '确认删除所选的 {n} 个配置文件?', + 'latest(当前最新为{n})': 'latest(当前最新为{n})', // 脚本管理 全部脚本: '全部脚本', diff --git a/bcs-services/bcs-bscp/ui/src/main.ts b/bcs-services/bcs-bscp/ui/src/main.ts index d2ca24d430..7220020ad5 100644 --- a/bcs-services/bcs-bscp/ui/src/main.ts +++ b/bcs-services/bcs-bscp/ui/src/main.ts @@ -13,6 +13,8 @@ import auth from './common/auth'; import zhCn from 'bkui-vue/dist/locale/zh-cn.esm'; import en from 'bkui-vue/dist/locale/en.esm'; import { getCookie } from './utils'; +import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'; +import VirtualScroller from 'vue-virtual-scroller'; auth().then(() => { const app = createApp(App); @@ -42,6 +44,7 @@ auth().then(() => { .use(pinia) .use(i18n) .use(router) + .use(VirtualScroller) .use(bkui, { locale: getCookie('blueking_language') === 'en' ? en : zhCn, }) diff --git a/bcs-services/bcs-bscp/ui/src/store/config.ts b/bcs-services/bcs-bscp/ui/src/store/config.ts index 24a297ba2d..01f5a1e51e 100644 --- a/bcs-services/bcs-bscp/ui/src/store/config.ts +++ b/bcs-services/bcs-bscp/ui/src/store/config.ts @@ -8,6 +8,9 @@ export default defineStore('config', () => { // 非套餐配置和模板配置文件总数量 kv服务非套餐配置总数 const allConfigCount = ref(0); + // 非套餐配置和模板配置文件总数量 kv服务非套餐配置总数 (除去删除状态总数) + const allExistConfigCount = ref(0); + // 当前选中版本, 用id为0表示未命名版本 const versionData = ref(GET_UNNAMED_VERSION_DATA()); @@ -30,5 +33,6 @@ export default defineStore('config', () => { refreshVersionListFlag, publishedVersionId, conflictFileCount, + allExistConfigCount, }; }); diff --git a/bcs-services/bcs-bscp/ui/src/views/space/client/statistics/section/pull-mass/pull-count.vue b/bcs-services/bcs-bscp/ui/src/views/space/client/statistics/section/pull-mass/pull-count.vue index 9277ff6867..46d4a295ed 100644 --- a/bcs-services/bcs-bscp/ui/src/views/space/client/statistics/section/pull-mass/pull-count.vue +++ b/bcs-services/bcs-bscp/ui/src/views/space/client/statistics/section/pull-mass/pull-count.vue @@ -205,19 +205,10 @@ }, }, }, - tickCount: 5, min: 0, }, count: { - grid: { - line: { - style: { - stroke: '#979BA5', - lineDash: [4, 5], - }, - }, - }, - tickCount: 5, + grid: null, min: 0, }, }, diff --git a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/components/create-version/index.vue b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/components/create-version/index.vue index 6b6dadd984..7bb77ecfd5 100644 --- a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/components/create-version/index.vue +++ b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/components/create-version/index.vue @@ -4,7 +4,7 @@ v-cursor="{ active: !props.hasPerm }" theme="primary" :class="['trigger-button', { 'bk-button-with-no-perm': !props.hasPerm }]" - :disabled="(props.hasPerm && allConfigCount === 0) || props.permCheckLoading || conflictFileCount > 0" + :disabled="!props.hasPerm || allExistConfigCount === 0 || props.permCheckLoading || conflictFileCount > 0" @click="handleBtnClick"> {{ t('生成版本') }} @@ -37,7 +37,7 @@ const { t } = useI18n(); const { permissionQuery, showApplyPermDialog } = storeToRefs(useGlobalStore()); - const { allConfigCount, versionData, conflictFileCount } = storeToRefs(useConfigStore()); + const { allExistConfigCount, versionData, conflictFileCount } = storeToRefs(useConfigStore()); const isVersionSliderShow = ref(false); const isDiffSliderShow = ref(false); const createSliderRef = ref(); diff --git a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/batch-operation-btn.vue b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/batch-operation-btn.vue index c2a5a39888..bf307e10c3 100644 --- a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/batch-operation-btn.vue +++ b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/batch-operation-btn.vue @@ -92,7 +92,7 @@ if (props.isFileType) { await batchDeleteServiceConfigs(props.bkBizId, props.appId, props.selectedIds); } else { - await batchDeleteKv(props.bkBizId, props.appId, props.selectedIds); + await batchDeleteKv(props.bkBizId, props.appId, props.selectedIds, props.isAcrossChecked); } Message({ theme: 'success', diff --git a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/config-export.vue b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/config-export.vue index 2cf77e205a..5cfac1f437 100644 --- a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/config-export.vue +++ b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/config-export.vue @@ -3,7 +3,7 @@ v-if="isFileType" :key="appData.id" style="margin-left: 8px" - :disabled="allConfigCount === 0 || conflictFileCount > 0" + :disabled="allExistConfigCount === 0 || conflictFileCount > 0" @click="handleExportFile"> {{ $t('打包下载') }} @@ -16,7 +16,7 @@ trigger="click" @after-show="isPopoverOpen = true" @after-hidden="isPopoverOpen = false"> - {{ $t('导出至') }} + {{ $t('导出至') }} @@ -237,7 +233,6 @@ margin-top: 24px; border-top: 1px solid #dcdee5; overflow: auto; - max-height: 490px; .tips { margin: 16px 0; font-size: 12px; diff --git a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/create-config/import-file/index.vue b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/create-config/import-file/index.vue index 90450542af..91e7115bff 100644 --- a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/create-config/import-file/index.vue +++ b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/create-config/import-file/index.vue @@ -31,7 +31,12 @@ @file-processing="fileProcessing = $event" />
- +
@@ -57,6 +62,7 @@
-
+
{{ t('导入') }} @@ -220,20 +224,21 @@ const selectedConfigIds = ref<(string | number)[]>([]); const configSelectRef = ref(); const lastSelectedConfigIds = ref<(string | number)[]>([]); // 上一次选中导入的配置项 + const templateImportBtnDisabled = ref(true); // 从配置模板导入按钮是否禁用 const confirmBtnDisabled = computed(() => { if (importType.value === 'configTemplate' && importFromTemplateRef.value) { - return importFromTemplateRef.value.isImportBtnDisabled; + return templateImportBtnDisabled.value; } if (importType.value === 'localFile') { return ( - !uploadFileLoading.value && - !decompressing.value && - importConfigList.value.length + importTemplateConfigList.value.length > 0 && - !isExceedMaxFileCount.value + uploadFileLoading.value || + decompressing.value || + importConfigList.value.length + importTemplateConfigList.value.length === 0 || + isExceedMaxFileCount.value ); } - return importConfigList.value.length + importTemplateConfigList.value.length > 0 && !hasError.value; + return importConfigList.value.length + importTemplateConfigList.value.length === 0 || hasError.value; }); const importConfigList = computed(() => [...nonExistConfigList.value, ...existConfigList.value]); diff --git a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/create-config/import-file/pkg-templates-table.vue b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/create-config/import-file/pkg-templates-table.vue index d9afe85591..dc47d6a8b3 100644 --- a/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/create-config/import-file/pkg-templates-table.vue +++ b/bcs-services/bcs-bscp/ui/src/views/space/service/detail/config/config-list/config-table-list/create-config/import-file/pkg-templates-table.vue @@ -5,28 +5,30 @@ {{ title }}
- - - - - - - - - diff --git a/bcs-services/bcs-bscp/ui/src/views/space/templates/list/package-detail/tables/config-without-package.vue b/bcs-services/bcs-bscp/ui/src/views/space/templates/list/package-detail/tables/config-without-package.vue index 2e4478f92d..a4bc97be2a 100644 --- a/bcs-services/bcs-bscp/ui/src/views/space/templates/list/package-detail/tables/config-without-package.vue +++ b/bcs-services/bcs-bscp/ui/src/views/space/templates/list/package-detail/tables/config-without-package.vue @@ -6,15 +6,25 @@ current-pkg="no_specified" :space-id="spaceId" :get-config-list="getConfigList" - :show-delete-action="true"> + :show-delete-action="true" + :is-across-checked="acrossCheckedType.isAcrossChecked" + :data-count="acrossCheckedType.dataCount" + @send-across-checked-type=" + (checked, dataCount) => { + acrossCheckedType.isAcrossChecked = checked; + acrossCheckedType.dataCount = dataCount; + } + "> @@ -35,6 +45,10 @@ const configTable = ref(); const selectedConfigs = ref([]); + const acrossCheckedType = ref<{ isAcrossChecked: boolean; dataCount: number }>({ + isAcrossChecked: false, + dataCount: 0, + }); const getConfigList = (params: ICommonQuery) => { const res = getTemplatesWithNoSpecifiedPackage(spaceId.value, currentTemplateSpace.value, params); diff --git a/bcs-services/bcs-bscp/ui/types.d.ts b/bcs-services/bcs-bscp/ui/types.d.ts index 12bfa9b971..30fa56423b 100644 --- a/bcs-services/bcs-bscp/ui/types.d.ts +++ b/bcs-services/bcs-bscp/ui/types.d.ts @@ -20,3 +20,4 @@ declare module 'bkui-vue/dist/locale/zh-cn.esm'; declare module 'bkui-vue/dist/locale/en.esm'; declare module '@blueking/login-modal'; declare module '@blueking/platform-config'; +declare module 'vue-virtual-scroller'; diff --git a/bcs-services/bcs-bscp/ui/types/config.ts b/bcs-services/bcs-bscp/ui/types/config.ts index 98a10a7149..5d4cabb1f6 100644 --- a/bcs-services/bcs-bscp/ui/types/config.ts +++ b/bcs-services/bcs-bscp/ui/types/config.ts @@ -249,3 +249,21 @@ export interface IConfigKvType { update_at: string; }; } + +// 从配置模板导入 +export interface ITemplateRevision { + template_id: number; + template_revision_id: number; + is_latest: boolean; + template_name: string; + template_revision_name: string; +} + +export interface ITemplatePkgs { + template_set_id: number; + template_revisions: ITemplateRevision[]; + template_set_name: string; + template_space_name: string; + template_space_id: number; + template_show_title: string; +} diff --git a/bcs-services/bcs-bscp/ui/types/index.ts b/bcs-services/bcs-bscp/ui/types/index.ts index d449340656..932aa64d09 100644 --- a/bcs-services/bcs-bscp/ui/types/index.ts +++ b/bcs-services/bcs-bscp/ui/types/index.ts @@ -22,7 +22,7 @@ export interface ICommonQuery { search_key?: string; search_fields?: string; search_value?: string; - ids?: string; + ids?: number[]; with_status?: boolean; kv_type?: string[]; order?: string; diff --git a/bcs-services/bcs-bscp/ui/types/template.ts b/bcs-services/bcs-bscp/ui/types/template.ts index 314f892c0c..6d7f824990 100644 --- a/bcs-services/bcs-bscp/ui/types/template.ts +++ b/bcs-services/bcs-bscp/ui/types/template.ts @@ -100,6 +100,8 @@ export interface IPackagesCitedByApps { app_name: string; app_exceeds_limit?: boolean; template_set_exceeds_limit?: boolean; + app_exceeds_quantity?: number; + template_set_exceeds_quantity?: number; } // 模板被服务绑定或套餐引用计数详情 @@ -183,6 +185,7 @@ export interface IPkgTreeItem { disabled?: boolean; indeterminate?: boolean; parentName?: string; + template_space_id?: number; } // 模板下多个版本名称 diff --git a/bcs-services/bcs-bscp/ui/yarn.lock b/bcs-services/bcs-bscp/ui/yarn.lock index 5e77755d63..4cfebeee6b 100644 --- a/bcs-services/bcs-bscp/ui/yarn.lock +++ b/bcs-services/bcs-bscp/ui/yarn.lock @@ -3914,6 +3914,11 @@ minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.8: resolved "https://mirrors.tencent.com/npm/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +mitt@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/mitt/-/mitt-2.1.0.tgz#f740577c23176c6205b121b2973514eade1b2230" + integrity sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg== + mkdirp@^0.5.1: version "0.5.6" resolved "https://mirrors.tencent.com/npm/mkdirp/-/mkdirp-0.5.6.tgz" @@ -5390,6 +5395,16 @@ vue-i18n@9: "@intlify/shared" "9.13.1" "@vue/devtools-api" "^6.5.0" +vue-observe-visibility@^2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.npmmirror.com/vue-observe-visibility/-/vue-observe-visibility-2.0.0-alpha.1.tgz#1e4eda7b12562161d58984b7e0dea676d83bdb13" + integrity sha512-flFbp/gs9pZniXR6fans8smv1kDScJ8RS7rEpMjhVabiKeq7Qz3D9+eGsypncjfIyyU84saU88XZ0zjbD6Gq/g== + +vue-resize@^2.0.0-alpha.1: + version "2.0.0-alpha.1" + resolved "https://registry.npmmirror.com/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz#43eeb79e74febe932b9b20c5c57e0ebc14e2df3a" + integrity sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg== + vue-router@^4.1.5: version "4.3.3" resolved "https://mirrors.tencent.com/npm/vue-router/-/vue-router-4.3.3.tgz" @@ -5421,6 +5436,15 @@ vue-types@~4.1.1: dependencies: is-plain-object "5.0.0" +vue-virtual-scroller@^2.0.0-beta.8: + version "2.0.0-beta.8" + resolved "https://registry.npmmirror.com/vue-virtual-scroller/-/vue-virtual-scroller-2.0.0-beta.8.tgz#eeceda57e4faa5ba1763994c873923e2a956898b" + integrity sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ== + dependencies: + mitt "^2.1.0" + vue-observe-visibility "^2.0.0-alpha.1" + vue-resize "^2.0.0-alpha.1" + vue@^3.4.21: version "3.4.29" resolved "https://mirrors.tencent.com/npm/vue/-/vue-3.4.29.tgz" diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go index f2cc83b3f2..6bc60160c6 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go @@ -72,6 +72,7 @@ type Cluster struct { CloudAccountID string `protobuf:"bytes,40,opt,name=cloudAccountID,proto3" json:"cloudAccountID,omitempty"` Message string `protobuf:"bytes,41,opt,name=message,proto3" json:"message,omitempty"` IsMixed bool `protobuf:"varint,42,opt,name=isMixed,proto3" json:"isMixed,omitempty"` + ClusterIamRole string `protobuf:"bytes,43,opt,name=clusterIamRole,proto3" json:"clusterIamRole,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` XXX_unrecognized []byte `json:"-" bson:"-"` XXX_sizecache int32 `json:"-" bson:"-"` @@ -396,6 +397,13 @@ func (m *Cluster) GetIsMixed() bool { return false } +func (m *Cluster) GetClusterIamRole() string { + if m != nil { + return m.ClusterIamRole + } + return "" +} + type Node struct { NodeID string `protobuf:"bytes,1,opt,name=nodeID,proto3" json:"nodeID,omitempty"` InnerIP string `protobuf:"bytes,2,opt,name=innerIP,proto3" json:"innerIP,omitempty"` @@ -9137,6 +9145,7 @@ type CreateClusterReq struct { NodeTemplateID string `protobuf:"bytes,40,opt,name=nodeTemplateID,proto3" json:"nodeTemplateID,omitempty"` NodeGroups []*NodeGroup `protobuf:"bytes,41,rep,name=nodeGroups,proto3" json:"nodeGroups,omitempty"` IsMixed bool `protobuf:"varint,42,opt,name=isMixed,proto3" json:"isMixed,omitempty"` + ClusterIamRole string `protobuf:"bytes,43,opt,name=clusterIamRole,proto3" json:"clusterIamRole,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` XXX_unrecognized []byte `json:"-" bson:"-"` XXX_sizecache int32 `json:"-" bson:"-"` @@ -9454,6 +9463,13 @@ func (m *CreateClusterReq) GetIsMixed() bool { return false } +func (m *CreateClusterReq) GetClusterIamRole() string { + if m != nil { + return m.ClusterIamRole + } + return "" +} + type CreateClusterResp struct { Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` @@ -10479,6 +10495,7 @@ type ImportCloudMode struct { KubeConfig string `protobuf:"bytes,2,opt,name=kubeConfig,proto3" json:"kubeConfig,omitempty"` Inter bool `protobuf:"varint,3,opt,name=inter,proto3" json:"inter,omitempty"` ResourceGroup string `protobuf:"bytes,4,opt,name=resourceGroup,proto3" json:"resourceGroup,omitempty"` + NodeIps []string `protobuf:"bytes,5,rep,name=nodeIps,proto3" json:"nodeIps,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` XXX_unrecognized []byte `json:"-" bson:"-"` XXX_sizecache int32 `json:"-" bson:"-"` @@ -10537,6 +10554,13 @@ func (m *ImportCloudMode) GetResourceGroup() string { return "" } +func (m *ImportCloudMode) GetNodeIps() []string { + if m != nil { + return m.NodeIps + } + return nil +} + type ImportClusterReq struct { ClusterID string `protobuf:"bytes,1,opt,name=clusterID,proto3" json:"clusterID,omitempty"` ClusterName string `protobuf:"bytes,2,opt,name=clusterName,proto3" json:"clusterName,omitempty"` @@ -13319,6 +13343,7 @@ type ListClusterReq struct { ExtraClusterID string `protobuf:"bytes,18,opt,name=extraClusterID,proto3" json:"extraClusterID,omitempty"` IsCommonCluster bool `protobuf:"varint,19,opt,name=isCommonCluster,proto3" json:"isCommonCluster,omitempty"` ClusterID string `protobuf:"bytes,20,opt,name=clusterID,proto3" json:"clusterID,omitempty"` + All bool `protobuf:"varint,21,opt,name=all,proto3" json:"all,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` XXX_unrecognized []byte `json:"-" bson:"-"` XXX_sizecache int32 `json:"-" bson:"-"` @@ -13482,6 +13507,13 @@ func (m *ListClusterReq) GetClusterID() string { return "" } +func (m *ListClusterReq) GetAll() bool { + if m != nil { + return m.All + } + return false +} + type ListClusterResp struct { Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` @@ -32973,4678 +33005,4693 @@ func init() { func init() { proto.RegisterFile("clustermanager.proto", fileDescriptor_d789ea45d40d7a6b) } var fileDescriptor_d789ea45d40d7a6b = []byte{ - // 74725 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x6b, 0x70, 0x1b, 0x47, - 0xb6, 0x20, 0x08, 0xdf, 0xa2, 0x5e, 0x64, 0x52, 0x94, 0xe4, 0xb2, 0x65, 0xd3, 0xb2, 0x2d, 0xc3, - 0x74, 0xb7, 0x4d, 0x56, 0x93, 0x7a, 0x94, 0xdd, 0x7e, 0xd0, 0xed, 0x6e, 0x17, 0x41, 0x4a, 0x46, - 0x4b, 0xa2, 0xe8, 0x22, 0x25, 0xb7, 0xed, 0x76, 0x6b, 0x20, 0xa0, 0x44, 0xc1, 0x24, 0x01, 0x36, - 0x00, 0x52, 0x52, 0xf7, 0x9d, 0x6e, 0x90, 0x22, 0x25, 0x52, 0x02, 0x1f, 0x2a, 0xeb, 0x49, 0x51, - 0x0f, 0xda, 0x7a, 0xd0, 0xb6, 0x48, 0x4a, 0xb6, 0x2c, 0x41, 0x20, 0x68, 0xc6, 0x7c, 0xdf, 0x4c, - 0xcc, 0xec, 0xce, 0xc4, 0xdd, 0x99, 0x9e, 0xdd, 0x89, 0x8d, 0x1b, 0x77, 0x1e, 0xbb, 0x42, 0x15, - 0x80, 0xbb, 0x37, 0x96, 0x13, 0x37, 0x76, 0x63, 0x23, 0x3c, 0x3f, 0x76, 0x23, 0xf3, 0x64, 0x55, - 0x65, 0x01, 0x20, 0x25, 0xd9, 0xee, 0xee, 0xeb, 0xdd, 0xab, 0x50, 0x04, 0x51, 0x27, 0x4f, 0x9e, - 0x7c, 0x9f, 0x3c, 0xe7, 0xe4, 0xc9, 0x93, 0xe8, 0x11, 0x4f, 0x6b, 0x47, 0x28, 0xac, 0x04, 0xdb, - 0xdc, 0x7e, 0x77, 0xb3, 0x12, 0x5c, 0xd7, 0x1e, 0x0c, 0x84, 0x03, 0xfc, 0x0a, 0x3b, 0x74, 0xcd, - 0x93, 0xcd, 0x81, 0x40, 0x73, 0xab, 0xb2, 0xde, 0xdd, 0xee, 0x5b, 0xef, 0xf6, 0xfb, 0x03, 0x61, - 0x77, 0xd8, 0x17, 0xf0, 0x87, 0x00, 0xdb, 0x4c, 0x25, 0x5f, 0xbb, 0x3b, 0xf6, 0xac, 0x0f, 0x85, - 0x83, 0x1d, 0x9e, 0x30, 0x4d, 0xad, 0x24, 0x7f, 0x3c, 0x55, 0xcd, 0x8a, 0xbf, 0x2a, 0xb4, 0xcf, - 0xdd, 0xdc, 0xac, 0x04, 0xd7, 0x07, 0xda, 0x49, 0xfe, 0x3c, 0xb4, 0x1e, 0xeb, 0x74, 0xb7, 0xfa, - 0xbc, 0xee, 0xb0, 0xb2, 0xde, 0xf8, 0x41, 0x13, 0xd6, 0x66, 0x17, 0xb2, 0x2f, 0xe8, 0x6e, 0x6f, - 0x57, 0x82, 0x34, 0x63, 0x59, 0xba, 0x12, 0x2d, 0x73, 0x42, 0xad, 0xf9, 0x5f, 0xa1, 0x22, 0xda, - 0x00, 0x57, 0x6d, 0x29, 0xe7, 0xe0, 0xca, 0x8b, 0x6a, 0xde, 0x50, 0xa5, 0xd7, 0x05, 0x0b, 0x2a, - 0x6e, 0xa8, 0x71, 0x36, 0x6a, 0x87, 0x7a, 0x33, 0x07, 0xc7, 0x93, 0x33, 0xb3, 0xa9, 0xe3, 0xe3, - 0x99, 0xb3, 0x87, 0x52, 0x5f, 0x5d, 0x72, 0xd5, 0xce, 0x25, 0xa2, 0xfa, 0xc5, 0x84, 0x96, 0x18, - 0x4a, 0xc6, 0xe2, 0x35, 0xce, 0xc6, 0xaa, 0x2d, 0xaf, 0x34, 0x56, 0xfd, 0x02, 0xff, 0x93, 0xad, - 0xcc, 0xfc, 0x1b, 0xa8, 0x98, 0x7e, 0xd4, 0xbb, 0xdb, 0x94, 0xd2, 0x02, 0x52, 0xc2, 0x5a, 0x55, - 0x7a, 0x42, 0x60, 0xe1, 0xe2, 0x72, 0x20, 0xaa, 0x0d, 0x0f, 0xa4, 0xae, 0x5e, 0x97, 0xd9, 0x24, - 0xfe, 0x14, 0x87, 0x1e, 0xde, 0xa3, 0x78, 0x95, 0x20, 0x69, 0xbc, 0xd3, 0xac, 0xec, 0x22, 0x42, - 0x4a, 0x51, 0xa5, 0xdd, 0x42, 0xbe, 0x74, 0x71, 0x8b, 0x76, 0xa5, 0x5b, 0x3f, 0x3f, 0x9a, 0x9e, - 0xba, 0x0c, 0xb4, 0x93, 0xb1, 0x78, 0xba, 0xeb, 0x78, 0xa6, 0xfb, 0x0a, 0x7c, 0xa6, 0x46, 0x7a, - 0x92, 0xb1, 0x48, 0xe6, 0xe0, 0xb8, 0xd6, 0x77, 0x68, 0x2e, 0x11, 0x4d, 0x1d, 0x1f, 0x4f, 0x4f, - 0x5d, 0x76, 0xd5, 0xa6, 0x27, 0xaf, 0x6b, 0x33, 0x27, 0x00, 0xf1, 0xcd, 0x40, 0x28, 0x9c, 0x9c, - 0x1d, 0xd3, 0xbb, 0xa6, 0xe4, 0x7c, 0x25, 0xf0, 0x5b, 0x50, 0x61, 0x7b, 0x30, 0xd0, 0xe9, 0xf3, - 0x2a, 0xc1, 0xd2, 0xc5, 0xa4, 0x36, 0xeb, 0x55, 0xa9, 0x52, 0x30, 0x81, 0xa2, 0x83, 0x96, 0x1c, - 0x3f, 0x96, 0xe9, 0x1d, 0x48, 0xcd, 0x4c, 0xce, 0x25, 0xa2, 0xc9, 0x58, 0x3c, 0x19, 0x3f, 0x96, - 0xba, 0x31, 0xad, 0x9d, 0x3f, 0xea, 0xaa, 0x95, 0x4d, 0x5c, 0xfe, 0x65, 0xb4, 0x34, 0xa8, 0x34, - 0xfb, 0x02, 0xfe, 0xd2, 0x25, 0x84, 0xd4, 0xd3, 0xaa, 0xf4, 0xa4, 0x40, 0x41, 0x22, 0x4f, 0xbb, - 0x27, 0x1a, 0xd7, 0x2e, 0x5c, 0xa0, 0x55, 0xa2, 0x69, 0xfc, 0x56, 0xb4, 0xa4, 0xb3, 0xdd, 0xe3, - 0xaa, 0x2d, 0x5d, 0x4a, 0xf2, 0xbd, 0xa4, 0x4a, 0x2f, 0x08, 0x00, 0x11, 0x05, 0xc8, 0xa6, 0xf7, - 0x47, 0xb4, 0xd1, 0xf1, 0xce, 0x76, 0xcf, 0x5c, 0x22, 0x0a, 0x0d, 0x4e, 0x0d, 0x4e, 0x69, 0x1f, - 0x1d, 0x4c, 0xc6, 0x8e, 0x66, 0xce, 0x9d, 0xd7, 0x66, 0x7b, 0xb5, 0xb1, 0xcf, 0x64, 0xc8, 0xc2, - 0xbf, 0x89, 0x8a, 0xda, 0x83, 0x81, 0x0f, 0x14, 0x4f, 0xd8, 0x55, 0x5b, 0xba, 0x8c, 0x50, 0x14, - 0x54, 0xe9, 0x79, 0xc1, 0x82, 0x8a, 0x6b, 0x2c, 0xaa, 0xbd, 0x5f, 0xa4, 0xbb, 0x8e, 0xa7, 0x46, - 0x7a, 0x32, 0x63, 0x77, 0x52, 0x67, 0x27, 0x5d, 0xb5, 0xb2, 0x85, 0xc6, 0x1f, 0x40, 0x68, 0x77, - 0x47, 0xc8, 0xe7, 0x57, 0x42, 0x21, 0x57, 0x6d, 0x69, 0x21, 0x21, 0xf5, 0x8e, 0x2a, 0xed, 0x14, - 0x18, 0xb0, 0xf8, 0x26, 0xe4, 0x4c, 0x4d, 0x1f, 0xd3, 0x26, 0x47, 0xc8, 0x90, 0x8c, 0x68, 0x47, - 0xc6, 0x5c, 0xb5, 0x95, 0x8e, 0xdc, 0x42, 0x8c, 0xb4, 0xb9, 0x44, 0x94, 0x0c, 0x95, 0x7e, 0xee, - 0xb2, 0x1e, 0x1f, 0x4e, 0xc6, 0x07, 0x9d, 0xdb, 0x6a, 0x6b, 0x64, 0x86, 0x2a, 0xbf, 0x17, 0x15, - 0x2b, 0xfe, 0x4e, 0x5f, 0x30, 0xe0, 0x6f, 0x53, 0xfc, 0xe1, 0xd2, 0x22, 0x52, 0xf6, 0x26, 0x55, - 0x72, 0x0a, 0x2c, 0x5c, 0x7c, 0xd1, 0x2a, 0x63, 0xea, 0x8e, 0x16, 0xc7, 0x65, 0xd0, 0x8e, 0x21, - 0x3d, 0x3c, 0x97, 0x88, 0x86, 0xc2, 0xee, 0xe6, 0xb9, 0x44, 0xd4, 0xab, 0xec, 0xee, 0xc0, 0x7f, - 0xdb, 0x83, 0x01, 0xaf, 0xcc, 0x92, 0xe0, 0xdf, 0x42, 0x48, 0xf1, 0x37, 0xfb, 0xfc, 0x4a, 0xd3, - 0x81, 0x76, 0xa5, 0x14, 0x91, 0x82, 0x36, 0xaa, 0xd2, 0x3a, 0x81, 0x01, 0x1b, 0xd3, 0x20, 0x95, - 0x38, 0xa9, 0x0f, 0xaa, 0x5a, 0xe2, 0x84, 0xfe, 0xe1, 0xe0, 0x5c, 0x22, 0xda, 0xf2, 0x4a, 0xe8, - 0x6e, 0xa4, 0xab, 0x4d, 0x09, 0x05, 0x42, 0x32, 0x83, 0xcd, 0xbf, 0x8f, 0x8a, 0x7d, 0xa1, 0xba, - 0xfd, 0x78, 0x09, 0xf8, 0x3a, 0x95, 0xd2, 0x62, 0x07, 0x57, 0x5e, 0x58, 0xf3, 0x9a, 0x2a, 0xbd, - 0x22, 0xb0, 0x70, 0xb1, 0x42, 0x3f, 0x3d, 0xa5, 0x0d, 0x5f, 0x81, 0x4e, 0x49, 0x1d, 0xbd, 0xa6, - 0x0d, 0x5c, 0x84, 0x62, 0xf0, 0x20, 0x4f, 0x9f, 0x4e, 0x4f, 0xe2, 0x09, 0xbf, 0xc7, 0xdd, 0x1a, - 0x52, 0x64, 0x36, 0x1f, 0xbf, 0xd3, 0x5c, 0x90, 0xa4, 0xca, 0xcb, 0x49, 0x95, 0x5f, 0x54, 0xa5, - 0x8d, 0x02, 0x0b, 0x17, 0xcb, 0x68, 0x9d, 0xc9, 0x44, 0x9d, 0x4b, 0x44, 0xad, 0xf9, 0x7f, 0x37, - 0xd2, 0x15, 0xf2, 0xf9, 0x9b, 0x5b, 0x15, 0x99, 0xcd, 0xc0, 0xef, 0x44, 0x4b, 0x5b, 0xdd, 0xbb, - 0x95, 0xd6, 0x50, 0x69, 0x89, 0x63, 0x51, 0x79, 0xb1, 0xf8, 0xec, 0xba, 0x2c, 0x76, 0x49, 0xd7, - 0xcd, 0xba, 0xad, 0x04, 0xab, 0xce, 0x1f, 0x0e, 0x1e, 0xa8, 0x79, 0x5c, 0x95, 0x1e, 0x15, 0x68, - 0x3e, 0x83, 0x07, 0xe8, 0x17, 0x0f, 0xa7, 0x26, 0xbe, 0x92, 0x29, 0x94, 0x7f, 0x1d, 0x2d, 0xf3, - 0x04, 0x15, 0x77, 0x38, 0x10, 0x2c, 0x5d, 0x41, 0xea, 0xfa, 0xac, 0x2a, 0x39, 0x04, 0x03, 0x26, - 0xae, 0xa6, 0x4b, 0x8c, 0x8c, 0x98, 0xd6, 0x77, 0x56, 0x9b, 0x8e, 0xa7, 0x23, 0xbd, 0xb2, 0x91, - 0xce, 0xaf, 0x45, 0x88, 0xfc, 0x54, 0x9a, 0x7c, 0x6d, 0x4a, 0xe9, 0x4a, 0x4c, 0x41, 0x66, 0x20, - 0x38, 0xbd, 0xa3, 0xdd, 0x6b, 0xa4, 0xaf, 0x82, 0x74, 0x0b, 0xc2, 0x77, 0x15, 0xa0, 0xa2, 0xdd, - 0x9e, 0x90, 0xe4, 0xf5, 0x06, 0xfc, 0xa1, 0xd2, 0x87, 0x48, 0xd3, 0x9e, 0x9b, 0xaf, 0x69, 0x35, - 0x06, 0x22, 0xb4, 0x2e, 0xce, 0xa9, 0xd2, 0x2d, 0x4e, 0xb0, 0xf2, 0x8b, 0xe3, 0x1c, 0x54, 0x91, - 0xb6, 0xf4, 0xd4, 0xad, 0xf4, 0xec, 0xd9, 0xf4, 0x58, 0x14, 0x18, 0x6c, 0x6a, 0x66, 0x52, 0x1f, - 0x52, 0x93, 0xd3, 0xb7, 0xb4, 0xc9, 0xfe, 0xf4, 0xc7, 0xbd, 0x30, 0xcd, 0xa1, 0x61, 0xc9, 0xc4, - 0x48, 0xea, 0xe6, 0x47, 0x5a, 0xe2, 0x44, 0x32, 0x7e, 0x2c, 0x19, 0x3b, 0x02, 0xe3, 0x0b, 0x3c, - 0x05, 0x10, 0x80, 0x8e, 0x36, 0x75, 0x47, 0x9f, 0x3a, 0x9e, 0x8c, 0x0d, 0xa6, 0xc7, 0x2e, 0x6b, - 0xbd, 0x98, 0x02, 0x94, 0x0b, 0xf8, 0xda, 0x28, 0x65, 0xdd, 0xfa, 0xc4, 0xc7, 0x5a, 0x2c, 0xa6, - 0xf5, 0x9d, 0xd3, 0xae, 0x1e, 0xd5, 0xa2, 0x27, 0x93, 0x77, 0x8e, 0x6a, 0xc3, 0x83, 0x40, 0x21, - 0x7d, 0xfd, 0x60, 0xea, 0xf8, 0xf8, 0xdd, 0x48, 0xb7, 0x6c, 0xd5, 0x9a, 0xef, 0x2d, 0x40, 0xc5, - 0xca, 0xfe, 0x70, 0xd0, 0x4d, 0x7b, 0x81, 0x27, 0xbd, 0x50, 0x3e, 0x5f, 0x2f, 0xd4, 0x59, 0xa8, - 0xd0, 0x0f, 0x31, 0x4e, 0x95, 0x6e, 0x72, 0x02, 0x4b, 0x43, 0xbc, 0x94, 0xdd, 0x13, 0x99, 0x8f, - 0xce, 0x69, 0x97, 0x4e, 0xea, 0xfd, 0x9f, 0x68, 0x37, 0x4e, 0x24, 0x13, 0x17, 0x33, 0x11, 0x15, - 0x2f, 0x79, 0x63, 0x21, 0x62, 0x2e, 0x4e, 0x38, 0x57, 0x32, 0x16, 0xcf, 0x7c, 0xd4, 0x93, 0x3a, - 0x71, 0x26, 0x19, 0x8f, 0xea, 0x27, 0xef, 0xac, 0x4f, 0xc6, 0xfa, 0xf1, 0x1f, 0x7d, 0x74, 0x40, - 0x3b, 0x32, 0xa6, 0x9d, 0x38, 0x44, 0x09, 0x90, 0x8d, 0x6a, 0xbe, 0xf6, 0xa7, 0x8e, 0xdc, 0xd2, - 0x23, 0x5d, 0xd0, 0x0b, 0xb9, 0x8d, 0x4f, 0xc6, 0x06, 0x61, 0x00, 0x70, 0x2f, 0xb0, 0x75, 0xe6, - 0x77, 0xa0, 0xc2, 0xd0, 0x81, 0x50, 0x58, 0x69, 0x73, 0xd5, 0x96, 0x3e, 0x4c, 0xe6, 0xe2, 0xab, - 0xaa, 0xf4, 0x92, 0x60, 0x02, 0x45, 0xa1, 0xa5, 0x63, 0xb7, 0x12, 0xf4, 0x2b, 0x61, 0x25, 0x44, - 0x19, 0xf6, 0xe8, 0xb8, 0x36, 0xdc, 0x93, 0x8c, 0x1f, 0xd3, 0xee, 0x7c, 0xa1, 0x0d, 0x5d, 0x4f, - 0xc6, 0x8e, 0xa4, 0xbf, 0xec, 0xd1, 0xe3, 0xc3, 0x98, 0xf3, 0x1b, 0xb9, 0xf8, 0x9b, 0x1c, 0x42, - 0xd0, 0x87, 0x64, 0x45, 0x3e, 0x42, 0x28, 0x7f, 0xc8, 0xa9, 0xd2, 0x10, 0x27, 0x30, 0x09, 0x62, - 0x84, 0xa3, 0xd5, 0x9f, 0x1c, 0x4b, 0x0d, 0x1f, 0x32, 0x57, 0xa6, 0xd6, 0x7b, 0x4d, 0x1f, 0xed, - 0x4f, 0xc6, 0x8f, 0xe9, 0xa7, 0x6e, 0xa5, 0x8e, 0x5f, 0xd0, 0x4f, 0xf4, 0xcd, 0x25, 0xa2, 0xdb, - 0xa4, 0x7a, 0x69, 0x73, 0x5d, 0xed, 0x2e, 0xe7, 0xd6, 0x1d, 0x8d, 0x4d, 0x75, 0x72, 0x39, 0xcc, - 0x1b, 0xbd, 0xff, 0x74, 0x6a, 0x72, 0x0c, 0xa8, 0x54, 0xcc, 0x25, 0xa2, 0xae, 0xfa, 0xda, 0xba, - 0x86, 0xba, 0xfa, 0xda, 0xba, 0xfa, 0x26, 0x13, 0x33, 0x75, 0xf4, 0x5a, 0xea, 0xb3, 0xa3, 0x26, - 0x2b, 0x49, 0x1f, 0xfe, 0x34, 0x3d, 0x16, 0x4d, 0x4d, 0xdf, 0xd4, 0x8f, 0x5c, 0xaa, 0x90, 0x99, - 0xea, 0xf0, 0xbb, 0xd0, 0xd2, 0x36, 0x37, 0x1e, 0xf0, 0xd2, 0xd5, 0x0b, 0x2f, 0xf8, 0x6d, 0x04, - 0x0b, 0xa6, 0x42, 0x99, 0x2a, 0x3d, 0x2d, 0xd0, 0x7c, 0xc6, 0xda, 0x85, 0x2f, 0x87, 0xab, 0x41, - 0xeb, 0x3b, 0x95, 0x1e, 0x1b, 0x97, 0x69, 0x32, 0x3f, 0xcc, 0xa1, 0x95, 0x7e, 0x25, 0xbc, 0x2f, - 0x10, 0x6c, 0x69, 0x54, 0xc2, 0x61, 0x9f, 0xbf, 0x39, 0x54, 0xfa, 0xa8, 0x83, 0x2b, 0x2f, 0x16, - 0xd7, 0x66, 0x17, 0x55, 0x6f, 0x43, 0x03, 0x56, 0x9f, 0x9d, 0x57, 0xdc, 0x40, 0xbb, 0x6f, 0xe6, - 0x58, 0x6a, 0x7a, 0x54, 0xbb, 0x10, 0x4f, 0x8d, 0x45, 0xd2, 0x93, 0x5f, 0xc1, 0xb6, 0x9c, 0x19, - 0x8d, 0xa4, 0xaf, 0x74, 0xc1, 0x04, 0xd0, 0x4f, 0xde, 0x01, 0xb8, 0x9c, 0x4d, 0x82, 0xff, 0xd7, - 0x9c, 0x29, 0x05, 0xd6, 0xb8, 0x43, 0x3e, 0x8f, 0x59, 0xaf, 0xc7, 0x48, 0xbd, 0xe6, 0xeb, 0x02, - 0x16, 0xb7, 0x26, 0xa8, 0x4a, 0x01, 0x21, 0x2f, 0x15, 0xf1, 0x6d, 0x3a, 0x6b, 0x48, 0xdd, 0xe8, - 0xc2, 0x36, 0x6a, 0x98, 0xfc, 0xea, 0xa8, 0x76, 0xa5, 0x1b, 0x26, 0x76, 0xaa, 0xbf, 0x4f, 0x1f, - 0xbd, 0x46, 0xc6, 0x9e, 0xee, 0x8d, 0x9d, 0xed, 0x9e, 0xd4, 0x44, 0x3f, 0x1e, 0x2f, 0xa3, 0x09, - 0xb4, 0x45, 0xd0, 0x90, 0xbc, 0xc5, 0xf1, 0xff, 0x89, 0x43, 0x8f, 0xd2, 0x04, 0xc9, 0xdb, 0xe9, - 0xf6, 0x7b, 0x14, 0xb3, 0x3d, 0xa5, 0xa4, 0x3d, 0x3f, 0x9c, 0xa7, 0x3d, 0x76, 0xec, 0x9a, 0xdf, - 0xab, 0xd2, 0x5f, 0x0a, 0x8f, 0x61, 0x54, 0x25, 0x97, 0x94, 0xe8, 0x86, 0x46, 0xa5, 0x67, 0xcf, - 0x66, 0x4e, 0xdf, 0x4a, 0xf5, 0xdf, 0xd1, 0x23, 0x57, 0xb3, 0x1a, 0xa5, 0x0d, 0x4f, 0xa5, 0x8e, - 0x8f, 0xfb, 0xda, 0x3b, 0x43, 0x90, 0x8c, 0x1b, 0x36, 0x79, 0x47, 0x3b, 0x33, 0x9e, 0x9e, 0x1d, - 0x4e, 0x8f, 0x45, 0x31, 0x9b, 0x24, 0x19, 0x52, 0x13, 0xfd, 0x77, 0x23, 0xdd, 0x58, 0xac, 0x3b, - 0x75, 0x31, 0xd5, 0x7f, 0x47, 0xeb, 0xfb, 0x2c, 0x33, 0x1a, 0xd1, 0x6f, 0x74, 0xcb, 0xf3, 0xb4, - 0x82, 0xff, 0x1f, 0x39, 0xb4, 0xdc, 0x1f, 0xf0, 0x5a, 0xcd, 0x7a, 0x9c, 0x34, 0xeb, 0x89, 0x9c, - 0xe9, 0x63, 0xe1, 0xd4, 0xa8, 0x9c, 0x2a, 0x0d, 0x72, 0x82, 0x2d, 0x9f, 0xf8, 0x3b, 0xda, 0x86, - 0x23, 0xdd, 0xa9, 0xee, 0x3b, 0x59, 0xb5, 0xd7, 0xa3, 0xdd, 0xe9, 0x99, 0x99, 0xd4, 0xd9, 0x49, - 0x6d, 0xe6, 0x04, 0x96, 0x15, 0x02, 0x9e, 0x16, 0x25, 0xa8, 0x9f, 0xb8, 0xae, 0x0f, 0x4c, 0x02, - 0x10, 0x06, 0x26, 0xb7, 0xda, 0x18, 0x38, 0x34, 0x95, 0x9c, 0xbe, 0x9c, 0x8c, 0x0d, 0x98, 0x34, - 0x6b, 0x9c, 0x8d, 0xfa, 0xd0, 0x70, 0xf2, 0xab, 0xb3, 0x94, 0x67, 0x0d, 0x75, 0xeb, 0x27, 0xae, - 0xcb, 0xb6, 0xda, 0xf0, 0x9f, 0x73, 0x68, 0x69, 0x28, 0xec, 0x0e, 0x77, 0x84, 0x4a, 0xd7, 0x10, - 0x66, 0x71, 0x86, 0x53, 0xa5, 0x5f, 0x0a, 0x14, 0x26, 0xca, 0x2c, 0x97, 0x83, 0x42, 0xd2, 0x07, - 0x67, 0xe0, 0xd3, 0x29, 0xd7, 0x49, 0x4d, 0xae, 0xfa, 0xcd, 0x73, 0x89, 0xa8, 0xbc, 0xa3, 0xbe, - 0x1e, 0x7e, 0xd5, 0xd6, 0x6d, 0xad, 0xa3, 0xc0, 0x4d, 0xd2, 0xd6, 0x1d, 0x72, 0x1d, 0x61, 0x0d, - 0xae, 0x26, 0x97, 0xb4, 0xd5, 0xf5, 0xae, 0xd4, 0xe4, 0xda, 0x5e, 0xff, 0x75, 0xcd, 0xcb, 0xc1, - 0x1f, 0xcb, 0x85, 0x46, 0x6e, 0x79, 0x19, 0xcd, 0x2c, 0x17, 0x1a, 0x79, 0xe5, 0xa5, 0x90, 0x55, - 0x5e, 0x61, 0xcf, 0x29, 0xd3, 0x5a, 0xe1, 0x7d, 0x1c, 0xb6, 0xd5, 0x60, 0xe9, 0x13, 0xcc, 0x3e, - 0x4e, 0x61, 0xf6, 0x7d, 0x5c, 0x3f, 0x7b, 0x53, 0x3f, 0x79, 0x9d, 0xec, 0xe3, 0x34, 0x9d, 0xef, - 0x40, 0xc5, 0x74, 0x31, 0x12, 0x26, 0xf9, 0x24, 0x21, 0xd1, 0x88, 0xd9, 0x2f, 0x0b, 0x17, 0x9f, - 0x67, 0xd7, 0xb8, 0xc9, 0x22, 0xcb, 0x3b, 0xfc, 0x5e, 0x25, 0xd8, 0xea, 0x3e, 0xb0, 0x3e, 0xd0, - 0x49, 0xfe, 0x56, 0x7c, 0x5d, 0xf3, 0x58, 0x70, 0xb5, 0x5c, 0x68, 0xc0, 0xe5, 0x65, 0x34, 0x41, - 0xfe, 0x0b, 0x99, 0xa5, 0xc7, 0xff, 0x15, 0x87, 0x1e, 0x73, 0x77, 0x84, 0x03, 0x9b, 0x15, 0x3f, - 0x16, 0x7f, 0x14, 0xe0, 0x65, 0x78, 0xbe, 0x84, 0x4a, 0x9f, 0x22, 0x92, 0x19, 0x65, 0xd4, 0xf3, - 0x61, 0x89, 0x61, 0xdb, 0x3e, 0x07, 0x32, 0x1b, 0x59, 0xc4, 0xda, 0xed, 0xcf, 0xb5, 0x89, 0xd3, - 0xda, 0xe8, 0x38, 0xcc, 0xaa, 0x4a, 0x07, 0x8c, 0x38, 0x11, 0xd9, 0x2a, 0x1d, 0xda, 0xc0, 0x17, - 0x26, 0x5a, 0x6a, 0x7a, 0x08, 0x30, 0x53, 0x23, 0x3d, 0x06, 0x72, 0x72, 0x7a, 0x90, 0x25, 0x0c, - 0xf3, 0x24, 0x19, 0x9b, 0x48, 0x0f, 0xde, 0xd6, 0x86, 0x4e, 0xca, 0xf3, 0x55, 0x07, 0xcf, 0x9d, - 0xc2, 0xb0, 0xd2, 0xd6, 0xde, 0xea, 0x0e, 0x2b, 0xa5, 0x6b, 0xf3, 0x8b, 0x33, 0x2e, 0x7f, 0x28, - 0x8c, 0xd7, 0x51, 0x13, 0xc5, 0x73, 0x06, 0xfc, 0x7b, 0x7c, 0xcd, 0x35, 0x7e, 0x55, 0x6a, 0x11, - 0xcc, 0xcc, 0xe2, 0xae, 0x79, 0x8a, 0x48, 0xc6, 0xe2, 0xe1, 0x60, 0x87, 0xa2, 0x9f, 0xba, 0x55, - 0xe9, 0x60, 0xab, 0x98, 0x3e, 0xfc, 0xa9, 0x76, 0x64, 0x1c, 0xef, 0x50, 0x7d, 0xc3, 0x3e, 0x5a, - 0x42, 0xa5, 0x03, 0x84, 0x18, 0xe3, 0x5b, 0x1f, 0x1f, 0xd3, 0xcf, 0xcd, 0x52, 0x05, 0xc7, 0x2c, - 0x8a, 0xff, 0x77, 0x1c, 0x2a, 0x22, 0x1b, 0xb1, 0xcb, 0xbf, 0x27, 0x50, 0xfa, 0xf4, 0xc2, 0x42, - 0x58, 0x9d, 0x81, 0x08, 0x3b, 0xce, 0x11, 0x4e, 0x95, 0x0e, 0x71, 0x82, 0x95, 0x5f, 0x3c, 0x80, - 0x3b, 0xb3, 0xdb, 0x90, 0x85, 0x40, 0x5e, 0x20, 0x25, 0x56, 0x3a, 0x60, 0x45, 0x2b, 0xa1, 0xdd, - 0xbb, 0x3a, 0x82, 0xad, 0xeb, 0xf7, 0x29, 0xbb, 0xf7, 0x06, 0x02, 0x2d, 0xbb, 0x7c, 0x6d, 0xee, - 0x66, 0xac, 0x4d, 0xfb, 0x3a, 0x7d, 0xad, 0x8a, 0xb7, 0x59, 0x01, 0x40, 0x6a, 0xa2, 0x9f, 0xcd, - 0xac, 0xf7, 0x9d, 0x4c, 0x47, 0x7a, 0xf5, 0xd3, 0x53, 0x19, 0xb5, 0x4f, 0x9b, 0xba, 0x93, 0x8c, - 0x0d, 0x68, 0xc3, 0x51, 0xac, 0xea, 0x11, 0x96, 0xa6, 0x25, 0xb0, 0x1e, 0x23, 0x5b, 0xb5, 0xe0, - 0x77, 0xa1, 0xc2, 0xb6, 0x80, 0xb7, 0xa3, 0x55, 0x71, 0xd5, 0x96, 0x3a, 0xc8, 0x6c, 0x76, 0xaa, - 0xd2, 0x1b, 0x82, 0x09, 0x34, 0xb5, 0x93, 0xf1, 0x31, 0xed, 0xdc, 0x29, 0x57, 0x6d, 0xb9, 0x53, - 0xd2, 0x6f, 0x4f, 0x6b, 0x47, 0x2e, 0xc2, 0x0c, 0xd0, 0x4f, 0xdd, 0x82, 0x94, 0xf4, 0xcc, 0xb5, - 0xd4, 0xd5, 0x69, 0x87, 0x16, 0xbf, 0xa0, 0x25, 0x0e, 0x56, 0xc8, 0x66, 0x7e, 0xfe, 0x77, 0x68, - 0x05, 0x29, 0xcd, 0xd2, 0x98, 0x9f, 0x21, 0xc5, 0xec, 0x54, 0xa5, 0x46, 0x21, 0x2b, 0x49, 0x94, - 0xb4, 0xa9, 0x84, 0xd6, 0x7b, 0xd9, 0x54, 0x8d, 0x41, 0x1a, 0x33, 0x34, 0x7d, 0xfd, 0xe2, 0xe1, - 0xf4, 0xd4, 0x21, 0xda, 0x49, 0x30, 0x4d, 0xb1, 0xb0, 0xf1, 0x49, 0x5c, 0x8b, 0x24, 0xca, 0x8d, - 0x92, 0xb3, 0x48, 0xf2, 0x3e, 0xb4, 0xd2, 0x17, 0x72, 0x06, 0xda, 0xda, 0x4c, 0x95, 0xb9, 0xb4, - 0x8c, 0xac, 0x98, 0x9f, 0xa9, 0xd2, 0x4f, 0x84, 0xec, 0x34, 0x4b, 0x9f, 0x89, 0x6b, 0xbd, 0xd7, - 0xb4, 0xde, 0x1b, 0x50, 0x76, 0x25, 0xb3, 0x28, 0xcc, 0x92, 0xb2, 0xf3, 0xf2, 0x9b, 0x50, 0xb1, - 0x57, 0x09, 0x79, 0x82, 0x3e, 0x62, 0x2b, 0x29, 0x7d, 0x96, 0xb4, 0xf3, 0x07, 0xaa, 0xf4, 0x8c, - 0xc0, 0xc2, 0x0d, 0x2d, 0x3a, 0x35, 0x89, 0x77, 0x46, 0x7d, 0x68, 0x28, 0x3d, 0x7b, 0x5d, 0x66, - 0x11, 0xf8, 0xcb, 0x1c, 0x5a, 0x49, 0x67, 0x95, 0xd3, 0x1d, 0x56, 0x9a, 0x03, 0xc1, 0x03, 0xa5, - 0x3f, 0x20, 0xc4, 0x7e, 0xab, 0x4a, 0xfb, 0x85, 0xec, 0x34, 0x51, 0xb1, 0x94, 0xa4, 0xbe, 0xcf, - 0x88, 0x72, 0x3f, 0x9d, 0xbe, 0xd2, 0x85, 0x65, 0xc8, 0xf8, 0x20, 0xd6, 0xd5, 0xfb, 0x0e, 0x99, - 0xd6, 0x07, 0x68, 0x9d, 0x7e, 0x7a, 0x0a, 0x2f, 0x83, 0xe9, 0xf8, 0xdd, 0x48, 0x17, 0xf4, 0x78, - 0xf9, 0xee, 0x0e, 0x5f, 0xab, 0x57, 0x09, 0xae, 0xf7, 0xb5, 0xb5, 0x07, 0x82, 0x61, 0x25, 0x58, - 0x61, 0x30, 0x02, 0x13, 0x57, 0xce, 0x2e, 0x97, 0xaf, 0x47, 0x45, 0xbe, 0xd0, 0xae, 0xd0, 0x5e, - 0x77, 0x50, 0xf1, 0x96, 0xfe, 0x90, 0x74, 0x2a, 0x51, 0x3a, 0x2d, 0xa8, 0xf8, 0x0c, 0xd3, 0x9d, - 0x37, 0x92, 0xf1, 0xcf, 0x72, 0xbb, 0x53, 0x2e, 0xf4, 0x85, 0x1a, 0x09, 0x32, 0xbf, 0x0b, 0x21, - 0x2c, 0xb9, 0xc2, 0x3a, 0x2f, 0x7d, 0x8e, 0xb4, 0x98, 0x8c, 0x12, 0x03, 0x16, 0xd7, 0xb1, 0x53, - 0x04, 0xef, 0xc9, 0x47, 0x2f, 0xeb, 0xa7, 0xa7, 0x2c, 0x04, 0x48, 0xd6, 0xfa, 0xce, 0xc0, 0xf2, - 0x92, 0x99, 0xbc, 0xfc, 0x15, 0x0e, 0xad, 0x80, 0x06, 0x9a, 0xfd, 0xfa, 0x3c, 0x29, 0xe5, 0x77, - 0xaa, 0xf4, 0x5b, 0x21, 0x2b, 0x49, 0xf4, 0x69, 0x33, 0x1f, 0x66, 0x35, 0xd9, 0xe0, 0x6f, 0x71, - 0xa3, 0x9b, 0x08, 0x7b, 0x59, 0xb8, 0xbf, 0xad, 0xf2, 0xd7, 0x7b, 0x5a, 0x03, 0x1d, 0x5e, 0xa8, - 0x60, 0xa5, 0xa9, 0x1c, 0xa7, 0x3e, 0x89, 0xcb, 0x59, 0x45, 0xf3, 0x7f, 0xcb, 0xa1, 0x15, 0x04, - 0x59, 0xf2, 0x78, 0x02, 0x1d, 0xfe, 0xb0, 0xab, 0xb6, 0xb4, 0x9c, 0x54, 0xf4, 0x9f, 0x71, 0xaa, - 0x34, 0xc3, 0x09, 0x59, 0x89, 0xe2, 0xa7, 0x54, 0x26, 0xb7, 0x8c, 0x14, 0xf1, 0x63, 0xe9, 0x9b, - 0x57, 0xb4, 0xa1, 0xdb, 0xae, 0x5a, 0x5b, 0x49, 0x77, 0x23, 0xdd, 0x50, 0x5b, 0xed, 0xc8, 0x85, - 0xf4, 0xc1, 0x19, 0x3c, 0xb8, 0x84, 0x53, 0x9b, 0xf8, 0xda, 0xe1, 0x89, 0xf4, 0x54, 0xd7, 0xdd, - 0x48, 0x77, 0xea, 0x6a, 0x17, 0xc8, 0xf3, 0xda, 0x68, 0x5c, 0x3f, 0x33, 0x95, 0x8c, 0x1d, 0x4d, - 0x4d, 0x5f, 0x48, 0xc6, 0x22, 0x20, 0xf6, 0x93, 0xf2, 0x21, 0x07, 0x96, 0xf6, 0x22, 0x96, 0xf8, - 0x0f, 0xe8, 0xa9, 0xf8, 0x17, 0xa9, 0xc9, 0x31, 0x93, 0xfb, 0xb0, 0xb4, 0xe5, 0xac, 0xca, 0xf3, - 0x32, 0x5a, 0xd6, 0xa6, 0x84, 0x42, 0xee, 0x66, 0xa5, 0xb4, 0x82, 0x34, 0xf2, 0x15, 0x55, 0xfa, - 0xb1, 0x60, 0xc0, 0x0c, 0xeb, 0x11, 0x08, 0x0e, 0x5a, 0xa2, 0x5b, 0x8b, 0xc5, 0xf0, 0xaa, 0x1f, - 0xe9, 0xd1, 0x2e, 0xdd, 0x48, 0xdf, 0xbc, 0xac, 0x0d, 0x5e, 0xd0, 0xce, 0x5e, 0xd4, 0x6e, 0x9c, - 0x48, 0x5d, 0x8a, 0xcb, 0x46, 0x26, 0x7e, 0x2b, 0x5a, 0xe6, 0x0b, 0x6d, 0xf3, 0xed, 0x57, 0xbc, - 0xa5, 0x02, 0x99, 0x98, 0xa2, 0x2a, 0xad, 0x17, 0x0c, 0x98, 0xf8, 0x03, 0xcc, 0x4a, 0x26, 0xaf, - 0xe7, 0x2e, 0x0b, 0xfd, 0xf6, 0xed, 0xcc, 0x41, 0xca, 0x93, 0x65, 0x03, 0x7d, 0xcd, 0xab, 0xa8, - 0x98, 0x31, 0x17, 0xf0, 0xab, 0xd0, 0xa2, 0x16, 0xe5, 0x00, 0x98, 0x29, 0x65, 0xfc, 0x93, 0x7f, - 0x04, 0x2d, 0xe9, 0x74, 0xb7, 0x76, 0x50, 0xc3, 0xa2, 0x0c, 0x1f, 0xd5, 0x05, 0xaf, 0x70, 0x6b, - 0xde, 0x41, 0x2b, 0xec, 0xea, 0x78, 0x9e, 0xdc, 0x1b, 0xd9, 0xdc, 0x79, 0xe4, 0xc2, 0x9a, 0x2d, - 0xdb, 0xdb, 0x43, 0x0d, 0xad, 0x1d, 0xcd, 0x3e, 0x3f, 0x4b, 0xfa, 0x3d, 0xb4, 0x2a, 0x5b, 0xc7, - 0xfd, 0xee, 0x88, 0x6f, 0x47, 0xc5, 0x8c, 0xc2, 0x94, 0x87, 0xae, 0x60, 0xa7, 0xfb, 0x48, 0x3e, - 0x61, 0x96, 0x25, 0xf8, 0x13, 0xb4, 0xc2, 0xbe, 0x25, 0x3e, 0x48, 0x37, 0x56, 0xbf, 0xae, 0x4a, - 0xd5, 0xe8, 0x15, 0xc1, 0xb0, 0x17, 0x8b, 0x55, 0x60, 0x20, 0x65, 0xa5, 0x35, 0xb0, 0x9e, 0x26, - 0xe3, 0x83, 0xa0, 0x25, 0xb2, 0xb3, 0xa6, 0xec, 0x7f, 0x58, 0x89, 0x16, 0xe3, 0x0a, 0xf1, 0xaf, - 0xa0, 0xa5, 0x58, 0x86, 0x35, 0x8d, 0xcc, 0x0e, 0x55, 0x7a, 0x4a, 0xa0, 0x20, 0xf1, 0x61, 0xd8, - 0xd3, 0x92, 0xf1, 0x63, 0x86, 0x20, 0xe0, 0xaa, 0x95, 0x69, 0x22, 0xff, 0x2a, 0x5a, 0xe6, 0xf3, - 0xfb, 0x95, 0xa0, 0xab, 0x81, 0x5a, 0x8f, 0x89, 0x65, 0xd4, 0x80, 0x89, 0x0f, 0x41, 0x5e, 0x62, - 0x3f, 0x39, 0x96, 0x8c, 0x4d, 0xbb, 0x1a, 0x64, 0x23, 0x8d, 0x7f, 0x0f, 0x2d, 0x37, 0x08, 0x12, - 0xa9, 0x11, 0x4c, 0xc6, 0x2f, 0xab, 0xd2, 0x8b, 0x82, 0x2d, 0x41, 0xfc, 0x81, 0x3e, 0x1a, 0xd7, - 0xce, 0x1f, 0xa5, 0x56, 0xa4, 0x89, 0x53, 0xa9, 0x6b, 0x57, 0x92, 0xb1, 0xcf, 0x4d, 0xd9, 0x99, - 0x32, 0x0b, 0x5b, 0x1e, 0xfe, 0x47, 0x68, 0x91, 0xb3, 0x61, 0x07, 0x31, 0xfc, 0x96, 0x80, 0x21, - 0x0b, 0x7f, 0x8b, 0x2b, 0xa1, 0x3e, 0xce, 0x86, 0x1d, 0x54, 0x8c, 0xc1, 0x50, 0x7e, 0x1d, 0x5a, - 0xd4, 0xa6, 0xb4, 0x11, 0xd3, 0x6e, 0x49, 0xcd, 0x93, 0xaa, 0xf4, 0xb8, 0x80, 0xbf, 0x45, 0xde, - 0xac, 0xbc, 0x36, 0x71, 0xda, 0xc0, 0x6f, 0x53, 0xda, 0xf8, 0x57, 0xd0, 0xa2, 0xcd, 0x0d, 0x3b, - 0x88, 0x49, 0xb7, 0xa4, 0xe6, 0x39, 0x55, 0x7a, 0x56, 0xc0, 0xdf, 0xe2, 0x93, 0x80, 0xbf, 0xd9, - 0x20, 0xce, 0xd6, 0x70, 0x83, 0x8c, 0x51, 0xf8, 0x21, 0x4b, 0x39, 0x00, 0xf3, 0xed, 0x3e, 0x55, - 0x0a, 0x9b, 0xba, 0xc1, 0x07, 0x40, 0x00, 0x46, 0xc7, 0xa0, 0xd1, 0xa7, 0x5f, 0xbc, 0xa3, 0x0f, - 0x4c, 0x6a, 0x09, 0x2c, 0xa9, 0x24, 0x13, 0xb1, 0x54, 0xe2, 0x13, 0x6d, 0x72, 0x24, 0x79, 0xa7, - 0x3f, 0x35, 0xd2, 0x33, 0x97, 0xe8, 0xb7, 0x74, 0x85, 0x4a, 0x07, 0x11, 0xf7, 0xeb, 0xc8, 0x4f, - 0x43, 0x19, 0xa8, 0x74, 0x6c, 0x92, 0x5c, 0x5b, 0xeb, 0x6a, 0x2b, 0x1d, 0xf3, 0x48, 0xfe, 0x12, - 0x5a, 0xfa, 0x9b, 0x80, 0x5f, 0x31, 0x8d, 0xc0, 0x15, 0xaa, 0xf4, 0x9c, 0xb0, 0x18, 0x83, 0xc4, - 0xb5, 0xb4, 0xfd, 0x43, 0x58, 0x01, 0xd4, 0xa2, 0xf1, 0xec, 0x1e, 0xa7, 0x19, 0xf9, 0xbf, 0x44, - 0xc5, 0x78, 0x36, 0x6c, 0x0e, 0x06, 0x3a, 0xda, 0x5d, 0xb5, 0xd4, 0xa0, 0xfb, 0xae, 0x2a, 0xbd, - 0x2d, 0xb0, 0x70, 0xf1, 0x4d, 0x2a, 0x1b, 0xf5, 0x47, 0xb4, 0x1b, 0xe7, 0x53, 0x23, 0x3d, 0xf5, - 0x46, 0x9a, 0xc3, 0x55, 0x5b, 0xe9, 0x60, 0x29, 0x97, 0x27, 0xa7, 0x7b, 0x9d, 0x12, 0x2d, 0x7d, - 0x46, 0xd5, 0x6e, 0x9c, 0x4f, 0xc6, 0x07, 0x4d, 0x52, 0x15, 0x32, 0x4b, 0x96, 0xdf, 0xc4, 0x9e, - 0x91, 0x80, 0x8d, 0xb7, 0x5c, 0x95, 0x7e, 0xc8, 0x9e, 0x91, 0x94, 0x66, 0x95, 0x6c, 0x8a, 0x41, - 0xec, 0x59, 0xc8, 0x46, 0xb4, 0x68, 0x67, 0x83, 0x93, 0x58, 0x74, 0xe9, 0x2c, 0xc6, 0xdf, 0xe2, - 0xea, 0xac, 0xbc, 0x3b, 0x1b, 0x9c, 0x0e, 0x57, 0xad, 0x8c, 0xd3, 0xf8, 0xf7, 0xcc, 0x53, 0x81, - 0xe5, 0x96, 0x8c, 0x68, 0x9c, 0x0a, 0xbc, 0xc4, 0x66, 0x84, 0xb3, 0x01, 0x4b, 0xa7, 0xbe, 0x33, - 0xab, 0xdd, 0x3e, 0x3f, 0x97, 0x88, 0xea, 0xb7, 0x6f, 0x68, 0xa3, 0x5f, 0xe0, 0x8e, 0x3d, 0x72, - 0x51, 0xbb, 0x7d, 0x3e, 0x35, 0xd1, 0x6f, 0x9e, 0x1c, 0xd4, 0xa3, 0xa5, 0xed, 0xee, 0x50, 0x68, - 0x9f, 0xb7, 0xb4, 0xc4, 0x3a, 0x3a, 0xa0, 0x20, 0xb1, 0x42, 0x9b, 0x3c, 0x8f, 0x49, 0x19, 0x56, - 0x42, 0x6d, 0xea, 0x50, 0xea, 0x62, 0x57, 0xa5, 0x83, 0xda, 0x15, 0xc0, 0x60, 0x76, 0xf5, 0x63, - 0x6d, 0xea, 0x90, 0x4c, 0xb3, 0xf0, 0xef, 0x23, 0x32, 0xaa, 0xc4, 0x4e, 0x5b, 0x52, 0xe3, 0x52, - 0xa5, 0x4d, 0x02, 0x1d, 0x40, 0xf1, 0x27, 0x59, 0x03, 0x4d, 0xac, 0xf8, 0xec, 0x80, 0xbc, 0xe6, - 0xb0, 0x8c, 0x9d, 0x64, 0x9f, 0x04, 0xed, 0x27, 0x19, 0x1f, 0x74, 0x4a, 0x32, 0x21, 0xcb, 0x4b, - 0xa8, 0xd0, 0xab, 0x74, 0xfa, 0x30, 0x73, 0x00, 0x43, 0x6e, 0xcd, 0x0f, 0x55, 0xa9, 0x4c, 0x30, - 0x81, 0xe2, 0xa3, 0x4e, 0xc9, 0x61, 0x2c, 0xd1, 0xf4, 0xe4, 0x57, 0xda, 0xa5, 0xc3, 0xae, 0x5a, - 0x6d, 0xe8, 0xb6, 0x6c, 0x62, 0xf0, 0x0a, 0x5a, 0x81, 0x07, 0xd6, 0x50, 0x6c, 0x5c, 0xb5, 0x60, - 0xf1, 0xad, 0xc1, 0x5c, 0x4e, 0xc8, 0x4a, 0x12, 0xcb, 0x69, 0x9d, 0x8d, 0xad, 0x9d, 0xf6, 0x36, - 0x51, 0x51, 0xe8, 0x7c, 0x32, 0xa4, 0x08, 0x7b, 0x4e, 0xde, 0x83, 0x0a, 0x09, 0x04, 0xf3, 0x9c, - 0x87, 0x48, 0x01, 0x9b, 0x55, 0xa9, 0x56, 0x30, 0x81, 0xe2, 0x2b, 0x74, 0x19, 0x12, 0x05, 0xd5, - 0x90, 0x63, 0xb4, 0x68, 0xaf, 0x36, 0xfc, 0x99, 0x73, 0xe7, 0xb6, 0xf5, 0xae, 0x5a, 0x27, 0x43, - 0xde, 0x14, 0x07, 0x9d, 0x3b, 0xb7, 0xc9, 0x26, 0x0d, 0xbe, 0x09, 0x0a, 0x21, 0xc7, 0x6a, 0xbc, - 0xb5, 0x7d, 0x9b, 0x40, 0xb1, 0x82, 0xd6, 0x9f, 0x9c, 0xa9, 0x55, 0x3a, 0x40, 0x2c, 0xd3, 0x86, - 0x7b, 0x92, 0xb1, 0x4f, 0xb1, 0x64, 0xc0, 0x24, 0xca, 0x66, 0x26, 0xfe, 0xa7, 0xa8, 0x88, 0x72, - 0xcf, 0xce, 0x97, 0xa8, 0x91, 0x93, 0xb0, 0x6a, 0x0b, 0x2a, 0xae, 0x82, 0xac, 0xbe, 0xf6, 0xce, - 0x97, 0xb4, 0xd1, 0xeb, 0xda, 0xb9, 0x88, 0x6c, 0x25, 0xf2, 0x9b, 0x50, 0x21, 0x1e, 0x2c, 0x52, - 0xab, 0x47, 0xac, 0xe3, 0x23, 0x13, 0x28, 0x3e, 0x61, 0x4d, 0xda, 0xd1, 0x71, 0x73, 0x3e, 0x18, - 0xf5, 0x30, 0xd0, 0x78, 0x05, 0x2d, 0x0d, 0xbb, 0x43, 0x2d, 0xae, 0xda, 0xd2, 0xd5, 0x84, 0xca, - 0x36, 0x55, 0xfa, 0xb9, 0x40, 0x41, 0xe2, 0x1b, 0xb4, 0xf2, 0xc6, 0xa9, 0x4d, 0x72, 0x7a, 0x9a, - 0x9e, 0x1a, 0x25, 0xa7, 0x7b, 0xb1, 0x9e, 0x7c, 0xfc, 0x8b, 0xf4, 0xd4, 0x6d, 0x30, 0xb5, 0x12, - 0x23, 0xfb, 0x4c, 0x3a, 0xf6, 0x29, 0x2d, 0x97, 0x18, 0x66, 0x64, 0x4a, 0x89, 0xdf, 0x81, 0x96, - 0xef, 0x71, 0x63, 0xad, 0x4e, 0x56, 0xdc, 0xa1, 0x80, 0x9f, 0xd8, 0x17, 0xe9, 0x09, 0x8e, 0x2d, - 0x41, 0x5c, 0x9b, 0x8c, 0x1d, 0x49, 0xc6, 0x8e, 0xea, 0xe7, 0x6f, 0xd1, 0xb2, 0x89, 0x0c, 0xa4, - 0x9f, 0xba, 0x05, 0x62, 0x90, 0x6c, 0xc3, 0xe6, 0x7f, 0x87, 0x90, 0x67, 0xaf, 0x3b, 0x48, 0x2d, - 0xba, 0x8f, 0x11, 0xa2, 0xbf, 0x52, 0xa5, 0xf7, 0x04, 0x06, 0x2c, 0x6e, 0x83, 0x4d, 0x27, 0x3d, - 0x39, 0x96, 0xbe, 0x89, 0xa7, 0x15, 0xd8, 0x2a, 0x1a, 0xb6, 0x37, 0x36, 0x35, 0x48, 0xae, 0xda, - 0x5d, 0x35, 0xef, 0xec, 0x7a, 0x73, 0xfb, 0x0e, 0x59, 0x8f, 0xf6, 0x6b, 0xd7, 0x87, 0x70, 0x41, - 0xc3, 0x83, 0xc9, 0xe9, 0xd3, 0xe9, 0x9b, 0x77, 0x30, 0x92, 0x5c, 0x87, 0x71, 0xf0, 0x8c, 0xb9, - 0x73, 0x53, 0x8b, 0xf6, 0xea, 0xa3, 0x7d, 0x32, 0x43, 0xba, 0xfa, 0x1d, 0x55, 0xda, 0x89, 0x9a, - 0x04, 0xb2, 0xf5, 0x8a, 0x5b, 0xe9, 0x99, 0x26, 0xec, 0xb1, 0xf9, 0xb6, 0x6c, 0x76, 0x53, 0xc0, - 0x52, 0xe5, 0x47, 0x9f, 0x51, 0xa6, 0x95, 0x8c, 0x11, 0xa6, 0xd8, 0x8c, 0x19, 0x21, 0x2c, 0xc8, - 0xb2, 0x7f, 0xbb, 0x02, 0xad, 0xb0, 0x9b, 0x5b, 0xf9, 0x9d, 0xa6, 0xd6, 0xe4, 0x6a, 0xe8, 0x7c, - 0xd1, 0xe9, 0xaa, 0x95, 0xe9, 0x26, 0x5f, 0xa9, 0x4a, 0x15, 0x42, 0x76, 0x9a, 0xf8, 0x28, 0x15, - 0xfd, 0x22, 0xd3, 0x18, 0x04, 0x53, 0x48, 0xbf, 0x71, 0x51, 0xce, 0x46, 0xe4, 0x3d, 0x68, 0x65, - 0x48, 0x09, 0x92, 0xa5, 0x6b, 0xd0, 0x2d, 0xb0, 0xcc, 0xee, 0xd9, 0x69, 0xe2, 0xb3, 0x40, 0x97, - 0x82, 0xa9, 0xa5, 0x74, 0xa4, 0x27, 0xab, 0x90, 0xac, 0x5c, 0xbc, 0x8c, 0x4a, 0xda, 0xdc, 0xfb, - 0x71, 0x47, 0x35, 0x04, 0xbc, 0xf5, 0x1d, 0x6d, 0x44, 0x48, 0x28, 0x81, 0xaa, 0xdb, 0x53, 0x0c, - 0x26, 0x9f, 0x8c, 0x1d, 0xd1, 0x47, 0x23, 0xda, 0xa5, 0xab, 0x0d, 0x01, 0xaf, 0x7e, 0xe2, 0x7a, - 0xe6, 0xf0, 0x90, 0x6c, 0x47, 0xe4, 0x77, 0x12, 0x9a, 0x8d, 0x50, 0x12, 0xa6, 0x09, 0x42, 0xc2, - 0x06, 0x55, 0xaa, 0x12, 0xec, 0x29, 0xe2, 0x93, 0xb4, 0x33, 0x08, 0xc1, 0xd4, 0x48, 0x0f, 0x4d, - 0x62, 0xe8, 0x5a, 0xc8, 0xfc, 0x00, 0x87, 0x96, 0x2b, 0x7e, 0xf7, 0xee, 0x56, 0x65, 0x67, 0x83, - 0xd3, 0xe9, 0xf7, 0x11, 0x79, 0xa2, 0xb0, 0xc6, 0xa7, 0x4a, 0x7b, 0x04, 0x5b, 0x82, 0xb8, 0x93, - 0xfd, 0x02, 0x21, 0x5b, 0x4b, 0x44, 0xb4, 0xe1, 0xa9, 0x9d, 0x0d, 0xce, 0x2a, 0x67, 0xbd, 0x0b, - 0x0c, 0x64, 0x78, 0xd2, 0x25, 0x86, 0xca, 0x93, 0x33, 0xb3, 0xe9, 0x83, 0x33, 0x9d, 0xed, 0x9e, - 0x2a, 0x8f, 0xdf, 0x07, 0x30, 0xac, 0x5e, 0xe9, 0x27, 0xaf, 0x6b, 0x1f, 0x9d, 0xd7, 0xbf, 0xec, - 0x4a, 0x8d, 0x1f, 0x85, 0xcc, 0x15, 0xb2, 0xad, 0x14, 0x5e, 0xc1, 0xd5, 0xf1, 0x35, 0x76, 0xec, - 0xf6, 0x2b, 0x61, 0x57, 0x6d, 0xa8, 0x74, 0xa9, 0x63, 0x51, 0x79, 0x51, 0x8d, 0xa4, 0x4a, 0x3f, - 0x15, 0x6c, 0x09, 0xe2, 0xba, 0x3c, 0xc5, 0x26, 0x63, 0x47, 0x2b, 0x41, 0xe4, 0x48, 0xcd, 0x1c, - 0xd3, 0x06, 0xc6, 0xb0, 0x62, 0x31, 0x31, 0x9c, 0x9a, 0x39, 0xe6, 0xaa, 0x95, 0x6d, 0xb9, 0xf9, - 0x08, 0x87, 0x96, 0x87, 0xc8, 0x57, 0x63, 0xa0, 0x23, 0xe8, 0x51, 0x88, 0x60, 0x53, 0x2c, 0x3e, - 0x99, 0x2d, 0xf9, 0x36, 0x32, 0x38, 0x35, 0x3f, 0x55, 0xa5, 0xd7, 0x04, 0x5b, 0x36, 0xf1, 0x47, - 0xd0, 0xd7, 0xb4, 0x2e, 0x66, 0x2d, 0x30, 0x03, 0x01, 0x53, 0x1b, 0x29, 0x5e, 0x3f, 0xd8, 0xab, - 0x1d, 0xfa, 0x52, 0xb6, 0x65, 0xc5, 0x55, 0x58, 0xe1, 0x0b, 0x35, 0x86, 0xdd, 0x61, 0x9f, 0xc7, - 0xd5, 0xbe, 0x2d, 0xe0, 0x55, 0x88, 0x30, 0x53, 0x58, 0xf3, 0x0b, 0x55, 0xda, 0x21, 0x64, 0x25, - 0x89, 0xce, 0x3c, 0x05, 0x99, 0xfa, 0x78, 0xe6, 0xdc, 0x79, 0xed, 0x6c, 0x5c, 0x9b, 0x1c, 0x71, - 0x35, 0x98, 0x47, 0xb5, 0xd5, 0x8e, 0x4d, 0xd2, 0xd6, 0xc6, 0x3a, 0x07, 0x93, 0x26, 0x67, 0x11, - 0xe5, 0xff, 0x29, 0x7a, 0xd8, 0xd3, 0xea, 0xf6, 0xb5, 0xd5, 0xed, 0x6f, 0xf7, 0x05, 0x15, 0x6f, - 0xa3, 0xe2, 0x09, 0xf8, 0xbd, 0x21, 0x22, 0x0b, 0x95, 0xd4, 0x6c, 0x51, 0xa5, 0x37, 0x85, 0x7c, - 0xe9, 0xe2, 0xc6, 0xfb, 0xe8, 0x7a, 0x57, 0x83, 0x76, 0xf6, 0xbc, 0x7e, 0xfc, 0x96, 0x7e, 0xea, - 0x56, 0xe6, 0xd4, 0x4d, 0x39, 0x1f, 0x1d, 0xbe, 0x05, 0xad, 0x6a, 0xeb, 0x68, 0x0d, 0xfb, 0xa8, - 0x64, 0x43, 0x56, 0x23, 0x22, 0xe3, 0x4d, 0x2c, 0x05, 0x39, 0x89, 0x62, 0x39, 0x6b, 0x60, 0xc3, - 0x90, 0x4a, 0xd0, 0x4a, 0x89, 0x12, 0x4a, 0xcf, 0x2e, 0x09, 0x40, 0xce, 0xc9, 0xcb, 0x77, 0xa0, - 0x42, 0x8f, 0xcf, 0x1b, 0x6c, 0x0c, 0x2b, 0xed, 0x44, 0x5c, 0x2a, 0x01, 0xcf, 0x01, 0x13, 0x28, - 0xfe, 0x1c, 0xac, 0x89, 0x5a, 0xdf, 0xa1, 0x4c, 0xef, 0x00, 0x86, 0xea, 0x13, 0x97, 0x33, 0x27, - 0x66, 0xc1, 0x8c, 0x5e, 0x6e, 0xee, 0x98, 0xa9, 0xe3, 0x17, 0x92, 0xf1, 0xab, 0x70, 0xa8, 0xff, - 0xe2, 0x86, 0x57, 0x5f, 0xba, 0x1b, 0xe9, 0xd2, 0x7a, 0x6f, 0x25, 0xa7, 0x4f, 0x02, 0x48, 0xdc, - 0xf0, 0xe2, 0x2b, 0x15, 0xb2, 0x49, 0x95, 0xff, 0x3d, 0x2a, 0x31, 0x78, 0x50, 0x3b, 0x73, 0x3a, - 0x4e, 0xca, 0xb6, 0xa7, 0x88, 0x75, 0x54, 0x03, 0x32, 0xb8, 0x0c, 0x6b, 0x71, 0x2e, 0xf7, 0xb5, - 0x77, 0xbe, 0xb8, 0x1e, 0xef, 0x8f, 0xeb, 0xbd, 0x1d, 0xee, 0xd6, 0x8a, 0xca, 0xd4, 0xd9, 0x49, - 0xad, 0x7f, 0xc0, 0xac, 0x15, 0x4e, 0x06, 0x4c, 0xd9, 0x4e, 0xd5, 0xce, 0x49, 0x5f, 0x22, 0x7d, - 0x5c, 0x92, 0x97, 0x93, 0xbe, 0x94, 0xcb, 0x49, 0x5f, 0xca, 0xcb, 0x49, 0x5f, 0xca, 0xe5, 0xa4, - 0x40, 0x77, 0x45, 0x5e, 0x4e, 0xfa, 0xd2, 0x3d, 0x38, 0xe9, 0x4b, 0x79, 0x39, 0x29, 0x14, 0x12, - 0x30, 0x15, 0x0f, 0x90, 0xce, 0xde, 0x56, 0xa5, 0x26, 0x53, 0xf1, 0xf8, 0xb9, 0xcd, 0x30, 0x4f, - 0x76, 0x1a, 0x43, 0xee, 0xc1, 0x2b, 0x63, 0xe8, 0xb4, 0x7e, 0xf6, 0x26, 0x4d, 0x9c, 0xee, 0x49, - 0x4e, 0xdf, 0x4a, 0xcf, 0x1e, 0x4e, 0x8d, 0x1f, 0x4d, 0xc6, 0x26, 0x60, 0xf3, 0x62, 0xf3, 0x99, - 0x8a, 0xc5, 0xbf, 0xe0, 0xcc, 0x43, 0x01, 0xb2, 0x22, 0x41, 0x96, 0xfb, 0x88, 0x53, 0xa5, 0xf3, - 0x9c, 0xc0, 0xa6, 0x88, 0x83, 0xd4, 0x4c, 0xb3, 0xb3, 0xdd, 0xe3, 0xf4, 0xfb, 0x6c, 0xcc, 0x0f, - 0xc6, 0x46, 0x3f, 0x3e, 0xa5, 0x47, 0xbb, 0xc0, 0x54, 0x06, 0x6b, 0x02, 0x92, 0xc3, 0x2d, 0x4a, - 0x55, 0x30, 0xd0, 0x11, 0x56, 0xaa, 0x14, 0xbf, 0x4f, 0x53, 0xa3, 0xe0, 0x68, 0x91, 0x8d, 0xe1, - 0xf5, 0x05, 0x15, 0x4f, 0x18, 0xa3, 0x98, 0xc6, 0x3b, 0xc2, 0x44, 0xb0, 0xc0, 0x70, 0x7a, 0x2a, - 0x97, 0x6a, 0x85, 0xcc, 0xd6, 0xae, 0xec, 0xbf, 0x70, 0x68, 0x39, 0xcb, 0xbb, 0xf8, 0x77, 0xd0, - 0x22, 0xbf, 0xb2, 0xaf, 0x94, 0x23, 0x86, 0xee, 0xc7, 0x73, 0x0f, 0x3b, 0xf7, 0x01, 0x36, 0xcc, - 0x0a, 0x8c, 0x2a, 0x96, 0xe5, 0x5f, 0xe5, 0x20, 0x08, 0x01, 0x27, 0x93, 0x31, 0x22, 0xdf, 0x81, - 0x96, 0x29, 0xfb, 0x7d, 0xa1, 0xb0, 0xe2, 0xa5, 0xf6, 0x03, 0x47, 0x36, 0xf9, 0x3a, 0x48, 0x36, - 0xd9, 0x2f, 0xcc, 0x11, 0x23, 0x97, 0xf8, 0xa3, 0x7c, 0x25, 0xd9, 0x0f, 0x34, 0x52, 0x23, 0x3d, - 0xb4, 0x48, 0x23, 0x57, 0x59, 0x3d, 0x5a, 0x95, 0x4d, 0x97, 0xaf, 0x46, 0x8b, 0x7c, 0xde, 0x10, - 0x69, 0x25, 0x55, 0xa8, 0xf0, 0xb7, 0xb8, 0x36, 0x75, 0xf6, 0xa6, 0x3e, 0x78, 0x39, 0x8b, 0xa6, - 0xb1, 0x35, 0x84, 0x64, 0x8c, 0x54, 0xf6, 0x35, 0x87, 0x8a, 0xcc, 0x7e, 0xe0, 0x1b, 0xd0, 0xe2, - 0x36, 0x77, 0xa8, 0x85, 0x48, 0x1d, 0x25, 0x35, 0x3f, 0x51, 0xa5, 0x57, 0x05, 0x02, 0x10, 0x37, - 0x42, 0x07, 0xd0, 0xad, 0x0d, 0xaa, 0x0c, 0x55, 0x03, 0x4b, 0x16, 0x6d, 0xc4, 0xe0, 0x27, 0xa9, - 0x8b, 0x5d, 0xda, 0xa5, 0xab, 0xda, 0xf5, 0x21, 0x99, 0x64, 0xc4, 0x14, 0x89, 0x2a, 0x03, 0xf2, - 0x06, 0x50, 0x24, 0x1a, 0xeb, 0x82, 0x14, 0x41, 0xaf, 0x82, 0x2d, 0xc5, 0x14, 0x6d, 0xa9, 0xf6, - 0xe2, 0x42, 0x4b, 0x7c, 0xed, 0x4e, 0x7f, 0x98, 0xca, 0x17, 0x2f, 0xa8, 0xd2, 0x06, 0x01, 0x20, - 0xe2, 0xf3, 0xf7, 0xa8, 0xa5, 0xab, 0x21, 0x19, 0xfb, 0x54, 0x3f, 0x71, 0x5d, 0x06, 0xfc, 0xb2, - 0xff, 0xa5, 0x08, 0x3d, 0x9c, 0xe7, 0x64, 0x99, 0xf7, 0xa0, 0x82, 0xed, 0x8d, 0x54, 0xf4, 0x6a, - 0x54, 0xa5, 0x06, 0xa1, 0x60, 0x7b, 0xa3, 0xb1, 0xf0, 0xa0, 0x3b, 0xb7, 0x37, 0x82, 0xfc, 0x57, - 0x9e, 0x39, 0x31, 0xaa, 0x1d, 0x1c, 0x72, 0xd5, 0xae, 0xa7, 0xc6, 0x76, 0xf2, 0x89, 0x17, 0x24, - 0x56, 0x38, 0xf4, 0x53, 0xb7, 0xa8, 0xa7, 0x1f, 0xf8, 0x99, 0x50, 0xdc, 0x0a, 0xb9, 0x60, 0x7b, - 0x23, 0x2f, 0xa1, 0x65, 0x9d, 0x4a, 0x30, 0x84, 0x55, 0x52, 0xe8, 0x9c, 0xe7, 0x55, 0xe9, 0x07, - 0x82, 0x01, 0x13, 0x1f, 0xb7, 0x5c, 0x20, 0x2c, 0xde, 0x48, 0x8e, 0xab, 0x65, 0x03, 0x87, 0x3f, - 0x51, 0x60, 0xf9, 0x20, 0xb9, 0x9b, 0x43, 0xa5, 0x8b, 0xc8, 0x3c, 0x7f, 0xf1, 0x3e, 0x0e, 0xcf, - 0x0d, 0x18, 0xce, 0x06, 0xc7, 0x3b, 0x09, 0x4e, 0x95, 0x62, 0x9c, 0xc0, 0xd2, 0x13, 0xc7, 0x0d, - 0x47, 0x89, 0xb3, 0x31, 0xad, 0xf7, 0x8b, 0xb0, 0xbb, 0x39, 0x4b, 0xe8, 0x65, 0xdd, 0x28, 0xc0, - 0xdb, 0x88, 0x1e, 0xe1, 0x7c, 0x31, 0xae, 0xf5, 0x5e, 0x5e, 0x47, 0x0c, 0x05, 0x87, 0x3f, 0x05, - 0x13, 0x08, 0xec, 0x28, 0x44, 0x1b, 0x03, 0x2b, 0x89, 0x69, 0x5a, 0xd5, 0x26, 0xcf, 0xa7, 0x06, - 0xaf, 0x83, 0xff, 0x95, 0x36, 0x39, 0xa2, 0xf5, 0xdd, 0x0a, 0xbb, 0x9b, 0x43, 0xe5, 0xa0, 0x7e, - 0x57, 0x9b, 0xf8, 0x96, 0x5b, 0x1a, 0x38, 0xb9, 0x41, 0x06, 0x28, 0xb0, 0x42, 0x66, 0xeb, 0xcd, - 0x37, 0xa2, 0x62, 0xda, 0x45, 0x44, 0x7d, 0x5a, 0x6c, 0xe9, 0x22, 0x2c, 0x5c, 0x7c, 0x7a, 0xde, - 0x2e, 0x36, 0xdc, 0x27, 0x19, 0x6c, 0x7e, 0x98, 0x43, 0x85, 0x21, 0xba, 0xe6, 0xa8, 0x6b, 0x61, - 0x58, 0x95, 0x7e, 0x2d, 0x98, 0x40, 0x51, 0xd1, 0x66, 0x3e, 0xcc, 0x44, 0xfa, 0xf5, 0xa3, 0x9f, - 0x38, 0x7d, 0xad, 0xbe, 0x8e, 0x36, 0xc7, 0x76, 0x38, 0x0b, 0xa5, 0x8b, 0x83, 0xb8, 0x24, 0xe9, - 0xa7, 0x6e, 0xcd, 0x25, 0xa2, 0x4d, 0x5b, 0xea, 0x92, 0x89, 0x91, 0xe4, 0xf4, 0x60, 0x7a, 0xea, - 0x32, 0x2c, 0x48, 0x30, 0x62, 0x8b, 0xc9, 0xd8, 0xa7, 0xae, 0x86, 0xd4, 0xf1, 0x71, 0xfd, 0xdc, - 0x65, 0x38, 0xf2, 0x03, 0x73, 0x5c, 0xfa, 0xe6, 0x85, 0xf4, 0xcc, 0x8c, 0x76, 0xee, 0x70, 0x7a, - 0x6c, 0x4c, 0x36, 0x0b, 0xe4, 0x7f, 0x85, 0x96, 0xd3, 0x66, 0x6f, 0x55, 0x3a, 0x95, 0x56, 0xea, - 0xb8, 0x58, 0xad, 0x4a, 0x2f, 0x0b, 0xb6, 0x04, 0xf3, 0x34, 0x77, 0xa2, 0x3f, 0x15, 0xbf, 0x8a, - 0x85, 0x25, 0x72, 0xb4, 0xc6, 0x7a, 0xb1, 0x80, 0xc3, 0x8b, 0x6c, 0xcb, 0xc6, 0x9f, 0xe3, 0xd0, - 0xe3, 0xbe, 0x90, 0xd4, 0x11, 0x0e, 0xec, 0x68, 0x6f, 0x0e, 0xba, 0xbd, 0x8a, 0x93, 0x2d, 0x6d, - 0x19, 0x91, 0xdb, 0x76, 0xa9, 0xd2, 0x2f, 0x85, 0xf9, 0xb1, 0xc4, 0x9f, 0xb1, 0x42, 0x33, 0x15, - 0x36, 0x86, 0x4e, 0x67, 0x7a, 0x07, 0xee, 0xb7, 0x4a, 0xf3, 0xd3, 0xe6, 0x0f, 0x72, 0x68, 0xb1, - 0x3b, 0xa8, 0xb8, 0x89, 0x08, 0x99, 0x87, 0xc1, 0x3b, 0x89, 0x99, 0x3e, 0xa8, 0xb8, 0x6b, 0x9a, - 0x54, 0xe9, 0x2d, 0x81, 0xe0, 0x8a, 0x2e, 0x4a, 0x7d, 0xfa, 0xa6, 0x16, 0xbf, 0x02, 0x07, 0x0d, - 0xac, 0x3b, 0x68, 0x39, 0xee, 0xfd, 0xbe, 0xdb, 0xc9, 0xd8, 0x80, 0x1e, 0x3d, 0xac, 0x4d, 0x8e, - 0x54, 0x3a, 0xb4, 0xbe, 0x33, 0xec, 0x2a, 0x36, 0xf1, 0x2b, 0x64, 0x42, 0x90, 0xff, 0x25, 0x5a, - 0x0a, 0x67, 0x85, 0x44, 0x84, 0x2c, 0x16, 0x9f, 0x9a, 0x67, 0xfd, 0x6d, 0x23, 0x48, 0x60, 0x6b, - 0xa1, 0x39, 0xc4, 0x52, 0x7a, 0xa4, 0x4b, 0xce, 0x1e, 0xe1, 0x1c, 0xd2, 0xf0, 0x4a, 0x05, 0x8c, - 0x35, 0x3f, 0x45, 0xab, 0xb2, 0xd7, 0xea, 0x83, 0xd8, 0x9d, 0xcb, 0xfe, 0x1a, 0xa1, 0xd5, 0x79, - 0xbd, 0x4d, 0xf8, 0x9f, 0xa3, 0xc5, 0xae, 0x86, 0x9d, 0xc0, 0xe7, 0x0a, 0xc1, 0x66, 0x45, 0x00, - 0xe2, 0x8f, 0xb6, 0x64, 0x79, 0x5f, 0x61, 0xa8, 0xe9, 0x51, 0x92, 0xe5, 0x13, 0x49, 0xb2, 0xf0, - 0xbf, 0x41, 0xab, 0x3c, 0x01, 0x7f, 0xd8, 0xed, 0xf3, 0x2b, 0x41, 0xb9, 0xc3, 0x1f, 0xf6, 0x99, - 0x2e, 0xca, 0xf5, 0xaa, 0xb4, 0x45, 0xc8, 0x49, 0x14, 0x5f, 0xa6, 0xc7, 0x3d, 0x76, 0xf7, 0x14, - 0x60, 0x05, 0x60, 0xd1, 0xca, 0x44, 0xfa, 0x6b, 0x89, 0x0b, 0xc8, 0xdd, 0x48, 0x97, 0xd3, 0xc8, - 0xee, 0x95, 0x73, 0x48, 0xf1, 0x32, 0x5a, 0x11, 0x84, 0x9f, 0x3b, 0x29, 0x3f, 0x5d, 0x64, 0xd9, - 0x4b, 0xb2, 0x92, 0xc4, 0xd5, 0x59, 0x25, 0x52, 0x96, 0x9a, 0x85, 0xc6, 0xff, 0xcb, 0x02, 0x7a, - 0x50, 0x2e, 0x05, 0x9b, 0x43, 0xa5, 0x8b, 0x17, 0xe4, 0xab, 0xf6, 0x6e, 0xa5, 0x5e, 0x7b, 0x41, - 0x83, 0xaf, 0xfe, 0x3d, 0xa7, 0x4a, 0xff, 0xbb, 0x71, 0x6c, 0x8e, 0xc1, 0xe2, 0x7f, 0xe1, 0x40, - 0x68, 0xd7, 0x86, 0x7b, 0xe8, 0xc9, 0xb3, 0xc1, 0x23, 0xe1, 0x70, 0x0e, 0xf7, 0xf1, 0x47, 0x3d, - 0xa6, 0xe1, 0xb8, 0x45, 0x39, 0x90, 0x8c, 0xc5, 0xf1, 0x90, 0x48, 0x0d, 0x2e, 0xac, 0xc3, 0x2a, - 0xc1, 0xb9, 0x44, 0x74, 0x0b, 0x9c, 0xc9, 0x85, 0x83, 0x81, 0xd6, 0x56, 0x02, 0xa8, 0x0b, 0x7b, - 0xbc, 0x14, 0xde, 0xe8, 0xd9, 0xab, 0xe0, 0xb9, 0x13, 0xbc, 0x1b, 0xe9, 0x26, 0x13, 0x21, 0x19, - 0x8b, 0x5b, 0x85, 0xcd, 0x9e, 0xc5, 0x6a, 0xe8, 0xf0, 0x14, 0x59, 0x88, 0xb4, 0x3c, 0xed, 0xd2, - 0x48, 0x32, 0xf6, 0x29, 0x3d, 0x1b, 0xbc, 0x73, 0x34, 0x73, 0xea, 0x26, 0xcc, 0xf8, 0xd7, 0x32, - 0xa7, 0x6e, 0x66, 0x46, 0x8e, 0x9b, 0xc6, 0x50, 0x5c, 0x48, 0xb5, 0xc3, 0x1f, 0xf0, 0x2a, 0x55, - 0x5e, 0x77, 0xd8, 0x8d, 0xe5, 0xb5, 0xd7, 0xd7, 0xe3, 0x5f, 0xeb, 0x77, 0x7b, 0x42, 0xeb, 0x5b, - 0x7d, 0xbb, 0xd7, 0x2b, 0x61, 0x8f, 0xf7, 0x35, 0xd9, 0x6a, 0x2d, 0xff, 0x9f, 0x39, 0xbb, 0xc3, - 0x09, 0x70, 0x4e, 0x63, 0xb7, 0x61, 0x5d, 0x4e, 0xcc, 0xdd, 0xc6, 0xe6, 0x73, 0xd2, 0xa7, 0x45, - 0x7b, 0xf5, 0xa3, 0xd7, 0x36, 0xcb, 0xe5, 0x5a, 0xef, 0xb8, 0x76, 0x23, 0x92, 0xbe, 0x3d, 0x95, - 0x3a, 0x7e, 0xa3, 0x42, 0x53, 0xa3, 0x54, 0x7e, 0x4a, 0xc6, 0x2e, 0xa5, 0xae, 0x0e, 0x80, 0xfc, - 0xc4, 0x4e, 0xcf, 0xcd, 0xf2, 0xba, 0xe4, 0x9d, 0x0b, 0x20, 0x8f, 0x02, 0x3f, 0xa6, 0xec, 0xd8, - 0x40, 0xed, 0x2b, 0xdf, 0xd3, 0xea, 0xf6, 0xfb, 0x95, 0xd6, 0xbb, 0x91, 0x2e, 0x8f, 0xbb, 0xd5, - 0xe7, 0x09, 0xdc, 0x8d, 0x74, 0x81, 0xf7, 0x01, 0x78, 0xf9, 0xa5, 0x0f, 0x7f, 0x9a, 0xba, 0x78, - 0x9c, 0xe5, 0xde, 0xa9, 0x89, 0xfe, 0x8a, 0xb9, 0x44, 0xbf, 0xdd, 0xb5, 0xa5, 0x19, 0xf1, 0x5e, - 0xa5, 0x55, 0x09, 0xfb, 0x02, 0xfe, 0x86, 0x60, 0x20, 0xac, 0x78, 0xc8, 0xd9, 0xf9, 0x52, 0xb2, - 0xaa, 0xc8, 0x11, 0x49, 0x9e, 0x64, 0x71, 0x2d, 0x65, 0x8b, 0xc4, 0x63, 0x8b, 0xae, 0x85, 0xbe, - 0x8b, 0x99, 0x33, 0x97, 0x92, 0xb3, 0xe7, 0xf4, 0x23, 0x97, 0xe4, 0x3c, 0x79, 0xf8, 0xed, 0x68, - 0xb9, 0xbb, 0xc3, 0xeb, 0x0b, 0xd7, 0x11, 0xd3, 0x81, 0x97, 0x32, 0xe0, 0x1f, 0xa9, 0x52, 0xb9, - 0x60, 0x4b, 0x10, 0x4b, 0x59, 0x9e, 0xab, 0x4d, 0x8e, 0xa5, 0x27, 0xc7, 0xa8, 0xdf, 0x84, 0x0d, - 0x8f, 0xdf, 0x8a, 0x0a, 0xc1, 0x0c, 0xf1, 0xa6, 0x9b, 0x6a, 0xe1, 0xc4, 0xb2, 0x62, 0x02, 0xc5, - 0x67, 0xe0, 0xe0, 0x9c, 0x3d, 0x62, 0x04, 0xa2, 0x99, 0xcf, 0x4e, 0x83, 0x5c, 0x26, 0x9b, 0xc8, - 0xfc, 0xe7, 0x1c, 0x5a, 0x6d, 0x9c, 0x36, 0x07, 0xfc, 0x7e, 0xc5, 0x13, 0xa6, 0x4b, 0x82, 0xf2, - 0xc5, 0xf9, 0x9c, 0xe0, 0xec, 0xc8, 0x35, 0x3b, 0x54, 0x49, 0x16, 0xf2, 0x13, 0x12, 0x5f, 0xa5, - 0x3d, 0x05, 0x0d, 0x3b, 0xd4, 0xab, 0x5d, 0x3a, 0x89, 0x77, 0xc7, 0xc9, 0xaf, 0x58, 0xf7, 0x4d, - 0x6d, 0xb6, 0x37, 0x33, 0x36, 0x0d, 0xf2, 0x86, 0x3e, 0x61, 0x78, 0x7e, 0xe5, 0xa7, 0x68, 0x1e, - 0xea, 0x99, 0x0b, 0xf6, 0x81, 0x98, 0xeb, 0xff, 0xb5, 0xd8, 0x64, 0xae, 0x76, 0xba, 0x7c, 0x17, - 0x87, 0x90, 0x2f, 0x44, 0x48, 0xfb, 0x95, 0x30, 0xe5, 0xb1, 0x6e, 0x55, 0xfa, 0x95, 0xc0, 0x80, - 0xc5, 0x06, 0xeb, 0x37, 0x6d, 0x99, 0xd5, 0xa6, 0xd9, 0xcc, 0xa9, 0xc9, 0xf2, 0x70, 0xb0, 0x43, - 0x61, 0x01, 0x0e, 0xc2, 0x74, 0xa9, 0x50, 0x40, 0x20, 0x36, 0x77, 0xa7, 0x0a, 0x99, 0xa1, 0xce, - 0xef, 0x36, 0x05, 0x16, 0x2f, 0x65, 0xc6, 0xc4, 0x9f, 0xd3, 0x04, 0x1a, 0x4c, 0x38, 0xf5, 0xd9, - 0x94, 0x36, 0xf4, 0x31, 0x18, 0x92, 0x19, 0xe3, 0x51, 0xb9, 0xd9, 0xcd, 0x66, 0x61, 0x7a, 0x7f, - 0x24, 0x33, 0x1a, 0xa9, 0x30, 0x45, 0x10, 0x2f, 0xef, 0x44, 0x4b, 0xbd, 0x81, 0x36, 0xb7, 0xcf, - 0x60, 0xba, 0x64, 0x36, 0x52, 0x90, 0xb8, 0x16, 0xf6, 0x52, 0x18, 0x0a, 0xa0, 0x90, 0xfa, 0x6c, - 0x2a, 0xd5, 0x7d, 0x47, 0xbb, 0x70, 0x41, 0x1b, 0x1e, 0x90, 0x29, 0x1e, 0x3f, 0xc8, 0xa1, 0x92, - 0x90, 0xe2, 0xe9, 0x08, 0xfa, 0xc2, 0x07, 0xc8, 0x59, 0x11, 0x15, 0xd9, 0xf6, 0xaa, 0x92, 0x22, - 0xd8, 0x53, 0xc4, 0x26, 0x53, 0x54, 0xd3, 0x26, 0xfb, 0xb5, 0xde, 0xf1, 0xd4, 0x74, 0x0f, 0xd9, - 0x2f, 0x3e, 0xd5, 0x47, 0xfb, 0xd9, 0x9e, 0x82, 0xe3, 0x15, 0x70, 0x80, 0xc6, 0x5c, 0x04, 0xda, - 0xc2, 0x20, 0xe0, 0xed, 0x66, 0xb6, 0x37, 0x99, 0xb8, 0x88, 0x17, 0xb4, 0xbd, 0x10, 0xfe, 0x02, - 0x87, 0x0a, 0x7d, 0xfe, 0x30, 0xd9, 0x04, 0x09, 0xc7, 0x2a, 0x16, 0xcb, 0x72, 0x9d, 0xbb, 0x20, - 0x5d, 0xf2, 0x78, 0x94, 0x50, 0xc8, 0xb7, 0xbb, 0x55, 0x01, 0x59, 0xc8, 0xcc, 0x28, 0x36, 0x80, - 0x08, 0xd7, 0xba, 0xdb, 0xe2, 0xb3, 0xdf, 0xb2, 0x9a, 0x26, 0xed, 0xb2, 0x7f, 0x5d, 0x8c, 0x8a, - 0x19, 0x6f, 0x4b, 0x2c, 0xaa, 0xad, 0x04, 0x8f, 0xc9, 0xcd, 0x41, 0x77, 0xfb, 0xde, 0x06, 0x77, - 0x78, 0x2f, 0x55, 0x60, 0x42, 0xaa, 0xd4, 0x2e, 0x64, 0xa7, 0x89, 0xef, 0x53, 0x17, 0x4c, 0x63, - 0x1f, 0x4c, 0xc6, 0xe2, 0xd4, 0xe1, 0xd2, 0x70, 0x12, 0xa5, 0xa2, 0x3c, 0xe3, 0x7f, 0x09, 0x5e, - 0x95, 0x30, 0xdd, 0x00, 0xc7, 0xe2, 0xfd, 0xd4, 0x86, 0xb1, 0x1e, 0x88, 0xc8, 0xd9, 0xe5, 0xf1, - 0xef, 0xa3, 0xe2, 0xb6, 0x40, 0x87, 0x3f, 0xdc, 0xe4, 0x0e, 0x36, 0x2b, 0x61, 0x3a, 0x1d, 0xe1, - 0x32, 0x06, 0x03, 0x37, 0x8e, 0x5a, 0xa8, 0xbf, 0xe7, 0xd9, 0xd3, 0xd4, 0x27, 0xb4, 0xfb, 0x0e, - 0x5b, 0x36, 0x29, 0x55, 0x66, 0xf3, 0xf1, 0xb3, 0x1c, 0x2a, 0xe9, 0xf0, 0xd3, 0x8d, 0x0f, 0xf3, - 0x23, 0xaa, 0x1d, 0x9e, 0xe6, 0x54, 0xe9, 0x38, 0x27, 0xd8, 0xd3, 0xc4, 0x6e, 0x0e, 0xaa, 0xaf, - 0x1d, 0xb9, 0xa8, 0xf5, 0x5e, 0xb6, 0x4e, 0xa4, 0x80, 0xc1, 0x0d, 0x75, 0x27, 0x63, 0x83, 0xe9, - 0xeb, 0x07, 0xb5, 0xf8, 0x15, 0x73, 0x3f, 0xd1, 0x22, 0x89, 0x0d, 0xe9, 0xb1, 0xf1, 0xd4, 0xa5, - 0x78, 0x76, 0xf2, 0xb9, 0xf3, 0x34, 0x01, 0xeb, 0x33, 0x4c, 0x5a, 0x39, 0x10, 0x37, 0x9d, 0xcc, - 0xb0, 0x2e, 0x74, 0xe5, 0x50, 0xea, 0xec, 0x49, 0x98, 0x0c, 0x15, 0xb2, 0xbd, 0x4e, 0xbc, 0xcf, - 0xbc, 0xf6, 0x01, 0xd2, 0xc6, 0xf3, 0x0b, 0xf8, 0xd6, 0xda, 0xae, 0x7e, 0x10, 0x85, 0xdf, 0xb8, - 0xfa, 0x41, 0x0f, 0x85, 0x32, 0x91, 0x11, 0x58, 0x23, 0x00, 0xa6, 0xce, 0xcb, 0xc6, 0x4d, 0x90, - 0x3e, 0x9b, 0x70, 0xb3, 0x84, 0x14, 0x27, 0x2c, 0x54, 0x5c, 0x96, 0x48, 0x33, 0xc3, 0xa9, 0xd2, - 0x1d, 0x9b, 0x48, 0xf3, 0xd9, 0x37, 0x11, 0x69, 0xb0, 0xf6, 0xd5, 0xaa, 0x84, 0xbf, 0x5b, 0x09, - 0x65, 0x0b, 0x10, 0xad, 0x76, 0x04, 0x03, 0x81, 0x30, 0xc8, 0x27, 0x9d, 0xee, 0x20, 0x11, 0x4d, - 0x68, 0x79, 0x36, 0xe9, 0xe4, 0x5d, 0xb4, 0x14, 0x0b, 0x93, 0x61, 0x30, 0xb9, 0x17, 0x8b, 0xab, - 0xb3, 0xbb, 0xa1, 0x09, 0xa7, 0x52, 0xae, 0x06, 0x98, 0xe2, 0x5a, 0xfd, 0xe4, 0xf5, 0xac, 0x33, - 0x5d, 0x48, 0x31, 0x24, 0x77, 0xf8, 0xe2, 0x5b, 0x50, 0x31, 0x38, 0xe0, 0x6f, 0x0d, 0x34, 0xfb, - 0xfc, 0xd4, 0xd6, 0xfe, 0x54, 0xbe, 0x7e, 0x26, 0x08, 0x2e, 0xff, 0x9e, 0x00, 0xc8, 0xac, 0x6c, - 0x36, 0xb1, 0x14, 0x3e, 0xe8, 0xba, 0x38, 0x33, 0x9d, 0x39, 0x43, 0xfd, 0x07, 0x65, 0x16, 0x0d, - 0x17, 0x86, 0x05, 0x12, 0xa3, 0xb0, 0xc2, 0xfb, 0x2f, 0x8c, 0xc9, 0x26, 0x96, 0xc2, 0x47, 0xbe, - 0xc2, 0x18, 0x34, 0xfe, 0x03, 0xf4, 0x08, 0x94, 0xdd, 0xc8, 0x72, 0xcd, 0x50, 0x69, 0x11, 0xb1, - 0x40, 0x11, 0x4d, 0x22, 0x2f, 0x82, 0xf8, 0x04, 0xdb, 0x18, 0x93, 0x7f, 0x1b, 0xbe, 0xf5, 0xf9, - 0xb2, 0xe0, 0xb2, 0xa0, 0xe8, 0xac, 0xb2, 0x10, 0x53, 0x56, 0x3e, 0x04, 0xf1, 0x09, 0xb6, 0x2d, - 0x39, 0x65, 0xe5, 0xcb, 0xf2, 0x6d, 0xbc, 0xa4, 0xbe, 0x9d, 0x1c, 0x11, 0x59, 0x84, 0x4a, 0x6c, - 0x63, 0xc3, 0x7b, 0xd0, 0x43, 0x3e, 0xbf, 0x2f, 0x4c, 0x00, 0x3b, 0x42, 0x4a, 0xd0, 0xef, 0x6e, - 0x53, 0x28, 0x43, 0xff, 0xb1, 0x2a, 0x89, 0x42, 0x6e, 0xaa, 0xf8, 0x54, 0xd6, 0xbc, 0x84, 0xa6, - 0x76, 0xd0, 0x64, 0x39, 0x37, 0x07, 0xdf, 0xcb, 0x31, 0xa5, 0x34, 0xb8, 0x43, 0xa1, 0x7d, 0x81, - 0xa0, 0x21, 0x2a, 0x10, 0xa3, 0x73, 0x6e, 0xaa, 0xf8, 0xb3, 0xbc, 0xa5, 0xb4, 0xd3, 0xe4, 0x4a, - 0xb8, 0x2b, 0x6a, 0x3a, 0xe2, 0xa7, 0xbe, 0x98, 0x4e, 0x4d, 0x5f, 0x60, 0x3d, 0x96, 0xe5, 0x5c, - 0x9a, 0x58, 0x58, 0x5a, 0xd6, 0xa2, 0x1c, 0x68, 0x70, 0xfb, 0x82, 0x84, 0x6f, 0x17, 0x8b, 0x8f, - 0x65, 0xcf, 0xdc, 0x2d, 0xca, 0x01, 0x32, 0x67, 0x89, 0x3a, 0x69, 0x20, 0x1b, 0xe7, 0xd7, 0xa9, - 0xab, 0x5d, 0x19, 0xf5, 0xb2, 0xe9, 0x7b, 0x1c, 0x1b, 0x04, 0x1f, 0x0b, 0x31, 0x13, 0xe9, 0x4f, - 0xc6, 0x22, 0x73, 0x89, 0xa8, 0x98, 0x8e, 0xf4, 0x6a, 0xe7, 0x0e, 0xd3, 0x8d, 0x2d, 0x71, 0x5a, - 0xeb, 0xed, 0xd3, 0xa6, 0x0e, 0x65, 0xd4, 0xcb, 0xb2, 0x41, 0xaa, 0xec, 0x6f, 0x16, 0xa1, 0x87, - 0x0c, 0x51, 0x2e, 0xa8, 0x78, 0x15, 0x7f, 0xd8, 0xe7, 0x6e, 0xe5, 0x9f, 0x44, 0x45, 0x21, 0xa2, - 0x72, 0x6d, 0x31, 0x87, 0xd2, 0x02, 0xe0, 0x54, 0xcb, 0x9f, 0x05, 0x06, 0x95, 0xf1, 0x52, 0x29, - 0x43, 0xcb, 0x3d, 0xad, 0x3e, 0xc5, 0x1f, 0x06, 0xc5, 0x1f, 0x04, 0x24, 0xd9, 0x06, 0xe3, 0x7f, - 0x80, 0x05, 0x1f, 0x4c, 0x4e, 0xf2, 0x7a, 0x83, 0x4a, 0x28, 0x04, 0x82, 0x8f, 0x6c, 0x07, 0x92, - 0xbb, 0x77, 0x6e, 0xa7, 0x12, 0x0c, 0xd7, 0xba, 0xc3, 0x6e, 0xd0, 0xa0, 0x64, 0x06, 0x82, 0xeb, - 0x81, 0x87, 0xb9, 0x29, 0xd0, 0xa2, 0x80, 0xe2, 0x51, 0x24, 0x5b, 0x00, 0x5c, 0x06, 0xad, 0x54, - 0x2d, 0x48, 0x6a, 0xcb, 0xa0, 0x0c, 0x1b, 0x90, 0x77, 0xa0, 0x62, 0x0f, 0x88, 0xb0, 0xe6, 0xa1, - 0x5c, 0x91, 0xcc, 0x82, 0xb2, 0x6e, 0x00, 0x16, 0xdd, 0xe3, 0x06, 0x20, 0xca, 0xb9, 0x01, 0x88, - 0xf3, 0x93, 0xb6, 0xe3, 0x7a, 0x83, 0xf3, 0x8e, 0xcc, 0x40, 0xa0, 0x37, 0xf1, 0x17, 0xee, 0xeb, - 0xe5, 0x46, 0x6f, 0x52, 0x80, 0xe1, 0x3f, 0x97, 0x3b, 0x46, 0xe2, 0xb3, 0xbb, 0x3d, 0xa1, 0x2a, - 0xcc, 0xdc, 0xab, 0xdc, 0xcd, 0x8a, 0x3f, 0x9c, 0x8c, 0x1d, 0xd1, 0x8f, 0xe0, 0x4d, 0x9d, 0x75, - 0xad, 0x2b, 0xfb, 0xef, 0x17, 0xa1, 0xa2, 0x7a, 0x77, 0x9b, 0x12, 0x6a, 0x77, 0x7b, 0x14, 0x9e, - 0x47, 0x8b, 0xad, 0x05, 0x25, 0x93, 0xdf, 0xfc, 0x86, 0xfc, 0xb7, 0xa3, 0x61, 0x58, 0xf3, 0x5e, - 0x5b, 0x7e, 0x92, 0xbd, 0xe2, 0x0b, 0xa3, 0xcb, 0x5c, 0xdb, 0x5d, 0x6b, 0xbb, 0xb6, 0x0b, 0xe3, - 0xca, 0xde, 0xad, 0x7d, 0xdd, 0xdc, 0xf0, 0x61, 0x07, 0xce, 0x51, 0x8f, 0xcc, 0xea, 0xb2, 0xdb, - 0xbd, 0xb9, 0x89, 0xaf, 0x41, 0x85, 0x6d, 0xee, 0xfd, 0x6f, 0x75, 0x04, 0xc2, 0x6e, 0x3a, 0xe4, - 0xe6, 0x77, 0xd6, 0x48, 0x2d, 0xbb, 0xc7, 0x48, 0x15, 0xe6, 0x8c, 0xd4, 0x6b, 0xa8, 0xe8, 0xd7, - 0x98, 0xd0, 0x56, 0x5f, 0x28, 0x4c, 0x98, 0x7a, 0x9e, 0xad, 0x44, 0x56, 0x42, 0xe4, 0x8c, 0x85, - 0x94, 0x28, 0x5b, 0xf8, 0xdf, 0x82, 0x89, 0x56, 0x3f, 0xa7, 0x4a, 0xcf, 0xa2, 0x67, 0x04, 0x6b, - 0xa0, 0xc4, 0x47, 0xd8, 0x6b, 0xe4, 0x7e, 0xba, 0xc3, 0x96, 0xfd, 0xc7, 0x02, 0x54, 0x62, 0x2b, - 0x1f, 0x0f, 0x85, 0xdf, 0xc8, 0x64, 0xac, 0x53, 0x13, 0xf0, 0xcd, 0x86, 0xd6, 0x63, 0xbf, 0x20, - 0xcf, 0xae, 0xec, 0x1f, 0xa0, 0x92, 0x20, 0x5b, 0xbc, 0xb1, 0x6a, 0x6d, 0x40, 0xfe, 0x51, 0xfb, - 0x45, 0x74, 0xd3, 0x5b, 0xcc, 0x3e, 0x3a, 0x4b, 0xef, 0x31, 0x3a, 0xcb, 0x72, 0x46, 0xe7, 0x51, - 0xf3, 0x78, 0x10, 0x46, 0xce, 0x38, 0xc5, 0x2b, 0xb5, 0xbc, 0x90, 0x61, 0x71, 0x1a, 0x9f, 0xd5, - 0xeb, 0x54, 0xe9, 0x47, 0xa8, 0x42, 0xb0, 0xf7, 0x99, 0x58, 0xca, 0xf6, 0x2d, 0xf8, 0xf8, 0x64, - 0x7a, 0x07, 0x32, 0x1f, 0x9d, 0x2b, 0x1b, 0x58, 0x84, 0x10, 0xc3, 0x04, 0x73, 0x87, 0x10, 0x57, - 0x41, 0xf1, 0x04, 0x0d, 0x41, 0x5e, 0xa6, 0x5f, 0xfc, 0x73, 0x68, 0x45, 0xa8, 0x63, 0xb7, 0x79, - 0x0f, 0xc0, 0xec, 0xbb, 0x2c, 0x28, 0x9e, 0xbc, 0x61, 0xc5, 0xef, 0x26, 0x6e, 0xe1, 0xd0, 0x77, - 0xe6, 0x37, 0x5f, 0x89, 0x1e, 0x32, 0xfa, 0x91, 0x6c, 0xcb, 0xc4, 0x84, 0x0f, 0x3d, 0x98, 0x9b, - 0x80, 0x29, 0x01, 0x8f, 0x30, 0xee, 0xed, 0xcb, 0xe6, 0xb7, 0xc5, 0x80, 0x1b, 0xa1, 0xae, 0xcb, - 0x58, 0x06, 0x0c, 0x30, 0x5e, 0x44, 0x8f, 0x50, 0xd5, 0x85, 0xba, 0x73, 0x53, 0x5c, 0xe8, 0xda, - 0xbc, 0x69, 0x98, 0x6e, 0x73, 0x8b, 0xd2, 0x60, 0x2e, 0x7d, 0xe8, 0x6d, 0x1b, 0xac, 0x7a, 0x8b, - 0x2a, 0xbd, 0x89, 0x36, 0x09, 0x4c, 0x37, 0x8a, 0xaf, 0xc0, 0xa1, 0x09, 0xf4, 0x3a, 0xb8, 0x94, - 0xeb, 0x7d, 0xb7, 0x8d, 0x5d, 0x0b, 0x9c, 0xd6, 0xb4, 0xde, 0xf1, 0xcc, 0xe1, 0x21, 0xd3, 0xdf, - 0x1c, 0xa4, 0xea, 0xb2, 0xe1, 0x25, 0xa8, 0x98, 0xf1, 0x72, 0xe6, 0x37, 0xa1, 0xa5, 0x70, 0xe9, - 0x95, 0x4a, 0x04, 0x78, 0x7c, 0x05, 0x0a, 0x12, 0x9f, 0xa1, 0xa6, 0x2a, 0xb2, 0xf3, 0xce, 0x25, - 0xa2, 0xfa, 0xe8, 0x35, 0x80, 0x24, 0x63, 0xf1, 0xdd, 0x2d, 0xa1, 0x40, 0x7b, 0x48, 0xa6, 0xa8, - 0xfc, 0xaf, 0xd0, 0xe2, 0x56, 0x9f, 0xbf, 0x85, 0xee, 0xf8, 0x3f, 0x57, 0xa5, 0xcd, 0x02, 0x01, - 0x88, 0x3f, 0x03, 0x44, 0x70, 0xd1, 0xcb, 0x7c, 0xf8, 0x95, 0x3e, 0x78, 0xd9, 0x3c, 0xf4, 0xd1, - 0x86, 0x8e, 0xa5, 0xbf, 0xbc, 0xad, 0x5f, 0x3c, 0xac, 0x1d, 0x3e, 0x94, 0x9e, 0x1d, 0x4e, 0x4d, - 0xdf, 0x4c, 0xc6, 0x8f, 0x6a, 0x47, 0xc6, 0xd2, 0xb3, 0xa3, 0xa9, 0xf1, 0xa3, 0x70, 0x6d, 0x52, - 0x26, 0x64, 0xf8, 0xcb, 0x1c, 0x5a, 0xda, 0xee, 0x0e, 0xba, 0xdb, 0x8c, 0xa3, 0xa9, 0xe7, 0x17, - 0xf0, 0xdd, 0x5e, 0xd7, 0x40, 0x30, 0x41, 0xc5, 0xf0, 0xaa, 0x92, 0x5b, 0xa0, 0x79, 0xc5, 0xb7, - 0x6d, 0xb5, 0x81, 0xa3, 0x34, 0xa2, 0xe0, 0x58, 0xda, 0xc1, 0xe4, 0xf9, 0xcc, 0x99, 0x5e, 0x7a, - 0x65, 0xf3, 0xd4, 0x2d, 0xea, 0x86, 0x0b, 0xc0, 0xb1, 0x28, 0x56, 0x2e, 0x0c, 0xed, 0x4b, 0xef, - 0x3b, 0x09, 0x67, 0x4c, 0x5a, 0xf4, 0xa4, 0x4c, 0x0b, 0xc0, 0xca, 0xf3, 0xc3, 0xee, 0xd6, 0xd6, - 0xc0, 0xbe, 0xc6, 0x16, 0x5f, 0xfb, 0xdb, 0x7b, 0x15, 0xff, 0x26, 0xe2, 0x83, 0x46, 0xa6, 0x66, - 0x61, 0x4d, 0x8b, 0x2a, 0xed, 0x15, 0xf2, 0xa5, 0x8b, 0x6f, 0xe5, 0x01, 0xd2, 0x63, 0x9e, 0xfe, - 0xab, 0xe9, 0xb1, 0xa8, 0xe9, 0xdb, 0x46, 0x35, 0xcb, 0xde, 0xae, 0xf4, 0x64, 0x2c, 0x7d, 0xfb, - 0x8b, 0xf4, 0xec, 0x61, 0xc3, 0x6c, 0x83, 0xb5, 0x46, 0x06, 0x2c, 0xe7, 0x2b, 0x07, 0xb3, 0x54, - 0xa6, 0x73, 0x1e, 0x88, 0xa5, 0xee, 0x54, 0xa5, 0x46, 0xf4, 0x96, 0xc0, 0x4e, 0x1f, 0xb1, 0x86, - 0x1d, 0x3c, 0xf6, 0xa6, 0x18, 0x4c, 0x4d, 0x73, 0xa4, 0xe9, 0x69, 0x4d, 0xf4, 0xa4, 0x76, 0xfb, - 0x72, 0x72, 0x66, 0x14, 0x1c, 0x98, 0x00, 0xa7, 0xec, 0xf3, 0x25, 0x68, 0xa9, 0x04, 0x66, 0xc9, - 0x4e, 0x84, 0xda, 0x83, 0x0a, 0x7c, 0x18, 0xa7, 0xd0, 0xe4, 0x6e, 0x14, 0x03, 0x16, 0xeb, 0xe8, - 0x38, 0xf4, 0xe3, 0x09, 0x6d, 0x12, 0x86, 0xc2, 0xe1, 0xba, 0xf2, 0x5c, 0x22, 0xea, 0x26, 0xc8, - 0xda, 0xe8, 0xb8, 0xfe, 0xe1, 0x40, 0x72, 0x66, 0x94, 0xcd, 0x02, 0x1d, 0x2a, 0x33, 0x24, 0xf9, - 0xfd, 0xa8, 0xb8, 0x3d, 0x10, 0x0a, 0x1b, 0x05, 0x17, 0x2c, 0x5c, 0xf0, 0xf0, 0xe0, 0x03, 0x17, - 0x4c, 0xb2, 0xd0, 0x82, 0xd9, 0xa2, 0xf8, 0x16, 0xb4, 0xac, 0x9d, 0x74, 0xa5, 0x31, 0xaf, 0x73, - 0xee, 0x2b, 0x03, 0xe6, 0x3a, 0xe8, 0x70, 0x3a, 0xa7, 0x89, 0x93, 0x81, 0x91, 0x51, 0x5c, 0xab, - 0xf5, 0xde, 0x4e, 0xce, 0x7c, 0x08, 0x45, 0x51, 0xdf, 0xb0, 0x23, 0xe3, 0xc9, 0x99, 0x51, 0xd0, - 0x92, 0x65, 0x03, 0x71, 0xcd, 0xdb, 0x68, 0x39, 0x4b, 0xe6, 0x3b, 0xbb, 0x20, 0x51, 0x3d, 0xc7, - 0xa9, 0xd2, 0xff, 0xc6, 0xa1, 0x34, 0x27, 0xd0, 0x91, 0x14, 0xff, 0x23, 0x07, 0xa3, 0x6b, 0xaa, - 0xe2, 0x70, 0xc7, 0xc6, 0xec, 0x35, 0x5a, 0x59, 0xd2, 0x77, 0x95, 0x0e, 0x6d, 0xea, 0x8e, 0x3e, - 0x78, 0xf9, 0x83, 0xc0, 0x6e, 0x60, 0x35, 0x95, 0x0e, 0x6d, 0x32, 0xaa, 0xf7, 0x0d, 0x9b, 0xaa, - 0x3f, 0xf4, 0xe5, 0x6b, 0x8e, 0xec, 0x7b, 0x7c, 0x23, 0x3d, 0xf0, 0x1b, 0xd2, 0xf5, 0xf1, 0xb1, - 0x54, 0x7f, 0x1f, 0xac, 0xe4, 0xcc, 0x68, 0xc4, 0xcc, 0x0d, 0xb9, 0xb4, 0x4b, 0x57, 0x21, 0x5c, - 0x01, 0x20, 0x63, 0x35, 0x7f, 0xba, 0x17, 0x6c, 0x66, 0x30, 0x2f, 0xa0, 0xcf, 0xf0, 0xaa, 0x26, - 0xa3, 0x45, 0xbb, 0x70, 0xe0, 0x0b, 0x6d, 0x68, 0xca, 0x38, 0x7f, 0x4e, 0x1d, 0xbf, 0x01, 0xbe, - 0x53, 0x65, 0x7d, 0xc5, 0x08, 0x19, 0x87, 0x71, 0xcd, 0x41, 0x7e, 0x0f, 0x5a, 0xe5, 0xee, 0x74, - 0xfb, 0x88, 0xfd, 0xc5, 0x38, 0x3a, 0x82, 0xe9, 0x4b, 0x8e, 0x50, 0x73, 0x12, 0xc5, 0x67, 0xb5, - 0xdb, 0x9f, 0xc3, 0x81, 0x42, 0x6a, 0xa4, 0xc7, 0x3a, 0x3c, 0x76, 0xd0, 0x43, 0x63, 0xb8, 0x75, - 0x9f, 0x93, 0x8d, 0xff, 0x4b, 0x54, 0x02, 0xdb, 0xbb, 0x71, 0x7d, 0x0f, 0xc6, 0xe9, 0xd1, 0xfc, - 0x93, 0x06, 0x1c, 0xee, 0xec, 0x39, 0x8c, 0x2b, 0x44, 0x60, 0x50, 0xd4, 0x4f, 0xdd, 0x82, 0x13, - 0x79, 0x6b, 0x3a, 0xc3, 0xfc, 0x81, 0x99, 0x63, 0xcf, 0x8a, 0x4b, 0x27, 0x67, 0x09, 0x66, 0xe9, - 0x8b, 0xee, 0xa3, 0x74, 0x5b, 0x0e, 0xab, 0xf4, 0x8b, 0x99, 0x33, 0x97, 0xee, 0x55, 0xba, 0x2d, - 0x2b, 0x7f, 0x94, 0x43, 0x0f, 0xb9, 0xbd, 0x5e, 0x72, 0xa1, 0xb5, 0x29, 0x60, 0x54, 0x61, 0xf1, - 0x82, 0x55, 0xa8, 0x53, 0xa5, 0x1a, 0x21, 0x37, 0x97, 0x58, 0xc5, 0xde, 0xdb, 0xd4, 0xfa, 0xae, - 0x1b, 0xe1, 0x88, 0x26, 0xf2, 0xd7, 0x24, 0x97, 0x02, 0x7f, 0x91, 0x43, 0x8f, 0x42, 0xfd, 0x48, - 0xc2, 0xa6, 0x60, 0xa0, 0xcd, 0xa8, 0xd2, 0x92, 0x05, 0xab, 0xd4, 0xa0, 0x4a, 0xdb, 0x84, 0x79, - 0xb2, 0x8a, 0x2f, 0x24, 0xa7, 0x07, 0xd9, 0x1e, 0x32, 0x6d, 0x7e, 0x0b, 0xf5, 0xd3, 0x3c, 0xc4, - 0xf8, 0xdf, 0xa3, 0x12, 0x7a, 0x95, 0x8e, 0x56, 0x6c, 0xe9, 0x82, 0x15, 0x23, 0x3e, 0xa2, 0xf6, - 0x1c, 0x62, 0x15, 0xdc, 0x5d, 0x33, 0x2f, 0x18, 0x42, 0x35, 0x52, 0x23, 0x3d, 0xf3, 0x8c, 0x98, - 0x2d, 0x37, 0xff, 0x7b, 0xf4, 0x90, 0x87, 0x5c, 0x0a, 0x25, 0x37, 0xc7, 0xa0, 0x18, 0x6a, 0xbc, - 0x9a, 0xaf, 0x12, 0xc4, 0xb1, 0x29, 0x37, 0x97, 0xf8, 0x0c, 0xad, 0x02, 0xb9, 0x92, 0x36, 0xcf, - 0x20, 0xe5, 0xe4, 0xc2, 0x83, 0xf4, 0xa4, 0x67, 0xaf, 0xe2, 0x69, 0xa9, 0xdb, 0x1f, 0x56, 0x82, - 0x7e, 0x77, 0x2b, 0xee, 0xa3, 0xba, 0xb6, 0xf6, 0xf0, 0x01, 0x5a, 0x99, 0xc2, 0x05, 0x2b, 0x53, - 0xab, 0x4a, 0x92, 0xb0, 0x20, 0x01, 0xa3, 0x5e, 0xa9, 0x6b, 0xd7, 0x20, 0xea, 0x09, 0xb5, 0x22, - 0x7c, 0x12, 0xcf, 0x9c, 0xfa, 0x5c, 0xff, 0x38, 0xa2, 0x5f, 0xb8, 0x2c, 0x2f, 0x48, 0x80, 0xef, - 0xe1, 0x50, 0x09, 0x14, 0xeb, 0xa5, 0x77, 0x3d, 0xe7, 0xd1, 0x92, 0xb6, 0xb1, 0x48, 0xe0, 0xe0, - 0x69, 0xcf, 0x28, 0xfe, 0x88, 0x75, 0x79, 0x48, 0x5f, 0xed, 0xd1, 0x2f, 0x26, 0x40, 0xea, 0x33, - 0x9c, 0x1d, 0x23, 0xdd, 0xb0, 0x1b, 0x37, 0x6d, 0xa9, 0x93, 0xed, 0x79, 0xab, 0x21, 0x1e, 0x0c, - 0xba, 0xc1, 0x09, 0x0c, 0x5b, 0x13, 0x3f, 0xe2, 0x58, 0x41, 0x93, 0x4e, 0xcc, 0x1b, 0xdd, 0x99, - 0x73, 0x1f, 0x81, 0x4b, 0xec, 0xdd, 0x48, 0x17, 0xbb, 0xe9, 0x63, 0xf1, 0x29, 0x36, 0xa9, 0x1d, - 0xf9, 0x84, 0x65, 0x31, 0xc9, 0x18, 0xf5, 0x68, 0x5f, 0x07, 0xb5, 0x48, 0x4e, 0xf7, 0x02, 0xe3, - 0x83, 0x9d, 0xb2, 0x9c, 0xbd, 0x8f, 0xbe, 0x1e, 0x66, 0x3d, 0xfd, 0x30, 0x86, 0xdc, 0x5a, 0xa9, - 0xeb, 0x73, 0xd7, 0x46, 0x45, 0xd9, 0xcb, 0xa8, 0xc4, 0xd6, 0x37, 0x58, 0x25, 0x0f, 0xb5, 0x2b, - 0x1e, 0x43, 0x25, 0xc7, 0xbf, 0x31, 0xcc, 0xab, 0x84, 0x3c, 0x54, 0xaa, 0x21, 0xbf, 0xcb, 0x0e, - 0x95, 0xa0, 0xe5, 0xe6, 0x75, 0x24, 0xcc, 0xc5, 0x7b, 0x39, 0xb4, 0x12, 0x38, 0x9e, 0x09, 0xbe, - 0x07, 0x83, 0x25, 0x77, 0x7f, 0xb2, 0xf3, 0x88, 0x55, 0x74, 0x16, 0x4c, 0xf7, 0xdc, 0x17, 0x97, - 0xcd, 0xce, 0x4f, 0xea, 0x61, 0xad, 0x69, 0xa8, 0xc7, 0xa2, 0xfb, 0xa8, 0x47, 0x56, 0x1e, 0x5b, - 0x3d, 0xee, 0x83, 0xdf, 0x66, 0xe7, 0xe7, 0xa7, 0x39, 0xb4, 0xaa, 0x2d, 0xd0, 0xa9, 0x50, 0xd6, - 0x67, 0x9d, 0xa7, 0xcd, 0x5f, 0x11, 0x72, 0xb3, 0xed, 0x11, 0x26, 0x93, 0x55, 0x9b, 0x5f, 0xa6, - 0xae, 0x4e, 0x6b, 0x47, 0x68, 0x68, 0x85, 0xf4, 0xe1, 0x2f, 0xcc, 0xca, 0x2d, 0x5c, 0xad, 0x72, - 0xab, 0x11, 0x97, 0x4e, 0x1a, 0x46, 0x3a, 0x42, 0x88, 0x21, 0x51, 0x21, 0xe7, 0x54, 0x94, 0xff, - 0x67, 0x1c, 0x7a, 0x24, 0xa8, 0x98, 0x60, 0xcc, 0x19, 0xa1, 0x05, 0x0b, 0xf3, 0xe7, 0x0e, 0x55, - 0x0a, 0x0a, 0xa5, 0x59, 0x19, 0xad, 0x56, 0xec, 0x4c, 0x4e, 0x0f, 0x66, 0x75, 0xeb, 0xfd, 0x30, - 0xe9, 0xfc, 0xad, 0xc8, 0x9c, 0xb9, 0x94, 0x9a, 0x38, 0x99, 0x3a, 0x71, 0xb9, 0x42, 0xce, 0x5b, - 0x55, 0xfe, 0x18, 0x87, 0x1e, 0xf2, 0xb4, 0x2a, 0x6e, 0x3f, 0x81, 0xbb, 0xfc, 0xd0, 0x80, 0x85, - 0xf9, 0x38, 0xf1, 0x3b, 0xcf, 0xcd, 0x25, 0xbe, 0x60, 0x56, 0x81, 0x5c, 0x26, 0xbc, 0x73, 0x5f, - 0x7b, 0x4b, 0x2e, 0x1d, 0x5c, 0x27, 0x1e, 0x6c, 0x08, 0xb5, 0x4a, 0xc8, 0x17, 0x54, 0x60, 0x67, - 0xbc, 0x07, 0x5f, 0x27, 0x37, 0xcf, 0xf2, 0x64, 0x13, 0x37, 0x58, 0xd3, 0xa0, 0xdf, 0xaa, 0xd5, - 0x42, 0x55, 0xca, 0x43, 0x85, 0x8f, 0x71, 0xe8, 0x71, 0xb7, 0xd7, 0xcb, 0x32, 0x59, 0x46, 0x46, - 0x58, 0x98, 0xcb, 0xef, 0x56, 0xa5, 0x5d, 0xc2, 0xfc, 0xb9, 0xc5, 0x1a, 0xb3, 0x86, 0xc9, 0xd8, - 0x11, 0xfd, 0xfc, 0xad, 0xbc, 0x1c, 0xff, 0x1e, 0xdd, 0x38, 0x3f, 0x79, 0xfe, 0x9f, 0x73, 0x68, - 0x2d, 0x2c, 0x3c, 0x1b, 0x02, 0x2b, 0x50, 0x14, 0x2d, 0x58, 0x7f, 0xa2, 0xe0, 0xde, 0x83, 0x84, - 0xf8, 0xb3, 0xac, 0x39, 0x9b, 0x7f, 0xdb, 0x5a, 0xa0, 0x05, 0xf7, 0x28, 0xa0, 0xfa, 0x4e, 0x81, - 0x2a, 0x7d, 0x59, 0x80, 0x3e, 0x2f, 0x10, 0x6c, 0x3c, 0x55, 0x1c, 0x2b, 0xc8, 0xb3, 0x85, 0xb0, - 0xb7, 0x5a, 0xef, 0x63, 0x3b, 0xb1, 0xe1, 0xdb, 0x37, 0x95, 0x4a, 0x87, 0xa6, 0x46, 0x41, 0xff, - 0x49, 0x8d, 0xf4, 0x40, 0x4c, 0x01, 0x72, 0x39, 0x90, 0x7a, 0x8f, 0x43, 0xf4, 0x39, 0xa3, 0xed, - 0x77, 0x23, 0x5d, 0xec, 0x92, 0x05, 0xc8, 0x7c, 0x6c, 0xe9, 0x6e, 0xa4, 0x6b, 0xbe, 0xb5, 0x7e, - 0x37, 0xd2, 0x95, 0x77, 0xda, 0xda, 0xe0, 0xb1, 0xde, 0xd4, 0xf0, 0x21, 0x36, 0x48, 0x91, 0x76, - 0xe7, 0x56, 0xe6, 0x78, 0x44, 0x9f, 0xea, 0xd2, 0x47, 0xe3, 0xda, 0x99, 0xf1, 0xd4, 0x04, 0xd5, - 0x6b, 0xca, 0xfe, 0x7e, 0x09, 0x5a, 0xba, 0xbd, 0x91, 0x1c, 0xd6, 0x74, 0x73, 0xf3, 0x6a, 0x12, - 0x44, 0x1f, 0xcd, 0xd5, 0x24, 0x7e, 0x06, 0xde, 0x33, 0xa0, 0x39, 0x99, 0xe1, 0x75, 0xa8, 0xcb, - 0x3b, 0x09, 0x5b, 0x94, 0x8c, 0x45, 0x92, 0xf1, 0xb3, 0x10, 0xc1, 0xca, 0x86, 0x0c, 0x0e, 0x6b, - 0xb9, 0x5a, 0xc6, 0x79, 0x2e, 0xeb, 0x92, 0x36, 0x28, 0xc4, 0xbf, 0x51, 0xa5, 0x7d, 0x59, 0x97, - 0xb4, 0x9b, 0x81, 0x1e, 0x6d, 0xd0, 0x02, 0x85, 0x83, 0xe7, 0x35, 0xa9, 0x02, 0xa0, 0x41, 0x96, - 0xb9, 0x44, 0x54, 0x3f, 0x79, 0x27, 0xf9, 0xd5, 0x2c, 0xb8, 0x77, 0x68, 0xa3, 0xe3, 0x9e, 0x56, - 0xdf, 0xdd, 0x48, 0x57, 0xa3, 0xdb, 0xdd, 0x08, 0xf7, 0x59, 0xc1, 0x0b, 0x36, 0xeb, 0x9e, 0xf7, - 0x10, 0x87, 0x56, 0x7b, 0x95, 0x3d, 0xee, 0x8e, 0xd6, 0x70, 0xd6, 0x59, 0xde, 0x22, 0x52, 0x53, - 0x72, 0x3b, 0x24, 0x3f, 0x86, 0xf8, 0xba, 0xe9, 0x7b, 0x99, 0x8c, 0x1d, 0x61, 0x1d, 0x3f, 0xee, - 0xaf, 0x22, 0xf9, 0xa9, 0xf2, 0xa7, 0x39, 0xb4, 0x0c, 0x8c, 0xb2, 0xc6, 0xa9, 0x7b, 0x8e, 0x22, - 0x0f, 0x23, 0xbc, 0x4e, 0x06, 0x2c, 0x50, 0xe4, 0x49, 0x45, 0x8d, 0x8c, 0xe2, 0x16, 0x36, 0x94, - 0x20, 0x56, 0x41, 0x89, 0x47, 0x01, 0xeb, 0x52, 0x3a, 0x97, 0x88, 0xb6, 0x28, 0x07, 0xf4, 0xd3, - 0xb6, 0x0b, 0xf1, 0x44, 0x0f, 0x0f, 0xe9, 0xa7, 0xa7, 0x92, 0xb1, 0x09, 0xfd, 0xe4, 0xe1, 0xf4, - 0xd4, 0x4d, 0xfd, 0xf4, 0xa0, 0x6c, 0x50, 0x5d, 0x53, 0x8d, 0x96, 0xb3, 0x65, 0x3e, 0x90, 0xcd, - 0x87, 0x5e, 0x5a, 0xa4, 0xb3, 0x53, 0xfc, 0xb9, 0xcd, 0xee, 0x08, 0x23, 0x4b, 0x56, 0x6e, 0x6a, - 0xa4, 0x07, 0xe6, 0x54, 0x96, 0x5b, 0x37, 0xac, 0xdf, 0xed, 0x8d, 0xb0, 0xca, 0xe9, 0x5d, 0x7e, - 0x12, 0x9e, 0xa2, 0xec, 0xaf, 0x96, 0xa2, 0x65, 0xd4, 0x18, 0xca, 0xd7, 0xa0, 0x42, 0x30, 0xfb, - 0x9a, 0xb1, 0x08, 0xc8, 0xfd, 0x7a, 0x13, 0x28, 0x3e, 0x96, 0xee, 0xfd, 0x2a, 0x3d, 0x39, 0x65, - 0x5a, 0x33, 0x8d, 0x04, 0xd9, 0x44, 0xe1, 0x37, 0xa1, 0x22, 0xf8, 0xbd, 0x45, 0x39, 0x40, 0xcd, - 0x90, 0x70, 0x23, 0xdc, 0x84, 0x8a, 0xa5, 0x79, 0xa9, 0x6c, 0x51, 0x0e, 0xc8, 0x16, 0x12, 0xbf, - 0x25, 0xbf, 0xe1, 0x19, 0x62, 0x63, 0x65, 0x25, 0x89, 0x2b, 0xa4, 0xdf, 0x74, 0x04, 0x15, 0x47, - 0x7a, 0xf2, 0xa3, 0xcc, 0xe9, 0x5e, 0x57, 0x6d, 0x8e, 0x75, 0xfa, 0xd5, 0x6c, 0xeb, 0x74, 0xcd, - 0x53, 0xaa, 0xb4, 0x46, 0x30, 0x81, 0x06, 0x81, 0xd4, 0xd5, 0x0b, 0x7a, 0xdf, 0x6d, 0xdc, 0x1e, - 0xd3, 0x78, 0xfd, 0xde, 0xbc, 0xc6, 0xeb, 0x9a, 0x2a, 0x55, 0x12, 0x84, 0xdc, 0x54, 0x71, 0x35, - 0xad, 0x0d, 0x31, 0xc0, 0x63, 0x96, 0x05, 0xbe, 0xe7, 0x79, 0x6c, 0xdd, 0x5b, 0xb2, 0x6d, 0xdd, - 0x34, 0x4c, 0xae, 0x01, 0x14, 0x1d, 0x40, 0x8a, 0x5e, 0x74, 0x74, 0x34, 0x04, 0x7d, 0x7e, 0x8f, - 0xaf, 0xdd, 0xdd, 0xea, 0x70, 0x52, 0x0c, 0xc6, 0x38, 0xfe, 0x5e, 0x3e, 0xe3, 0x38, 0x0d, 0xe9, - 0xc0, 0x26, 0x88, 0x3f, 0x58, 0x98, 0x28, 0x60, 0x65, 0x59, 0xd5, 0xbb, 0xb8, 0x85, 0xcc, 0xea, - 0x70, 0x07, 0x39, 0x2f, 0x82, 0x28, 0x6e, 0x26, 0x21, 0x97, 0x1d, 0xc4, 0x75, 0xdb, 0x41, 0x51, - 0x1c, 0x6e, 0xc0, 0x49, 0x8d, 0xf4, 0x7c, 0x10, 0x0a, 0xf8, 0xcd, 0x65, 0x94, 0xba, 0x7a, 0x3a, - 0xa3, 0x5e, 0x9e, 0xc7, 0x4a, 0xbf, 0x35, 0x9f, 0x95, 0x1e, 0x66, 0x97, 0x2d, 0x41, 0x5c, 0x6d, - 0x2b, 0xd2, 0x8c, 0xc0, 0x6b, 0xb7, 0xe7, 0x53, 0x3b, 0xaa, 0x31, 0xf9, 0xc5, 0x4d, 0x74, 0xa9, - 0x90, 0xbb, 0xe0, 0xcc, 0x7d, 0x3c, 0xac, 0x65, 0x93, 0x69, 0x6a, 0xae, 0x29, 0x26, 0x11, 0xa2, - 0x3c, 0x6b, 0xbd, 0x09, 0x6d, 0xf2, 0x8e, 0x76, 0xa9, 0x27, 0x35, 0x7c, 0xa8, 0xec, 0xe4, 0x32, - 0xb4, 0xdc, 0xc9, 0x44, 0x93, 0xe1, 0x77, 0xa0, 0x65, 0x04, 0xd7, 0x5c, 0x54, 0xc4, 0x49, 0xca, - 0x80, 0x89, 0x55, 0x35, 0xce, 0x46, 0x88, 0x81, 0x69, 0x1a, 0xa2, 0xcc, 0x30, 0xc8, 0x73, 0x89, - 0x68, 0xfa, 0xe8, 0x0d, 0xfd, 0xe4, 0x61, 0xb3, 0x83, 0x64, 0x23, 0x1f, 0xdf, 0xcc, 0x9e, 0x55, - 0xc2, 0x42, 0x23, 0xd2, 0x1d, 0x13, 0x8e, 0xf8, 0x55, 0xb6, 0x1e, 0x66, 0x10, 0x05, 0xe8, 0x0f, - 0xab, 0x35, 0x5f, 0xcd, 0x26, 0xe3, 0x83, 0xfa, 0x85, 0xcb, 0xe9, 0xa9, 0x8f, 0x34, 0x35, 0x9a, - 0x9e, 0x3d, 0xac, 0x4f, 0x5f, 0x62, 0x8f, 0x3d, 0xdd, 0xa8, 0xc8, 0x6d, 0x86, 0xfc, 0x59, 0x64, - 0xc5, 0x5a, 0xb0, 0xa0, 0xe2, 0x0b, 0x66, 0x1b, 0xc0, 0x25, 0xc0, 0xec, 0x33, 0x57, 0x6d, 0xa5, - 0xc3, 0x8c, 0x84, 0x5d, 0x5e, 0xe3, 0x6c, 0xac, 0x22, 0x55, 0xaa, 0x72, 0xd5, 0x56, 0xc8, 0x56, - 0x7e, 0xbe, 0x0e, 0x15, 0xd3, 0x0f, 0xe6, 0x7a, 0x07, 0x59, 0xe9, 0x2c, 0x5c, 0x7c, 0x88, 0x09, - 0xf1, 0x63, 0x5c, 0xe8, 0x60, 0xd2, 0xf9, 0x97, 0xa8, 0x76, 0x09, 0xcb, 0x93, 0x04, 0xd4, 0x24, - 0x00, 0xf1, 0x31, 0x26, 0x23, 0x44, 0xb7, 0xa2, 0x4e, 0x30, 0x24, 0x99, 0xdf, 0x8e, 0x96, 0x51, - 0x32, 0x54, 0xa6, 0x7f, 0x2c, 0x57, 0xc6, 0x23, 0xc9, 0x10, 0x9f, 0x04, 0x68, 0xb2, 0x95, 0xa1, - 0xd4, 0x0c, 0x2a, 0xfc, 0x76, 0xb4, 0x14, 0x9c, 0x68, 0xa9, 0x47, 0x2f, 0x59, 0x84, 0x14, 0x24, - 0x0a, 0x6c, 0x65, 0x18, 0x9f, 0xe1, 0x4a, 0xf3, 0x16, 0x24, 0x7c, 0xa7, 0x46, 0x7a, 0x64, 0x9a, - 0x87, 0x7f, 0xd9, 0x0a, 0xf5, 0x5b, 0x68, 0xf1, 0x2f, 0x33, 0xd4, 0xef, 0xca, 0x79, 0x83, 0xfc, - 0xbe, 0x6c, 0xc5, 0x16, 0x2c, 0x62, 0x32, 0x1a, 0xb1, 0x05, 0x57, 0xce, 0x1b, 0x55, 0xb0, 0x1a, - 0x15, 0x11, 0x1a, 0xd6, 0xd1, 0x3f, 0x34, 0xde, 0x82, 0x8a, 0xcb, 0x4d, 0xb5, 0x3a, 0x73, 0xea, - 0xa6, 0x6c, 0x25, 0xf0, 0xaf, 0xdb, 0xce, 0x3b, 0x8b, 0xad, 0x72, 0x19, 0xb0, 0xb8, 0x1c, 0x0a, - 0xa5, 0xb9, 0x99, 0x94, 0xea, 0x1d, 0xaa, 0x24, 0xa3, 0x06, 0xc1, 0xb6, 0x8a, 0xc4, 0x37, 0xe8, - 0xad, 0x7c, 0x72, 0x35, 0x69, 0xfe, 0xe5, 0x59, 0x9e, 0x9c, 0xee, 0xc5, 0x98, 0x33, 0xa3, 0x80, - 0xa9, 0xa9, 0x51, 0x70, 0x2b, 0xab, 0x28, 0x4b, 0x2e, 0x41, 0x8f, 0x3b, 0xa9, 0x21, 0xd5, 0x22, - 0x2c, 0x2b, 0xbf, 0xee, 0x50, 0x42, 0x61, 0xfe, 0xad, 0xec, 0x55, 0xfa, 0x32, 0x6e, 0xad, 0xb9, - 0x4a, 0x21, 0x40, 0x94, 0xb9, 0x30, 0xbf, 0xae, 0x29, 0x0d, 0x3e, 0xba, 0xaa, 0xa0, 0x34, 0x52, - 0x28, 0xae, 0xfc, 0xd5, 0x7b, 0x1b, 0xaa, 0x5e, 0x75, 0x57, 0xfd, 0x46, 0xaa, 0x7a, 0xb7, 0xea, - 0xfd, 0x1f, 0xfd, 0xc0, 0x5a, 0xa1, 0x5b, 0xed, 0xb3, 0xba, 0xc0, 0xb8, 0xc3, 0x70, 0xcf, 0x59, - 0xfd, 0x75, 0xcd, 0xe2, 0x60, 0xc1, 0x2a, 0x2e, 0xff, 0xe4, 0x5e, 0xf4, 0x80, 0x93, 0xfb, 0xf7, - 0xd6, 0xe4, 0x5e, 0xbc, 0xf0, 0xe4, 0xde, 0xaa, 0x4a, 0x2e, 0xc1, 0x40, 0x16, 0x7f, 0x6a, 0xb4, - 0x98, 0xed, 0x5e, 0xf6, 0xa2, 0x32, 0xc8, 0x63, 0xfa, 0x68, 0xbf, 0x7e, 0xa2, 0x4f, 0x8f, 0x5c, - 0xd5, 0x86, 0x8e, 0xb0, 0x7c, 0xd0, 0x5a, 0x0c, 0x1f, 0x98, 0x8b, 0x01, 0x34, 0xfe, 0x35, 0xeb, - 0x20, 0x08, 0xff, 0x3a, 0x23, 0x08, 0xff, 0xba, 0x9a, 0x40, 0xa0, 0x75, 0x27, 0x16, 0x76, 0x68, - 0x9c, 0x15, 0xba, 0x50, 0x2a, 0xec, 0x35, 0x60, 0xbd, 0xd5, 0x2d, 0x37, 0x4e, 0xf2, 0x69, 0xae, - 0x93, 0x4d, 0xd6, 0x3a, 0x59, 0x6a, 0xdc, 0x0e, 0x7e, 0xda, 0x5a, 0x27, 0x8f, 0xb0, 0x5d, 0x6d, - 0x2c, 0x96, 0xaf, 0x6b, 0x96, 0x05, 0x97, 0x90, 0xb1, 0xb4, 0x96, 0xcd, 0xce, 0xdc, 0x58, 0xef, - 0xaf, 0x90, 0x30, 0x72, 0x16, 0x73, 0x7d, 0xe6, 0x9e, 0xcc, 0x15, 0x86, 0xb1, 0x80, 0xe1, 0xa5, - 0xd5, 0x6e, 0x55, 0xfa, 0x15, 0xfa, 0xa5, 0x30, 0xff, 0x3c, 0x14, 0x1f, 0x86, 0x58, 0x6c, 0xa4, - 0xa2, 0xc6, 0x2e, 0xf9, 0x07, 0xce, 0x98, 0x53, 0x7f, 0xe0, 0xd8, 0x39, 0xf1, 0x07, 0x6e, 0x19, - 0x83, 0x01, 0x55, 0x2f, 0x3b, 0x54, 0x80, 0xd6, 0xe4, 0x23, 0x1f, 0x6a, 0x0f, 0xf8, 0x43, 0x0a, - 0xbf, 0x0e, 0x2d, 0xf6, 0x04, 0xbc, 0x0a, 0xbd, 0x10, 0xba, 0x46, 0x95, 0x1e, 0x13, 0x08, 0x40, - 0x5c, 0x99, 0x9e, 0x3d, 0xae, 0x9d, 0x3d, 0x9f, 0x39, 0x7e, 0x26, 0x3d, 0x35, 0x95, 0xba, 0xd8, - 0x25, 0x13, 0x30, 0x5f, 0x6d, 0xf9, 0x20, 0x14, 0x58, 0x31, 0x4f, 0xcc, 0x48, 0x68, 0x3c, 0x9b, - 0xcb, 0x60, 0x83, 0x46, 0xc4, 0xb3, 0x8d, 0x68, 0x69, 0x50, 0x09, 0x75, 0xb4, 0xc2, 0xcd, 0xce, - 0x42, 0x1a, 0xd3, 0x1c, 0x40, 0xe2, 0x72, 0xc8, 0x99, 0x9a, 0xfe, 0x50, 0x3f, 0x3f, 0x2a, 0x53, - 0x28, 0xef, 0x42, 0x8b, 0xbd, 0x6e, 0xea, 0x7f, 0x91, 0x27, 0x8e, 0x01, 0xdb, 0xa4, 0x9a, 0xc7, - 0x54, 0xe9, 0x11, 0x81, 0xa0, 0x1b, 0xc4, 0x68, 0x08, 0x13, 0x02, 0x2b, 0xfb, 0x37, 0x4b, 0xd1, - 0xe3, 0x3b, 0x08, 0x57, 0xc9, 0xb7, 0xde, 0x7f, 0x95, 0xbd, 0xde, 0x6b, 0x55, 0xe9, 0x39, 0x6b, - 0xbd, 0x3f, 0xb1, 0xc0, 0x1e, 0x7c, 0x5f, 0x8b, 0xff, 0x1d, 0x76, 0xd7, 0x34, 0x9d, 0xa3, 0x9f, - 0x62, 0x77, 0xcd, 0x55, 0xf6, 0xf9, 0xed, 0xaa, 0x5d, 0x88, 0xf0, 0xfc, 0xbb, 0xe5, 0xa2, 0x6f, - 0xb9, 0x5b, 0x2e, 0x7e, 0x40, 0x86, 0xf2, 0xa7, 0x5c, 0xcf, 0xdb, 0xd9, 0x75, 0xb8, 0xd4, 0xba, - 0xf5, 0xf9, 0x40, 0xeb, 0x90, 0x15, 0x66, 0x5e, 0xb3, 0xf6, 0x43, 0x58, 0xd6, 0xcf, 0xe0, 0x49, - 0x64, 0xee, 0x87, 0x45, 0xe6, 0x4e, 0xc8, 0x72, 0x05, 0x63, 0x4f, 0x7c, 0xcf, 0x62, 0xa5, 0x85, - 0x0b, 0xb3, 0x52, 0x22, 0x94, 0x9a, 0xac, 0x74, 0x0d, 0xc8, 0x8a, 0x84, 0x74, 0x16, 0x43, 0x35, - 0xd9, 0x64, 0xf5, 0x39, 0x4e, 0x95, 0xce, 0x70, 0xe8, 0x24, 0x27, 0xcc, 0x3f, 0x6b, 0xc5, 0x77, - 0x80, 0x08, 0x33, 0x40, 0xe9, 0xa9, 0xdb, 0x10, 0x30, 0xd9, 0xf4, 0x3b, 0xc0, 0x28, 0xc7, 0xef, - 0x64, 0xc9, 0xac, 0x99, 0xd3, 0x9f, 0xeb, 0x13, 0x1f, 0x69, 0x53, 0x77, 0xb4, 0x89, 0xd3, 0x99, - 0xc3, 0x43, 0xc6, 0xeb, 0x1b, 0x57, 0x53, 0xc7, 0x2f, 0x68, 0x33, 0x37, 0xb4, 0x0f, 0x07, 0x58, - 0x1e, 0x63, 0xcd, 0xb5, 0x3f, 0x70, 0x46, 0xe3, 0xcb, 0xa6, 0x39, 0xb4, 0x26, 0x5f, 0xc5, 0xbe, - 0x17, 0x7c, 0xa5, 0xec, 0xdf, 0x2e, 0x46, 0x6b, 0xb6, 0xf9, 0x9a, 0x83, 0x7f, 0x26, 0x6e, 0xb0, - 0x07, 0x21, 0xb3, 0x4f, 0x43, 0xec, 0xd5, 0x9d, 0xf5, 0x16, 0x38, 0x13, 0x19, 0x49, 0xcf, 0x1e, - 0xae, 0xcc, 0x8c, 0x1c, 0xd7, 0x12, 0x11, 0xb8, 0x31, 0x09, 0x86, 0x29, 0xf0, 0x94, 0x87, 0x01, - 0xcd, 0x65, 0x1a, 0x32, 0x43, 0x99, 0xbf, 0xcd, 0xa1, 0x65, 0x8a, 0xdf, 0x13, 0x3c, 0xd0, 0x1e, - 0xa6, 0x47, 0x15, 0x39, 0x07, 0x58, 0xdb, 0x83, 0xbe, 0x66, 0x9f, 0xbf, 0x0e, 0x90, 0x20, 0xca, - 0xe8, 0x2f, 0x68, 0x16, 0x6d, 0xf0, 0x82, 0x76, 0x95, 0xdc, 0xd0, 0x3f, 0x72, 0x51, 0x9b, 0x3a, - 0xa4, 0x9f, 0xbc, 0xa3, 0x25, 0x86, 0xd2, 0x33, 0xd7, 0xf4, 0x81, 0x8f, 0x92, 0xb1, 0x78, 0x7a, - 0xea, 0x32, 0xc4, 0x06, 0xc9, 0x42, 0x80, 0xa7, 0x5b, 0x52, 0x9f, 0xc4, 0xe1, 0xd6, 0x84, 0x7e, - 0x7a, 0x90, 0x74, 0x0f, 0x56, 0xa3, 0xc4, 0xa7, 0x6d, 0x94, 0x73, 0xc9, 0xca, 0x46, 0x6d, 0xf9, - 0x6a, 0xb4, 0xc8, 0xdd, 0xda, 0x4a, 0x1d, 0x74, 0x20, 0xe4, 0x81, 0xbb, 0xb5, 0x55, 0x5c, 0xeb, - 0x6e, 0x6d, 0xa5, 0x6e, 0x05, 0xfd, 0x11, 0x7d, 0xb4, 0xdf, 0x14, 0xf7, 0xd2, 0xb3, 0x5d, 0xa9, - 0xab, 0xd3, 0x32, 0x46, 0xaa, 0x0e, 0xab, 0xd2, 0xaf, 0x51, 0x40, 0x58, 0x60, 0x80, 0xc5, 0xcd, - 0x80, 0x9f, 0x7f, 0xe1, 0x58, 0xa1, 0x52, 0xa1, 0x81, 0xb0, 0x46, 0x00, 0xcd, 0x6c, 0x2c, 0x10, - 0xb0, 0x96, 0x49, 0xd9, 0x5b, 0xa8, 0xc4, 0xd6, 0x97, 0xbc, 0x03, 0x15, 0xd3, 0xd6, 0x10, 0x6b, - 0x1d, 0x58, 0x76, 0x58, 0x10, 0xbf, 0x02, 0x15, 0xb4, 0x74, 0x52, 0xf3, 0x4e, 0x41, 0x4b, 0x27, - 0xfe, 0xf6, 0x75, 0x52, 0x8f, 0xba, 0x02, 0x5f, 0x67, 0x59, 0x82, 0x43, 0x4f, 0xe4, 0x6d, 0xc4, - 0xf7, 0x63, 0x91, 0xfd, 0xf3, 0x02, 0xf4, 0x78, 0x2d, 0x75, 0x16, 0xf8, 0xd3, 0xaf, 0xb1, 0x77, - 0x73, 0x77, 0xdc, 0x9f, 0xa8, 0xd2, 0x5a, 0x76, 0xc7, 0x35, 0xb7, 0x44, 0xd3, 0x4d, 0xef, 0xfe, - 0xb6, 0xdc, 0xea, 0x16, 0x55, 0xda, 0x8b, 0xf6, 0x08, 0xf3, 0xb7, 0x4e, 0x7c, 0x19, 0x0c, 0xd3, - 0x4c, 0x01, 0x30, 0xc1, 0x2a, 0x1d, 0xe9, 0xa3, 0x97, 0xc1, 0x16, 0x6e, 0x78, 0x37, 0x50, 0x3e, - 0x0d, 0x19, 0x58, 0xbe, 0x0b, 0x0f, 0x0d, 0x11, 0x4e, 0x9b, 0xaf, 0xa0, 0xef, 0xc7, 0x24, 0xf8, - 0xd7, 0x8b, 0xd0, 0x13, 0x5b, 0x7d, 0xa1, 0x30, 0x5b, 0xf7, 0x06, 0x25, 0xd8, 0x66, 0x4c, 0x83, - 0x4e, 0x76, 0x4b, 0x87, 0x89, 0x40, 0x22, 0x45, 0x31, 0x5b, 0xfa, 0x9b, 0xf7, 0x63, 0xb7, 0x80, - 0x05, 0x0b, 0x76, 0x0b, 0xc0, 0xa1, 0x0f, 0x26, 0x41, 0x00, 0x00, 0x88, 0xeb, 0xcb, 0xec, 0xfc, - 0xaf, 0xdb, 0xa7, 0xc7, 0x22, 0x23, 0xd0, 0x24, 0x33, 0x3d, 0x56, 0x5a, 0x61, 0x81, 0xc1, 0xf3, - 0x87, 0x11, 0xba, 0xde, 0xca, 0x27, 0x74, 0x11, 0x6b, 0x9d, 0x4d, 0xe8, 0x7a, 0x8a, 0x1a, 0x52, - 0xc8, 0x51, 0x88, 0x8d, 0xdb, 0x5c, 0xd1, 0x0f, 0xf6, 0xda, 0x04, 0xb0, 0xea, 0x31, 0x4e, 0x95, - 0xce, 0x71, 0x68, 0x84, 0x13, 0x16, 0xea, 0x30, 0xf1, 0xb7, 0x40, 0xd2, 0xac, 0x9b, 0xc9, 0xb8, - 0xe0, 0x66, 0x86, 0x36, 0xf6, 0x99, 0x76, 0xe8, 0x4c, 0x32, 0x7e, 0x28, 0x75, 0x76, 0x52, 0xbf, - 0x88, 0xd7, 0x8c, 0x3e, 0xf9, 0x25, 0x4e, 0xed, 0x3b, 0x43, 0x6c, 0x8f, 0x7d, 0x00, 0xa7, 0x8a, - 0x3e, 0x21, 0x65, 0xe5, 0xed, 0x1d, 0x07, 0xd6, 0xad, 0xf5, 0x9d, 0x49, 0xc6, 0xe2, 0x46, 0xdd, - 0x89, 0xc7, 0x2a, 0x38, 0x66, 0xeb, 0x05, 0xe8, 0xc9, 0xfc, 0x95, 0xfb, 0x7e, 0xe8, 0x13, 0xf5, - 0xa6, 0x3e, 0xb1, 0xe8, 0x9e, 0xfa, 0x04, 0x35, 0xee, 0x60, 0x7d, 0xc2, 0x26, 0x3b, 0xc3, 0x5c, - 0x20, 0x09, 0xd5, 0x6f, 0xab, 0x52, 0x13, 0x92, 0x85, 0x05, 0xfb, 0x44, 0x7c, 0x26, 0x6b, 0xc4, - 0xf4, 0x73, 0x07, 0x33, 0x67, 0x86, 0x41, 0x39, 0x81, 0x5a, 0xfe, 0x81, 0x23, 0xbd, 0xf1, 0x07, - 0xce, 0x68, 0x5b, 0xd9, 0xd0, 0x62, 0xf4, 0x58, 0x36, 0x51, 0x63, 0xc9, 0x6c, 0xc9, 0xe6, 0x9c, - 0x1b, 0x1f, 0x80, 0x73, 0x2e, 0x09, 0x2e, 0x02, 0xd5, 0x96, 0xb2, 0xc9, 0xba, 0x5c, 0x36, 0x49, - 0xe2, 0xd4, 0x30, 0xeb, 0xe0, 0xb1, 0x79, 0x26, 0x31, 0xbb, 0x1e, 0x3a, 0x73, 0xae, 0x4a, 0xfc, - 0x69, 0x96, 0xf1, 0x9b, 0xa8, 0x30, 0xd0, 0xae, 0x04, 0x89, 0x8a, 0xbf, 0xd8, 0x0a, 0x00, 0x66, - 0x02, 0xc5, 0xa7, 0x8c, 0x5f, 0x59, 0xdd, 0x4f, 0x87, 0xd1, 0x44, 0x64, 0x04, 0xee, 0xf9, 0x3a, - 0xfe, 0xcf, 0xbb, 0xf4, 0xfe, 0x5b, 0x01, 0x7a, 0x7c, 0xa7, 0x12, 0xf4, 0xed, 0x39, 0xf0, 0x27, - 0xb2, 0x57, 0xbd, 0xc4, 0x3a, 0xe7, 0x7c, 0x33, 0x0b, 0xd3, 0xa2, 0x3f, 0x87, 0x85, 0xa9, 0x5a, - 0x56, 0xa5, 0xed, 0x68, 0x9b, 0x30, 0x7f, 0x6f, 0x89, 0x4f, 0x82, 0x13, 0x98, 0xcd, 0xaa, 0x42, - 0xcf, 0x4c, 0x23, 0x57, 0xd9, 0x2d, 0xd8, 0xa0, 0x49, 0x36, 0xe1, 0x7c, 0xf4, 0xbe, 0x1f, 0x9b, - 0xf0, 0x1e, 0xb4, 0x8a, 0xad, 0x36, 0x39, 0xd3, 0x7e, 0xc9, 0x1a, 0x26, 0xee, 0xde, 0xd6, 0x15, - 0xcb, 0x7e, 0x47, 0x2e, 0x64, 0x10, 0x3c, 0xea, 0x92, 0x2d, 0x9b, 0xdf, 0x65, 0x7f, 0xb3, 0x08, - 0x95, 0xe6, 0x2e, 0x9e, 0xef, 0xc7, 0xd6, 0x20, 0xdb, 0xb6, 0x06, 0xc7, 0x42, 0x9d, 0x41, 0x2e, - 0x2a, 0xde, 0xc7, 0xf6, 0xc0, 0x1f, 0xe4, 0xd0, 0xca, 0x7d, 0xca, 0xee, 0x5d, 0xcc, 0x93, 0xa4, - 0xd4, 0x4a, 0x92, 0xf3, 0x30, 0xd7, 0xdb, 0xca, 0x6e, 0xc9, 0xc2, 0x02, 0x07, 0xe5, 0xec, 0xbc, - 0xe2, 0x0f, 0xe0, 0x1c, 0x3c, 0x97, 0x31, 0xb2, 0x9c, 0x4d, 0x5e, 0xb1, 0xcf, 0x46, 0xab, 0x7a, - 0xb3, 0x2a, 0xd5, 0xa2, 0x1a, 0x61, 0xde, 0x91, 0x11, 0x57, 0x67, 0xf3, 0xb5, 0x79, 0x36, 0xa5, - 0xd9, 0x22, 0x54, 0x48, 0x08, 0xec, 0x6c, 0x70, 0x12, 0xdb, 0xaa, 0x8d, 0xe3, 0x80, 0xfb, 0xbb, - 0xc1, 0x71, 0xd6, 0x2e, 0xb0, 0x0b, 0xcd, 0x25, 0xa2, 0x16, 0x9b, 0xa9, 0x36, 0x6f, 0x51, 0x31, - 0x8c, 0xc6, 0x08, 0xdc, 0xbd, 0xba, 0xb3, 0xdd, 0xc3, 0x46, 0xed, 0xce, 0x7a, 0xd1, 0xd3, 0x89, - 0x10, 0xfc, 0xca, 0xb6, 0x7c, 0x31, 0x60, 0x91, 0x87, 0xdf, 0x40, 0x80, 0x5a, 0xbe, 0x98, 0x74, - 0xfe, 0x7d, 0x7b, 0xfc, 0x9a, 0xc5, 0x4c, 0xe4, 0x02, 0x36, 0x7a, 0x4d, 0x05, 0xf3, 0x61, 0x8b, - 0x61, 0x49, 0x1f, 0x44, 0x5a, 0x6f, 0x3c, 0x91, 0x54, 0x61, 0x8f, 0x1e, 0x53, 0x65, 0xbc, 0x3a, - 0x0a, 0xc7, 0x50, 0xc4, 0x4a, 0x49, 0x5f, 0x1d, 0x2d, 0x26, 0x7f, 0x68, 0x9b, 0xe8, 0xb3, 0xa2, - 0x1b, 0xd1, 0xb2, 0xce, 0x76, 0x0f, 0x69, 0xcf, 0x52, 0x2b, 0x83, 0x01, 0x13, 0x8b, 0x3a, 0xdb, - 0x3d, 0xb4, 0x0d, 0x06, 0x8c, 0x7f, 0x1f, 0x15, 0x99, 0xce, 0x22, 0xd4, 0x8c, 0x45, 0x1c, 0x51, - 0x2d, 0xa8, 0xb8, 0x3e, 0x3d, 0x75, 0x19, 0x77, 0x25, 0x0d, 0x80, 0x80, 0x39, 0x1d, 0x84, 0x1e, - 0x21, 0x3f, 0xe7, 0x12, 0x51, 0x12, 0x5d, 0x84, 0x44, 0x38, 0xc0, 0x80, 0x0a, 0xd9, 0xca, 0xcb, - 0xbf, 0x8c, 0x96, 0x90, 0xfb, 0xf4, 0xf4, 0xa8, 0xe9, 0x19, 0xac, 0x44, 0x01, 0x04, 0x86, 0x87, - 0xec, 0x00, 0xf0, 0x5a, 0x85, 0xd1, 0x14, 0x92, 0xca, 0x9e, 0x52, 0x15, 0x7d, 0xd3, 0x53, 0x2a, - 0xf4, 0xcd, 0x4f, 0xa9, 0x8a, 0xbf, 0xcd, 0x29, 0xd5, 0xf2, 0x07, 0x3c, 0xa5, 0xe2, 0xdf, 0x23, - 0x57, 0x06, 0x95, 0x60, 0xa7, 0xe2, 0x75, 0x35, 0xd4, 0x77, 0xb4, 0x91, 0x70, 0xa4, 0x25, 0x70, - 0x97, 0xdb, 0x9e, 0x22, 0x3e, 0xd3, 0xd9, 0xee, 0x81, 0xa7, 0x19, 0x5d, 0x0d, 0x10, 0xbe, 0xd8, - 0x7c, 0x00, 0x65, 0x00, 0xe0, 0xb2, 0x3d, 0x07, 0xff, 0x8e, 0xed, 0xaa, 0x29, 0x13, 0x90, 0x94, - 0x7d, 0x21, 0xb6, 0xdc, 0x7a, 0x12, 0x36, 0x39, 0x33, 0x9a, 0x3a, 0x3e, 0x0e, 0xb4, 0xe0, 0x95, - 0x14, 0xf3, 0x55, 0xd8, 0xce, 0x76, 0x8f, 0xed, 0x96, 0xaa, 0x8c, 0x8c, 0x17, 0xbd, 0x48, 0x30, - 0xd2, 0x3c, 0xcf, 0x64, 0x38, 0x7d, 0xde, 0x20, 0xac, 0x4a, 0x03, 0x53, 0x7c, 0x84, 0xfe, 0x70, - 0x35, 0x38, 0x9c, 0xae, 0x5a, 0x19, 0xfc, 0x99, 0xcd, 0xa7, 0xc1, 0xf8, 0x9d, 0xc8, 0x7c, 0x2f, - 0x8c, 0x84, 0x1a, 0x9d, 0x8f, 0x28, 0x79, 0x78, 0xc8, 0x44, 0x15, 0x57, 0x1b, 0xbf, 0xec, 0x64, - 0x4d, 0x84, 0xea, 0x37, 0x54, 0xe9, 0x75, 0xf4, 0x9a, 0x60, 0xf2, 0x20, 0x71, 0x3d, 0xeb, 0xf9, - 0x42, 0x9f, 0xae, 0xb9, 0xa3, 0xc5, 0x8f, 0x83, 0xd0, 0x00, 0x2b, 0x1e, 0xde, 0xfc, 0xa3, 0x42, - 0xd4, 0x41, 0x0e, 0x2d, 0xc6, 0x45, 0xf3, 0xeb, 0xd1, 0x12, 0x8f, 0xcf, 0x1b, 0x0c, 0xcd, 0x17, - 0x3a, 0xd4, 0x49, 0x22, 0xdd, 0xba, 0xc3, 0x8a, 0x0c, 0x78, 0xf4, 0x4a, 0x28, 0x33, 0xbe, 0x98, - 0x5b, 0x95, 0x64, 0x0f, 0x14, 0x83, 0xe5, 0x24, 0xe4, 0x89, 0xe7, 0x93, 0x6c, 0x07, 0x96, 0xfd, - 0x18, 0x15, 0x99, 0xf4, 0x79, 0x1e, 0x2d, 0xc6, 0x25, 0x18, 0x7e, 0xd1, 0xf8, 0x37, 0xff, 0x08, - 0x5a, 0xb2, 0xbb, 0x35, 0xe0, 0x81, 0x8b, 0x7b, 0x85, 0x32, 0x7c, 0x94, 0xfd, 0x87, 0x22, 0xb4, - 0x9a, 0x39, 0xca, 0xd9, 0xd9, 0xe0, 0x34, 0xa4, 0xbf, 0xf7, 0xb3, 0x79, 0xb1, 0xf3, 0x01, 0x34, - 0x82, 0xc7, 0x82, 0xab, 0x57, 0x15, 0x94, 0x7a, 0x17, 0x90, 0x04, 0xb3, 0x9e, 0x94, 0x2b, 0x30, - 0xe2, 0x66, 0x7e, 0x63, 0x0e, 0xf9, 0x75, 0xcd, 0xea, 0xe0, 0xc3, 0xd6, 0x53, 0x72, 0xd6, 0xeb, - 0x72, 0x36, 0xce, 0xd9, 0x64, 0xee, 0x0c, 0x8b, 0x0c, 0xf3, 0xcd, 0xbd, 0x76, 0x86, 0x05, 0x5a, - 0x93, 0x7f, 0xcf, 0x58, 0xfc, 0xcd, 0xf6, 0x8c, 0x2d, 0x16, 0x97, 0x5e, 0x62, 0xa8, 0x60, 0x79, - 0xb9, 0xf4, 0x42, 0xdd, 0x6b, 0xf0, 0xef, 0xcd, 0xf6, 0x77, 0xa9, 0x37, 0xce, 0xb3, 0x43, 0x2c, - 0x40, 0x8a, 0xee, 0x1d, 0x81, 0xdc, 0x8d, 0xe0, 0xad, 0x6f, 0xb9, 0x11, 0x7c, 0x5d, 0xb3, 0x32, - 0x58, 0x22, 0x2f, 0xc6, 0x28, 0xf2, 0x12, 0x08, 0x08, 0xf8, 0x5d, 0x6c, 0x0d, 0x6f, 0x64, 0x6f, - 0x0d, 0xcf, 0x2d, 0xb8, 0x35, 0x7c, 0x5d, 0xb3, 0x34, 0xb8, 0x18, 0x37, 0xdd, 0xda, 0x23, 0x72, - 0xf8, 0x2d, 0xfa, 0xa3, 0xf1, 0xdb, 0xe2, 0x3f, 0x12, 0xbf, 0x5d, 0xfe, 0xc7, 0xe0, 0xb7, 0x25, - 0xdf, 0x21, 0xbf, 0xdd, 0xa3, 0x4a, 0x1e, 0xe4, 0x16, 0xf2, 0x33, 0x1d, 0x71, 0x35, 0x0c, 0x0f, - 0x28, 0x51, 0x9d, 0xed, 0x1e, 0xd0, 0x86, 0x6d, 0x87, 0xd3, 0xcc, 0x6a, 0xfe, 0x03, 0x47, 0x17, - 0xe0, 0x1f, 0x38, 0x63, 0xe2, 0x9b, 0x16, 0xce, 0xdb, 0x1c, 0x7a, 0x34, 0xbb, 0x8c, 0xef, 0x87, - 0x62, 0xa5, 0x15, 0xa2, 0xd5, 0xcc, 0x29, 0xd8, 0x9f, 0x8e, 0x25, 0xbf, 0x9f, 0x8f, 0x25, 0x7f, - 0x77, 0x42, 0x6b, 0x75, 0x16, 0xeb, 0xfd, 0xe6, 0x42, 0xf9, 0x37, 0x64, 0xb0, 0x1b, 0xb3, 0x19, - 0xec, 0xbd, 0xc5, 0xe0, 0xef, 0x8c, 0x8d, 0xfe, 0x3a, 0x97, 0x8d, 0x36, 0x7e, 0x6b, 0x36, 0xfa, - 0x50, 0x70, 0xa5, 0xfc, 0x17, 0xf3, 0x32, 0xd2, 0x6a, 0x4b, 0xe2, 0x2d, 0x34, 0xa6, 0xed, 0x3c, - 0xe7, 0xd0, 0x26, 0x27, 0x34, 0x84, 0xde, 0x40, 0x36, 0x27, 0x2c, 0xa2, 0xea, 0x7c, 0xf6, 0x39, - 0xfc, 0x0e, 0x97, 0x3f, 0xfc, 0x82, 0x08, 0x27, 0xf1, 0x24, 0xe0, 0x55, 0x16, 0x9f, 0x7c, 0x0c, - 0x4a, 0xc9, 0xe1, 0x96, 0xd9, 0xdc, 0x71, 0x5f, 0x0e, 0x77, 0xcc, 0x57, 0x5a, 0x63, 0x38, 0xe8, - 0xf3, 0x37, 0x43, 0x69, 0xff, 0x1f, 0xe4, 0x9d, 0x5b, 0x55, 0xc9, 0x85, 0x36, 0x0b, 0xf9, 0xb9, - 0x83, 0xc8, 0x9b, 0xa7, 0xff, 0x3b, 0x1b, 0x9c, 0xb9, 0x8c, 0x13, 0x26, 0x22, 0x73, 0xda, 0x7e, - 0xa4, 0x00, 0x3d, 0x9a, 0x4d, 0xe9, 0xfb, 0x61, 0x56, 0x79, 0xcb, 0xe6, 0xc1, 0x53, 0x9a, 0xd7, - 0xac, 0xb2, 0xb3, 0xc1, 0x09, 0x1c, 0x02, 0xcc, 0x29, 0xa5, 0xd0, 0x39, 0xda, 0xf0, 0x20, 0x18, - 0x37, 0x76, 0x36, 0x38, 0x4d, 0x03, 0xa3, 0x3b, 0xec, 0x2e, 0x3b, 0x58, 0x80, 0x56, 0x33, 0x07, - 0x62, 0x7f, 0x3a, 0xa6, 0x6b, 0x72, 0x98, 0x82, 0x6f, 0xc7, 0x61, 0xaa, 0x6b, 0x54, 0xe9, 0x67, - 0xe8, 0x75, 0x21, 0x7f, 0x2b, 0x44, 0x9e, 0x06, 0x8a, 0x5d, 0x70, 0x72, 0x90, 0x29, 0x91, 0x9d, - 0xff, 0xff, 0xbd, 0x53, 0x42, 0xbb, 0xfd, 0x39, 0xf4, 0x4a, 0xfe, 0x29, 0x71, 0x63, 0x31, 0x7a, - 0xd8, 0x34, 0x6f, 0x31, 0x13, 0xe2, 0xe7, 0xd9, 0x13, 0x62, 0xc3, 0x03, 0x4c, 0x88, 0xc5, 0xc1, - 0x82, 0xd2, 0x47, 0xbe, 0x1b, 0x43, 0x95, 0x69, 0x04, 0x5a, 0x74, 0x5f, 0x46, 0xa0, 0x8e, 0x7c, - 0x26, 0xa9, 0x3f, 0xbe, 0xc2, 0xd5, 0x68, 0x63, 0xec, 0xb0, 0xef, 0x92, 0xe7, 0x17, 0x58, 0xd6, - 0x5d, 0x66, 0xb1, 0x6e, 0x70, 0x0e, 0x87, 0x6f, 0x93, 0x75, 0x67, 0x31, 0xed, 0xea, 0x93, 0x9c, - 0x2a, 0xa9, 0x1c, 0x1a, 0xe2, 0x84, 0x7c, 0x23, 0x24, 0xee, 0x37, 0x6d, 0x8f, 0xe6, 0x64, 0xff, - 0x13, 0x1d, 0xa8, 0xfc, 0xab, 0x02, 0xf4, 0x88, 0xbd, 0x46, 0xdf, 0x8f, 0xe5, 0xb3, 0xfd, 0x3e, - 0xce, 0x30, 0x69, 0x73, 0xc0, 0x80, 0x05, 0x4b, 0x88, 0x87, 0x17, 0x08, 0xb4, 0xbe, 0xeb, 0x78, - 0x09, 0x31, 0x8b, 0xc7, 0x30, 0xab, 0xe4, 0xed, 0x0c, 0x91, 0xb7, 0x8d, 0xcf, 0x3c, 0x86, 0xe1, - 0xae, 0x42, 0x7a, 0xc9, 0x81, 0xe6, 0xfc, 0x47, 0xe3, 0xf0, 0x3f, 0x1a, 0x87, 0xef, 0x61, 0x01, - 0x78, 0x2f, 0x9f, 0xd4, 0xfa, 0x5d, 0xe9, 0xef, 0x6f, 0xa3, 0x15, 0x66, 0x15, 0x59, 0xeb, 0x00, - 0x71, 0xd0, 0xc8, 0x4a, 0x12, 0xd7, 0x68, 0x33, 0x1f, 0x6a, 0xfd, 0x03, 0xb8, 0xef, 0x86, 0xa6, - 0x8c, 0xf7, 0x9b, 0xa8, 0xe4, 0x9b, 0x85, 0xcb, 0xff, 0xd2, 0x92, 0x40, 0x8b, 0xf3, 0x9f, 0xe3, - 0x60, 0x61, 0xb1, 0x56, 0x09, 0xbb, 0x7d, 0xad, 0xe4, 0x94, 0xe8, 0x81, 0x64, 0xd1, 0x7f, 0xc2, - 0xc8, 0xa2, 0xcb, 0xef, 0x8b, 0xfc, 0x03, 0x4a, 0xa5, 0x59, 0x86, 0x8d, 0x92, 0xef, 0xd0, 0xb0, - 0x51, 0x36, 0xc4, 0xa1, 0x15, 0xf6, 0xda, 0xfd, 0xb1, 0x8c, 0xac, 0xcf, 0xe5, 0x8c, 0x2e, 0x89, - 0x05, 0x9d, 0x3d, 0x58, 0x65, 0x63, 0x1c, 0xe3, 0x43, 0x41, 0x2f, 0x5b, 0xfe, 0x11, 0x04, 0x83, - 0xea, 0x6a, 0x55, 0x7a, 0x19, 0xfd, 0x58, 0x98, 0xaf, 0x2c, 0x71, 0x0d, 0xb0, 0x50, 0xe3, 0x7e, - 0x8a, 0x36, 0x7a, 0xdd, 0x64, 0x56, 0x65, 0x7f, 0x5d, 0xc0, 0x9c, 0x98, 0x9a, 0xf9, 0xbe, 0x8f, - 0xce, 0x34, 0x4f, 0xe4, 0xdd, 0x88, 0xa0, 0x49, 0xf7, 0xb7, 0x0f, 0x6d, 0x57, 0xa5, 0xad, 0xe8, - 0xe7, 0xc2, 0xbc, 0xfd, 0x61, 0x78, 0x53, 0x81, 0xa1, 0x9f, 0xe9, 0xc5, 0xf9, 0xb6, 0xa5, 0x5d, - 0xa8, 0x98, 0xa1, 0xc3, 0x97, 0x66, 0x8d, 0xb9, 0xb5, 0xcd, 0xac, 0xb5, 0x6d, 0x15, 0xe0, 0x90, - 0xc9, 0xee, 0x02, 0x8f, 0xda, 0xcd, 0x21, 0xc6, 0x16, 0x53, 0x16, 0xe5, 0xd0, 0x43, 0x9b, 0x95, - 0xf0, 0xce, 0x06, 0x27, 0x9e, 0xca, 0xc6, 0xdc, 0xaa, 0x33, 0x98, 0x3a, 0x67, 0x79, 0x85, 0x51, - 0xa6, 0xfe, 0x2c, 0xec, 0x57, 0x90, 0x1d, 0x84, 0x25, 0x07, 0x9e, 0xfa, 0x70, 0x6a, 0x0c, 0x3d, - 0x63, 0x28, 0x09, 0x1b, 0x54, 0xa9, 0x0a, 0xfd, 0x48, 0xc8, 0x2d, 0x40, 0x7c, 0x14, 0xfa, 0xa1, - 0xb3, 0xdd, 0x93, 0x1a, 0xe9, 0xc1, 0xd9, 0xe9, 0x64, 0xfa, 0x97, 0x05, 0x88, 0x67, 0xb1, 0xbf, - 0x1f, 0xd3, 0xe8, 0xe7, 0xb6, 0x69, 0x94, 0xe3, 0x2c, 0x42, 0x5b, 0x73, 0x7f, 0x53, 0x68, 0x93, - 0x2a, 0x39, 0x91, 0x24, 0xe4, 0xe9, 0x05, 0x63, 0x15, 0xee, 0x6c, 0x70, 0x3a, 0xac, 0x2e, 0x9b, - 0x6f, 0xe6, 0x78, 0xd0, 0x32, 0x9a, 0x9f, 0x5f, 0x85, 0x16, 0x75, 0xb6, 0x1b, 0x61, 0x6b, 0xf0, - 0x4f, 0xf3, 0xc4, 0xa6, 0x80, 0x39, 0xb1, 0x59, 0x83, 0x0a, 0x09, 0xd3, 0xd9, 0x4d, 0xe3, 0x6f, - 0x95, 0xc8, 0xe6, 0x37, 0x13, 0xcf, 0x73, 0x31, 0x1b, 0xcf, 0xb3, 0xec, 0x3f, 0xac, 0x46, 0x4b, - 0xc8, 0xfc, 0xe4, 0xeb, 0xb2, 0xb9, 0x11, 0x31, 0xcf, 0x14, 0x11, 0x18, 0x91, 0x2f, 0x9e, 0xb8, - 0xaf, 0x3b, 0xa0, 0x2f, 0xd2, 0xa8, 0xb7, 0xcc, 0xa8, 0x11, 0x80, 0xb8, 0xda, 0xcc, 0x0e, 0x97, - 0xd1, 0xa9, 0x90, 0x00, 0x71, 0x71, 0x0f, 0x72, 0xa8, 0x50, 0xf1, 0xfa, 0xc2, 0x66, 0x54, 0xfd, - 0xc2, 0x9a, 0x66, 0x55, 0xf2, 0x0a, 0x26, 0x50, 0xfc, 0x85, 0x36, 0x75, 0x27, 0x19, 0x1f, 0x6c, - 0x74, 0xbb, 0xe9, 0x95, 0x71, 0xf3, 0x05, 0x6a, 0x4b, 0x66, 0x48, 0x9c, 0x4c, 0x7f, 0x75, 0x8c, - 0x0d, 0xe2, 0x0f, 0x81, 0x06, 0x52, 0x23, 0x3d, 0x66, 0x60, 0x78, 0xe3, 0xd1, 0xea, 0x01, 0x8a, + // 74964 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x70, 0x14, 0x57, + 0xd6, 0x20, 0xf8, 0xa5, 0x78, 0x49, 0x57, 0x08, 0x70, 0xda, 0xd8, 0x32, 0xb6, 0x71, 0x59, 0xee, + 0xb6, 0xa5, 0xb4, 0xc4, 0x23, 0xed, 0xf6, 0x03, 0xb7, 0xbb, 0x9d, 0x2a, 0x09, 0x5c, 0x0d, 0x08, + 0x39, 0x25, 0x70, 0xdb, 0x6e, 0x37, 0x53, 0x54, 0x25, 0xa2, 0x2c, 0xa9, 0x4a, 0x5d, 0x55, 0x12, + 0xd0, 0xfd, 0x4d, 0x77, 0x49, 0x48, 0x48, 0x82, 0xd2, 0x83, 0x34, 0x4f, 0x21, 0x1e, 0xb2, 0x79, + 0xc8, 0x36, 0x92, 0xc0, 0xc6, 0x50, 0x94, 0x4a, 0x56, 0x4c, 0xec, 0x4c, 0xcc, 0xec, 0xce, 0xc4, + 0xec, 0x4c, 0xcf, 0xee, 0xc4, 0xc6, 0xc4, 0xbc, 0x76, 0xa9, 0xcc, 0xaa, 0x9a, 0xfd, 0x62, 0x35, + 0xf1, 0xc5, 0x6e, 0x6c, 0x84, 0xe7, 0xc7, 0x6e, 0xdc, 0x7b, 0x6e, 0x66, 0xde, 0xac, 0x2a, 0x09, + 0xb0, 0xdd, 0xdd, 0x9f, 0x77, 0x3f, 0x82, 0x08, 0x55, 0x9e, 0x7b, 0xee, 0xb9, 0xef, 0x73, 0xcf, + 0x39, 0xf7, 0xdc, 0x73, 0xd1, 0x23, 0x9e, 0x96, 0xf6, 0x50, 0x58, 0x09, 0xb6, 0xba, 0xfd, 0xee, + 0x26, 0x25, 0xb8, 0xae, 0x2d, 0x18, 0x08, 0x07, 0xf8, 0x15, 0x76, 0xe8, 0x9a, 0x27, 0x9b, 0x02, + 0x81, 0xa6, 0x16, 0x65, 0xbd, 0xbb, 0xcd, 0xb7, 0xde, 0xed, 0xf7, 0x07, 0xc2, 0xee, 0xb0, 0x2f, + 0xe0, 0x0f, 0x01, 0xb6, 0x99, 0x4a, 0xbe, 0xf6, 0xb4, 0xef, 0x5d, 0x1f, 0x0a, 0x07, 0xdb, 0x3d, + 0x61, 0x9a, 0x5a, 0x49, 0xfe, 0x78, 0xaa, 0x9a, 0x14, 0x7f, 0x55, 0x68, 0xbf, 0xbb, 0xa9, 0x49, + 0x09, 0xae, 0x0f, 0xb4, 0x91, 0xfc, 0x79, 0x68, 0x3d, 0xd6, 0xe1, 0x6e, 0xf1, 0x79, 0xdd, 0x61, + 0x65, 0xbd, 0xf1, 0x83, 0x26, 0xac, 0xcd, 0x2e, 0x64, 0x7f, 0xd0, 0xdd, 0xd6, 0xa6, 0x04, 0x69, + 0xc6, 0xb2, 0x7f, 0x51, 0x85, 0x96, 0x39, 0xa1, 0xd6, 0xfc, 0xaf, 0x51, 0x11, 0x6d, 0x80, 0xab, + 0xa6, 0x94, 0x73, 0x70, 0xe5, 0x45, 0xd5, 0x6f, 0xaa, 0xd2, 0x1b, 0x82, 0x05, 0x15, 0x37, 0x54, + 0x3b, 0x1b, 0xb4, 0xc3, 0x3d, 0x99, 0x43, 0xe3, 0xc9, 0x99, 0xd9, 0xd4, 0xf1, 0xf1, 0xcc, 0xd9, + 0xc3, 0xa9, 0xaf, 0x2f, 0xb9, 0x6a, 0xe6, 0x12, 0x51, 0xfd, 0x62, 0x42, 0x4b, 0x0c, 0x25, 0x63, + 0xf1, 0x6a, 0x67, 0x43, 0xd5, 0xd6, 0x57, 0x1b, 0xaa, 0x7e, 0x89, 0xff, 0xc9, 0x56, 0x66, 0xfe, + 0x4d, 0x54, 0x4c, 0x3f, 0xea, 0xdc, 0xad, 0x4a, 0x69, 0x01, 0x29, 0x61, 0xad, 0x2a, 0x3d, 0x21, + 0xb0, 0x70, 0x71, 0x39, 0x10, 0xd5, 0x86, 0x07, 0x52, 0x57, 0xaf, 0xcb, 0x6c, 0x12, 0x7f, 0x8a, + 0x43, 0x0f, 0xef, 0x55, 0xbc, 0x4a, 0x90, 0x34, 0xde, 0x69, 0x56, 0x76, 0x11, 0x21, 0xa5, 0xa8, + 0xd2, 0x1e, 0x21, 0x5f, 0xba, 0xb8, 0x55, 0xbb, 0xd2, 0xa5, 0x9f, 0x1f, 0x4d, 0x4f, 0x5d, 0x06, + 0xda, 0xc9, 0x58, 0x3c, 0xdd, 0x79, 0x3c, 0xd3, 0x75, 0x05, 0x3e, 0x53, 0x23, 0xdd, 0xc9, 0x58, + 0x24, 0x73, 0x68, 0x5c, 0xeb, 0x3b, 0x3c, 0x97, 0x88, 0xa6, 0x8e, 0x8f, 0xa7, 0xa7, 0x2e, 0xbb, + 0x6a, 0xd2, 0x93, 0xd7, 0xb5, 0x99, 0x13, 0x80, 0xf8, 0x56, 0x20, 0x14, 0x4e, 0xce, 0x8e, 0xe9, + 0x9d, 0x53, 0x72, 0xbe, 0x12, 0xf8, 0xad, 0xa8, 0xb0, 0x2d, 0x18, 0xe8, 0xf0, 0x79, 0x95, 0x60, + 0xe9, 0x62, 0x52, 0x9b, 0xf5, 0xaa, 0x54, 0x29, 0x98, 0x40, 0xd1, 0x41, 0x4b, 0x8e, 0x1f, 0xcb, + 0xf4, 0x0c, 0xa4, 0x66, 0x26, 0xe7, 0x12, 0xd1, 0x64, 0x2c, 0x9e, 0x8c, 0x1f, 0x4b, 0xdd, 0x98, + 0xd6, 0xce, 0x1f, 0x75, 0xd5, 0xc8, 0x26, 0x2e, 0xff, 0x0a, 0x5a, 0x1a, 0x54, 0x9a, 0x7c, 0x01, + 0x7f, 0xe9, 0x12, 0x42, 0xea, 0x69, 0x55, 0x7a, 0x52, 0xa0, 0x20, 0x91, 0xa7, 0xdd, 0x13, 0x8d, + 0x6b, 0x17, 0x2e, 0xd0, 0x2a, 0xd1, 0x34, 0x7e, 0x1b, 0x5a, 0xd2, 0xd1, 0xe6, 0x71, 0xd5, 0x94, + 0x2e, 0x25, 0xf9, 0x5e, 0x56, 0xa5, 0x17, 0x05, 0x80, 0x88, 0x02, 0x64, 0xd3, 0xfb, 0x23, 0xda, + 0xe8, 0x78, 0x47, 0x9b, 0x67, 0x2e, 0x11, 0x85, 0x06, 0xa7, 0x06, 0xa7, 0xb4, 0x8f, 0x0f, 0x25, + 0x63, 0x47, 0x33, 0xe7, 0xce, 0x6b, 0xb3, 0x3d, 0xda, 0xd8, 0xe7, 0x32, 0x64, 0xe1, 0xdf, 0x42, + 0x45, 0x6d, 0xc1, 0xc0, 0x87, 0x8a, 0x27, 0xec, 0xaa, 0x29, 0x5d, 0x46, 0x28, 0x0a, 0xaa, 0xf4, + 0xbc, 0x60, 0x41, 0xc5, 0x35, 0x16, 0xd5, 0x9e, 0x2f, 0xd3, 0x9d, 0xc7, 0x53, 0x23, 0xdd, 0x99, + 0xb1, 0x3b, 0xa9, 0xb3, 0x93, 0xae, 0x1a, 0xd9, 0x42, 0xe3, 0x0f, 0x22, 0xb4, 0xa7, 0x3d, 0xe4, + 0xf3, 0x2b, 0xa1, 0x90, 0xab, 0xa6, 0xb4, 0x90, 0x90, 0x7a, 0x57, 0x95, 0x76, 0x09, 0x0c, 0x58, + 0x7c, 0x0b, 0x72, 0xa6, 0xa6, 0x8f, 0x69, 0x93, 0x23, 0x64, 0x48, 0x46, 0xb4, 0x23, 0x63, 0xae, + 0x9a, 0x4a, 0x47, 0x6e, 0x21, 0x46, 0xda, 0x5c, 0x22, 0x4a, 0x86, 0x4a, 0x3f, 0x77, 0x59, 0x8f, + 0x0f, 0x27, 0xe3, 0x83, 0xce, 0xed, 0x35, 0xd5, 0x32, 0x43, 0x95, 0xdf, 0x87, 0x8a, 0x15, 0x7f, + 0x87, 0x2f, 0x18, 0xf0, 0xb7, 0x2a, 0xfe, 0x70, 0x69, 0x11, 0x29, 0x7b, 0xb3, 0x2a, 0x39, 0x05, + 0x16, 0x2e, 0xbe, 0x64, 0x95, 0x31, 0x75, 0x47, 0x8b, 0xe3, 0x32, 0x68, 0xc7, 0x90, 0x1e, 0x9e, + 0x4b, 0x44, 0x43, 0x61, 0x77, 0xd3, 0x5c, 0x22, 0xea, 0x55, 0xf6, 0xb4, 0xe3, 0xbf, 0x6d, 0xc1, + 0x80, 0x57, 0x66, 0x49, 0xf0, 0x6f, 0x23, 0xa4, 0xf8, 0x9b, 0x7c, 0x7e, 0xa5, 0xf1, 0x60, 0x9b, + 0x52, 0x8a, 0x48, 0x41, 0x1b, 0x55, 0x69, 0x9d, 0xc0, 0x80, 0x8d, 0x69, 0x90, 0x4a, 0x9c, 0xd4, + 0x07, 0x55, 0x2d, 0x71, 0x42, 0xff, 0x68, 0x70, 0x2e, 0x11, 0x6d, 0x7e, 0x35, 0x74, 0x37, 0xd2, + 0xd9, 0xaa, 0x84, 0x02, 0x21, 0x99, 0xc1, 0xe6, 0x3f, 0x40, 0xc5, 0xbe, 0x50, 0xed, 0x01, 0xbc, + 0x04, 0x7c, 0x1d, 0x4a, 0x69, 0xb1, 0x83, 0x2b, 0x2f, 0xac, 0x7e, 0x5d, 0x95, 0x5e, 0x15, 0x58, + 0xb8, 0x58, 0xa1, 0x9f, 0x9e, 0xd2, 0x86, 0xaf, 0x40, 0xa7, 0xa4, 0x8e, 0x5e, 0xd3, 0x06, 0x2e, + 0x42, 0x31, 0x78, 0x90, 0xa7, 0x4f, 0xa7, 0x27, 0xf1, 0x84, 0xdf, 0xeb, 0x6e, 0x09, 0x29, 0x32, + 0x9b, 0x8f, 0xdf, 0x65, 0x2e, 0x48, 0x52, 0xe5, 0xe5, 0xa4, 0xca, 0x2f, 0xa9, 0xd2, 0x46, 0x81, + 0x85, 0x8b, 0x65, 0xb4, 0xce, 0x64, 0xa2, 0xce, 0x25, 0xa2, 0xd6, 0xfc, 0xbf, 0x1b, 0xe9, 0x0c, + 0xf9, 0xfc, 0x4d, 0x2d, 0x8a, 0xcc, 0x66, 0xe0, 0x77, 0xa1, 0xa5, 0x2d, 0xee, 0x3d, 0x4a, 0x4b, + 0xa8, 0xb4, 0xc4, 0xb1, 0xa8, 0xbc, 0x58, 0x7c, 0x76, 0x5d, 0x16, 0xbb, 0xa4, 0xeb, 0x66, 0xdd, + 0x36, 0x82, 0x55, 0xeb, 0x0f, 0x07, 0x0f, 0x56, 0x3f, 0xae, 0x4a, 0x8f, 0x0a, 0x34, 0x9f, 0xc1, + 0x03, 0xf4, 0x8b, 0xbd, 0xa9, 0x89, 0xaf, 0x65, 0x0a, 0xe5, 0xdf, 0x40, 0xcb, 0x3c, 0x41, 0xc5, + 0x1d, 0x0e, 0x04, 0x4b, 0x57, 0x90, 0xba, 0x3e, 0xab, 0x4a, 0x0e, 0xc1, 0x80, 0x89, 0xab, 0xe9, + 0x12, 0x23, 0x23, 0xa6, 0xf5, 0x9d, 0xd5, 0xa6, 0xe3, 0xe9, 0x48, 0x8f, 0x6c, 0xa4, 0xf3, 0x6b, + 0x11, 0x22, 0x3f, 0x95, 0x46, 0x5f, 0xab, 0x52, 0xba, 0x12, 0x53, 0x90, 0x19, 0x08, 0x4e, 0x6f, + 0x6f, 0xf3, 0x1a, 0xe9, 0xab, 0x20, 0xdd, 0x82, 0xf0, 0x9d, 0x05, 0xa8, 0x68, 0x8f, 0x27, 0x24, + 0x79, 0xbd, 0x01, 0x7f, 0xa8, 0xf4, 0x21, 0xd2, 0xb4, 0xe7, 0xe6, 0x6b, 0x5a, 0xb5, 0x81, 0x08, + 0xad, 0x8b, 0x73, 0xaa, 0x74, 0x8b, 0x13, 0xac, 0xfc, 0xe2, 0x38, 0x07, 0x55, 0xa4, 0x2d, 0x3d, + 0x75, 0x2b, 0x3d, 0x7b, 0x36, 0x3d, 0x16, 0x05, 0x06, 0x9b, 0x9a, 0x99, 0xd4, 0x87, 0xd4, 0xe4, + 0xf4, 0x2d, 0x6d, 0xb2, 0x3f, 0xfd, 0x49, 0x0f, 0x4c, 0x73, 0x68, 0x58, 0x32, 0x31, 0x92, 0xba, + 0xf9, 0xb1, 0x96, 0x38, 0x91, 0x8c, 0x1f, 0x4b, 0xc6, 0x8e, 0xc0, 0xf8, 0x02, 0x4f, 0x01, 0x04, + 0xa0, 0xa3, 0x4d, 0xdd, 0xd1, 0xa7, 0x8e, 0x27, 0x63, 0x83, 0xe9, 0xb1, 0xcb, 0x5a, 0x0f, 0xa6, + 0x00, 0xe5, 0x02, 0xbe, 0x36, 0x4a, 0x59, 0xb7, 0x3e, 0xf1, 0x89, 0x16, 0x8b, 0x69, 0x7d, 0xe7, + 0xb4, 0xab, 0x47, 0xb5, 0xe8, 0xc9, 0xe4, 0x9d, 0xa3, 0xda, 0xf0, 0x20, 0x50, 0x48, 0x5f, 0x3f, + 0x94, 0x3a, 0x3e, 0x7e, 0x37, 0xd2, 0x25, 0x5b, 0xb5, 0xe6, 0x7b, 0x0a, 0x50, 0xb1, 0x72, 0x20, + 0x1c, 0x74, 0xd3, 0x5e, 0xe0, 0x49, 0x2f, 0x94, 0xcf, 0xd7, 0x0b, 0xb5, 0x16, 0x2a, 0xf4, 0x43, + 0x8c, 0x53, 0xa5, 0x9b, 0x9c, 0xc0, 0xd2, 0x10, 0x2f, 0x65, 0xf7, 0x44, 0xe6, 0xe3, 0x73, 0xda, + 0xa5, 0x93, 0x7a, 0xff, 0xa7, 0xda, 0x8d, 0x13, 0xc9, 0xc4, 0xc5, 0x4c, 0x44, 0xc5, 0x4b, 0xde, + 0x58, 0x88, 0x98, 0x8b, 0x13, 0xce, 0x95, 0x8c, 0xc5, 0x33, 0x1f, 0x77, 0xa7, 0x4e, 0x9c, 0x49, + 0xc6, 0xa3, 0xfa, 0xc9, 0x3b, 0xeb, 0x93, 0xb1, 0x7e, 0xfc, 0x47, 0x1f, 0x1d, 0xd0, 0x8e, 0x8c, + 0x69, 0x27, 0x0e, 0x53, 0x02, 0x64, 0xa3, 0x9a, 0xaf, 0xfd, 0xa9, 0x23, 0xb7, 0xf4, 0x48, 0x27, + 0xf4, 0x42, 0x6e, 0xe3, 0x93, 0xb1, 0x41, 0x18, 0x00, 0xdc, 0x0b, 0x6c, 0x9d, 0xf9, 0x9d, 0xa8, + 0x30, 0x74, 0x30, 0x14, 0x56, 0x5a, 0x5d, 0x35, 0xa5, 0x0f, 0x93, 0xb9, 0xf8, 0x9a, 0x2a, 0xbd, + 0x2c, 0x98, 0x40, 0x51, 0x68, 0x6e, 0xdf, 0xa3, 0x04, 0xfd, 0x4a, 0x58, 0x09, 0x51, 0x86, 0x3d, + 0x3a, 0xae, 0x0d, 0x77, 0x27, 0xe3, 0xc7, 0xb4, 0x3b, 0x5f, 0x6a, 0x43, 0xd7, 0x93, 0xb1, 0x23, + 0xe9, 0xaf, 0xba, 0xf5, 0xf8, 0x30, 0xe6, 0xfc, 0x46, 0x2e, 0xfe, 0x26, 0x87, 0x10, 0xf4, 0x21, + 0x59, 0x91, 0x8f, 0x10, 0xca, 0x1f, 0x71, 0xaa, 0x34, 0xc4, 0x09, 0x4c, 0x82, 0x18, 0xe1, 0x68, + 0xf5, 0x27, 0xc7, 0x52, 0xc3, 0x87, 0xcd, 0x95, 0xa9, 0xf5, 0x5c, 0xd3, 0x47, 0xfb, 0x93, 0xf1, + 0x63, 0xfa, 0xa9, 0x5b, 0xa9, 0xe3, 0x17, 0xf4, 0x13, 0x7d, 0x73, 0x89, 0xe8, 0x76, 0xa9, 0x4e, + 0xda, 0x52, 0x5b, 0xb3, 0xdb, 0xb9, 0x6d, 0x67, 0x43, 0x63, 0xad, 0x5c, 0x0e, 0xf3, 0x46, 0xef, + 0x3f, 0x9d, 0x9a, 0x1c, 0x03, 0x2a, 0x15, 0x73, 0x89, 0xa8, 0xab, 0xae, 0xa6, 0xb6, 0xbe, 0xb6, + 0xae, 0xa6, 0xb6, 0xae, 0xd1, 0xc4, 0x4c, 0x1d, 0xbd, 0x96, 0xfa, 0xfc, 0xa8, 0xc9, 0x4a, 0xd2, + 0xbd, 0x9f, 0xa5, 0xc7, 0xa2, 0xa9, 0xe9, 0x9b, 0xfa, 0x91, 0x4b, 0x15, 0x32, 0x53, 0x1d, 0x7e, + 0x37, 0x5a, 0xda, 0xea, 0xc6, 0x03, 0x5e, 0xba, 0x7a, 0xe1, 0x05, 0xbf, 0x9d, 0x60, 0xc1, 0x54, + 0x28, 0x53, 0xa5, 0xa7, 0x05, 0x9a, 0xcf, 0x58, 0xbb, 0xf0, 0xe5, 0x70, 0xd5, 0x6b, 0x7d, 0xa7, + 0xd2, 0x63, 0xe3, 0x32, 0x4d, 0xe6, 0x87, 0x39, 0xb4, 0xd2, 0xaf, 0x84, 0xf7, 0x07, 0x82, 0xcd, + 0x0d, 0x4a, 0x38, 0xec, 0xf3, 0x37, 0x85, 0x4a, 0x1f, 0x75, 0x70, 0xe5, 0xc5, 0xe2, 0xda, 0xec, + 0xa2, 0xea, 0x6c, 0x68, 0xc0, 0xea, 0xb3, 0xf3, 0x8a, 0x1b, 0x68, 0xf7, 0xcd, 0x1c, 0x4b, 0x4d, + 0x8f, 0x6a, 0x17, 0xe2, 0xa9, 0xb1, 0x48, 0x7a, 0xf2, 0x6b, 0xd8, 0x96, 0x33, 0xa3, 0x91, 0xf4, + 0x95, 0x4e, 0x98, 0x00, 0xfa, 0xc9, 0x3b, 0x00, 0x97, 0xb3, 0x49, 0xf0, 0xff, 0x9c, 0x33, 0xa5, + 0xc0, 0x6a, 0x77, 0xc8, 0xe7, 0x31, 0xeb, 0xf5, 0x18, 0xa9, 0xd7, 0x7c, 0x5d, 0xc0, 0xe2, 0x56, + 0x07, 0x55, 0x29, 0x20, 0xe4, 0xa5, 0x22, 0xbe, 0x43, 0x67, 0x0d, 0xa9, 0x1b, 0x5d, 0xd8, 0x46, + 0x0d, 0x93, 0x5f, 0x1f, 0xd5, 0xae, 0x74, 0xc1, 0xc4, 0x4e, 0xf5, 0xf7, 0xe9, 0xa3, 0xd7, 0xc8, + 0xd8, 0xd3, 0xbd, 0xb1, 0xa3, 0xcd, 0x93, 0x9a, 0xe8, 0xc7, 0xe3, 0x65, 0x34, 0x81, 0xb6, 0x08, + 0x1a, 0x92, 0xb7, 0x38, 0xfe, 0x3f, 0x72, 0xe8, 0x51, 0x9a, 0x20, 0x79, 0x3b, 0xdc, 0x7e, 0x8f, + 0x62, 0xb6, 0xa7, 0x94, 0xb4, 0xe7, 0xc7, 0xf3, 0xb4, 0xc7, 0x8e, 0x5d, 0xfd, 0x07, 0x55, 0xfa, + 0x6b, 0xe1, 0x31, 0x8c, 0xaa, 0xe4, 0x92, 0x12, 0xdd, 0xd0, 0xa8, 0xf4, 0xec, 0xd9, 0xcc, 0xe9, + 0x5b, 0xa9, 0xfe, 0x3b, 0x7a, 0xe4, 0x6a, 0x56, 0xa3, 0xb4, 0xe1, 0xa9, 0xd4, 0xf1, 0x71, 0x5f, + 0x5b, 0x47, 0x08, 0x92, 0x71, 0xc3, 0x26, 0xef, 0x68, 0x67, 0xc6, 0xd3, 0xb3, 0xc3, 0xe9, 0xb1, + 0x28, 0x66, 0x93, 0x24, 0x43, 0x6a, 0xa2, 0xff, 0x6e, 0xa4, 0x0b, 0x8b, 0x75, 0xa7, 0x2e, 0xa6, + 0xfa, 0xef, 0x68, 0x7d, 0x9f, 0x67, 0x46, 0x23, 0xfa, 0x8d, 0x2e, 0x79, 0x9e, 0x56, 0xf0, 0xff, + 0x13, 0x87, 0x96, 0xfb, 0x03, 0x5e, 0xab, 0x59, 0x8f, 0x93, 0x66, 0x3d, 0x91, 0x33, 0x7d, 0x2c, + 0x9c, 0x6a, 0x95, 0x53, 0xa5, 0x41, 0x4e, 0xb0, 0xe5, 0x13, 0x7f, 0x4f, 0xdb, 0x70, 0xa4, 0x2b, + 0xd5, 0x75, 0x27, 0xab, 0xf6, 0x7a, 0xb4, 0x2b, 0x3d, 0x33, 0x93, 0x3a, 0x3b, 0xa9, 0xcd, 0x9c, + 0xc0, 0xb2, 0x42, 0xc0, 0xd3, 0xac, 0x04, 0xf5, 0x13, 0xd7, 0xf5, 0x81, 0x49, 0x00, 0xc2, 0xc0, + 0xe4, 0x56, 0x1b, 0x03, 0x87, 0xa6, 0x92, 0xd3, 0x97, 0x93, 0xb1, 0x01, 0x93, 0x66, 0xb5, 0xb3, + 0x41, 0x1f, 0x1a, 0x4e, 0x7e, 0x7d, 0x96, 0xf2, 0xac, 0xa1, 0x2e, 0xfd, 0xc4, 0x75, 0xd9, 0x56, + 0x1b, 0xfe, 0x0b, 0x0e, 0x2d, 0x0d, 0x85, 0xdd, 0xe1, 0xf6, 0x50, 0xe9, 0x1a, 0xc2, 0x2c, 0xce, + 0x70, 0xaa, 0xf4, 0x2b, 0x81, 0xc2, 0x44, 0x99, 0xe5, 0x72, 0x50, 0x48, 0xfa, 0xd0, 0x0c, 0x7c, + 0x3a, 0xe5, 0x5a, 0xa9, 0xd1, 0x55, 0xb7, 0x65, 0x2e, 0x11, 0x95, 0x77, 0xd6, 0xd5, 0xc1, 0xaf, + 0x9a, 0xda, 0x6d, 0xb5, 0x14, 0xb8, 0x59, 0xda, 0xb6, 0x53, 0xae, 0x25, 0xac, 0xc1, 0xd5, 0xe8, + 0x92, 0xb6, 0xb9, 0xde, 0x93, 0x1a, 0x5d, 0x3b, 0xea, 0xbe, 0xa9, 0x7e, 0x25, 0xf8, 0x13, 0xb9, + 0xd0, 0xc8, 0x2d, 0x2f, 0xa3, 0x99, 0xe5, 0x42, 0x23, 0xaf, 0xbc, 0x14, 0xb2, 0xca, 0x2b, 0xec, + 0x39, 0x65, 0x5a, 0x2b, 0xbc, 0x8f, 0xc3, 0xb6, 0x1a, 0x2c, 0x7d, 0x82, 0xd9, 0xc7, 0x29, 0xcc, + 0xbe, 0x8f, 0xeb, 0x67, 0x6f, 0xea, 0x27, 0xaf, 0x93, 0x7d, 0x9c, 0xa6, 0xf3, 0xed, 0xa8, 0x98, + 0x2e, 0x46, 0xc2, 0x24, 0x9f, 0x24, 0x24, 0x1a, 0x30, 0xfb, 0x65, 0xe1, 0xe2, 0xf3, 0xec, 0x1a, + 0x37, 0x59, 0x64, 0x79, 0xbb, 0xdf, 0xab, 0x04, 0x5b, 0xdc, 0x07, 0xd7, 0x07, 0x3a, 0xc8, 0xdf, + 0x8a, 0x6f, 0xaa, 0x1f, 0x0b, 0xae, 0x96, 0x0b, 0x0d, 0xb8, 0xbc, 0x8c, 0x26, 0xc8, 0x7f, 0x25, + 0xb3, 0xf4, 0xf8, 0x7f, 0xc9, 0xa1, 0xc7, 0xdc, 0xed, 0xe1, 0xc0, 0x16, 0xc5, 0x8f, 0xc5, 0x1f, + 0x05, 0x78, 0x19, 0x9e, 0x2f, 0xa1, 0xd2, 0xa7, 0x88, 0x64, 0x46, 0x19, 0xf5, 0x7c, 0x58, 0x62, + 0xd8, 0xb6, 0xcf, 0x81, 0xcc, 0x46, 0x16, 0xb1, 0x76, 0xfb, 0x0b, 0x6d, 0xe2, 0xb4, 0x36, 0x3a, + 0x0e, 0xb3, 0xaa, 0xd2, 0x01, 0x23, 0x4e, 0x44, 0xb6, 0x4a, 0x87, 0x36, 0xf0, 0xa5, 0x89, 0x96, + 0x9a, 0x1e, 0x02, 0xcc, 0xd4, 0x48, 0xb7, 0x81, 0x9c, 0x9c, 0x1e, 0x64, 0x09, 0xc3, 0x3c, 0x49, + 0xc6, 0x26, 0xd2, 0x83, 0xb7, 0xb5, 0xa1, 0x93, 0xf2, 0x7c, 0xd5, 0xc1, 0x73, 0xa7, 0x30, 0xac, + 0xb4, 0xb6, 0xb5, 0xb8, 0xc3, 0x4a, 0xe9, 0xda, 0xfc, 0xe2, 0x8c, 0xcb, 0x1f, 0x0a, 0xe3, 0x75, + 0xd4, 0x48, 0xf1, 0x9c, 0x01, 0xff, 0x5e, 0x5f, 0x53, 0xb5, 0x5f, 0x95, 0x9a, 0x05, 0x33, 0xb3, + 0xb8, 0x7b, 0x9e, 0x22, 0x92, 0xb1, 0x78, 0x38, 0xd8, 0xae, 0xe8, 0xa7, 0x6e, 0x55, 0x3a, 0xd8, + 0x2a, 0xa6, 0x7b, 0x3f, 0xd3, 0x8e, 0x8c, 0xe3, 0x1d, 0xaa, 0x6f, 0xd8, 0x47, 0x4b, 0xa8, 0x74, + 0x80, 0x10, 0x63, 0x7c, 0xeb, 0xe3, 0x63, 0xfa, 0xb9, 0x59, 0xaa, 0xe0, 0x98, 0x45, 0xf1, 0xff, + 0x9a, 0x43, 0x45, 0x64, 0x23, 0x76, 0xf9, 0xf7, 0x06, 0x4a, 0x9f, 0x5e, 0x58, 0x08, 0xab, 0x35, + 0x10, 0x61, 0xc7, 0x39, 0xc2, 0xa9, 0xd2, 0x61, 0x4e, 0xb0, 0xf2, 0x8b, 0x07, 0x71, 0x67, 0x76, + 0x19, 0xb2, 0x10, 0xc8, 0x0b, 0xa4, 0xc4, 0x4a, 0x07, 0xac, 0x68, 0x25, 0xb4, 0x67, 0x77, 0x7b, + 0xb0, 0x65, 0xfd, 0x7e, 0x65, 0xcf, 0xbe, 0x40, 0xa0, 0x79, 0xb7, 0xaf, 0xd5, 0xdd, 0x84, 0xb5, + 0x69, 0x5f, 0x87, 0xaf, 0x45, 0xf1, 0x36, 0x29, 0x00, 0x48, 0x4d, 0xf4, 0xb3, 0x99, 0xf5, 0xbe, + 0x93, 0xe9, 0x48, 0x8f, 0x7e, 0x7a, 0x2a, 0xa3, 0xf6, 0x69, 0x53, 0x77, 0x92, 0xb1, 0x01, 0x6d, + 0x38, 0x8a, 0x55, 0x3d, 0xc2, 0xd2, 0xb4, 0x04, 0xd6, 0x63, 0x64, 0xab, 0x16, 0xfc, 0x6e, 0x54, + 0xd8, 0x1a, 0xf0, 0xb6, 0xb7, 0x28, 0xae, 0x9a, 0x52, 0x07, 0x99, 0xcd, 0x4e, 0x55, 0x7a, 0x53, + 0x30, 0x81, 0xa6, 0x76, 0x32, 0x3e, 0xa6, 0x9d, 0x3b, 0xe5, 0xaa, 0x29, 0x77, 0x4a, 0xfa, 0xed, + 0x69, 0xed, 0xc8, 0x45, 0x98, 0x01, 0xfa, 0xa9, 0x5b, 0x90, 0x92, 0x9e, 0xb9, 0x96, 0xba, 0x3a, + 0xed, 0xd0, 0xe2, 0x17, 0xb4, 0xc4, 0xa1, 0x0a, 0xd9, 0xcc, 0xcf, 0xff, 0x1e, 0xad, 0x20, 0xa5, + 0x59, 0x1a, 0xf3, 0x33, 0xa4, 0x98, 0x5d, 0xaa, 0xd4, 0x20, 0x64, 0x25, 0x89, 0x92, 0x36, 0x95, + 0xd0, 0x7a, 0x2e, 0x9b, 0xaa, 0x31, 0x48, 0x63, 0x86, 0xa6, 0xaf, 0x5f, 0xec, 0x4d, 0x4f, 0x1d, + 0xa6, 0x9d, 0x04, 0xd3, 0x14, 0x0b, 0x1b, 0x9f, 0xc6, 0xb5, 0x48, 0xa2, 0xdc, 0x28, 0x39, 0x8b, + 0x24, 0xef, 0x43, 0x2b, 0x7d, 0x21, 0x67, 0xa0, 0xb5, 0xd5, 0x54, 0x99, 0x4b, 0xcb, 0xc8, 0x8a, + 0xf9, 0xb9, 0x2a, 0xfd, 0x54, 0xc8, 0x4e, 0xb3, 0xf4, 0x99, 0xb8, 0xd6, 0x73, 0x4d, 0xeb, 0xb9, + 0x01, 0x65, 0x57, 0x32, 0x8b, 0xc2, 0x2c, 0x29, 0x3b, 0x2f, 0xbf, 0x19, 0x15, 0x7b, 0x95, 0x90, + 0x27, 0xe8, 0x23, 0xb6, 0x92, 0xd2, 0x67, 0x49, 0x3b, 0x7f, 0xa4, 0x4a, 0xcf, 0x08, 0x2c, 0xdc, + 0xd0, 0xa2, 0x53, 0x93, 0x78, 0x67, 0xd4, 0x87, 0x86, 0xd2, 0xb3, 0xd7, 0x65, 0x16, 0x81, 0xbf, + 0xcc, 0xa1, 0x95, 0x74, 0x56, 0x39, 0xdd, 0x61, 0xa5, 0x29, 0x10, 0x3c, 0x58, 0xfa, 0x23, 0x42, + 0xec, 0x77, 0xaa, 0x74, 0x40, 0xc8, 0x4e, 0x13, 0x15, 0x4b, 0x49, 0xea, 0xfb, 0x9c, 0x28, 0xf7, + 0xd3, 0xe9, 0x2b, 0x9d, 0x58, 0x86, 0x8c, 0x0f, 0x62, 0x5d, 0xbd, 0xef, 0xb0, 0x69, 0x7d, 0x80, + 0xd6, 0xe9, 0xa7, 0xa7, 0xf0, 0x32, 0x98, 0x8e, 0xdf, 0x8d, 0x74, 0x42, 0x8f, 0x97, 0xef, 0x69, + 0xf7, 0xb5, 0x78, 0x95, 0xe0, 0x7a, 0x5f, 0x6b, 0x5b, 0x20, 0x18, 0x56, 0x82, 0x15, 0x06, 0x23, + 0x30, 0x71, 0xe5, 0xec, 0x72, 0xf9, 0x3a, 0x54, 0xe4, 0x0b, 0xed, 0x0e, 0xed, 0x73, 0x07, 0x15, + 0x6f, 0xe9, 0x8f, 0x49, 0xa7, 0x12, 0xa5, 0xd3, 0x82, 0x8a, 0xcf, 0x30, 0xdd, 0x79, 0x23, 0x19, + 0xff, 0x3c, 0xb7, 0x3b, 0xe5, 0x42, 0x5f, 0xa8, 0x81, 0x20, 0xf3, 0xbb, 0x11, 0xc2, 0x92, 0x2b, + 0xac, 0xf3, 0xd2, 0xe7, 0x48, 0x8b, 0xc9, 0x28, 0x31, 0x60, 0x71, 0x1d, 0x3b, 0x45, 0xf0, 0x9e, + 0x7c, 0xf4, 0xb2, 0x7e, 0x7a, 0xca, 0x42, 0x80, 0x64, 0xad, 0xef, 0x0c, 0x2c, 0x2f, 0x99, 0xc9, + 0xcb, 0x5f, 0xe1, 0xd0, 0x0a, 0x68, 0xa0, 0xd9, 0xaf, 0xcf, 0x93, 0x52, 0x7e, 0xaf, 0x4a, 0xbf, + 0x13, 0xb2, 0x92, 0x44, 0x9f, 0x36, 0xf3, 0x51, 0x56, 0x93, 0x0d, 0xfe, 0x16, 0x37, 0xba, 0x89, + 0xb0, 0x97, 0x85, 0xfb, 0xdb, 0x2a, 0x7f, 0xbd, 0xa7, 0x25, 0xd0, 0xee, 0x85, 0x0a, 0x56, 0x9a, + 0xca, 0x71, 0xea, 0xd3, 0xb8, 0x9c, 0x55, 0x34, 0xff, 0x5f, 0x38, 0xb4, 0x82, 0x20, 0x4b, 0x1e, + 0x4f, 0xa0, 0xdd, 0x1f, 0x76, 0xd5, 0x94, 0x96, 0x93, 0x8a, 0xfe, 0x23, 0x4e, 0x95, 0x66, 0x38, + 0x21, 0x2b, 0x51, 0xfc, 0x8c, 0xca, 0xe4, 0x96, 0x91, 0x22, 0x7e, 0x2c, 0x7d, 0xf3, 0x8a, 0x36, + 0x74, 0xdb, 0x55, 0x63, 0x2b, 0xe9, 0x6e, 0xa4, 0x0b, 0x6a, 0xab, 0x1d, 0xb9, 0x90, 0x3e, 0x34, + 0x83, 0x07, 0x97, 0x70, 0x6a, 0x13, 0x5f, 0xeb, 0x9d, 0x48, 0x4f, 0x75, 0xde, 0x8d, 0x74, 0xa5, + 0xae, 0x76, 0x82, 0x3c, 0xaf, 0x8d, 0xc6, 0xf5, 0x33, 0x53, 0xc9, 0xd8, 0xd1, 0xd4, 0xf4, 0x85, + 0x64, 0x2c, 0x02, 0x62, 0x3f, 0x29, 0x1f, 0x72, 0x60, 0x69, 0x2f, 0x62, 0x89, 0xff, 0x80, 0x9e, + 0x8a, 0x7f, 0x99, 0x9a, 0x1c, 0x33, 0xb9, 0x0f, 0x4b, 0x5b, 0xce, 0xaa, 0x3c, 0x2f, 0xa3, 0x65, + 0xad, 0x4a, 0x28, 0xe4, 0x6e, 0x52, 0x4a, 0x2b, 0x48, 0x23, 0x5f, 0x55, 0xa5, 0x9f, 0x08, 0x06, + 0xcc, 0xb0, 0x1e, 0x81, 0xe0, 0xa0, 0x25, 0xba, 0xb4, 0x58, 0x0c, 0xaf, 0xfa, 0x91, 0x6e, 0xed, + 0xd2, 0x8d, 0xf4, 0xcd, 0xcb, 0xda, 0xe0, 0x05, 0xed, 0xec, 0x45, 0xed, 0xc6, 0x89, 0xd4, 0xa5, + 0xb8, 0x6c, 0x64, 0xe2, 0xb7, 0xa1, 0x65, 0xbe, 0xd0, 0x76, 0xdf, 0x01, 0xc5, 0x5b, 0x2a, 0x90, + 0x89, 0x29, 0xaa, 0xd2, 0x7a, 0xc1, 0x80, 0x89, 0x3f, 0xc2, 0xac, 0x64, 0xf2, 0x7a, 0xee, 0xb2, + 0xd0, 0x6f, 0xdf, 0xce, 0x1c, 0xa2, 0x3c, 0x59, 0x36, 0xd0, 0xf9, 0x3d, 0xc8, 0x30, 0xaf, 0xba, + 0xdc, 0xad, 0x72, 0xa0, 0x45, 0x29, 0x7d, 0x81, 0x54, 0x74, 0x93, 0x2a, 0xbd, 0x22, 0x64, 0x25, + 0x89, 0x3f, 0x76, 0xef, 0x0f, 0xa5, 0x46, 0xba, 0x7d, 0xee, 0x56, 0x47, 0x30, 0xd0, 0xa2, 0x54, + 0x3a, 0xe8, 0xc4, 0x20, 0x7b, 0x90, 0xd2, 0x4c, 0x55, 0x32, 0x39, 0x2b, 0xdb, 0x9a, 0xd7, 0x50, + 0x31, 0x63, 0x92, 0xe0, 0x57, 0xa1, 0x45, 0xcd, 0xca, 0x41, 0x30, 0x85, 0xca, 0xf8, 0x27, 0xff, + 0x08, 0x5a, 0xd2, 0xe1, 0x6e, 0x69, 0xa7, 0xc6, 0x4b, 0x19, 0x3e, 0x36, 0x15, 0xbc, 0xca, 0xad, + 0x79, 0x17, 0xad, 0xb0, 0xab, 0xfc, 0x79, 0x72, 0x6f, 0x64, 0x73, 0xe7, 0x91, 0x3d, 0xab, 0xb7, + 0xee, 0x68, 0x0b, 0xd5, 0xb7, 0xb4, 0x37, 0xf9, 0xfc, 0x2c, 0xe9, 0xf7, 0xd1, 0xaa, 0x6c, 0x3d, + 0xfa, 0xfb, 0x23, 0xbe, 0x03, 0x15, 0x33, 0x4a, 0x59, 0x1e, 0xba, 0x82, 0x9d, 0xee, 0x23, 0xf9, + 0x04, 0x66, 0x96, 0xe0, 0x4f, 0xd1, 0x0a, 0xfb, 0xb6, 0xfb, 0x20, 0xdd, 0xb8, 0xe9, 0x0d, 0x55, + 0xda, 0x84, 0x5e, 0x15, 0x0c, 0x9b, 0xb4, 0x58, 0x05, 0x46, 0x58, 0x56, 0x22, 0x04, 0x0b, 0x6d, + 0x32, 0x3e, 0x08, 0x9a, 0x28, 0x3b, 0x33, 0xcb, 0xfe, 0xc7, 0x95, 0x68, 0x31, 0xae, 0x10, 0xff, + 0x2a, 0x5a, 0x8a, 0xe5, 0x64, 0xd3, 0x90, 0xed, 0x50, 0xa5, 0xa7, 0x04, 0x0a, 0x12, 0x1f, 0x86, + 0x7d, 0x33, 0x19, 0x3f, 0x66, 0x08, 0x1b, 0xae, 0x1a, 0x99, 0x26, 0xf2, 0xaf, 0xa1, 0x65, 0x3e, + 0xbf, 0x5f, 0x09, 0xba, 0xea, 0xa9, 0x85, 0x9a, 0x58, 0x5f, 0x0d, 0x98, 0xf8, 0x10, 0xe4, 0x25, + 0x36, 0x9a, 0x63, 0xc9, 0xd8, 0xb4, 0xab, 0x5e, 0x36, 0xd2, 0xf8, 0xf7, 0xd1, 0x72, 0x83, 0x20, + 0x91, 0x4c, 0xc1, 0x2c, 0xfd, 0x8a, 0x2a, 0xbd, 0x24, 0xd8, 0x12, 0xc4, 0x1f, 0xe9, 0xa3, 0x71, + 0xed, 0xfc, 0x51, 0x6a, 0xa9, 0x9a, 0x38, 0x95, 0xba, 0x76, 0x25, 0x19, 0xfb, 0xc2, 0x94, 0xcf, + 0x29, 0x43, 0xb2, 0xe5, 0xe1, 0x5f, 0x40, 0x8b, 0x9c, 0xf5, 0x3b, 0x89, 0x71, 0xb9, 0x04, 0x8c, + 0x65, 0xf8, 0x5b, 0x5c, 0x09, 0xf5, 0x71, 0xd6, 0xef, 0xa4, 0xa2, 0x12, 0x86, 0xf2, 0xeb, 0xd0, + 0xa2, 0x56, 0xa5, 0x95, 0x98, 0x8f, 0x4b, 0xaa, 0x9f, 0x54, 0xa5, 0xc7, 0x05, 0xfc, 0x2d, 0xf2, + 0x66, 0xe5, 0xb5, 0x89, 0xd3, 0x06, 0x7e, 0xab, 0xd2, 0xca, 0xbf, 0x8a, 0x16, 0x6d, 0xa9, 0xdf, + 0x49, 0xcc, 0xc6, 0x25, 0xd5, 0xcf, 0xa9, 0xd2, 0xb3, 0x02, 0xfe, 0x16, 0x9f, 0x04, 0xfc, 0x2d, + 0x06, 0x71, 0xb6, 0x86, 0x1b, 0x64, 0x8c, 0xc2, 0x0f, 0x59, 0x0a, 0x08, 0x98, 0x88, 0xf7, 0xab, + 0x52, 0xd8, 0xd4, 0x3f, 0x3e, 0x04, 0x02, 0x30, 0x3a, 0x06, 0x8d, 0x3e, 0xfd, 0xe2, 0x1d, 0x7d, + 0x60, 0x52, 0x4b, 0x60, 0x69, 0x28, 0x99, 0x88, 0xa5, 0x12, 0x9f, 0x6a, 0x93, 0x23, 0xc9, 0x3b, + 0xfd, 0xa9, 0x91, 0xee, 0xb9, 0x44, 0xbf, 0xa5, 0x8f, 0x54, 0x3a, 0x88, 0x4a, 0x51, 0x4b, 0x7e, + 0x1a, 0x0a, 0x47, 0xa5, 0x63, 0xb3, 0xe4, 0xda, 0x56, 0x5b, 0x53, 0xe9, 0x98, 0x47, 0xbb, 0x90, + 0xd0, 0xd2, 0xdf, 0x06, 0xfc, 0x8a, 0x69, 0x68, 0xae, 0x50, 0xa5, 0xe7, 0x84, 0xc5, 0x18, 0x24, + 0xae, 0xa5, 0xed, 0x1f, 0xc2, 0x4a, 0xa6, 0x16, 0x8d, 0x67, 0xf7, 0x38, 0xcd, 0xc8, 0xff, 0x35, + 0x2a, 0xc6, 0xb3, 0x61, 0x4b, 0x30, 0xd0, 0xde, 0xe6, 0xaa, 0xa1, 0x46, 0xe3, 0xf7, 0x54, 0xe9, + 0x1d, 0x81, 0x85, 0x8b, 0x6f, 0x51, 0xf9, 0xab, 0x3f, 0xa2, 0xdd, 0x38, 0x9f, 0x1a, 0xe9, 0xae, + 0x33, 0xd2, 0x1c, 0xae, 0x9a, 0x4a, 0x07, 0x4b, 0xb9, 0x3c, 0x39, 0xdd, 0xe3, 0x94, 0x68, 0xe9, + 0x33, 0xaa, 0x76, 0xe3, 0x7c, 0x32, 0x3e, 0x68, 0x92, 0xaa, 0x90, 0x59, 0xb2, 0xfc, 0x66, 0xf6, + 0x1c, 0x06, 0xec, 0xc8, 0xe5, 0xaa, 0xf4, 0x63, 0xf6, 0x1c, 0xa6, 0x34, 0xab, 0x64, 0x53, 0xd4, + 0x62, 0xcf, 0x5b, 0x36, 0xa2, 0x45, 0xbb, 0xea, 0x9d, 0xc4, 0x6a, 0x4c, 0x67, 0x31, 0xfe, 0x16, + 0x57, 0x67, 0xe5, 0xdd, 0x55, 0xef, 0x74, 0xb8, 0x6a, 0x64, 0x9c, 0xc6, 0xbf, 0x6f, 0x9e, 0x3c, + 0x2c, 0xb7, 0xe4, 0x50, 0xe3, 0xe4, 0xe1, 0x65, 0x36, 0x23, 0x9c, 0x3f, 0x58, 0x7a, 0xfb, 0x9d, + 0x59, 0xed, 0xf6, 0xf9, 0xb9, 0x44, 0x54, 0xbf, 0x7d, 0x43, 0x1b, 0xfd, 0x12, 0x77, 0xec, 0x91, + 0x8b, 0xda, 0xed, 0xf3, 0xa9, 0x89, 0x7e, 0xf3, 0x74, 0xa2, 0x0e, 0x2d, 0x6d, 0x73, 0x87, 0x42, + 0xfb, 0xbd, 0xa5, 0x25, 0xd6, 0xf1, 0x04, 0x05, 0x89, 0x15, 0xda, 0xe4, 0x79, 0x4c, 0xca, 0xb0, + 0x44, 0x6a, 0x53, 0x87, 0x53, 0x17, 0x3b, 0x2b, 0x1d, 0xd4, 0x76, 0x01, 0x46, 0xb9, 0xab, 0x9f, + 0x68, 0x53, 0x87, 0x65, 0x9a, 0x85, 0xff, 0x00, 0x91, 0x51, 0x25, 0xb6, 0xe0, 0x92, 0x6a, 0x97, + 0x2a, 0x6d, 0x16, 0xe8, 0x00, 0x8a, 0x3f, 0xcd, 0x1a, 0x68, 0x72, 0x52, 0xc0, 0x0e, 0xc8, 0xeb, + 0x0e, 0xcb, 0xa0, 0x4a, 0xf6, 0x62, 0xd0, 0xb0, 0x92, 0xf1, 0x41, 0xa7, 0x24, 0x13, 0xb2, 0xbc, + 0x84, 0x0a, 0xbd, 0x4a, 0x87, 0x0f, 0x33, 0x07, 0x30, 0x16, 0x57, 0xff, 0x58, 0x95, 0xca, 0x04, + 0x13, 0x28, 0x3e, 0xea, 0x94, 0x1c, 0xc6, 0x12, 0x4d, 0x4f, 0x7e, 0xad, 0x5d, 0xea, 0x75, 0xd5, + 0x68, 0x43, 0xb7, 0x65, 0x13, 0x83, 0x57, 0xd0, 0x0a, 0x3c, 0xb0, 0x86, 0xf2, 0xe4, 0xaa, 0x01, + 0xab, 0x72, 0x35, 0xe6, 0x72, 0x42, 0x56, 0x92, 0x58, 0x4e, 0xeb, 0x6c, 0x88, 0x0f, 0xb4, 0xb7, + 0x89, 0x1a, 0x44, 0xe7, 0x93, 0x21, 0xa9, 0xd8, 0x73, 0xf2, 0x1e, 0x54, 0x48, 0x20, 0x98, 0xe7, + 0x3c, 0x44, 0x0a, 0xd8, 0xa2, 0x4a, 0x35, 0x82, 0x09, 0x14, 0x5f, 0xa5, 0xcb, 0x90, 0x28, 0xc1, + 0x86, 0xac, 0xa4, 0x45, 0x7b, 0xb4, 0xe1, 0xcf, 0x9d, 0xbb, 0xb6, 0xaf, 0x77, 0xd5, 0x38, 0x19, + 0xf2, 0xa6, 0xc8, 0xe9, 0xdc, 0xb5, 0x5d, 0x36, 0x69, 0xf0, 0x8d, 0x50, 0x08, 0x39, 0xba, 0xe3, + 0x2d, 0x11, 0xc1, 0x04, 0x8a, 0x15, 0xb4, 0xfe, 0xe4, 0xdc, 0xae, 0xd2, 0x01, 0xa2, 0x9f, 0x36, + 0xdc, 0x9d, 0x8c, 0x7d, 0x86, 0xa5, 0x0f, 0x26, 0x51, 0x36, 0x33, 0xf1, 0x3f, 0x43, 0x45, 0x94, + 0x7b, 0x76, 0xbc, 0x4c, 0x0d, 0xa9, 0x84, 0x55, 0x5b, 0x50, 0x71, 0x15, 0x64, 0xf5, 0xb5, 0x75, + 0xbc, 0xac, 0x8d, 0x5e, 0xd7, 0xce, 0x45, 0x64, 0x2b, 0x91, 0xdf, 0x8c, 0x0a, 0xf1, 0x60, 0x91, + 0x5a, 0x3d, 0x62, 0x1d, 0x51, 0x99, 0x40, 0xf1, 0x09, 0x6b, 0xd2, 0x8e, 0x8e, 0x9b, 0xf3, 0xc1, + 0xa8, 0x87, 0x81, 0xc6, 0x2b, 0x68, 0x69, 0xd8, 0x1d, 0x6a, 0x76, 0xd5, 0x94, 0xae, 0x26, 0x54, + 0xb6, 0xab, 0xd2, 0x2f, 0x04, 0x0a, 0x12, 0xdf, 0xa4, 0x95, 0x37, 0x4e, 0x86, 0x92, 0xd3, 0xd3, + 0xf4, 0x64, 0x2a, 0x39, 0xdd, 0x83, 0x75, 0xf1, 0xe3, 0x5f, 0xa6, 0xa7, 0x6e, 0x83, 0x39, 0x97, + 0x18, 0xf2, 0x67, 0xd2, 0xb1, 0xcf, 0x68, 0xb9, 0xc4, 0xf8, 0x23, 0x53, 0x4a, 0xfc, 0x4e, 0xb4, + 0x7c, 0xaf, 0x1b, 0x6b, 0x8e, 0xb2, 0xe2, 0x0e, 0x05, 0xfc, 0xc4, 0x86, 0x49, 0x4f, 0x89, 0x6c, + 0x09, 0xe2, 0xda, 0x64, 0xec, 0x48, 0x32, 0x76, 0x54, 0x3f, 0x7f, 0x8b, 0x96, 0x4d, 0xe4, 0x2c, + 0xfd, 0xd4, 0x2d, 0x10, 0xb5, 0x64, 0x1b, 0x36, 0xff, 0x7b, 0x84, 0x3c, 0xfb, 0xdc, 0x41, 0x6a, + 0x35, 0x7e, 0x8c, 0x10, 0xfd, 0xb5, 0x2a, 0xbd, 0x2f, 0x30, 0x60, 0x71, 0x3b, 0x6c, 0x3a, 0xe9, + 0xc9, 0xb1, 0xf4, 0x4d, 0x3c, 0xad, 0xc0, 0x1e, 0x52, 0xbf, 0xa3, 0xa1, 0xb1, 0x5e, 0x72, 0xd5, + 0xec, 0xae, 0x7e, 0x77, 0xf7, 0x5b, 0x3b, 0x76, 0xca, 0x7a, 0xb4, 0x5f, 0xbb, 0x3e, 0x84, 0x0b, + 0x1a, 0x1e, 0x4c, 0x4e, 0x9f, 0x4e, 0xdf, 0xbc, 0x83, 0x91, 0xe4, 0x5a, 0x8c, 0x83, 0x67, 0xcc, + 0x9d, 0x9b, 0x5a, 0xb4, 0x47, 0x1f, 0xed, 0x93, 0x19, 0xd2, 0x9b, 0xde, 0x55, 0xa5, 0x5d, 0xa8, + 0x51, 0x20, 0x5b, 0xaf, 0xb8, 0x8d, 0x9e, 0x9b, 0xc2, 0x1e, 0x9b, 0x6f, 0xcb, 0x66, 0x37, 0x05, + 0x2c, 0xb9, 0x7e, 0xfc, 0x39, 0x65, 0x5a, 0xc9, 0x18, 0x61, 0x8a, 0x4d, 0x98, 0x11, 0xc2, 0x82, + 0x2c, 0xfb, 0x57, 0x2b, 0xd0, 0x0a, 0xbb, 0x49, 0x97, 0xdf, 0x65, 0x6a, 0x66, 0xae, 0xfa, 0x8e, + 0x97, 0x9c, 0xae, 0x1a, 0x99, 0x6e, 0xf2, 0x95, 0xaa, 0x54, 0x21, 0x64, 0xa7, 0x89, 0x8f, 0x52, + 0xf1, 0x32, 0x32, 0x8d, 0x41, 0x30, 0x85, 0xf4, 0x1b, 0x17, 0xe5, 0x6c, 0x44, 0xde, 0x83, 0x56, + 0x86, 0x94, 0x20, 0x59, 0xba, 0x06, 0xdd, 0x02, 0xcb, 0xb4, 0x9f, 0x9d, 0x26, 0x3e, 0x0b, 0x74, + 0x29, 0x98, 0x5a, 0x63, 0x47, 0xba, 0xb3, 0x0a, 0xc9, 0xca, 0xc5, 0xcb, 0xa8, 0xa4, 0xd5, 0x7d, + 0x00, 0x77, 0x54, 0x7d, 0xc0, 0x5b, 0xd7, 0xde, 0x4a, 0x84, 0x84, 0x12, 0xa8, 0xba, 0x3d, 0xc5, + 0x60, 0xf2, 0xc9, 0xd8, 0x11, 0x7d, 0x34, 0xa2, 0x5d, 0xba, 0x5a, 0x1f, 0xf0, 0xea, 0x27, 0xae, + 0x67, 0x7a, 0x87, 0x64, 0x3b, 0x22, 0xbf, 0x8b, 0xd0, 0x6c, 0x80, 0x92, 0x30, 0x4d, 0x10, 0x12, + 0x36, 0xa8, 0x52, 0x95, 0x60, 0x4f, 0x11, 0x9f, 0xa4, 0x9d, 0x41, 0x08, 0xa6, 0x46, 0xba, 0x69, + 0x12, 0x43, 0xd7, 0x42, 0xe6, 0x07, 0x38, 0xb4, 0x5c, 0xf1, 0xbb, 0xf7, 0xb4, 0x28, 0xbb, 0xea, + 0x9d, 0x4e, 0xbf, 0x8f, 0xc8, 0x13, 0x85, 0xd5, 0x3e, 0x55, 0xda, 0x2b, 0xd8, 0x12, 0xc4, 0x5d, + 0xec, 0x17, 0x08, 0xf2, 0x5a, 0x22, 0xa2, 0x0d, 0x4f, 0xed, 0xaa, 0x77, 0x56, 0x39, 0xeb, 0x5c, + 0x60, 0x84, 0xc3, 0x93, 0x2e, 0x31, 0x54, 0x9e, 0x9c, 0x99, 0x4d, 0x1f, 0x9a, 0xe9, 0x68, 0xf3, + 0x54, 0x79, 0xfc, 0x3e, 0x80, 0x61, 0x15, 0x4e, 0x3f, 0x79, 0x5d, 0xfb, 0xf8, 0xbc, 0xfe, 0x55, + 0x67, 0x6a, 0xfc, 0x28, 0x64, 0xae, 0x90, 0x6d, 0xa5, 0xf0, 0x0a, 0xae, 0x8e, 0xaf, 0xa1, 0x7d, + 0x8f, 0x5f, 0x09, 0xbb, 0x6a, 0x42, 0xa5, 0x4b, 0x1d, 0x8b, 0xca, 0x8b, 0xaa, 0x25, 0x55, 0xfa, + 0x99, 0x60, 0x4b, 0x10, 0xd7, 0xe5, 0x29, 0x36, 0x19, 0x3b, 0x5a, 0x09, 0x22, 0x47, 0x6a, 0xe6, + 0x98, 0x36, 0x30, 0x86, 0x95, 0x97, 0x89, 0xe1, 0xd4, 0xcc, 0x31, 0x57, 0x8d, 0x6c, 0xcb, 0xcd, + 0x47, 0x38, 0xb4, 0x3c, 0x44, 0xbe, 0x1a, 0x02, 0xed, 0x41, 0x8f, 0x42, 0x04, 0x9b, 0x62, 0xf1, + 0xc9, 0x6c, 0xc9, 0xb7, 0x81, 0xc1, 0xa9, 0xfe, 0x99, 0x2a, 0xbd, 0x2e, 0xd8, 0xb2, 0x89, 0x2f, + 0x40, 0x5f, 0xd3, 0xba, 0x98, 0xb5, 0xc0, 0x0c, 0x04, 0xcc, 0x79, 0xa4, 0x78, 0xfd, 0x50, 0x8f, + 0x76, 0xf8, 0x2b, 0xd9, 0x96, 0x15, 0x57, 0x61, 0x85, 0x2f, 0xd4, 0x10, 0x76, 0x87, 0x7d, 0x1e, + 0x57, 0xdb, 0xf6, 0x80, 0x57, 0x21, 0xc2, 0x4c, 0x61, 0xf5, 0x2f, 0x55, 0x69, 0xa7, 0x90, 0x95, + 0x24, 0x3a, 0xf3, 0x14, 0x64, 0xea, 0xfc, 0x99, 0x73, 0xe7, 0xb5, 0xb3, 0x71, 0x6d, 0x72, 0xc4, + 0x55, 0x6f, 0x1e, 0x07, 0x6f, 0x72, 0x6c, 0x96, 0xb6, 0x35, 0xd4, 0x3a, 0x98, 0x34, 0x39, 0x8b, + 0x28, 0xff, 0x0f, 0xd1, 0xc3, 0x9e, 0x16, 0xb7, 0xaf, 0xb5, 0xf6, 0x40, 0x9b, 0x2f, 0xa8, 0x78, + 0x1b, 0x14, 0x4f, 0xc0, 0xef, 0x0d, 0x11, 0x59, 0xa8, 0xa4, 0x7a, 0xab, 0x2a, 0xbd, 0x25, 0xe4, + 0x4b, 0x17, 0x37, 0xde, 0x47, 0xd7, 0xbb, 0xea, 0xb5, 0xb3, 0xe7, 0xf5, 0xe3, 0xb7, 0xf4, 0x53, + 0xb7, 0x32, 0xa7, 0x6e, 0xca, 0xf9, 0xe8, 0xf0, 0xcd, 0x68, 0x55, 0x6b, 0x7b, 0x4b, 0xd8, 0x47, + 0x25, 0x1b, 0xb2, 0x1a, 0x11, 0x19, 0x6f, 0x62, 0x8d, 0xc8, 0x49, 0x14, 0xcb, 0x59, 0x23, 0x1e, + 0x86, 0x54, 0x82, 0xe6, 0x4b, 0x14, 0x5d, 0x7a, 0x3e, 0x4a, 0x00, 0x72, 0x4e, 0x5e, 0xbe, 0x1d, + 0x15, 0x7a, 0x7c, 0xde, 0x60, 0x43, 0x58, 0x69, 0x23, 0xe2, 0x52, 0x09, 0x78, 0x27, 0x98, 0x40, + 0xf1, 0x17, 0x60, 0xb1, 0xd4, 0xfa, 0x0e, 0x67, 0x7a, 0x06, 0x30, 0x54, 0x9f, 0xb8, 0x9c, 0x39, + 0x31, 0x0b, 0xa6, 0xfa, 0x72, 0x73, 0xc7, 0x4c, 0x1d, 0xbf, 0x90, 0x8c, 0x5f, 0x05, 0xc7, 0x81, + 0x97, 0x36, 0xbc, 0xf6, 0xf2, 0xdd, 0x48, 0xa7, 0xd6, 0x73, 0x2b, 0x39, 0x7d, 0x12, 0x40, 0xe2, + 0x86, 0x97, 0x5e, 0xad, 0x90, 0x4d, 0xaa, 0xfc, 0x1f, 0x50, 0x89, 0xc1, 0x83, 0xda, 0x98, 0x13, + 0x78, 0x52, 0xb6, 0x3d, 0x45, 0xac, 0xa5, 0x1a, 0x90, 0xc1, 0x65, 0x58, 0xab, 0x76, 0xb9, 0xaf, + 0xad, 0xe3, 0xa5, 0xf5, 0x78, 0x7f, 0x5c, 0xef, 0x6d, 0x77, 0xb7, 0x54, 0x54, 0xa6, 0xce, 0x4e, + 0x6a, 0xfd, 0x03, 0x66, 0xad, 0x70, 0x32, 0x60, 0xca, 0x76, 0xaa, 0x76, 0x4e, 0xfa, 0x32, 0xe9, + 0xe3, 0x92, 0xbc, 0x9c, 0xf4, 0xe5, 0x5c, 0x4e, 0xfa, 0x72, 0x5e, 0x4e, 0xfa, 0x72, 0x2e, 0x27, + 0x05, 0xba, 0x2b, 0xf2, 0x72, 0xd2, 0x97, 0xef, 0xc1, 0x49, 0x5f, 0xce, 0xcb, 0x49, 0xa1, 0x90, + 0x80, 0xa9, 0x78, 0x80, 0x74, 0xf6, 0x8e, 0x2a, 0x35, 0x9a, 0x8a, 0xc7, 0x2f, 0x6c, 0xc6, 0x7f, + 0xb2, 0xd3, 0x18, 0x72, 0x0f, 0x5e, 0x19, 0x43, 0xa7, 0xf5, 0xb3, 0x37, 0x69, 0xe2, 0x74, 0x77, + 0x72, 0xfa, 0x56, 0x7a, 0xb6, 0x37, 0x35, 0x7e, 0x34, 0x19, 0x9b, 0x80, 0xcd, 0x8b, 0xcd, 0x67, + 0x2a, 0x16, 0xff, 0x84, 0x33, 0x0f, 0x1e, 0xc8, 0x8a, 0x04, 0x59, 0xee, 0x63, 0x4e, 0x95, 0xce, + 0x73, 0x02, 0x9b, 0x22, 0x0e, 0x52, 0x53, 0xd0, 0xae, 0x36, 0x8f, 0xd3, 0xef, 0xb3, 0x31, 0x3f, + 0x18, 0x1b, 0xfd, 0xf8, 0x94, 0x1e, 0xed, 0x04, 0x73, 0x1c, 0xac, 0x09, 0x48, 0x0e, 0x37, 0x2b, + 0x55, 0xc1, 0x40, 0x7b, 0x58, 0xa9, 0x52, 0xfc, 0x3e, 0x4d, 0x8d, 0x82, 0x33, 0x47, 0x36, 0x86, + 0xd7, 0x17, 0x54, 0x3c, 0x61, 0x8c, 0x62, 0x1a, 0x08, 0x09, 0x13, 0xc1, 0x02, 0xc3, 0xe9, 0xa9, + 0x5c, 0xaa, 0x15, 0x32, 0x5b, 0xbb, 0xb2, 0xff, 0xcc, 0xa1, 0xe5, 0x2c, 0xef, 0xe2, 0xdf, 0x45, + 0x8b, 0xfc, 0xca, 0xfe, 0x52, 0x8e, 0x18, 0xd3, 0x1f, 0xcf, 0x3d, 0x50, 0xdd, 0x0f, 0xd8, 0x30, + 0x2b, 0x30, 0xaa, 0x58, 0x96, 0x7f, 0x95, 0x83, 0x20, 0x04, 0x9c, 0x4c, 0xc6, 0x88, 0x7c, 0x3b, + 0x5a, 0xa6, 0x1c, 0xf0, 0x85, 0xc2, 0x8a, 0x97, 0xda, 0x0f, 0x1c, 0xd9, 0xe4, 0x6b, 0x21, 0xd9, + 0x64, 0xbf, 0x30, 0x47, 0x8c, 0x5c, 0xe2, 0x0b, 0xf9, 0x4a, 0xb2, 0x1f, 0x9a, 0xa4, 0x46, 0xba, + 0x69, 0x91, 0x46, 0xae, 0xb2, 0x3a, 0xb4, 0x2a, 0x9b, 0x2e, 0xbf, 0x09, 0x2d, 0xf2, 0x79, 0x43, + 0xa4, 0x95, 0x54, 0xa1, 0xc2, 0xdf, 0xe2, 0xda, 0xd4, 0xd9, 0x9b, 0xfa, 0xe0, 0xe5, 0x2c, 0x9a, + 0xc6, 0xd6, 0x10, 0x92, 0x31, 0x52, 0xd9, 0x37, 0x1c, 0x2a, 0x32, 0xfb, 0x81, 0xaf, 0x47, 0x8b, + 0x5b, 0xdd, 0xa1, 0x66, 0x22, 0x75, 0x94, 0x54, 0xff, 0x54, 0x95, 0x5e, 0x13, 0x08, 0x40, 0xdc, + 0x08, 0x1d, 0x40, 0xb7, 0x36, 0xa8, 0x32, 0x54, 0x0d, 0xac, 0x65, 0xb4, 0x11, 0x83, 0x9f, 0xa6, + 0x2e, 0x76, 0x6a, 0x97, 0xae, 0x6a, 0xd7, 0x87, 0x64, 0x92, 0x11, 0x53, 0x24, 0xaa, 0x0c, 0xc8, + 0x1b, 0x40, 0x91, 0x68, 0xac, 0x0b, 0x52, 0x04, 0xbd, 0x0a, 0xb6, 0x14, 0x53, 0xb4, 0xa5, 0xda, + 0x8b, 0x0b, 0x2d, 0xf1, 0xb5, 0x39, 0xfd, 0x61, 0x2a, 0x5f, 0xbc, 0xa8, 0x4a, 0x1b, 0x04, 0x80, + 0x88, 0xcf, 0xdf, 0xa3, 0x96, 0xae, 0xfa, 0x64, 0xec, 0x33, 0xfd, 0xc4, 0x75, 0x19, 0xf0, 0xcb, + 0xfe, 0xd7, 0x22, 0xf4, 0x70, 0x9e, 0xd3, 0x6b, 0xde, 0x83, 0x0a, 0x76, 0x34, 0x50, 0xd1, 0xab, + 0x41, 0x95, 0xea, 0x85, 0x82, 0x1d, 0x0d, 0xc6, 0xc2, 0x83, 0xee, 0xdc, 0xd1, 0x00, 0xf2, 0x5f, + 0x79, 0xe6, 0xc4, 0xa8, 0x76, 0x68, 0xc8, 0x55, 0xb3, 0x9e, 0x1a, 0xf4, 0xc9, 0x27, 0x5e, 0x90, + 0x58, 0xe1, 0xd0, 0x4f, 0xdd, 0xa2, 0xde, 0x84, 0xe0, 0xcb, 0x42, 0x71, 0x2b, 0xe4, 0x82, 0x1d, + 0x0d, 0xbc, 0x84, 0x96, 0x75, 0x28, 0xc1, 0x10, 0x56, 0x49, 0xa1, 0x73, 0x9e, 0x57, 0xa5, 0x1f, + 0x09, 0x06, 0x4c, 0x7c, 0xdc, 0x72, 0xb3, 0xb0, 0x78, 0x23, 0x39, 0x12, 0x97, 0x0d, 0x1c, 0xfe, + 0x44, 0x81, 0xe5, 0xe7, 0xe4, 0x6e, 0x0a, 0x95, 0x2e, 0x22, 0xf3, 0xfc, 0xa5, 0xfb, 0x38, 0xa0, + 0x37, 0x60, 0x38, 0x1b, 0x1c, 0x21, 0x25, 0x38, 0x55, 0x8a, 0x71, 0x02, 0x4b, 0x4f, 0x1c, 0x37, + 0x9c, 0x31, 0xce, 0xc6, 0xb4, 0x9e, 0x2f, 0xc3, 0xee, 0xa6, 0x2c, 0xa1, 0x97, 0x75, 0xd5, 0x00, + 0x8f, 0x26, 0x7a, 0x4c, 0xf4, 0xe5, 0xb8, 0xd6, 0x73, 0x79, 0x1d, 0x31, 0x14, 0xf4, 0x7e, 0x06, + 0x26, 0x10, 0xd8, 0x51, 0x88, 0x36, 0x06, 0x56, 0x12, 0xd3, 0x7c, 0xab, 0x4d, 0x9e, 0x4f, 0x0d, + 0x5e, 0x07, 0x1f, 0x2f, 0x6d, 0x72, 0x44, 0xeb, 0xbb, 0x15, 0x76, 0x37, 0x85, 0xca, 0x41, 0xfd, + 0xde, 0x64, 0xe2, 0x5b, 0xae, 0x6f, 0xe0, 0x48, 0x07, 0x19, 0xa0, 0xc0, 0x0a, 0x99, 0xad, 0x37, + 0xdf, 0x80, 0x8a, 0x69, 0x17, 0x11, 0xf5, 0x69, 0xb1, 0xa5, 0x8b, 0xb0, 0x70, 0xf1, 0xe9, 0x79, + 0xbb, 0xd8, 0x70, 0xd1, 0x64, 0xb0, 0xf9, 0x61, 0x0e, 0x15, 0x86, 0xe8, 0x9a, 0xa3, 0xee, 0x8b, + 0x61, 0x55, 0xfa, 0x8d, 0x60, 0x02, 0x45, 0x45, 0x9b, 0xf9, 0x28, 0x13, 0xe9, 0xd7, 0x8f, 0x7e, + 0xea, 0xf4, 0xb5, 0xf8, 0xda, 0x5b, 0x1d, 0x3b, 0xe0, 0xbc, 0x95, 0x2e, 0x0e, 0xe2, 0xf6, 0xa4, + 0x9f, 0xba, 0x35, 0x97, 0x88, 0x36, 0x6e, 0xad, 0x4d, 0x26, 0x46, 0x92, 0xd3, 0x83, 0xe9, 0xa9, + 0xcb, 0xb0, 0x20, 0xc1, 0x50, 0x2e, 0x26, 0x63, 0x9f, 0xb9, 0xea, 0x53, 0xc7, 0xc7, 0xf5, 0x73, + 0x97, 0xc1, 0xa4, 0x0b, 0xe6, 0xb8, 0xf4, 0xcd, 0x0b, 0xe9, 0x99, 0x19, 0xed, 0x5c, 0x6f, 0x7a, + 0x6c, 0x4c, 0x36, 0x0b, 0xe4, 0x7f, 0x8d, 0x96, 0xd3, 0x66, 0x6f, 0x53, 0x3a, 0x94, 0x16, 0xea, + 0x1c, 0x49, 0xec, 0xc6, 0xb6, 0x04, 0xf3, 0xc4, 0x78, 0xa2, 0x3f, 0x15, 0xbf, 0x8a, 0x85, 0x25, + 0x72, 0x7c, 0xc7, 0x7a, 0xca, 0x80, 0x53, 0x8d, 0x6c, 0xcb, 0xc6, 0x9f, 0xe3, 0xd0, 0xe3, 0xbe, + 0x90, 0xd4, 0x1e, 0x0e, 0xec, 0x6c, 0x6b, 0x0a, 0xba, 0xbd, 0x8a, 0x93, 0x2d, 0x6d, 0x19, 0x91, + 0xdb, 0x76, 0xab, 0xd2, 0xaf, 0x84, 0xf9, 0xb1, 0xc4, 0x9f, 0xb3, 0x42, 0x33, 0x15, 0x36, 0x86, + 0x4e, 0x67, 0x7a, 0x06, 0xee, 0xb7, 0x4a, 0xf3, 0xd3, 0xe6, 0x0f, 0x71, 0x68, 0xb1, 0x3b, 0xa8, + 0xb8, 0x89, 0x08, 0x99, 0x87, 0xc1, 0x3b, 0xc9, 0x51, 0x40, 0x50, 0x71, 0x57, 0x37, 0xaa, 0xd2, + 0xdb, 0x02, 0xc1, 0x15, 0x5d, 0x94, 0xfa, 0xf4, 0x4d, 0x2d, 0x7e, 0x05, 0x0e, 0x33, 0x58, 0x97, + 0xd3, 0x72, 0xdc, 0xfb, 0x7d, 0xb7, 0x93, 0xb1, 0x01, 0x3d, 0xda, 0xab, 0x4d, 0x8e, 0x54, 0x3a, + 0xb4, 0xbe, 0x33, 0xec, 0x2a, 0x36, 0xf1, 0x2b, 0x64, 0x42, 0x90, 0xff, 0x15, 0x5a, 0x0a, 0xe7, + 0x91, 0x44, 0x84, 0x2c, 0x16, 0x9f, 0x9a, 0x67, 0xfd, 0x6d, 0x27, 0x48, 0x60, 0x6b, 0xa1, 0x39, + 0xc4, 0x52, 0x7a, 0x6c, 0x4c, 0xce, 0x37, 0xe1, 0xac, 0xd3, 0xf0, 0x7c, 0x05, 0x8c, 0x35, 0x3f, + 0x43, 0xab, 0xb2, 0xd7, 0xea, 0x83, 0xd8, 0x9d, 0xcb, 0xfe, 0x1d, 0x42, 0xab, 0xf3, 0x7a, 0xb4, + 0xf0, 0xbf, 0x40, 0x8b, 0x5d, 0xf5, 0xbb, 0x80, 0xcf, 0x15, 0x82, 0xcd, 0x8a, 0x00, 0xc4, 0x17, + 0xb6, 0x66, 0x79, 0x78, 0x61, 0xa8, 0xe9, 0xb5, 0x92, 0xe5, 0x77, 0x49, 0xb2, 0xf0, 0xbf, 0x45, + 0xab, 0x3c, 0x01, 0x7f, 0xd8, 0xed, 0xf3, 0x2b, 0x41, 0xb9, 0xdd, 0x1f, 0xf6, 0x99, 0x6e, 0xd0, + 0x75, 0xaa, 0xb4, 0x55, 0xc8, 0x49, 0x14, 0x5f, 0xa1, 0x47, 0x4a, 0x76, 0x17, 0x18, 0x60, 0x05, + 0x60, 0xd1, 0xca, 0x44, 0xfa, 0x6b, 0x88, 0x9b, 0xc9, 0xdd, 0x48, 0xa7, 0xd3, 0xc8, 0xee, 0x95, + 0x73, 0x48, 0xf1, 0x32, 0x5a, 0x11, 0x84, 0x9f, 0xbb, 0x28, 0x3f, 0x5d, 0x64, 0xd9, 0x4b, 0xb2, + 0x92, 0xc4, 0xd5, 0x59, 0x25, 0x52, 0x96, 0x9a, 0x85, 0xc6, 0xff, 0xd3, 0x02, 0x7a, 0x18, 0x2f, + 0x05, 0x9b, 0x42, 0xa5, 0x8b, 0x17, 0xe4, 0xab, 0xf6, 0x6e, 0xa5, 0x9e, 0x81, 0x41, 0x83, 0xaf, + 0xfe, 0x2d, 0xa7, 0x4a, 0xff, 0x87, 0x71, 0x34, 0x8f, 0xc1, 0xe2, 0x7f, 0xe6, 0x40, 0x68, 0xd7, + 0x86, 0xbb, 0xe9, 0xe9, 0xb6, 0xc1, 0x23, 0xe1, 0x00, 0x10, 0xf7, 0xf1, 0xc7, 0xdd, 0xa6, 0xe1, + 0xb8, 0x59, 0x39, 0x98, 0x8c, 0xc5, 0xf1, 0x90, 0x48, 0xf5, 0x2e, 0xac, 0xc3, 0x2a, 0xc1, 0xb9, + 0x44, 0x74, 0x2b, 0x9c, 0xfb, 0x85, 0x83, 0x81, 0x96, 0x16, 0x02, 0xa8, 0x0d, 0x7b, 0xbc, 0x14, + 0xde, 0xe0, 0xd9, 0xa7, 0xe0, 0xb9, 0x13, 0xbc, 0x1b, 0xe9, 0x22, 0x13, 0x21, 0x19, 0x8b, 0x5b, + 0x85, 0xcd, 0x9e, 0xc5, 0x6a, 0xe8, 0xf0, 0x14, 0x59, 0x88, 0xb4, 0x3c, 0xed, 0xd2, 0x48, 0x32, + 0xf6, 0x19, 0x3d, 0x7f, 0xbc, 0x73, 0x34, 0x73, 0xea, 0x26, 0xcc, 0xf8, 0xd7, 0x33, 0xa7, 0x6e, + 0x66, 0x46, 0x8e, 0x9b, 0xc6, 0x50, 0x5c, 0xc8, 0x26, 0x87, 0x3f, 0xe0, 0x55, 0xaa, 0xbc, 0xee, + 0xb0, 0x1b, 0xcb, 0x6b, 0x6f, 0xac, 0xc7, 0xbf, 0xd6, 0xef, 0xf1, 0x84, 0xd6, 0xb7, 0xf8, 0xf6, + 0xac, 0x57, 0xc2, 0x1e, 0xef, 0xeb, 0xb2, 0xd5, 0x5a, 0xfe, 0x3f, 0x71, 0x76, 0xa7, 0x16, 0xe0, + 0x9c, 0xc6, 0x6e, 0xc3, 0xba, 0xb5, 0x98, 0xbb, 0x8d, 0xcd, 0xaf, 0xa5, 0x4f, 0x8b, 0xf6, 0xe8, + 0x47, 0xaf, 0x6d, 0x91, 0xcb, 0xb5, 0x9e, 0x71, 0xed, 0x46, 0x24, 0x7d, 0x7b, 0x2a, 0x75, 0xfc, + 0x46, 0x85, 0xa6, 0x46, 0xa9, 0xfc, 0x94, 0x8c, 0x5d, 0x4a, 0x5d, 0x1d, 0x00, 0xf9, 0x89, 0x9d, + 0x9e, 0x5b, 0xe4, 0x75, 0xc9, 0x3b, 0x17, 0x40, 0x1e, 0x05, 0x7e, 0x4c, 0xd9, 0xb1, 0x81, 0xda, + 0x57, 0xbe, 0xb7, 0xc5, 0xed, 0xf7, 0x2b, 0x2d, 0x77, 0x23, 0x9d, 0x1e, 0x77, 0x8b, 0xcf, 0x13, + 0xb8, 0x1b, 0xe9, 0x04, 0x0f, 0x07, 0xf0, 0x24, 0x4c, 0xf7, 0x7e, 0x96, 0xba, 0x78, 0x9c, 0xe5, + 0xde, 0xa9, 0x89, 0xfe, 0x8a, 0xb9, 0x44, 0xbf, 0xdd, 0x7d, 0xa6, 0x09, 0xf1, 0x5e, 0xa5, 0x45, + 0x09, 0xfb, 0x02, 0xfe, 0xfa, 0x60, 0x20, 0xac, 0x78, 0xc8, 0xf9, 0xfc, 0x52, 0xb2, 0xaa, 0xc8, + 0x11, 0x49, 0x9e, 0x64, 0x71, 0x2d, 0x65, 0x8b, 0xc4, 0x2b, 0x8c, 0xae, 0x85, 0xbe, 0x8b, 0x99, + 0x33, 0x97, 0x92, 0xb3, 0xe7, 0xf4, 0x23, 0x97, 0xe4, 0x3c, 0x79, 0xf8, 0x1d, 0x68, 0xb9, 0xbb, + 0xdd, 0xeb, 0x0b, 0xd7, 0x12, 0xd3, 0x81, 0x97, 0x32, 0xe0, 0x17, 0x54, 0xa9, 0x5c, 0xb0, 0x25, + 0x88, 0xa5, 0x2c, 0xcf, 0xd5, 0x26, 0xc7, 0xd2, 0x93, 0x63, 0xd4, 0x37, 0xc3, 0x86, 0xc7, 0x6f, + 0x43, 0x85, 0x60, 0x86, 0x78, 0xcb, 0x4d, 0xb5, 0x70, 0x62, 0x59, 0x31, 0x81, 0xe2, 0x33, 0x70, + 0x38, 0xcf, 0x1e, 0x63, 0x02, 0xd1, 0xcc, 0xe7, 0xa7, 0x41, 0x2e, 0x93, 0x4d, 0x64, 0xfe, 0x0b, + 0x0e, 0xad, 0x36, 0x4e, 0xb4, 0x03, 0x7e, 0xbf, 0xe2, 0x09, 0xd3, 0x25, 0x41, 0xf9, 0xe2, 0x7c, + 0x8e, 0x76, 0x76, 0xe4, 0xea, 0x9d, 0xaa, 0x24, 0x0b, 0xf9, 0x09, 0x89, 0xaf, 0xd1, 0x9e, 0x82, + 0x86, 0x1d, 0xee, 0xd1, 0x2e, 0x9d, 0xc4, 0xbb, 0xe3, 0xe4, 0xd7, 0xac, 0x8b, 0xa8, 0x36, 0xdb, + 0x93, 0x19, 0x9b, 0x06, 0x79, 0x43, 0x9f, 0x30, 0xbc, 0xcb, 0xf2, 0x53, 0x34, 0x0f, 0xf5, 0xcc, + 0x05, 0xfb, 0x40, 0xcc, 0xf5, 0xff, 0x5e, 0x6c, 0x32, 0x57, 0x3b, 0x5d, 0xbe, 0x93, 0x43, 0xc8, + 0x17, 0x22, 0xa4, 0xfd, 0x4a, 0x98, 0xf2, 0x58, 0xb7, 0x2a, 0xfd, 0x5a, 0x60, 0xc0, 0x62, 0xbd, + 0xf5, 0x9b, 0xb6, 0xcc, 0x6a, 0xd3, 0x6c, 0xe6, 0xd4, 0x64, 0x79, 0x38, 0xd8, 0xae, 0xb0, 0x00, + 0x07, 0x61, 0xba, 0x54, 0x28, 0x20, 0x10, 0x9b, 0x4b, 0x55, 0x85, 0xcc, 0x50, 0xe7, 0xf7, 0x98, + 0x02, 0x8b, 0x97, 0x32, 0x63, 0xe2, 0x33, 0x6a, 0x02, 0x0d, 0x26, 0x9c, 0xfa, 0x7c, 0x4a, 0x1b, + 0xfa, 0x04, 0x0c, 0xc9, 0x8c, 0xf1, 0xa8, 0xdc, 0xec, 0x66, 0xb3, 0x30, 0xbd, 0x3f, 0x92, 0x19, + 0x8d, 0x54, 0x98, 0x22, 0x88, 0x97, 0x77, 0xa2, 0xa5, 0xde, 0x40, 0xab, 0xdb, 0x67, 0x30, 0x5d, + 0x32, 0x1b, 0x29, 0x48, 0x5c, 0x0b, 0x7b, 0x29, 0x0c, 0x05, 0x50, 0x48, 0x7d, 0x3e, 0x95, 0xea, + 0xba, 0xa3, 0x5d, 0xb8, 0xa0, 0x0d, 0x0f, 0xc8, 0x14, 0x8f, 0x1f, 0xe4, 0x50, 0x49, 0x48, 0xf1, + 0xb4, 0x07, 0x7d, 0xe1, 0x83, 0xe4, 0xac, 0x88, 0x8a, 0x6c, 0xfb, 0x54, 0x49, 0x11, 0xec, 0x29, + 0x62, 0xa3, 0x29, 0xaa, 0x69, 0x93, 0xfd, 0x5a, 0xcf, 0x78, 0x6a, 0xba, 0x9b, 0xec, 0x17, 0x9f, + 0xe9, 0xa3, 0xfd, 0x6c, 0x4f, 0xc1, 0xf1, 0x0a, 0x38, 0x59, 0x63, 0x2e, 0x02, 0x6d, 0x61, 0x10, + 0xf0, 0x76, 0x33, 0xdb, 0x93, 0x4c, 0x5c, 0xc4, 0x0b, 0xda, 0x5e, 0x08, 0x7f, 0x81, 0x43, 0x85, + 0x3e, 0x7f, 0x98, 0x6c, 0x82, 0x84, 0x63, 0x15, 0x8b, 0x65, 0xb9, 0x0e, 0x64, 0x90, 0x2e, 0x79, + 0x3c, 0x4a, 0x28, 0xe4, 0xdb, 0xd3, 0xa2, 0x80, 0x2c, 0x64, 0x66, 0x14, 0xeb, 0x41, 0x84, 0x6b, + 0xd9, 0x63, 0xf1, 0xd9, 0xef, 0x58, 0x4d, 0x93, 0x76, 0xd9, 0x3f, 0x2f, 0x46, 0xc5, 0x8c, 0x47, + 0x27, 0x16, 0xd5, 0x56, 0x82, 0x57, 0xe6, 0x96, 0xa0, 0xbb, 0x6d, 0x5f, 0xbd, 0x3b, 0xbc, 0x8f, + 0x2a, 0x30, 0x21, 0x55, 0x6a, 0x13, 0xb2, 0xd3, 0xc4, 0x0f, 0xa8, 0x9b, 0xa7, 0xb1, 0x0f, 0x26, + 0x63, 0x71, 0xea, 0xd4, 0x69, 0x38, 0xa2, 0x52, 0x51, 0x9e, 0xf1, 0xf1, 0x04, 0xcf, 0x4d, 0x98, + 0x6e, 0x80, 0x63, 0xf1, 0x7e, 0x6a, 0xc3, 0x58, 0x0f, 0x44, 0xe4, 0xec, 0xf2, 0xf8, 0x0f, 0x50, + 0x71, 0x6b, 0xa0, 0xdd, 0x1f, 0x6e, 0x74, 0x07, 0x9b, 0x94, 0x30, 0x9d, 0x8e, 0x70, 0xe1, 0x83, + 0x81, 0x1b, 0x47, 0x2d, 0xd4, 0xa7, 0xf4, 0xec, 0x69, 0xea, 0x77, 0xda, 0x75, 0x87, 0x2d, 0x9b, + 0x94, 0x2a, 0xb3, 0xf9, 0xf8, 0x59, 0x0e, 0x95, 0xb4, 0xfb, 0xe9, 0xc6, 0x87, 0xf9, 0x11, 0xd5, + 0x0e, 0x4f, 0x73, 0xaa, 0x74, 0x9c, 0x13, 0xec, 0x69, 0x62, 0x17, 0x07, 0xd5, 0xd7, 0x8e, 0x5c, + 0xd4, 0x7a, 0x2e, 0x5b, 0x27, 0x52, 0xc0, 0xe0, 0x86, 0xba, 0x92, 0xb1, 0xc1, 0xf4, 0xf5, 0x43, + 0x5a, 0xfc, 0x8a, 0xb9, 0x9f, 0x68, 0x91, 0xc4, 0x86, 0xf4, 0xd8, 0x78, 0xea, 0x52, 0x3c, 0x3b, + 0xf9, 0xdc, 0x79, 0x9a, 0x80, 0xf5, 0x19, 0x26, 0xad, 0x1c, 0x88, 0x9b, 0x8e, 0x6c, 0x58, 0x17, + 0xba, 0x72, 0x38, 0x75, 0xf6, 0x24, 0x4c, 0x86, 0x0a, 0xd9, 0x5e, 0x27, 0xde, 0x67, 0x5e, 0x2d, + 0x01, 0x69, 0xe3, 0xf9, 0x05, 0xfc, 0x77, 0x6d, 0xd7, 0x4b, 0x88, 0xc2, 0x6f, 0x5c, 0x2f, 0xa1, + 0x87, 0x42, 0x99, 0xc8, 0x08, 0xac, 0x11, 0x00, 0x53, 0x07, 0x69, 0xe3, 0xb6, 0x49, 0x9f, 0x4d, + 0xb8, 0x59, 0x42, 0x8a, 0x13, 0x16, 0x2a, 0x2e, 0x4b, 0xa4, 0x99, 0xe1, 0x54, 0xe9, 0x8e, 0x4d, + 0xa4, 0xf9, 0xfc, 0xdb, 0x88, 0x34, 0x58, 0xfb, 0x6a, 0x51, 0xc2, 0xdf, 0xaf, 0x84, 0xb2, 0x15, + 0x88, 0x6e, 0x72, 0x04, 0x03, 0x81, 0x30, 0xc8, 0x27, 0x1d, 0xee, 0x20, 0x11, 0x4d, 0x68, 0x79, + 0x36, 0xe9, 0xe4, 0x3d, 0xb4, 0x14, 0x0b, 0x93, 0x61, 0x30, 0xb9, 0x17, 0x8b, 0xab, 0xb3, 0xbb, + 0xa1, 0x11, 0xa7, 0x52, 0xae, 0x06, 0x98, 0xe2, 0x5a, 0xfd, 0xe4, 0xf5, 0xac, 0x33, 0x5d, 0x48, + 0x31, 0x24, 0x77, 0xf8, 0xe2, 0x9b, 0x51, 0x31, 0x38, 0xf9, 0x6f, 0x0b, 0x34, 0xf9, 0xfc, 0xd4, + 0xd6, 0xfe, 0x54, 0xbe, 0x7e, 0x26, 0x08, 0x2e, 0xff, 0xde, 0x00, 0xc8, 0xac, 0x6c, 0x36, 0xb1, + 0x14, 0x3e, 0xe8, 0xba, 0x38, 0x33, 0x9d, 0x39, 0x43, 0x7d, 0x14, 0x65, 0x16, 0x0d, 0x17, 0x86, + 0x05, 0x12, 0xa3, 0xb0, 0xc2, 0xfb, 0x2f, 0x8c, 0xc9, 0x26, 0x96, 0xc2, 0x47, 0xbe, 0xc2, 0x18, + 0x34, 0xfe, 0x43, 0xf4, 0x08, 0x94, 0xdd, 0xc0, 0x72, 0xcd, 0x50, 0x69, 0x11, 0xb1, 0x40, 0x11, + 0x4d, 0x22, 0x2f, 0x82, 0xf8, 0x04, 0xdb, 0x18, 0x93, 0x7f, 0x1b, 0xfe, 0xfb, 0xf9, 0xb2, 0xe0, + 0xb2, 0xa0, 0xe8, 0xac, 0xb2, 0x10, 0x53, 0x56, 0x3e, 0x04, 0xf1, 0x09, 0xb6, 0x2d, 0x39, 0x65, + 0xe5, 0xcb, 0xf2, 0x5d, 0xbc, 0xa4, 0xbe, 0x9b, 0x1c, 0x11, 0x59, 0x84, 0x4a, 0x6c, 0x63, 0xc3, + 0x7b, 0xd0, 0x43, 0x3e, 0xbf, 0x2f, 0x4c, 0x00, 0x3b, 0x43, 0x4a, 0xd0, 0xef, 0x6e, 0x55, 0x28, + 0x43, 0xff, 0x89, 0x2a, 0x89, 0x42, 0x6e, 0xaa, 0xf8, 0x54, 0xd6, 0xbc, 0x84, 0xa6, 0xb6, 0xd3, + 0x64, 0x39, 0x37, 0x07, 0xdf, 0xc3, 0x31, 0xa5, 0xd4, 0xbb, 0x43, 0xa1, 0xfd, 0x81, 0xa0, 0x21, + 0x2a, 0x10, 0xa3, 0x73, 0x6e, 0xaa, 0xf8, 0xf3, 0xbc, 0xa5, 0xb4, 0xd1, 0xe4, 0x4a, 0xb8, 0x8f, + 0x6a, 0x3a, 0xfb, 0xa7, 0xbe, 0x9c, 0x4e, 0x4d, 0x5f, 0x60, 0xbd, 0xa2, 0xe5, 0x5c, 0x9a, 0x58, + 0x58, 0x5a, 0xd6, 0xac, 0x1c, 0xac, 0x77, 0xfb, 0x82, 0x84, 0x6f, 0x17, 0x8b, 0x8f, 0x65, 0xcf, + 0xdc, 0xad, 0xca, 0x41, 0x32, 0x67, 0x89, 0x3a, 0x69, 0x20, 0x1b, 0xe7, 0xd7, 0xa9, 0xab, 0x9d, + 0x19, 0xf5, 0xb2, 0xe9, 0xdf, 0x1c, 0x1b, 0x04, 0x1f, 0x0b, 0x31, 0x13, 0xe9, 0x4f, 0xc6, 0x22, + 0x73, 0x89, 0xa8, 0x98, 0x8e, 0xf4, 0x68, 0xe7, 0x7a, 0xe9, 0xc6, 0x96, 0x38, 0xad, 0xf5, 0xf4, + 0x69, 0x53, 0x87, 0x33, 0xea, 0x65, 0xd9, 0x20, 0x55, 0xf6, 0xef, 0x17, 0xa1, 0x87, 0x0c, 0x51, + 0x2e, 0xa8, 0x78, 0x15, 0x7f, 0xd8, 0xe7, 0x6e, 0xe1, 0x9f, 0x44, 0x45, 0x21, 0xa2, 0x72, 0x6d, + 0x35, 0x87, 0xd2, 0x02, 0xe0, 0x54, 0xcb, 0x9f, 0x05, 0x06, 0x95, 0xf1, 0x52, 0x29, 0x43, 0xcb, + 0x3d, 0x2d, 0x3e, 0xc5, 0x1f, 0x06, 0xc5, 0x1f, 0x04, 0x24, 0xd9, 0x06, 0xe3, 0x7f, 0x84, 0x05, + 0x1f, 0x4c, 0x4e, 0xf2, 0x7a, 0x83, 0x4a, 0x28, 0x04, 0x82, 0x8f, 0x6c, 0x07, 0x92, 0xfb, 0x7d, + 0x6e, 0xa7, 0x12, 0x0c, 0xd7, 0xb8, 0xc3, 0x6e, 0xd0, 0xa0, 0x64, 0x06, 0x82, 0xeb, 0x81, 0x87, + 0xb9, 0x31, 0xd0, 0xac, 0x80, 0xe2, 0x51, 0x24, 0x5b, 0x00, 0x5c, 0x06, 0xad, 0x54, 0x0d, 0x48, + 0x6a, 0xcb, 0xa0, 0x0c, 0x1b, 0x90, 0x77, 0xa0, 0x62, 0x0f, 0x88, 0xb0, 0xe6, 0xa1, 0x5c, 0x91, + 0xcc, 0x82, 0xb2, 0x6e, 0x19, 0x16, 0xdd, 0xe3, 0x96, 0x21, 0xca, 0xb9, 0x65, 0x88, 0xf3, 0x93, + 0xb6, 0xe3, 0x7a, 0x83, 0xf3, 0x8e, 0xcc, 0x40, 0xa0, 0x37, 0xf1, 0x17, 0xee, 0xeb, 0xe5, 0x46, + 0x6f, 0x52, 0x80, 0xe1, 0x3f, 0x97, 0x3b, 0x46, 0xe2, 0xb3, 0x7b, 0x3c, 0xa1, 0x2a, 0xcc, 0xdc, + 0xab, 0xdc, 0x4d, 0x8a, 0x3f, 0x9c, 0x8c, 0x1d, 0xd1, 0x8f, 0xe0, 0x4d, 0x9d, 0x75, 0xad, 0x2b, + 0xfb, 0x1f, 0x16, 0xa1, 0xa2, 0x3a, 0x77, 0xab, 0x12, 0x6a, 0x73, 0x7b, 0x14, 0x9e, 0x47, 0x8b, + 0xad, 0x05, 0x25, 0x93, 0xdf, 0xfc, 0x86, 0xfc, 0x37, 0xb0, 0x61, 0x58, 0xf3, 0x5e, 0x8d, 0x7e, + 0x92, 0xbd, 0x46, 0x0c, 0xa3, 0xcb, 0x5c, 0x0d, 0x5e, 0x6b, 0xbb, 0x1a, 0x0c, 0xe3, 0xca, 0xde, + 0xdf, 0x7d, 0xc3, 0xdc, 0xf0, 0x61, 0x07, 0xce, 0x51, 0x8f, 0xcc, 0xea, 0xb2, 0xdb, 0xbd, 0xb9, + 0x89, 0xaf, 0x41, 0x85, 0xad, 0xee, 0x03, 0x6f, 0xb7, 0x07, 0xc2, 0x6e, 0x3a, 0xe4, 0xe6, 0x77, + 0xd6, 0x48, 0x2d, 0xbb, 0xc7, 0x48, 0x15, 0xe6, 0x8c, 0xd4, 0xeb, 0xa8, 0xe8, 0x37, 0x98, 0xd0, + 0x36, 0x5f, 0x28, 0x4c, 0x98, 0x7a, 0x9e, 0xad, 0x44, 0x56, 0x42, 0xe4, 0x8c, 0x85, 0x94, 0x28, + 0x5b, 0xf8, 0xdf, 0x81, 0x89, 0x6e, 0x7a, 0x4e, 0x95, 0x9e, 0x45, 0xcf, 0x08, 0xd6, 0x40, 0x89, + 0x8f, 0xb0, 0x57, 0xd5, 0xfd, 0x74, 0x87, 0x2d, 0xfb, 0x0f, 0x05, 0xa8, 0xc4, 0x56, 0x3e, 0x1e, + 0x0a, 0xbf, 0x91, 0xc9, 0x58, 0xa7, 0x26, 0xe0, 0xdb, 0x0d, 0xad, 0xc7, 0x7e, 0x09, 0x9f, 0x5d, + 0xd9, 0x3f, 0x42, 0x25, 0x41, 0xb6, 0x78, 0x63, 0xd5, 0xda, 0x80, 0xfc, 0xa3, 0xf6, 0xcb, 0xee, + 0xa6, 0xb7, 0x98, 0x7d, 0x74, 0x96, 0xde, 0x63, 0x74, 0x96, 0xe5, 0x8c, 0xce, 0xa3, 0xe6, 0xf1, + 0x20, 0x8c, 0x9c, 0x71, 0x8a, 0x57, 0x6a, 0x79, 0x3a, 0xc3, 0xe2, 0x34, 0x3e, 0x37, 0xad, 0x53, + 0xa5, 0x17, 0x50, 0x85, 0x60, 0xef, 0x33, 0xb1, 0x94, 0xed, 0x5b, 0xf0, 0xf1, 0xc9, 0xf4, 0x0c, + 0x64, 0x3e, 0x3e, 0x57, 0x36, 0xb0, 0x08, 0x21, 0x86, 0x09, 0xe6, 0x0e, 0x21, 0xae, 0x82, 0xe2, + 0x09, 0x1a, 0x82, 0xbc, 0x4c, 0xbf, 0xf8, 0xe7, 0xd0, 0x8a, 0x50, 0xfb, 0x1e, 0xf3, 0xae, 0x81, + 0xd9, 0x77, 0x59, 0x50, 0x3c, 0x79, 0xc3, 0x8a, 0xdf, 0x4d, 0x5c, 0xcf, 0xa1, 0xef, 0xcc, 0x6f, + 0xbe, 0x12, 0x3d, 0x64, 0xf4, 0x23, 0xd9, 0x96, 0x89, 0x09, 0x1f, 0x7a, 0x30, 0x37, 0x01, 0x53, + 0x02, 0x1e, 0x61, 0xc4, 0x06, 0x90, 0xcd, 0x6f, 0x8b, 0x01, 0x37, 0x40, 0x5d, 0x97, 0xb1, 0x0c, + 0x18, 0x60, 0xbc, 0x88, 0x1e, 0xa1, 0xaa, 0x0b, 0x75, 0x19, 0xa7, 0xb8, 0xd0, 0xb5, 0x79, 0xd3, + 0x30, 0xdd, 0xa6, 0x66, 0xa5, 0xde, 0x5c, 0xfa, 0xd0, 0xdb, 0x36, 0xd8, 0xa6, 0xad, 0xaa, 0xf4, + 0x16, 0xda, 0x2c, 0x30, 0xdd, 0x28, 0xbe, 0x0a, 0x87, 0x26, 0xd0, 0xeb, 0xe0, 0xb6, 0xae, 0xf7, + 0xdd, 0x36, 0x76, 0x2d, 0x70, 0x5a, 0xd3, 0x7a, 0xc6, 0x33, 0xbd, 0x43, 0xa6, 0x4f, 0x3b, 0x48, + 0xd5, 0x65, 0xc3, 0x4b, 0x50, 0x31, 0xe3, 0xe5, 0xcc, 0x6f, 0x46, 0x4b, 0xe1, 0x62, 0x2d, 0x95, + 0x08, 0xf0, 0xf8, 0x0a, 0x14, 0x24, 0x3e, 0x43, 0x4d, 0x55, 0x64, 0xe7, 0x9d, 0x4b, 0x44, 0xf5, + 0xd1, 0x6b, 0x00, 0x49, 0xc6, 0xe2, 0x7b, 0x9a, 0x43, 0x81, 0xb6, 0x90, 0x4c, 0x51, 0xf9, 0x5f, + 0xa3, 0xc5, 0x2d, 0x3e, 0x7f, 0x33, 0xdd, 0xf1, 0x7f, 0xa1, 0x4a, 0x5b, 0x04, 0x02, 0x10, 0x7f, + 0x0e, 0x88, 0xe0, 0xa2, 0x97, 0xf9, 0xe8, 0x6b, 0x7d, 0xf0, 0xb2, 0x79, 0xe8, 0xa3, 0x0d, 0x1d, + 0x4b, 0x7f, 0x75, 0x5b, 0xbf, 0xd8, 0xab, 0xf5, 0x1e, 0x4e, 0xcf, 0x0e, 0xa7, 0xa6, 0x6f, 0x26, + 0xe3, 0x47, 0xb5, 0x23, 0x63, 0xe9, 0xd9, 0xd1, 0xd4, 0xf8, 0x51, 0xb8, 0x9a, 0x29, 0x13, 0x32, + 0xfc, 0x65, 0x0e, 0x2d, 0x6d, 0x73, 0x07, 0xdd, 0xad, 0xc6, 0xd1, 0xd4, 0xf3, 0x0b, 0xf8, 0x6e, + 0xaf, 0xab, 0x27, 0x98, 0xa0, 0x62, 0x78, 0x55, 0xc9, 0x2d, 0xd0, 0xbc, 0xe2, 0x3b, 0xb6, 0xda, + 0xc0, 0x51, 0x1a, 0x51, 0x70, 0x2c, 0xed, 0x60, 0xf2, 0x7c, 0xe6, 0x4c, 0x0f, 0xbd, 0x16, 0x7a, + 0xea, 0x16, 0x75, 0xc3, 0x05, 0xe0, 0x58, 0x14, 0x2b, 0x17, 0x86, 0xf6, 0xa5, 0xf7, 0x9d, 0x84, + 0x33, 0x26, 0x2d, 0x7a, 0x52, 0xa6, 0x05, 0x60, 0xe5, 0xf9, 0x61, 0x77, 0x4b, 0x4b, 0x60, 0x7f, + 0x43, 0xb3, 0xaf, 0xed, 0x9d, 0x7d, 0x8a, 0x7f, 0x33, 0xf1, 0x41, 0x23, 0x53, 0xb3, 0xb0, 0xba, + 0x59, 0x95, 0xf6, 0x09, 0xf9, 0xd2, 0xc5, 0xb7, 0xf3, 0x00, 0xe9, 0x31, 0x4f, 0xff, 0xd5, 0xf4, + 0x58, 0xd4, 0xf4, 0x6d, 0xa3, 0x9a, 0x65, 0x4f, 0x67, 0x7a, 0x32, 0x96, 0xbe, 0xfd, 0x65, 0x7a, + 0xb6, 0xd7, 0x30, 0xdb, 0x60, 0xad, 0x91, 0x01, 0xcb, 0xf9, 0xca, 0xc1, 0x2c, 0x95, 0xe9, 0x9c, + 0x07, 0x62, 0xa9, 0xbb, 0x54, 0xa9, 0x01, 0xbd, 0x2d, 0xb0, 0xd3, 0x47, 0xac, 0x66, 0x07, 0x8f, + 0xbd, 0x8d, 0x06, 0x53, 0xd3, 0x1c, 0x69, 0x7a, 0x5a, 0x13, 0x3d, 0xa9, 0xdd, 0xbe, 0x9c, 0x9c, + 0x19, 0x05, 0x07, 0x26, 0xc0, 0x29, 0xfb, 0x62, 0x09, 0x5a, 0x2a, 0x81, 0x59, 0xb2, 0x03, 0xa1, + 0xb6, 0xa0, 0x02, 0x1f, 0xc6, 0x29, 0x34, 0xb9, 0x7f, 0xc5, 0x80, 0xc5, 0x5a, 0x3a, 0x0e, 0xfd, + 0x78, 0x42, 0x9b, 0x84, 0xa1, 0x70, 0xb8, 0x12, 0x3d, 0x97, 0x88, 0xba, 0x09, 0xb2, 0x36, 0x3a, + 0xae, 0x7f, 0x34, 0x90, 0x9c, 0x19, 0x65, 0xb3, 0x40, 0x87, 0xca, 0x0c, 0x49, 0xfe, 0x00, 0x2a, + 0x6e, 0x0b, 0x84, 0xc2, 0x46, 0xc1, 0x05, 0x0b, 0x17, 0x3c, 0x3c, 0xf8, 0xc0, 0x05, 0x93, 0x2c, + 0xb4, 0x60, 0xb6, 0x28, 0xbe, 0x19, 0x2d, 0x6b, 0x23, 0x5d, 0x69, 0xcc, 0xeb, 0x9c, 0x3b, 0xd1, + 0x80, 0xb9, 0x0e, 0x3a, 0x9c, 0xce, 0x69, 0xe2, 0x64, 0x60, 0x64, 0x14, 0xd7, 0x6a, 0x3d, 0xb7, + 0x93, 0x33, 0x1f, 0x41, 0x51, 0xd4, 0x37, 0xec, 0xc8, 0x78, 0x72, 0x66, 0x14, 0xb4, 0x64, 0xd9, + 0x40, 0x5c, 0xf3, 0x0e, 0x5a, 0xce, 0x92, 0xf9, 0xde, 0x2e, 0x48, 0x6c, 0x9a, 0xe3, 0x54, 0xe9, + 0x7f, 0xe7, 0x50, 0x9a, 0x13, 0xe8, 0x48, 0x8a, 0xff, 0x81, 0x83, 0xd1, 0x35, 0x55, 0x71, 0xb8, + 0xc7, 0x63, 0xf6, 0x1a, 0xad, 0x2c, 0xe9, 0xbb, 0x4a, 0x87, 0x36, 0x75, 0x47, 0x1f, 0xbc, 0xfc, + 0x61, 0x60, 0x0f, 0xb0, 0x9a, 0x4a, 0x87, 0x36, 0x19, 0xd5, 0xfb, 0x86, 0x4d, 0xd5, 0x1f, 0xfa, + 0xf2, 0x75, 0x47, 0xf6, 0x5d, 0xc1, 0x91, 0x6e, 0xf8, 0x0d, 0xe9, 0xfa, 0xf8, 0x58, 0xaa, 0xbf, + 0x0f, 0x56, 0x72, 0x66, 0x34, 0x62, 0xe6, 0x86, 0x5c, 0xda, 0xa5, 0xab, 0x10, 0x12, 0x01, 0x90, + 0xb1, 0x9a, 0x3f, 0xdd, 0x03, 0x36, 0x33, 0x98, 0x17, 0xd0, 0x67, 0x78, 0x55, 0x93, 0xd1, 0xa2, + 0x5d, 0x38, 0xf0, 0xa5, 0x36, 0x34, 0x65, 0x9c, 0x3f, 0xa7, 0x8e, 0xdf, 0x00, 0xdf, 0xa9, 0xb2, + 0xbe, 0x62, 0x84, 0x8c, 0xc3, 0xb8, 0xa6, 0x20, 0xbf, 0x17, 0xad, 0x72, 0x77, 0xb8, 0x7d, 0xc4, + 0xfe, 0x62, 0x1c, 0x1d, 0xc1, 0xf4, 0x25, 0x47, 0xa8, 0x39, 0x89, 0xe2, 0xb3, 0xda, 0xed, 0x2f, + 0xe0, 0x40, 0x21, 0x35, 0xd2, 0x6d, 0x1d, 0x1e, 0x3b, 0xe8, 0xa1, 0x31, 0xdc, 0xec, 0xcf, 0xc9, + 0xc6, 0xff, 0x35, 0x2a, 0x81, 0xed, 0xdd, 0xb8, 0x22, 0x08, 0xe3, 0xf4, 0x68, 0xfe, 0x49, 0x03, + 0x0e, 0x77, 0xf6, 0x1c, 0xc6, 0x35, 0x25, 0x30, 0x28, 0xea, 0xa7, 0x6e, 0xc1, 0x89, 0xbc, 0x35, + 0x9d, 0x61, 0xfe, 0xc0, 0xcc, 0xb1, 0x67, 0xc5, 0xa5, 0x93, 0xb3, 0x04, 0xb3, 0xf4, 0x45, 0xf7, + 0x51, 0xba, 0x2d, 0x87, 0x55, 0xfa, 0xc5, 0xcc, 0x99, 0x4b, 0xf7, 0x2a, 0xdd, 0x96, 0x95, 0x3f, + 0xca, 0xa1, 0x87, 0xdc, 0x5e, 0x2f, 0xb9, 0x34, 0xdb, 0x18, 0x30, 0xaa, 0xb0, 0x78, 0xc1, 0x2a, + 0xd4, 0xaa, 0x52, 0xb5, 0x90, 0x9b, 0x4b, 0xac, 0x62, 0xef, 0x86, 0x6a, 0x7d, 0xd7, 0x8d, 0x90, + 0x47, 0x13, 0xf9, 0x6b, 0x92, 0x4b, 0x81, 0xbf, 0xc8, 0xa1, 0x47, 0xa1, 0x7e, 0x24, 0x61, 0x73, + 0x30, 0xd0, 0x6a, 0x54, 0x69, 0xc9, 0x82, 0x55, 0xaa, 0x57, 0xa5, 0xed, 0xc2, 0x3c, 0x59, 0xc5, + 0x17, 0x93, 0xd3, 0x83, 0x6c, 0x0f, 0x99, 0x36, 0xbf, 0x85, 0xfa, 0x69, 0x1e, 0x62, 0xfc, 0x1f, + 0x50, 0x09, 0xbd, 0xae, 0x47, 0x2b, 0xb6, 0x74, 0xc1, 0x8a, 0x11, 0x1f, 0x51, 0x7b, 0x0e, 0xb1, + 0x0a, 0xee, 0xc7, 0x99, 0x97, 0x18, 0xa1, 0x1a, 0xa9, 0x91, 0xee, 0x79, 0x46, 0xcc, 0x96, 0x9b, + 0xff, 0x03, 0x7a, 0xc8, 0x43, 0x2e, 0x9e, 0x92, 0xdb, 0x69, 0x50, 0x0c, 0x35, 0x5e, 0xcd, 0x57, + 0x09, 0xe2, 0xd8, 0x94, 0x9b, 0x4b, 0x7c, 0x86, 0x56, 0x81, 0x5c, 0x7b, 0x9b, 0x67, 0x90, 0x72, + 0x72, 0xe1, 0x41, 0x7a, 0xd2, 0xb3, 0x4f, 0xf1, 0x34, 0xd7, 0x1e, 0x08, 0x2b, 0x41, 0xbf, 0xbb, + 0x05, 0xf7, 0x51, 0x6d, 0x6b, 0x5b, 0xf8, 0x20, 0xad, 0x4c, 0xe1, 0x82, 0x95, 0xa9, 0x51, 0x25, + 0x49, 0x58, 0x90, 0x80, 0x51, 0xaf, 0xd4, 0xb5, 0x6b, 0x10, 0x59, 0x85, 0x5a, 0x11, 0x3e, 0x8d, + 0x67, 0x4e, 0x7d, 0xa1, 0x7f, 0x12, 0xd1, 0x2f, 0x5c, 0x96, 0x17, 0x24, 0xc0, 0x77, 0x73, 0xa8, + 0x04, 0x8a, 0xf5, 0xd2, 0xfb, 0xa4, 0xf3, 0x68, 0x49, 0xdb, 0x59, 0x24, 0x70, 0xf0, 0xb4, 0x67, + 0x14, 0x5f, 0x60, 0x5d, 0x1e, 0xd2, 0x57, 0xbb, 0xf5, 0x8b, 0x09, 0x90, 0xfa, 0x0c, 0x67, 0xc7, + 0x48, 0x17, 0xec, 0xc6, 0x8d, 0x5b, 0x6b, 0x65, 0x7b, 0xde, 0x4d, 0x10, 0x73, 0x06, 0xdd, 0xe0, + 0x04, 0x86, 0xad, 0x89, 0x1f, 0x73, 0xac, 0xa0, 0x49, 0x27, 0xe6, 0x8d, 0xae, 0xcc, 0xb9, 0x8f, + 0xc1, 0x25, 0xf6, 0x6e, 0xa4, 0x93, 0xdd, 0xf4, 0xb1, 0xf8, 0x14, 0x9b, 0xd4, 0x8e, 0x7c, 0xca, + 0xb2, 0x98, 0x64, 0x8c, 0x7a, 0xb4, 0xaf, 0x83, 0x5a, 0x24, 0xa7, 0x7b, 0x80, 0xf1, 0xc1, 0x4e, + 0x59, 0xce, 0xde, 0x79, 0x5f, 0x0f, 0xb3, 0x9e, 0x7e, 0x18, 0x43, 0x6e, 0xad, 0xd4, 0xf5, 0xb9, + 0x6b, 0xa3, 0xa2, 0xec, 0x15, 0x54, 0x62, 0xeb, 0x1b, 0xac, 0x92, 0x87, 0xda, 0x14, 0x8f, 0xa1, + 0x92, 0xe3, 0xdf, 0x18, 0xe6, 0x55, 0x42, 0x1e, 0x2a, 0xd5, 0x90, 0xdf, 0x65, 0x87, 0x4b, 0xd0, + 0x72, 0xf3, 0x3a, 0x12, 0xe6, 0xe2, 0x3d, 0x1c, 0x5a, 0x09, 0x1c, 0xcf, 0x04, 0xdf, 0x83, 0xc1, + 0x92, 0xbb, 0x3f, 0xd9, 0x79, 0xc4, 0x2a, 0x3a, 0x0b, 0xa6, 0xbb, 0xef, 0x8b, 0xcb, 0x66, 0xe7, + 0x27, 0xf5, 0xb0, 0xd6, 0x34, 0xd4, 0x63, 0xd1, 0x7d, 0xd4, 0x23, 0x2b, 0x8f, 0xad, 0x1e, 0xf7, + 0xc1, 0x6f, 0xb3, 0xf3, 0xf3, 0xd3, 0x1c, 0x5a, 0xd5, 0x1a, 0xe8, 0x50, 0x28, 0xeb, 0xb3, 0xce, + 0xd3, 0xe6, 0xaf, 0x08, 0xb9, 0xd9, 0xf6, 0x08, 0x93, 0xc9, 0xaa, 0xcd, 0xaf, 0x52, 0x57, 0xa7, + 0xb5, 0x23, 0x34, 0x7c, 0x43, 0xba, 0xf7, 0x4b, 0xb3, 0x72, 0x0b, 0x57, 0xab, 0xdc, 0x6a, 0xc4, + 0xa5, 0x93, 0x86, 0x91, 0x8e, 0x10, 0x62, 0x48, 0x54, 0xc8, 0x39, 0x15, 0xe5, 0xff, 0x11, 0x87, + 0x1e, 0x09, 0x2a, 0x26, 0x18, 0x73, 0x46, 0x68, 0xc1, 0xc2, 0xfc, 0xb9, 0x5d, 0x95, 0x82, 0x42, + 0x69, 0x56, 0x46, 0xab, 0x15, 0xbb, 0x92, 0xd3, 0x83, 0x59, 0xdd, 0x7a, 0x3f, 0x4c, 0x3a, 0x7f, + 0x2b, 0x32, 0x67, 0x2e, 0xa5, 0x26, 0x4e, 0xa6, 0x4e, 0x5c, 0xae, 0x90, 0xf3, 0x56, 0x95, 0x3f, + 0xc6, 0xa1, 0x87, 0x3c, 0x2d, 0x8a, 0xdb, 0x4f, 0xe0, 0x2e, 0x3f, 0x34, 0x60, 0x61, 0x3e, 0x4e, + 0xfc, 0xce, 0x73, 0x73, 0x89, 0x2f, 0x9a, 0x55, 0x20, 0x97, 0x09, 0xef, 0xdc, 0xd7, 0xde, 0x92, + 0x4b, 0x07, 0xd7, 0x89, 0x07, 0x1b, 0x42, 0x8d, 0x12, 0xf2, 0x05, 0x15, 0xd8, 0x19, 0xef, 0xc1, + 0xd7, 0xc9, 0xcd, 0xb3, 0x3c, 0xd9, 0xc4, 0x0d, 0xd6, 0x34, 0xe8, 0xb7, 0x6a, 0xb5, 0x50, 0x95, + 0xf2, 0x50, 0xe1, 0x63, 0x1c, 0x7a, 0xdc, 0xed, 0xf5, 0xb2, 0x4c, 0x96, 0x91, 0x11, 0x16, 0xe6, + 0xf2, 0x7b, 0x54, 0x69, 0xb7, 0x30, 0x7f, 0x6e, 0xb1, 0xda, 0xac, 0x61, 0x32, 0x76, 0x44, 0x3f, + 0x7f, 0x2b, 0x2f, 0xc7, 0xbf, 0x47, 0x37, 0xce, 0x4f, 0x9e, 0xff, 0xc7, 0x1c, 0x5a, 0x0b, 0x0b, + 0xcf, 0x86, 0xc0, 0x0a, 0x14, 0x45, 0x0b, 0xd6, 0x9f, 0x28, 0xb8, 0xf7, 0x20, 0x21, 0xfe, 0x3c, + 0x6b, 0xce, 0xe6, 0xdf, 0xb6, 0x16, 0x68, 0xc1, 0x3d, 0x0a, 0xd8, 0x74, 0xa7, 0x40, 0x95, 0xbe, + 0x2a, 0x40, 0x5f, 0x14, 0x08, 0x36, 0x9e, 0x2a, 0x8e, 0x15, 0xe4, 0xd9, 0x42, 0xd8, 0x5b, 0xad, + 0xf7, 0xb1, 0x9d, 0xd8, 0xf0, 0xed, 0x9b, 0x4a, 0xa5, 0x43, 0x53, 0xa3, 0xa0, 0xff, 0xa4, 0x46, + 0xba, 0x21, 0x6e, 0x01, 0xb9, 0x1c, 0x48, 0xbd, 0xc7, 0x21, 0xc2, 0x9d, 0xd1, 0xf6, 0xbb, 0x91, + 0x4e, 0x76, 0xc9, 0x02, 0x64, 0x3e, 0xb6, 0x74, 0x37, 0xd2, 0x39, 0xdf, 0x5a, 0xbf, 0x1b, 0xe9, + 0xcc, 0x3b, 0x6d, 0x6d, 0xf0, 0x58, 0x4f, 0x6a, 0xf8, 0x30, 0x1b, 0x08, 0x49, 0xbb, 0x73, 0x2b, + 0x73, 0x3c, 0xa2, 0x4f, 0x75, 0xea, 0xa3, 0x71, 0xed, 0xcc, 0x78, 0x6a, 0x82, 0xea, 0x35, 0x65, + 0x7f, 0xbb, 0x04, 0x2d, 0xdd, 0xd1, 0x40, 0x0e, 0x6b, 0xba, 0xb8, 0x79, 0x35, 0x09, 0xa2, 0x8f, + 0xe6, 0x6a, 0x12, 0x3f, 0x07, 0xef, 0x19, 0xd0, 0x9c, 0xcc, 0x10, 0x3e, 0xd4, 0xe5, 0x9d, 0x84, + 0x46, 0x4a, 0xc6, 0x22, 0xc9, 0xf8, 0x59, 0x88, 0x92, 0x65, 0x43, 0x06, 0x87, 0xb5, 0x5c, 0x2d, + 0xe3, 0x3c, 0x97, 0x75, 0x49, 0x1b, 0x14, 0xe2, 0xdf, 0xaa, 0xd2, 0xfe, 0xac, 0x4b, 0xda, 0x4d, + 0x40, 0x8f, 0x36, 0x68, 0x81, 0xc2, 0xc1, 0xf3, 0x9a, 0x54, 0x01, 0xd0, 0x20, 0xcb, 0x5c, 0x22, + 0xaa, 0x9f, 0xbc, 0x93, 0xfc, 0x7a, 0x16, 0xdc, 0x3b, 0xb4, 0xd1, 0x71, 0x4f, 0x8b, 0xef, 0x6e, + 0xa4, 0xb3, 0xc1, 0xed, 0x6e, 0x80, 0xfb, 0xac, 0xe0, 0x05, 0x9b, 0x75, 0xcf, 0x7b, 0x88, 0x43, + 0xab, 0xbd, 0xca, 0x5e, 0x77, 0x7b, 0x4b, 0x38, 0xeb, 0x2c, 0x6f, 0x11, 0xa9, 0x29, 0xb9, 0x1d, + 0x92, 0x1f, 0x43, 0x7c, 0xc3, 0xf4, 0xbd, 0x4c, 0xc6, 0x8e, 0xb0, 0x8e, 0x1f, 0xf7, 0x57, 0x91, + 0xfc, 0x54, 0xf9, 0xd3, 0x1c, 0x5a, 0x06, 0x46, 0x59, 0xe3, 0xd4, 0x3d, 0x47, 0x91, 0x87, 0x11, + 0x5e, 0x27, 0x03, 0x16, 0x28, 0xf2, 0xa4, 0xa2, 0x46, 0x46, 0x71, 0x2b, 0x1b, 0xae, 0x10, 0xab, + 0xa0, 0xc4, 0xa3, 0x80, 0x75, 0x29, 0x9d, 0x4b, 0x44, 0x9b, 0x95, 0x83, 0xfa, 0x69, 0xdb, 0x85, + 0x78, 0xa2, 0x87, 0x87, 0xf4, 0xd3, 0x53, 0xc9, 0xd8, 0x84, 0x7e, 0xb2, 0x37, 0x3d, 0x75, 0x53, + 0x3f, 0x3d, 0x28, 0x1b, 0x54, 0xd7, 0x6c, 0x42, 0xcb, 0xd9, 0x32, 0x1f, 0xc8, 0xe6, 0x43, 0x2f, + 0x2d, 0xd2, 0xd9, 0x29, 0xfe, 0xc2, 0x66, 0x77, 0x84, 0x91, 0x25, 0x2b, 0x37, 0x35, 0xd2, 0x0d, + 0x73, 0x2a, 0xcb, 0xad, 0x1b, 0xd6, 0xef, 0x8e, 0x06, 0x58, 0xe5, 0xf4, 0x2e, 0x3f, 0x09, 0x81, + 0x51, 0xf6, 0x2f, 0x97, 0xa2, 0x65, 0xd4, 0x18, 0xca, 0x57, 0xa3, 0x42, 0x30, 0xfb, 0x9a, 0xb1, + 0x08, 0xc8, 0xfd, 0x7a, 0x13, 0x28, 0x3e, 0x96, 0xee, 0xf9, 0x3a, 0x3d, 0x39, 0x65, 0x5a, 0x33, + 0x8d, 0x04, 0xd9, 0x44, 0xe1, 0x37, 0xa3, 0x22, 0xf8, 0xbd, 0x55, 0x39, 0x48, 0xcd, 0x90, 0x70, + 0x23, 0xdc, 0x84, 0x8a, 0xa5, 0x79, 0xa9, 0x6c, 0x55, 0x0e, 0xca, 0x16, 0x12, 0xbf, 0x35, 0xbf, + 0xe1, 0x19, 0xe2, 0x6f, 0x65, 0x25, 0x89, 0x2b, 0xa4, 0xdf, 0xb6, 0x07, 0x15, 0x47, 0x7a, 0xf2, + 0xe3, 0xcc, 0xe9, 0x1e, 0x57, 0x4d, 0x8e, 0x75, 0xfa, 0xb5, 0x6c, 0xeb, 0x74, 0xf5, 0x53, 0xaa, + 0xb4, 0x46, 0x30, 0x81, 0x06, 0x81, 0xd4, 0xd5, 0x0b, 0x7a, 0xdf, 0x6d, 0xdc, 0x1e, 0xd3, 0x78, + 0xfd, 0xfe, 0xbc, 0xc6, 0xeb, 0xea, 0x2a, 0x55, 0x12, 0x84, 0xdc, 0x54, 0x71, 0x35, 0xad, 0x0d, + 0x31, 0xc0, 0x63, 0x96, 0x05, 0xbe, 0xe7, 0x79, 0x6c, 0xdd, 0x5b, 0xb3, 0x6d, 0xdd, 0x34, 0x14, + 0xaf, 0x01, 0x14, 0x1d, 0x40, 0x8a, 0x5e, 0x74, 0x74, 0xd4, 0x07, 0x7d, 0x7e, 0x8f, 0xaf, 0xcd, + 0xdd, 0xe2, 0x70, 0x52, 0x0c, 0xc6, 0x38, 0xfe, 0x7e, 0x3e, 0xe3, 0x38, 0x0d, 0xe9, 0xc0, 0x26, + 0x88, 0x3f, 0x5a, 0x98, 0x28, 0x60, 0x65, 0x59, 0xd5, 0x3b, 0xb9, 0x85, 0xcc, 0xea, 0x70, 0x07, + 0x39, 0x2f, 0x82, 0x28, 0x6e, 0x21, 0x61, 0x9d, 0x1d, 0xc4, 0x75, 0xdb, 0x41, 0x51, 0x1c, 0x6e, + 0xc0, 0x49, 0x8d, 0x74, 0x7f, 0x18, 0x0a, 0xf8, 0xcd, 0x65, 0x94, 0xba, 0x7a, 0x3a, 0xa3, 0x5e, + 0x9e, 0xc7, 0x4a, 0xbf, 0x2d, 0x9f, 0x95, 0x1e, 0x66, 0x97, 0x2d, 0x41, 0x5c, 0x6d, 0x2b, 0xd2, + 0x8c, 0xf2, 0x6b, 0xb7, 0xe7, 0x53, 0x3b, 0xaa, 0x31, 0xf9, 0xc5, 0xcd, 0x74, 0xa9, 0x90, 0xbb, + 0xe0, 0xcc, 0x7d, 0x3c, 0xac, 0x65, 0x93, 0x69, 0x6a, 0xae, 0x29, 0x26, 0x11, 0x22, 0x49, 0x6b, + 0x3d, 0x09, 0x6d, 0xf2, 0x8e, 0x76, 0xa9, 0x3b, 0x35, 0x7c, 0xb8, 0xec, 0xe4, 0x32, 0xb4, 0xdc, + 0xc9, 0x44, 0xac, 0xe1, 0x77, 0xa2, 0x65, 0x04, 0xd7, 0x5c, 0x54, 0xc4, 0x49, 0xca, 0x80, 0x89, + 0x55, 0xd5, 0xce, 0x06, 0x88, 0xb3, 0x69, 0x1a, 0xa2, 0xcc, 0x50, 0xcb, 0x73, 0x89, 0x68, 0xfa, + 0xe8, 0x0d, 0xfd, 0x64, 0xaf, 0xd9, 0x41, 0xb2, 0x91, 0x8f, 0x6f, 0x62, 0xcf, 0x2a, 0x61, 0xa1, + 0x11, 0xe9, 0x8e, 0x09, 0x79, 0xfc, 0x1a, 0x5b, 0x0f, 0x33, 0x88, 0x02, 0xf4, 0x87, 0xd5, 0x9a, + 0xaf, 0x67, 0x93, 0xf1, 0x41, 0xfd, 0xc2, 0xe5, 0xf4, 0xd4, 0xc7, 0x9a, 0x1a, 0x4d, 0xcf, 0xf6, + 0xea, 0xd3, 0x97, 0xd8, 0x63, 0x4f, 0x37, 0x2a, 0x72, 0x9b, 0x61, 0x85, 0x16, 0x59, 0xb1, 0x16, + 0x2c, 0xa8, 0xf8, 0xa2, 0xd9, 0x06, 0x70, 0x09, 0x30, 0xfb, 0xcc, 0x55, 0x53, 0xe9, 0x30, 0xa3, + 0x6d, 0x97, 0x57, 0x3b, 0x1b, 0xaa, 0x48, 0x95, 0xaa, 0x5c, 0x35, 0x15, 0xb2, 0x95, 0x9f, 0xaf, + 0x45, 0xc5, 0xf4, 0x83, 0xb9, 0xde, 0x41, 0x56, 0x3a, 0x0b, 0x17, 0x1f, 0x62, 0xc2, 0x08, 0x19, + 0x17, 0x3a, 0x98, 0x74, 0xfe, 0x65, 0xaa, 0x5d, 0xc2, 0xf2, 0x24, 0x41, 0x3b, 0x09, 0x40, 0x7c, + 0x8c, 0xc9, 0x08, 0x11, 0xb4, 0xa8, 0x13, 0x0c, 0x49, 0xe6, 0x77, 0xa0, 0x65, 0x94, 0x0c, 0x95, + 0xe9, 0x1f, 0xcb, 0x95, 0xf1, 0x48, 0x32, 0xc4, 0x27, 0x01, 0x9a, 0x6c, 0x65, 0x28, 0x35, 0x83, + 0x0a, 0xbf, 0x03, 0x2d, 0x05, 0x27, 0x5a, 0xea, 0xd1, 0x4b, 0x16, 0x21, 0x05, 0x89, 0x02, 0x5b, + 0x19, 0xc6, 0x67, 0xb8, 0xd2, 0xbc, 0x05, 0x09, 0xdf, 0xa9, 0x91, 0x6e, 0x99, 0xe6, 0xe1, 0x5f, + 0xb1, 0xc2, 0x09, 0x17, 0x5a, 0xfc, 0xcb, 0x0c, 0x27, 0xbc, 0x72, 0xde, 0x40, 0xc2, 0xaf, 0x58, + 0xf1, 0x0b, 0x8b, 0x98, 0x8c, 0x46, 0xfc, 0xc2, 0x95, 0xf3, 0x46, 0x2e, 0xdc, 0x84, 0x8a, 0x08, + 0x0d, 0xeb, 0xe8, 0x1f, 0x1a, 0x6f, 0x41, 0xc5, 0xe5, 0xa6, 0x5a, 0x9d, 0x39, 0x75, 0x53, 0xb6, + 0x12, 0xf8, 0x37, 0x6c, 0xe7, 0x9d, 0xc5, 0x56, 0xb9, 0x0c, 0x58, 0x5c, 0x0e, 0x85, 0xd2, 0xdc, + 0x4c, 0xca, 0xa6, 0x9d, 0xaa, 0x24, 0xa3, 0x7a, 0xc1, 0xb6, 0x8a, 0xc4, 0x37, 0xe9, 0xad, 0x7c, + 0x72, 0x35, 0x69, 0xfe, 0xe5, 0x59, 0x9e, 0x9c, 0xee, 0xc1, 0x98, 0x33, 0xa3, 0x80, 0xa9, 0xa9, + 0x51, 0x70, 0x2b, 0xab, 0x28, 0x4b, 0x2e, 0x41, 0x8f, 0x3b, 0xa9, 0x21, 0xd5, 0x22, 0x2c, 0x2b, + 0xbf, 0x69, 0x57, 0x42, 0x61, 0xfe, 0xed, 0xec, 0x55, 0xfa, 0x0a, 0x6e, 0xad, 0xb9, 0x4a, 0x21, + 0x08, 0x95, 0xb9, 0x30, 0xbf, 0xa9, 0x2e, 0x0d, 0x3e, 0xba, 0xaa, 0xa0, 0x34, 0x52, 0x28, 0xae, + 0xfc, 0xf5, 0xfb, 0x1b, 0xaa, 0x5e, 0x73, 0x57, 0xfd, 0x56, 0xaa, 0x7a, 0xaf, 0xea, 0x83, 0x17, + 0x7e, 0x64, 0xad, 0xd0, 0x6d, 0xf6, 0x59, 0x5d, 0x60, 0xdc, 0x61, 0xb8, 0xe7, 0xac, 0xfe, 0xa6, + 0x7a, 0x71, 0xb0, 0x60, 0x15, 0x97, 0x7f, 0x72, 0x2f, 0x7a, 0xc0, 0xc9, 0xfd, 0x07, 0x6b, 0x72, + 0x2f, 0x5e, 0x78, 0x72, 0x6f, 0x53, 0x25, 0x97, 0x60, 0x20, 0x8b, 0x3f, 0x33, 0x5a, 0xcc, 0x76, + 0x2f, 0x7b, 0x51, 0x19, 0xe4, 0x31, 0x7d, 0xb4, 0x5f, 0x3f, 0xd1, 0xa7, 0x47, 0xae, 0x6a, 0x43, + 0x47, 0x58, 0x3e, 0x68, 0x2d, 0x86, 0x0f, 0xcd, 0xc5, 0x00, 0x1a, 0xff, 0x9a, 0x75, 0x10, 0xe8, + 0x7f, 0x9d, 0x11, 0xe8, 0x7f, 0x5d, 0x75, 0x20, 0xd0, 0xb2, 0x0b, 0x0b, 0x3b, 0x34, 0xce, 0x0a, + 0x5d, 0x28, 0x15, 0xf6, 0x1a, 0xb0, 0xde, 0xea, 0x96, 0x1b, 0x27, 0xf9, 0x34, 0xd7, 0xc9, 0x66, + 0x6b, 0x9d, 0x2c, 0x35, 0x6e, 0x07, 0x3f, 0x6d, 0xad, 0x93, 0x47, 0xd8, 0xae, 0x36, 0x16, 0xcb, + 0x37, 0xd5, 0xcb, 0x82, 0x4b, 0xc8, 0x58, 0x5a, 0xcb, 0x66, 0x57, 0x6e, 0x3c, 0xf9, 0x57, 0x49, + 0xa8, 0x3a, 0x8b, 0xb9, 0x3e, 0x73, 0x4f, 0xe6, 0x0a, 0xc3, 0x58, 0xc0, 0xf0, 0xd2, 0x4d, 0x6e, + 0x55, 0xfa, 0x35, 0xfa, 0x95, 0x30, 0xff, 0x3c, 0x14, 0x1f, 0x86, 0x78, 0x6f, 0xa4, 0xa2, 0xc6, + 0x2e, 0xf9, 0x47, 0xce, 0x98, 0x53, 0x7f, 0xe4, 0xd8, 0x39, 0xf1, 0x47, 0x6e, 0x19, 0x83, 0x01, + 0x55, 0x2f, 0x3b, 0x5c, 0x80, 0xd6, 0xe4, 0x23, 0x1f, 0x6a, 0x0b, 0xf8, 0x43, 0x0a, 0xbf, 0x0e, + 0x2d, 0xf6, 0x04, 0xbc, 0x0a, 0xbd, 0x10, 0xba, 0x46, 0x95, 0x1e, 0x13, 0x08, 0x40, 0x5c, 0x99, + 0x9e, 0x3d, 0xae, 0x9d, 0x3d, 0x9f, 0x39, 0x7e, 0x26, 0x3d, 0x35, 0x95, 0xba, 0xd8, 0x29, 0x13, + 0x30, 0xbf, 0xc9, 0xf2, 0x41, 0x28, 0xb0, 0x62, 0x9e, 0x98, 0xd1, 0xd6, 0x78, 0x36, 0x97, 0xc1, + 0x06, 0x8d, 0xa8, 0x6a, 0x1b, 0xd1, 0xd2, 0xa0, 0x12, 0x6a, 0x6f, 0x81, 0x9b, 0x9d, 0x85, 0x34, + 0x6e, 0x3a, 0x80, 0xc4, 0xe5, 0x90, 0x33, 0x35, 0xfd, 0x91, 0x7e, 0x7e, 0x54, 0xa6, 0x50, 0xde, + 0x85, 0x16, 0x7b, 0xdd, 0xd4, 0xff, 0x22, 0x4f, 0x1c, 0x03, 0xb6, 0x49, 0xd5, 0x8f, 0xa9, 0xd2, + 0x23, 0x02, 0x41, 0x37, 0x88, 0xd1, 0x10, 0x26, 0x04, 0x56, 0xf6, 0x2f, 0x96, 0xa2, 0xc7, 0x77, + 0x12, 0xae, 0x92, 0x6f, 0xbd, 0xff, 0x3a, 0x7b, 0xbd, 0xd7, 0xa8, 0xd2, 0x73, 0xd6, 0x7a, 0x7f, + 0x62, 0x81, 0x3d, 0xf8, 0xbe, 0x16, 0xff, 0xbb, 0xec, 0xae, 0x69, 0x3a, 0x47, 0x3f, 0xc5, 0xee, + 0x9a, 0xab, 0xec, 0xf3, 0xdb, 0x55, 0xb3, 0x10, 0xe1, 0xf9, 0x77, 0xcb, 0x45, 0xdf, 0x71, 0xb7, + 0x5c, 0xfc, 0x80, 0x0c, 0xe5, 0xcf, 0xb9, 0x9e, 0x77, 0xb0, 0xeb, 0x70, 0xa9, 0x75, 0xeb, 0xf3, + 0x81, 0xd6, 0x21, 0x2b, 0xcc, 0xbc, 0x6e, 0xed, 0x87, 0xb0, 0xac, 0x9f, 0xc1, 0x93, 0xc8, 0xdc, + 0x0f, 0x8b, 0xcc, 0x9d, 0x90, 0xe5, 0x0a, 0xc6, 0x9e, 0xf8, 0xbe, 0xc5, 0x4a, 0x0b, 0x17, 0x66, + 0xa5, 0x44, 0x28, 0x35, 0x59, 0xe9, 0x1a, 0x90, 0x15, 0x09, 0xe9, 0x2c, 0x86, 0x6a, 0xb2, 0xc9, + 0x4d, 0xe7, 0x38, 0x55, 0x3a, 0xc3, 0xa1, 0x93, 0x9c, 0x30, 0xff, 0xac, 0x15, 0xdf, 0x05, 0x22, + 0xcc, 0x00, 0xa5, 0xa7, 0x6e, 0x43, 0x50, 0x66, 0xd3, 0xef, 0x00, 0xa3, 0x1c, 0xbf, 0x93, 0x25, + 0xb3, 0x66, 0x4e, 0x7f, 0xa1, 0x4f, 0x7c, 0xac, 0x4d, 0xdd, 0xd1, 0x26, 0x4e, 0x67, 0x7a, 0x87, + 0x8c, 0x17, 0x3e, 0xae, 0xa6, 0x8e, 0x5f, 0xd0, 0x66, 0x6e, 0x68, 0x1f, 0x0d, 0xb0, 0x3c, 0xc6, + 0x9a, 0x6b, 0x7f, 0xe4, 0x8c, 0xc6, 0x97, 0x4d, 0x73, 0x68, 0x4d, 0xbe, 0x8a, 0xfd, 0x20, 0xf8, + 0x4a, 0xd9, 0xbf, 0x5a, 0x8c, 0xd6, 0x6c, 0xf7, 0x35, 0x05, 0xff, 0x42, 0xdc, 0x60, 0x2f, 0x42, + 0x66, 0x9f, 0x86, 0xd8, 0xab, 0x3b, 0xeb, 0x2d, 0x70, 0x26, 0x32, 0x92, 0x9e, 0xed, 0xad, 0xcc, + 0x8c, 0x1c, 0xd7, 0x12, 0x11, 0xb8, 0x31, 0x09, 0x86, 0x29, 0xf0, 0x94, 0x87, 0x01, 0xcd, 0x65, + 0x1a, 0x32, 0x43, 0x99, 0xbf, 0xcd, 0xa1, 0x65, 0x8a, 0xdf, 0x13, 0x3c, 0xd8, 0x16, 0xa6, 0x47, + 0x15, 0x39, 0x07, 0x58, 0x3b, 0x82, 0xbe, 0x26, 0x9f, 0xbf, 0x16, 0x90, 0x20, 0x92, 0xe9, 0x2f, + 0x69, 0x16, 0x6d, 0xf0, 0x82, 0x76, 0x95, 0xdc, 0xd0, 0x3f, 0x72, 0x51, 0x9b, 0x3a, 0xac, 0x9f, + 0xbc, 0xa3, 0x25, 0x86, 0xd2, 0x33, 0xd7, 0xf4, 0x81, 0x8f, 0x93, 0xb1, 0x78, 0x7a, 0xea, 0x32, + 0xc4, 0x06, 0xc9, 0x42, 0x80, 0xe7, 0x61, 0x52, 0x9f, 0xc6, 0xe1, 0xd6, 0x84, 0x7e, 0x7a, 0x90, + 0x74, 0x0f, 0x56, 0xa3, 0xc4, 0xa7, 0x6d, 0x94, 0x73, 0xc9, 0xca, 0x46, 0x6d, 0xf9, 0x4d, 0x68, + 0x91, 0xbb, 0xa5, 0x85, 0x3a, 0xe8, 0x40, 0xc8, 0x03, 0x77, 0x4b, 0x8b, 0xb8, 0xd6, 0xdd, 0xd2, + 0x42, 0xdd, 0x0a, 0xfa, 0x23, 0xfa, 0x68, 0xbf, 0x29, 0xee, 0xa5, 0x67, 0x3b, 0x53, 0x57, 0xa7, + 0x65, 0x8c, 0xb4, 0x29, 0xac, 0x4a, 0xbf, 0x41, 0x01, 0x61, 0x81, 0x01, 0x16, 0xb7, 0x00, 0x7e, + 0xfe, 0x85, 0x63, 0x85, 0x63, 0x85, 0x06, 0xc2, 0x1a, 0x01, 0x34, 0xb3, 0xb1, 0x40, 0xc0, 0x5a, + 0x26, 0x65, 0x6f, 0xa3, 0x12, 0x5b, 0x5f, 0xf2, 0x0e, 0x54, 0x4c, 0x5b, 0x43, 0xac, 0x75, 0x60, + 0xd9, 0x61, 0x41, 0xfc, 0x0a, 0x54, 0xd0, 0xdc, 0x41, 0xcd, 0x3b, 0x05, 0xcd, 0x1d, 0xf8, 0xdb, + 0xd7, 0x41, 0x3d, 0xea, 0x0a, 0x7c, 0x1d, 0x65, 0x09, 0x0e, 0x3d, 0x91, 0xb7, 0x11, 0x3f, 0x8c, + 0x45, 0xf6, 0x8f, 0x0b, 0xd0, 0xe3, 0x35, 0xd4, 0x59, 0xe0, 0xcf, 0xbf, 0xc6, 0xde, 0xcb, 0xdd, + 0x71, 0x7f, 0xaa, 0x4a, 0x6b, 0xd9, 0x1d, 0xd7, 0xdc, 0x12, 0x4d, 0x37, 0xbd, 0xfb, 0xdb, 0x72, + 0x37, 0x35, 0xab, 0xd2, 0x3e, 0xb4, 0x57, 0x98, 0xbf, 0x75, 0xe2, 0x2b, 0x60, 0x98, 0x66, 0x0a, + 0x80, 0x09, 0x56, 0xe9, 0x48, 0x1f, 0xbd, 0x0c, 0xb6, 0x70, 0xc3, 0xbb, 0x81, 0xf2, 0x69, 0xc8, + 0xc0, 0xf2, 0x5d, 0x78, 0xcc, 0x88, 0x70, 0xda, 0x7c, 0x05, 0xfd, 0x30, 0x26, 0xc1, 0x3f, 0x5f, + 0x84, 0x9e, 0xd8, 0xe6, 0x0b, 0x85, 0xd9, 0xba, 0xd7, 0x2b, 0xc1, 0x56, 0x63, 0x1a, 0x74, 0xb0, + 0x5b, 0x3a, 0x4c, 0x04, 0x12, 0x29, 0x8a, 0xd9, 0xd2, 0xdf, 0xba, 0x1f, 0xbb, 0x05, 0x2c, 0x58, + 0xb0, 0x5b, 0x00, 0x0e, 0x7d, 0x94, 0x09, 0x02, 0x00, 0x40, 0xec, 0x60, 0x66, 0xe7, 0x7f, 0xc3, + 0x3e, 0x3d, 0x16, 0x19, 0x81, 0x26, 0x99, 0xe9, 0xb1, 0xd2, 0x0a, 0x3d, 0x0c, 0x9e, 0x3f, 0x8c, + 0xd0, 0xf5, 0x76, 0x3e, 0xa1, 0x8b, 0x58, 0xeb, 0x6c, 0x42, 0xd7, 0x53, 0xd4, 0x90, 0x42, 0x8e, + 0x42, 0x6c, 0xdc, 0xe6, 0x8a, 0x7e, 0xa8, 0xc7, 0x26, 0x80, 0x6d, 0x1a, 0xe3, 0x54, 0xe9, 0x1c, + 0x87, 0x46, 0x38, 0x61, 0xa1, 0x0e, 0x13, 0x7f, 0x07, 0x24, 0xcd, 0xba, 0x99, 0x8c, 0x0b, 0x6e, + 0x66, 0x68, 0x63, 0x9f, 0x6b, 0x87, 0xcf, 0x24, 0xe3, 0x87, 0x53, 0x67, 0x27, 0xf5, 0x8b, 0x78, + 0xcd, 0xe8, 0x93, 0x5f, 0xe1, 0xd4, 0xbe, 0x33, 0xc4, 0xf6, 0xd8, 0x07, 0x70, 0xaa, 0xe8, 0x13, + 0x52, 0x56, 0xde, 0x9e, 0x71, 0x60, 0xdd, 0x5a, 0xdf, 0x99, 0x64, 0x2c, 0x6e, 0xd4, 0x9d, 0x78, + 0xac, 0x82, 0x63, 0xb6, 0x5e, 0x80, 0x9e, 0xcc, 0x5f, 0xb9, 0x1f, 0x86, 0x3e, 0x51, 0x67, 0xea, + 0x13, 0x8b, 0xee, 0xa9, 0x4f, 0x50, 0xe3, 0x0e, 0xd6, 0x27, 0x6c, 0xb2, 0x33, 0xcc, 0x05, 0x92, + 0xb0, 0xe9, 0x1d, 0x55, 0x6a, 0x44, 0xb2, 0xb0, 0x60, 0x9f, 0x88, 0xcf, 0x64, 0x8d, 0x98, 0x7e, + 0xee, 0x50, 0xe6, 0xcc, 0x30, 0x28, 0x27, 0x50, 0xcb, 0x3f, 0x72, 0xa4, 0x37, 0xfe, 0xc8, 0x19, + 0x6d, 0x2b, 0x1b, 0x5a, 0x8c, 0x1e, 0xcb, 0x26, 0x6a, 0x2c, 0x99, 0xad, 0xd9, 0x9c, 0x73, 0xe3, + 0x03, 0x70, 0xce, 0x25, 0xc1, 0x45, 0xa0, 0xda, 0x52, 0x36, 0x59, 0x9b, 0xcb, 0x26, 0x49, 0x9c, + 0x1a, 0x66, 0x1d, 0x3c, 0x36, 0xcf, 0x24, 0x66, 0xd7, 0x43, 0x47, 0xce, 0x55, 0x89, 0x3f, 0xcf, + 0x32, 0x7e, 0x0b, 0x15, 0x06, 0xda, 0x94, 0x20, 0x51, 0xf1, 0x17, 0x5b, 0x01, 0xc0, 0x4c, 0xa0, + 0xf8, 0x94, 0xf1, 0x2b, 0xab, 0xfb, 0xe9, 0x30, 0x9a, 0x88, 0x8c, 0xc0, 0x3d, 0x5f, 0xc7, 0xff, + 0x65, 0x97, 0xde, 0x7f, 0x2b, 0x40, 0x8f, 0xef, 0x52, 0x82, 0xbe, 0xbd, 0x07, 0xff, 0x4c, 0xf6, + 0xaa, 0x97, 0x59, 0xe7, 0x9c, 0x6f, 0x67, 0x61, 0x5a, 0xf4, 0x97, 0xb0, 0x30, 0x6d, 0x92, 0x55, + 0x69, 0x07, 0xda, 0x2e, 0xcc, 0xdf, 0x5b, 0xe2, 0x93, 0xe0, 0x04, 0x66, 0xb3, 0xaa, 0xd0, 0x33, + 0xd3, 0xc8, 0x55, 0x76, 0x0b, 0x36, 0x68, 0x92, 0x4d, 0x38, 0x1f, 0xbd, 0x1f, 0xc6, 0x26, 0xbc, + 0x17, 0xad, 0x62, 0xab, 0x4d, 0xce, 0xb4, 0x5f, 0xb6, 0x86, 0x89, 0xbb, 0xb7, 0x75, 0xc5, 0xb2, + 0xdf, 0x91, 0x0b, 0x19, 0x04, 0x8f, 0xba, 0x64, 0xcb, 0xe6, 0x77, 0xd9, 0xbf, 0x5f, 0x84, 0x4a, + 0x73, 0x17, 0xcf, 0x0f, 0x63, 0x6b, 0x90, 0x6d, 0x5b, 0x83, 0x63, 0xa1, 0xce, 0x20, 0x17, 0x15, + 0xef, 0x63, 0x7b, 0xe0, 0x0f, 0x71, 0x68, 0xe5, 0x7e, 0x65, 0xcf, 0x6e, 0xe6, 0xd9, 0x53, 0x6a, + 0x25, 0xc9, 0x79, 0xfc, 0xeb, 0x1d, 0x65, 0x8f, 0x64, 0x61, 0x81, 0x83, 0x72, 0x76, 0x5e, 0xf1, + 0x47, 0x70, 0x0e, 0x9e, 0xcb, 0x18, 0x59, 0xce, 0x26, 0xaf, 0xd8, 0x6f, 0xa3, 0xb5, 0x69, 0x8b, + 0x2a, 0xd5, 0xa0, 0x6a, 0x61, 0xde, 0x91, 0x11, 0x57, 0x67, 0xf3, 0xb5, 0x79, 0x36, 0xa5, 0xd9, + 0x22, 0x54, 0x48, 0x08, 0xec, 0xaa, 0x77, 0x12, 0xdb, 0xaa, 0x8d, 0xe3, 0x80, 0xfb, 0xbb, 0xc1, + 0x71, 0xd6, 0x2e, 0xb0, 0x0b, 0xcd, 0x25, 0xa2, 0x16, 0x9b, 0xd9, 0x64, 0xde, 0xa2, 0x62, 0x18, + 0x8d, 0x11, 0xb8, 0x7b, 0x75, 0x47, 0x9b, 0x87, 0x8d, 0xda, 0x9d, 0xf5, 0x6a, 0xa8, 0x13, 0x21, + 0xf8, 0x95, 0x6d, 0xf9, 0x62, 0xc0, 0x22, 0x0f, 0xbf, 0x81, 0x00, 0xb5, 0x7c, 0x31, 0xe9, 0xfc, + 0x07, 0xf6, 0xf8, 0x35, 0x8b, 0x99, 0xc8, 0x05, 0x6c, 0xf4, 0x9a, 0x0a, 0xe6, 0xc3, 0x16, 0xc3, + 0x92, 0x3e, 0xba, 0xb4, 0xde, 0x78, 0x86, 0xa9, 0xc2, 0x1e, 0x3d, 0xa6, 0xca, 0x78, 0xd9, 0x14, + 0x8e, 0xa1, 0x88, 0x95, 0x92, 0xbe, 0x6c, 0x5a, 0x4c, 0xfe, 0xd0, 0x36, 0xd1, 0xa7, 0x4b, 0x37, + 0xa2, 0x65, 0x1d, 0x6d, 0x1e, 0xd2, 0x9e, 0xa5, 0x56, 0x06, 0x03, 0x26, 0x16, 0x75, 0xb4, 0x79, + 0x68, 0x1b, 0x0c, 0x18, 0xff, 0x01, 0x2a, 0x32, 0x9d, 0x45, 0xa8, 0x19, 0x8b, 0x38, 0xa2, 0x5a, + 0x50, 0x71, 0x7d, 0x7a, 0xea, 0x32, 0xee, 0x4a, 0x1a, 0x00, 0x01, 0x73, 0x3a, 0x08, 0x3d, 0x42, + 0x7e, 0xce, 0x25, 0xa2, 0x24, 0xba, 0x08, 0x89, 0x70, 0x80, 0x01, 0x15, 0xb2, 0x95, 0x97, 0x7f, + 0x05, 0x2d, 0x21, 0xf7, 0xe9, 0xe9, 0x51, 0xd3, 0x33, 0x58, 0x89, 0x02, 0x08, 0x0c, 0x0f, 0xd9, + 0x01, 0xe0, 0x45, 0x0c, 0xa3, 0x29, 0x24, 0x95, 0x3d, 0xa5, 0x2a, 0xfa, 0xb6, 0xa7, 0x54, 0xe8, + 0xdb, 0x9f, 0x52, 0x15, 0x7f, 0x97, 0x53, 0xaa, 0xe5, 0x0f, 0x78, 0x4a, 0xc5, 0xbf, 0x4f, 0xae, + 0x0c, 0x2a, 0xc1, 0x0e, 0xc5, 0xeb, 0xaa, 0xaf, 0x6b, 0x6f, 0x25, 0xe1, 0x48, 0x4b, 0xe0, 0x2e, + 0xb7, 0x3d, 0x45, 0x7c, 0xa6, 0xa3, 0xcd, 0x03, 0xcf, 0x3f, 0xba, 0xea, 0x21, 0x7c, 0xb1, 0xf9, + 0xc8, 0xca, 0x00, 0xc0, 0x65, 0x7b, 0x0e, 0xfe, 0x5d, 0xdb, 0x55, 0x53, 0x26, 0x20, 0x29, 0xfb, + 0x0a, 0x6d, 0xb9, 0xf5, 0xec, 0x6c, 0x72, 0x66, 0x34, 0x75, 0x7c, 0x1c, 0x68, 0xc1, 0x4b, 0x2c, + 0xe6, 0xcb, 0xb3, 0x1d, 0x6d, 0x1e, 0xdb, 0x2d, 0x55, 0x19, 0x19, 0xaf, 0x86, 0x91, 0x60, 0xa4, + 0x79, 0x9e, 0xc9, 0x70, 0xfa, 0xbc, 0x41, 0x58, 0x95, 0x06, 0xa6, 0xf8, 0x08, 0xfd, 0xe1, 0xaa, + 0x77, 0x38, 0x5d, 0x35, 0x32, 0xf8, 0x33, 0x9b, 0xcf, 0x8f, 0xf1, 0xbb, 0x90, 0xf9, 0x26, 0x19, + 0x09, 0x35, 0x3a, 0x1f, 0x51, 0xf2, 0xb8, 0x91, 0x89, 0x2a, 0xae, 0x36, 0x7e, 0xd9, 0xc9, 0x9a, + 0x08, 0x9b, 0xde, 0x54, 0xa5, 0x37, 0xd0, 0xeb, 0x82, 0xc9, 0x83, 0xc4, 0xf5, 0xac, 0xe7, 0x0b, + 0x7d, 0x1e, 0xe7, 0x8e, 0x16, 0x3f, 0x0e, 0x42, 0x03, 0xac, 0x78, 0x78, 0x57, 0x90, 0x0a, 0x51, + 0x87, 0x38, 0xb4, 0x18, 0x17, 0xcd, 0xaf, 0x47, 0x4b, 0x3c, 0x3e, 0x6f, 0x30, 0x34, 0x5f, 0xe8, + 0x50, 0x27, 0x89, 0x74, 0xeb, 0x0e, 0x2b, 0x32, 0xe0, 0xd1, 0x2b, 0xa1, 0xcc, 0xf8, 0x62, 0x6e, + 0x55, 0x92, 0x3d, 0x50, 0x0c, 0x96, 0x93, 0x90, 0x27, 0x9e, 0x4f, 0xb2, 0x1d, 0x58, 0xf6, 0x13, + 0x54, 0x64, 0xd2, 0xe7, 0x79, 0xb4, 0x18, 0x97, 0x60, 0xf8, 0x45, 0xe3, 0xdf, 0xfc, 0x23, 0x68, + 0xc9, 0x9e, 0x96, 0x80, 0x07, 0x2e, 0xee, 0x15, 0xca, 0xf0, 0x51, 0xf6, 0x6f, 0x8b, 0xd0, 0x6a, + 0xe6, 0x28, 0x67, 0x57, 0xbd, 0xd3, 0x90, 0xfe, 0x3e, 0xc8, 0xe6, 0xc5, 0xce, 0x07, 0xd0, 0x08, + 0x1e, 0x0b, 0xae, 0x5e, 0x55, 0x50, 0xea, 0x5d, 0x40, 0x12, 0xcc, 0x7a, 0xb6, 0xae, 0xc0, 0x88, + 0x9b, 0xf9, 0xad, 0x39, 0xe4, 0x37, 0xd5, 0xab, 0x83, 0x0f, 0x5b, 0xcf, 0xd5, 0x59, 0x2f, 0xd8, + 0xd9, 0x38, 0x67, 0xa3, 0xb9, 0x33, 0x2c, 0x32, 0xcc, 0x37, 0xf7, 0xda, 0x19, 0x16, 0x68, 0x4d, + 0xfe, 0x3d, 0x63, 0xf1, 0xb7, 0xdb, 0x33, 0xb6, 0x5a, 0x5c, 0x7a, 0x89, 0xa1, 0x82, 0xe5, 0xe5, + 0xd2, 0x0b, 0x75, 0xaf, 0xc1, 0xbf, 0xb7, 0xd8, 0xdf, 0xbe, 0xde, 0x38, 0xcf, 0x0e, 0xb1, 0x00, + 0x29, 0xba, 0x77, 0x04, 0x72, 0x37, 0x82, 0xb7, 0xbf, 0xe3, 0x46, 0xf0, 0x4d, 0xf5, 0xca, 0x60, + 0x89, 0xbc, 0x18, 0xa3, 0xc8, 0x4b, 0x20, 0x20, 0xe0, 0xf7, 0xb1, 0x35, 0xbc, 0x99, 0xbd, 0x35, + 0x3c, 0xb7, 0xe0, 0xd6, 0xf0, 0x4d, 0xf5, 0xd2, 0xe0, 0x62, 0xdc, 0x74, 0x6b, 0x8f, 0xc8, 0xe1, + 0xb7, 0xe8, 0x4f, 0xc6, 0x6f, 0x8b, 0xff, 0x44, 0xfc, 0x76, 0xf9, 0x9f, 0x82, 0xdf, 0x96, 0x7c, + 0x8f, 0xfc, 0x76, 0xaf, 0x2a, 0x79, 0x90, 0x5b, 0xc8, 0xcf, 0x74, 0xc4, 0xd5, 0x30, 0x3c, 0xa0, + 0x44, 0x75, 0xb4, 0x79, 0x40, 0x1b, 0xb6, 0x1d, 0x4e, 0x33, 0xab, 0xf9, 0x8f, 0x1c, 0x5d, 0x80, + 0x7f, 0xe4, 0x8c, 0x89, 0x6f, 0x5a, 0x38, 0x6f, 0x73, 0xe8, 0xd1, 0xec, 0x32, 0x7e, 0x18, 0x8a, + 0x95, 0x56, 0x88, 0x56, 0x33, 0xa7, 0x60, 0x7f, 0x3e, 0x96, 0xfc, 0x41, 0x3e, 0x96, 0xfc, 0xfd, + 0x09, 0xad, 0x9b, 0xb2, 0x58, 0xef, 0xb7, 0x17, 0xca, 0xbf, 0x25, 0x83, 0xdd, 0x98, 0xcd, 0x60, + 0xef, 0x2d, 0x06, 0x7f, 0x6f, 0x6c, 0xf4, 0x37, 0xb9, 0x6c, 0xb4, 0xe1, 0x3b, 0xb3, 0xd1, 0x87, + 0x82, 0x2b, 0xe5, 0xbf, 0x9a, 0x97, 0x91, 0x6e, 0xb2, 0x24, 0xde, 0x42, 0x63, 0xda, 0xce, 0x73, + 0x0e, 0x6d, 0x72, 0x42, 0x43, 0xe8, 0x0d, 0x64, 0x73, 0xc2, 0x22, 0xaa, 0xce, 0x67, 0x9f, 0xc3, + 0xef, 0x74, 0xf9, 0xc3, 0x2f, 0x8a, 0x70, 0x12, 0x4f, 0x02, 0x5e, 0x65, 0xf1, 0xc9, 0xc7, 0xa0, + 0x94, 0x1c, 0x6e, 0x99, 0xcd, 0x1d, 0xf7, 0xe7, 0x70, 0xc7, 0x7c, 0xa5, 0x35, 0x84, 0x83, 0x3e, + 0x7f, 0x13, 0x94, 0xf6, 0xff, 0x43, 0xde, 0xb9, 0x4d, 0x95, 0x5c, 0x68, 0x8b, 0x90, 0x9f, 0x3b, + 0x88, 0xbc, 0x79, 0xfa, 0xbf, 0xab, 0xde, 0x99, 0xcb, 0x38, 0x61, 0x22, 0x32, 0xa7, 0xed, 0x47, + 0x0a, 0xd0, 0xa3, 0xd9, 0x94, 0x7e, 0x18, 0x66, 0x95, 0xb7, 0x6d, 0x1e, 0x3c, 0xa5, 0x79, 0xcd, + 0x2a, 0xbb, 0xea, 0x9d, 0xc0, 0x21, 0xc0, 0x9c, 0x52, 0x0a, 0x9d, 0xa3, 0x0d, 0x0f, 0x82, 0x71, + 0x63, 0x57, 0xbd, 0xd3, 0x34, 0x30, 0xba, 0xc3, 0xee, 0xb2, 0x43, 0x05, 0x68, 0x35, 0x73, 0x20, + 0xf6, 0xe7, 0x63, 0xba, 0x26, 0x87, 0x29, 0xf8, 0x6e, 0x1c, 0x66, 0x53, 0xb5, 0x2a, 0xfd, 0x1c, + 0xbd, 0x21, 0xe4, 0x6f, 0x85, 0xc8, 0xd3, 0x40, 0xb1, 0x0b, 0x4e, 0x0e, 0x32, 0x25, 0xb2, 0xf3, + 0xff, 0x7f, 0x77, 0x4a, 0x68, 0xb7, 0xbf, 0x80, 0x5e, 0xc9, 0x3f, 0x25, 0x6e, 0x2c, 0x46, 0x0f, + 0x9b, 0xe6, 0x2d, 0x66, 0x42, 0xfc, 0x22, 0x7b, 0x42, 0x6c, 0x78, 0x80, 0x09, 0xb1, 0x38, 0x58, + 0x50, 0xfa, 0xc8, 0xf7, 0x63, 0xa8, 0x32, 0x8d, 0x40, 0x8b, 0xee, 0xcb, 0x08, 0xd4, 0x9e, 0xcf, + 0x24, 0xf5, 0xa7, 0x57, 0xb8, 0x1a, 0x6c, 0x8c, 0x1d, 0xf6, 0x5d, 0xf2, 0xfc, 0x02, 0xcb, 0xba, + 0xcb, 0x2c, 0xd6, 0x0d, 0xce, 0xe1, 0xf0, 0x6d, 0xb2, 0xee, 0x2c, 0xa6, 0xbd, 0xe9, 0x24, 0xa7, + 0x4a, 0x2a, 0x87, 0x86, 0x38, 0x21, 0xdf, 0x08, 0x89, 0x07, 0x4c, 0xdb, 0xa3, 0x39, 0xd9, 0xff, + 0x4c, 0x07, 0x2a, 0xff, 0xac, 0x00, 0x3d, 0x62, 0xaf, 0xd1, 0x0f, 0x63, 0xf9, 0xec, 0xb8, 0x8f, + 0x33, 0x4c, 0xda, 0x1c, 0x30, 0x60, 0xc1, 0x12, 0xe2, 0xe1, 0x05, 0x02, 0xad, 0xef, 0x3a, 0x5e, + 0x42, 0xcc, 0xe2, 0x31, 0xcc, 0x2a, 0x79, 0x3b, 0x43, 0xe4, 0x6d, 0xe3, 0x33, 0x8f, 0x61, 0xb8, + 0xb3, 0x90, 0x5e, 0x72, 0xa0, 0x39, 0xff, 0xde, 0x38, 0xfc, 0xf7, 0xc6, 0xe1, 0x7b, 0x58, 0x00, + 0xde, 0xcf, 0x27, 0xb5, 0x7e, 0x5f, 0xfa, 0xfb, 0x3b, 0x68, 0x85, 0x59, 0x45, 0xd6, 0x3a, 0x40, + 0x1c, 0x34, 0xb2, 0x92, 0xc4, 0x35, 0xda, 0xcc, 0x47, 0x5a, 0xff, 0x00, 0xee, 0xbb, 0xa1, 0x29, + 0xe3, 0xfd, 0x26, 0x2a, 0xf9, 0x66, 0xe1, 0xf2, 0xbf, 0xb2, 0x24, 0xd0, 0xe2, 0xfc, 0xe7, 0x38, + 0x58, 0x58, 0xac, 0x51, 0xc2, 0x6e, 0x5f, 0x0b, 0x39, 0x25, 0x7a, 0x20, 0x59, 0xf4, 0x1f, 0x30, + 0xb2, 0xe8, 0xf2, 0xfb, 0x22, 0xff, 0x80, 0x52, 0x69, 0x96, 0x61, 0xa3, 0xe4, 0x7b, 0x34, 0x6c, + 0x94, 0x0d, 0x71, 0x68, 0x85, 0xbd, 0x76, 0x7f, 0x2a, 0x23, 0xeb, 0x73, 0x39, 0xa3, 0x4b, 0x62, + 0x41, 0x67, 0x0f, 0x56, 0xd9, 0x18, 0xc7, 0xf8, 0x50, 0xd0, 0xcb, 0x96, 0x7f, 0x02, 0xc1, 0x60, + 0xd3, 0x26, 0x55, 0x7a, 0x05, 0xfd, 0x44, 0x98, 0xaf, 0x2c, 0x71, 0x0d, 0xb0, 0x50, 0xe3, 0x7e, + 0x8a, 0x36, 0x7a, 0xdd, 0x64, 0x56, 0x65, 0xff, 0xae, 0x80, 0x39, 0x31, 0x35, 0xf3, 0xfd, 0x10, + 0x9d, 0x69, 0x9e, 0xc8, 0xbb, 0x11, 0x41, 0x93, 0xee, 0x6f, 0x1f, 0xda, 0xa1, 0x4a, 0xdb, 0xd0, + 0x2f, 0x84, 0x79, 0xfb, 0xc3, 0xf0, 0xa6, 0x02, 0x43, 0x3f, 0xd3, 0x8b, 0xf3, 0x6d, 0x4b, 0xbb, + 0x51, 0x31, 0x43, 0x87, 0x2f, 0xcd, 0x1a, 0x73, 0x6b, 0x9b, 0x59, 0x6b, 0xdb, 0x2a, 0xc0, 0x21, + 0x93, 0xdd, 0x05, 0x1e, 0xb5, 0x9b, 0x43, 0x8c, 0x2d, 0xa6, 0x2c, 0xca, 0xa1, 0x87, 0xb6, 0x28, + 0xe1, 0x5d, 0xf5, 0x4e, 0x3c, 0x95, 0x8d, 0xb9, 0x55, 0x6b, 0x30, 0x75, 0xce, 0xf2, 0x0a, 0xa3, + 0x4c, 0xfd, 0x59, 0xd8, 0xaf, 0x20, 0x3b, 0x08, 0x4b, 0x0e, 0x3c, 0xf5, 0xe1, 0xd4, 0x18, 0x7a, + 0xc6, 0x50, 0x12, 0x36, 0xa8, 0x52, 0x15, 0x7a, 0x41, 0xc8, 0x2d, 0x40, 0x7c, 0x14, 0xfa, 0xa1, + 0xa3, 0xcd, 0x93, 0x1a, 0xe9, 0xc6, 0xd9, 0xe9, 0x64, 0xfa, 0xa7, 0x05, 0x88, 0x67, 0xb1, 0x7f, + 0x18, 0xd3, 0xe8, 0x17, 0xb6, 0x69, 0x94, 0xe3, 0x2c, 0x42, 0x5b, 0x73, 0x7f, 0x53, 0x68, 0xb3, + 0x2a, 0x39, 0x91, 0x24, 0xe4, 0xe9, 0x05, 0x63, 0x15, 0xee, 0xaa, 0x77, 0x3a, 0xac, 0x2e, 0x9b, + 0x6f, 0xe6, 0x78, 0xd0, 0x32, 0x9a, 0x9f, 0x5f, 0x85, 0x16, 0x75, 0xb4, 0x19, 0x61, 0x6b, 0xf0, + 0x4f, 0xf3, 0xc4, 0xa6, 0x80, 0x39, 0xb1, 0x59, 0x83, 0x0a, 0x09, 0xd3, 0xd9, 0x43, 0xe3, 0x6f, + 0x95, 0xc8, 0xe6, 0x37, 0x13, 0xcf, 0x73, 0x31, 0x1b, 0xcf, 0xb3, 0xec, 0xdf, 0xae, 0x46, 0x4b, + 0xc8, 0xfc, 0xe4, 0x6b, 0xb3, 0xb9, 0x11, 0x31, 0xcf, 0x14, 0x11, 0x18, 0x91, 0x2f, 0x9e, 0xb8, + 0xaf, 0x3b, 0xa0, 0x2f, 0xd1, 0xa8, 0xb7, 0xcc, 0xa8, 0x11, 0x80, 0xb8, 0xda, 0xcc, 0x0e, 0x97, + 0xd1, 0xa9, 0x90, 0x00, 0x71, 0x71, 0x0f, 0x71, 0xa8, 0x50, 0xf1, 0xfa, 0xc2, 0x66, 0x54, 0xfd, + 0xc2, 0xea, 0x26, 0x55, 0xf2, 0x0a, 0x26, 0x50, 0xfc, 0xa5, 0x36, 0x75, 0x27, 0x19, 0x1f, 0x6c, + 0x70, 0xbb, 0xe9, 0x95, 0x71, 0xf3, 0x05, 0x6a, 0x4b, 0x66, 0x48, 0x9c, 0x4c, 0x7f, 0x7d, 0x8c, + 0x0d, 0xe2, 0x0f, 0x81, 0x06, 0x52, 0x23, 0xdd, 0x66, 0x60, 0x78, 0xe3, 0xd1, 0xea, 0x01, 0x8a, 0x3f, 0x75, 0x4c, 0x36, 0xcb, 0xe0, 0x8f, 0x72, 0x08, 0x05, 0x8c, 0x28, 0x76, 0xc6, 0x6d, 0xfd, - 0x1f, 0xe6, 0xe5, 0x29, 0xeb, 0xcc, 0x68, 0x77, 0xf4, 0xbe, 0x3e, 0x89, 0x08, 0xc5, 0xe4, 0x16, - 0x5f, 0x00, 0xe7, 0x79, 0x36, 0x0c, 0x22, 0xbc, 0x3c, 0x94, 0x1a, 0xe9, 0x81, 0x50, 0x71, 0x10, + 0x1f, 0xe7, 0xe5, 0x29, 0xeb, 0xcc, 0x68, 0x77, 0xf4, 0xbe, 0x3e, 0x89, 0x08, 0xc5, 0xe4, 0x16, + 0x5f, 0x04, 0xe7, 0x79, 0x36, 0x0c, 0x22, 0xbc, 0x3c, 0x94, 0x1a, 0xe9, 0x86, 0x50, 0x71, 0x10, 0x45, 0x03, 0x1e, 0x83, 0x81, 0x88, 0x8e, 0x32, 0x43, 0x80, 0x1f, 0xe7, 0xd0, 0x72, 0x22, 0xa7, - 0x18, 0xf5, 0x59, 0x92, 0x3f, 0xbc, 0x25, 0xd4, 0xa7, 0x8e, 0xc1, 0x84, 0x1a, 0xbd, 0xa7, 0x4a, - 0xbf, 0x10, 0x6c, 0x14, 0xc4, 0x37, 0x33, 0x1f, 0x9d, 0xd3, 0x2e, 0x9d, 0x64, 0x8b, 0xb7, 0x05, + 0x18, 0xf5, 0x59, 0x92, 0x3f, 0xbc, 0x25, 0xd4, 0xa7, 0x96, 0xc1, 0x84, 0x1a, 0xbd, 0xaf, 0x4a, + 0xbf, 0x14, 0x6c, 0x14, 0xc4, 0xb7, 0x32, 0x1f, 0x9f, 0xd3, 0x2e, 0x9d, 0x64, 0x8b, 0xb7, 0x05, 0x62, 0x84, 0x90, 0x7a, 0x24, 0x15, 0x8f, 0xf1, 0xd4, 0x65, 0x88, 0x8b, 0x07, 0xce, 0xc1, 0xe0, - 0xf7, 0x01, 0x9d, 0x2c, 0xdb, 0xe8, 0xf2, 0xff, 0x2b, 0x87, 0x56, 0x92, 0x09, 0x60, 0x45, 0x22, - 0xa5, 0xd7, 0x56, 0xd7, 0xe4, 0xd4, 0xd6, 0xc4, 0xa8, 0x39, 0xcb, 0xa9, 0xd2, 0x29, 0x4e, 0xc8, - 0xce, 0x29, 0x1e, 0xe4, 0xf0, 0xd8, 0xc6, 0x8f, 0x25, 0x63, 0x47, 0x53, 0xd3, 0x17, 0x92, 0xb1, + 0xf7, 0x01, 0x9d, 0x2c, 0xdb, 0xe8, 0xf2, 0xff, 0x1b, 0x87, 0x56, 0x92, 0x09, 0x60, 0x45, 0x22, + 0xa5, 0xd7, 0x56, 0xd7, 0xe4, 0xd4, 0xd6, 0xc4, 0xa8, 0x3e, 0xcb, 0xa9, 0xd2, 0x29, 0x4e, 0xc8, + 0xce, 0x29, 0x1e, 0xe2, 0xf0, 0xd8, 0xc6, 0x8f, 0x25, 0x63, 0x47, 0x53, 0xd3, 0x17, 0x92, 0xb1, 0x88, 0x19, 0xd3, 0x9f, 0x75, 0x93, 0x86, 0xeb, 0x08, 0xc9, 0xe9, 0xcb, 0xa0, 0x62, 0x99, 0x4a, - 0x97, 0x3e, 0xda, 0x0f, 0x22, 0x07, 0x28, 0x69, 0xda, 0xcc, 0x87, 0x34, 0x10, 0xc9, 0xdd, 0x48, - 0x17, 0xbd, 0x6a, 0x9d, 0x8c, 0x1d, 0xd5, 0x3f, 0x1f, 0xd3, 0x47, 0xe9, 0x7b, 0x71, 0xfa, 0xa9, - 0x5b, 0xc9, 0xc4, 0x08, 0xdc, 0xc9, 0xc4, 0x6d, 0x06, 0x81, 0x25, 0xbb, 0x5a, 0xfc, 0x6f, 0xd1, - 0xf2, 0x40, 0x08, 0xe2, 0x49, 0xb5, 0x29, 0xfe, 0xf0, 0x7c, 0x61, 0x6d, 0x20, 0x20, 0x02, 0x08, + 0x97, 0x3e, 0xda, 0x0f, 0x22, 0x07, 0x28, 0x69, 0xda, 0xcc, 0x47, 0x34, 0x10, 0xc9, 0xdd, 0x48, + 0x27, 0xbd, 0x6a, 0x9d, 0x8c, 0x1d, 0xd5, 0xbf, 0x18, 0xd3, 0x47, 0xe9, 0x7b, 0x71, 0xfa, 0xa9, + 0x5b, 0xc9, 0xc4, 0x08, 0xdc, 0xc9, 0xc4, 0x6d, 0x06, 0x81, 0x25, 0xbb, 0x5a, 0xfc, 0xef, 0xd0, + 0xf2, 0x40, 0x08, 0xe2, 0x49, 0xb5, 0x2a, 0xfe, 0xf0, 0x7c, 0x61, 0x6d, 0x20, 0x20, 0x02, 0x08, 0xb8, 0xb6, 0x0c, 0x62, 0xa5, 0xd9, 0x2c, 0x23, 0xec, 0x81, 0xd9, 0x30, 0x68, 0x27, 0xbd, 0x49, 0x0a, 0xcc, 0xc4, 0x96, 0x97, 0x57, 0x49, 0xb8, 0x1f, 0x08, 0xbf, 0x65, 0x55, 0xa1, 0x70, 0x9e, - 0x3e, 0x36, 0xe3, 0x74, 0xd5, 0xbc, 0xa9, 0x4a, 0x75, 0x42, 0x6e, 0x4e, 0x71, 0x83, 0x59, 0x17, + 0x3e, 0x36, 0xe3, 0x74, 0x55, 0xbf, 0xa5, 0x4a, 0xb5, 0x42, 0x6e, 0x4e, 0x71, 0x83, 0x59, 0x17, 0xf6, 0x7d, 0x3d, 0xa8, 0x15, 0x9e, 0xa0, 0x64, 0x6e, 0xd8, 0xea, 0x93, 0x4b, 0x04, 0xaf, 0x97, 0x87, 0xcd, 0xa7, 0xf7, 0x99, 0x6a, 0xa1, 0xfc, 0xbe, 0x5c, 0x6c, 0xf4, 0x17, 0xd0, 0x5f, 0xf2, 0xe5, 0x16, 0x9f, 0x31, 0xab, 0xc6, 0x46, 0x77, 0xb1, 0xd5, 0x25, 0x5f, 0x3e, 0xd6, 0xd5, 0xa3, - 0xf8, 0x9b, 0xba, 0x7a, 0x2c, 0xff, 0xe6, 0xae, 0x1e, 0x25, 0xdf, 0xc6, 0xd5, 0x63, 0xc5, 0x83, - 0xba, 0x7a, 0x4c, 0x72, 0xa8, 0x84, 0x4c, 0xd0, 0x86, 0x60, 0xa0, 0xd3, 0xe7, 0x55, 0x82, 0xf4, - 0x19, 0xd7, 0xc3, 0x9c, 0x2a, 0x1d, 0xe4, 0x04, 0x7b, 0x9a, 0x18, 0x84, 0x18, 0x9b, 0xe0, 0x3d, - 0x6b, 0xbd, 0x7f, 0x46, 0x74, 0x0e, 0xf8, 0xa4, 0xcf, 0x1e, 0x8f, 0xf6, 0xff, 0x9a, 0xe4, 0x5c, - 0xbf, 0xbb, 0xb5, 0x43, 0x69, 0xf1, 0xf9, 0x9b, 0xd7, 0x43, 0x58, 0xdc, 0xf5, 0xee, 0x7d, 0x21, - 0x08, 0x81, 0x9b, 0x1a, 0xbc, 0xae, 0x0d, 0x75, 0xa7, 0x23, 0x07, 0xe9, 0xe0, 0x56, 0xd1, 0xd1, - 0x4d, 0xc6, 0x8e, 0x92, 0x9c, 0xed, 0xb4, 0x4c, 0xd9, 0x5e, 0x05, 0x3e, 0xc2, 0xa1, 0xa5, 0x1e, - 0x08, 0x63, 0xb7, 0xca, 0x7a, 0x77, 0x87, 0x82, 0xc4, 0xf7, 0x80, 0xe9, 0x80, 0x75, 0xa5, 0xd2, - 0x91, 0x9c, 0x3d, 0xa7, 0x4d, 0x9c, 0xce, 0x44, 0xba, 0x33, 0xbd, 0x03, 0xda, 0x70, 0x4f, 0xea, - 0xea, 0x80, 0x21, 0xb8, 0xd2, 0xa7, 0x88, 0x69, 0x3c, 0x63, 0x60, 0xb1, 0xe0, 0x69, 0x61, 0x04, - 0xf9, 0x71, 0x7c, 0x10, 0x0a, 0xf8, 0xd3, 0x57, 0x3f, 0xd6, 0xcf, 0x0f, 0xd3, 0x95, 0x4c, 0x0b, - 0xe1, 0xdf, 0x42, 0xc5, 0x5e, 0xc5, 0x8c, 0xc1, 0x41, 0xdf, 0xfa, 0x07, 0x7f, 0x79, 0x06, 0x2e, - 0x3e, 0x05, 0x0a, 0x23, 0xf8, 0xd3, 0x4d, 0x5d, 0x49, 0x4d, 0x1f, 0x4a, 0x4e, 0x1f, 0x4d, 0x4d, - 0x0f, 0x18, 0x8f, 0x54, 0x30, 0xb8, 0xfc, 0x56, 0x84, 0x14, 0x7f, 0xb3, 0xcf, 0x0f, 0xc1, 0x70, - 0x78, 0xcb, 0xcc, 0xc0, 0x80, 0xc5, 0x27, 0xb4, 0xf8, 0x09, 0xed, 0x46, 0xb7, 0xf5, 0xa6, 0x50, - 0xe2, 0x84, 0xfe, 0xe1, 0x20, 0x7d, 0x53, 0x98, 0x41, 0xe4, 0xdf, 0x37, 0xaf, 0x31, 0xc2, 0x5b, - 0xfe, 0x24, 0x46, 0xa5, 0x71, 0x55, 0xf1, 0x95, 0x64, 0xfc, 0x18, 0xc4, 0x31, 0x85, 0x0d, 0xcf, - 0x90, 0x63, 0xce, 0xd0, 0xb8, 0x34, 0x43, 0x53, 0xe9, 0xab, 0x5d, 0xe5, 0x5a, 0x24, 0x91, 0x8c, - 0xc5, 0xb1, 0xe6, 0xac, 0xf7, 0x9d, 0xa4, 0xcf, 0x35, 0x19, 0x37, 0x17, 0xff, 0xa9, 0x69, 0x47, - 0xc0, 0x1c, 0x8a, 0x3c, 0xf8, 0x3f, 0x9f, 0x93, 0x61, 0xbd, 0x85, 0x07, 0xba, 0x19, 0x9b, 0x53, - 0x7c, 0x3e, 0x3f, 0x7f, 0x26, 0x36, 0x07, 0x76, 0x80, 0x64, 0x36, 0x17, 0xff, 0x01, 0x2a, 0xc4, - 0x03, 0x41, 0xca, 0x5e, 0x4d, 0xca, 0x7e, 0x3a, 0x6f, 0xd9, 0x10, 0xab, 0x8f, 0x14, 0x4d, 0xc2, - 0x99, 0x98, 0xb9, 0xc4, 0xb5, 0x59, 0xe5, 0x26, 0xe3, 0xc7, 0x6c, 0xc5, 0x99, 0x98, 0xfc, 0xef, - 0xd0, 0xf2, 0xf6, 0x56, 0x77, 0x78, 0x4f, 0x20, 0xd8, 0x46, 0xca, 0x7b, 0x74, 0xa1, 0xad, 0xb3, - 0x81, 0xc1, 0x84, 0xad, 0x93, 0x5c, 0xe8, 0xb4, 0x51, 0x10, 0xd7, 0x42, 0x30, 0x09, 0x36, 0xc2, - 0xac, 0xad, 0x6c, 0x1b, 0xf6, 0x9a, 0x77, 0xd1, 0xca, 0x2c, 0x01, 0xe1, 0x3b, 0x0b, 0xa9, 0xbb, - 0xe6, 0x97, 0xe8, 0xa1, 0x9c, 0xcd, 0xfe, 0xbb, 0xa3, 0xfe, 0x33, 0xf4, 0x50, 0x4e, 0x7f, 0x3c, - 0x50, 0x60, 0xa0, 0x1e, 0x4e, 0x95, 0x22, 0x1c, 0xfa, 0x9d, 0x00, 0x72, 0xa5, 0xd8, 0x81, 0x47, - 0xcc, 0xdc, 0xb1, 0x2f, 0x8d, 0xe0, 0xbe, 0xa3, 0x11, 0x13, 0x8e, 0xd2, 0xf8, 0x26, 0xf0, 0x88, - 0x0f, 0x79, 0x78, 0xd9, 0xc4, 0x34, 0x65, 0x38, 0x6d, 0xf4, 0x3a, 0x88, 0x71, 0xe9, 0x0f, 0xcf, - 0x65, 0x3e, 0x8f, 0xe1, 0x31, 0x37, 0x84, 0x39, 0x2c, 0xa3, 0x18, 0x71, 0x7b, 0xb2, 0x24, 0xbc, - 0xb2, 0xa1, 0x65, 0x68, 0x65, 0xd6, 0x74, 0xe2, 0x7d, 0xe8, 0x61, 0x10, 0x53, 0xfd, 0x10, 0xaa, - 0x0c, 0x9e, 0xa8, 0xa3, 0xef, 0xa6, 0x91, 0x80, 0x18, 0xf9, 0xd2, 0xc5, 0xa7, 0xe0, 0xae, 0x2c, - 0xfb, 0xdc, 0xdd, 0xa1, 0xde, 0xcc, 0xc1, 0x71, 0xca, 0x5e, 0xf2, 0xe5, 0xc1, 0xbc, 0x86, 0x80, - 0xe9, 0x6b, 0x18, 0x05, 0x0c, 0xaf, 0x61, 0xe0, 0x94, 0x34, 0x7c, 0x00, 0x51, 0x30, 0x01, 0x52, - 0xd2, 0x2c, 0x2e, 0xff, 0x0e, 0x2a, 0x69, 0x73, 0x7b, 0xf6, 0xfa, 0xfc, 0x4a, 0x2d, 0xfb, 0x18, - 0x1a, 0x31, 0x8e, 0xdb, 0x53, 0xc4, 0xa7, 0x6d, 0x9f, 0x79, 0x08, 0xdb, 0xf1, 0xf9, 0x20, 0x7a, - 0xc4, 0xeb, 0x0b, 0xe1, 0x8a, 0x3b, 0x6d, 0x31, 0x84, 0xe1, 0xea, 0x23, 0x89, 0xd6, 0x9b, 0x17, - 0x41, 0x7c, 0x96, 0xed, 0x9a, 0xde, 0x2f, 0x32, 0xa7, 0x26, 0xd8, 0xa0, 0x9d, 0xf0, 0x9c, 0xa7, - 0x9c, 0x37, 0x2b, 0x53, 0xa6, 0xcb, 0x16, 0x8a, 0x76, 0x49, 0x6e, 0x99, 0x36, 0x84, 0x7c, 0x65, - 0x92, 0xf8, 0x04, 0x79, 0xcb, 0xb4, 0x65, 0xe5, 0x3d, 0x68, 0x15, 0x85, 0x5b, 0xe1, 0x33, 0x99, - 0x37, 0x14, 0x73, 0x12, 0x45, 0x47, 0x4e, 0x59, 0x34, 0xa8, 0xdf, 0x8d, 0x8b, 0xb4, 0xa0, 0x9c, - 0x3c, 0xbc, 0x0b, 0x15, 0x75, 0xb6, 0x7b, 0xd8, 0x67, 0x50, 0xa8, 0x2a, 0x65, 0x42, 0xc5, 0x27, - 0xcc, 0x9f, 0x79, 0xc6, 0xc6, 0xc2, 0xe3, 0x87, 0x38, 0xf4, 0xb8, 0xd1, 0x79, 0x7b, 0x15, 0x4f, - 0x0b, 0x29, 0xc0, 0x78, 0x60, 0x81, 0xbe, 0xa6, 0xf8, 0x96, 0x2a, 0xd5, 0x0b, 0xf3, 0x63, 0x89, - 0x1b, 0xe7, 0x6f, 0x02, 0x84, 0x83, 0x22, 0xaf, 0x6a, 0xe8, 0x17, 0xc7, 0x32, 0x9f, 0x46, 0xe9, - 0x03, 0x8e, 0xf3, 0x53, 0xab, 0xc6, 0x9b, 0x01, 0x7a, 0x51, 0xc8, 0x5e, 0x5a, 0xe2, 0x33, 0x59, + 0xf8, 0xdb, 0xba, 0x7a, 0x2c, 0xff, 0xf6, 0xae, 0x1e, 0x25, 0xdf, 0xc5, 0xd5, 0x63, 0xc5, 0x83, + 0xba, 0x7a, 0x4c, 0x72, 0xa8, 0x84, 0x4c, 0xd0, 0xfa, 0x60, 0xa0, 0xc3, 0xe7, 0x55, 0x82, 0xf4, + 0x19, 0xd7, 0x5e, 0x4e, 0x95, 0x0e, 0x71, 0x82, 0x3d, 0x4d, 0x0c, 0x42, 0x8c, 0x4d, 0xf0, 0x9e, + 0xb5, 0xde, 0x3f, 0x23, 0x3a, 0x07, 0x7c, 0xd2, 0x67, 0x8f, 0x47, 0xfb, 0x7f, 0x43, 0x72, 0xae, + 0xdf, 0xd3, 0xd2, 0xae, 0x34, 0xfb, 0xfc, 0x4d, 0xeb, 0x21, 0x2c, 0xee, 0x7a, 0xf7, 0xfe, 0x10, + 0x84, 0xc0, 0x4d, 0x0d, 0x5e, 0xd7, 0x86, 0xba, 0xd2, 0x91, 0x43, 0x74, 0x70, 0xab, 0xe8, 0xe8, + 0x26, 0x63, 0x47, 0x49, 0xce, 0x36, 0x5a, 0xa6, 0x6c, 0xaf, 0x02, 0x1f, 0xe1, 0xd0, 0x52, 0x0f, + 0x84, 0xb1, 0x5b, 0x65, 0xbd, 0xbb, 0x43, 0x41, 0xe2, 0xfb, 0xc0, 0x74, 0xc0, 0xba, 0x52, 0xe9, + 0x48, 0xce, 0x9e, 0xd3, 0x26, 0x4e, 0x67, 0x22, 0x5d, 0x99, 0x9e, 0x01, 0x6d, 0xb8, 0x3b, 0x75, + 0x75, 0xc0, 0x10, 0x5c, 0xe9, 0x53, 0xc4, 0x34, 0x9e, 0x31, 0xb0, 0x58, 0xf0, 0xb4, 0x30, 0x82, + 0xfc, 0x38, 0x3e, 0x0c, 0x05, 0xfc, 0xe9, 0xab, 0x9f, 0xe8, 0xe7, 0x87, 0xe9, 0x4a, 0xa6, 0x85, + 0xf0, 0x6f, 0xa3, 0x62, 0xaf, 0x62, 0xc6, 0xe0, 0xa0, 0x6f, 0xfd, 0x83, 0xbf, 0x3c, 0x03, 0x17, + 0x9f, 0x02, 0x85, 0x11, 0xfc, 0xe9, 0xa6, 0xae, 0xa4, 0xa6, 0x0f, 0x27, 0xa7, 0x8f, 0xa6, 0xa6, + 0x07, 0x8c, 0x47, 0x2a, 0x18, 0x5c, 0x7e, 0x1b, 0x42, 0x8a, 0xbf, 0xc9, 0xe7, 0x87, 0x60, 0x38, + 0xbc, 0x65, 0x66, 0x60, 0xc0, 0xe2, 0x13, 0x5a, 0xfc, 0x84, 0x76, 0xa3, 0xcb, 0x7a, 0x53, 0x28, + 0x71, 0x42, 0xff, 0x68, 0x90, 0xbe, 0x29, 0xcc, 0x20, 0xf2, 0x1f, 0x98, 0xd7, 0x18, 0xe1, 0x2d, + 0x7f, 0x12, 0xa3, 0xd2, 0xb8, 0xaa, 0xf8, 0x6a, 0x32, 0x7e, 0x0c, 0xe2, 0x98, 0xc2, 0x86, 0x67, + 0xc8, 0x31, 0x67, 0x68, 0x5c, 0x9a, 0xa1, 0xa9, 0xf4, 0xd5, 0xce, 0x72, 0x2d, 0x92, 0x48, 0xc6, + 0xe2, 0x58, 0x73, 0xd6, 0xfb, 0x4e, 0xd2, 0xe7, 0x9a, 0x8c, 0x9b, 0x8b, 0xff, 0xd0, 0xb4, 0x23, + 0x60, 0x0e, 0x45, 0x1e, 0xfc, 0x9f, 0xcf, 0xc9, 0xb0, 0xce, 0xc2, 0x03, 0xdd, 0x8c, 0xcd, 0x29, + 0x3e, 0x9f, 0x9f, 0x3f, 0x13, 0x9b, 0x03, 0x3b, 0x40, 0x32, 0x9b, 0x8b, 0xff, 0x10, 0x15, 0xe2, + 0x81, 0x20, 0x65, 0xaf, 0x26, 0x65, 0x3f, 0x9d, 0xb7, 0x6c, 0x88, 0xd5, 0x47, 0x8a, 0x26, 0xe1, + 0x4c, 0xcc, 0x5c, 0xe2, 0xda, 0xac, 0x72, 0x93, 0xf1, 0x63, 0xb6, 0xe2, 0x4c, 0x4c, 0xfe, 0xf7, + 0x68, 0x79, 0x5b, 0x8b, 0x3b, 0xbc, 0x37, 0x10, 0x6c, 0x25, 0xe5, 0x3d, 0xba, 0xd0, 0xd6, 0x59, + 0xcf, 0x60, 0xc2, 0xd6, 0x49, 0x2e, 0x74, 0xda, 0x28, 0x88, 0x6b, 0x21, 0x98, 0x04, 0x1b, 0x61, + 0xd6, 0x56, 0xb6, 0x0d, 0x7b, 0xcd, 0x7b, 0x68, 0x65, 0x96, 0x80, 0xf0, 0xbd, 0x85, 0xd4, 0x5d, + 0xf3, 0x2b, 0xf4, 0x50, 0xce, 0x66, 0xff, 0xfd, 0x51, 0xff, 0x39, 0x7a, 0x28, 0xa7, 0x3f, 0x1e, + 0x28, 0x30, 0x50, 0x37, 0xa7, 0x4a, 0x11, 0x0e, 0xfd, 0x5e, 0x00, 0xb9, 0x52, 0x6c, 0xc7, 0x23, + 0x66, 0xee, 0xd8, 0x97, 0x46, 0x70, 0xdf, 0xd1, 0x88, 0x09, 0x47, 0x69, 0x7c, 0x13, 0x78, 0xc4, + 0x87, 0x3c, 0xbc, 0x6c, 0x62, 0x9a, 0x32, 0x9c, 0x36, 0x7a, 0x1d, 0xc4, 0xb8, 0xf4, 0x47, 0xe7, + 0x32, 0x5f, 0xc4, 0xf0, 0x98, 0x1b, 0xc2, 0x1c, 0x96, 0x51, 0x8c, 0xb8, 0x3d, 0x59, 0x12, 0x5e, + 0xd9, 0xd0, 0x32, 0xb4, 0x32, 0x6b, 0x3a, 0xf1, 0x3e, 0xf4, 0x30, 0x88, 0xa9, 0x7e, 0x08, 0x55, + 0x06, 0x4f, 0xd4, 0xd1, 0x77, 0xd3, 0x48, 0x40, 0x8c, 0x7c, 0xe9, 0xe2, 0x53, 0x70, 0x57, 0x96, + 0x7d, 0xee, 0xee, 0x70, 0x4f, 0xe6, 0xd0, 0x38, 0x65, 0x2f, 0xf9, 0xf2, 0x60, 0x5e, 0x43, 0xc0, + 0xf4, 0x35, 0x8c, 0x02, 0x86, 0xd7, 0x30, 0x70, 0x4a, 0x1a, 0x3e, 0x80, 0x28, 0x98, 0x00, 0x29, + 0x69, 0x16, 0x97, 0x7f, 0x17, 0x95, 0xb4, 0xba, 0x3d, 0xfb, 0x7c, 0x7e, 0xa5, 0x86, 0x7d, 0x0c, + 0x8d, 0x18, 0xc7, 0xed, 0x29, 0xe2, 0xd3, 0xb6, 0xcf, 0x3c, 0x84, 0xed, 0xf8, 0x7c, 0x10, 0x3d, + 0xe2, 0xf5, 0x85, 0x70, 0xc5, 0x9d, 0xb6, 0x18, 0xc2, 0x70, 0xf5, 0x91, 0x44, 0xeb, 0xcd, 0x8b, + 0x20, 0x3e, 0xcb, 0x76, 0x4d, 0xcf, 0x97, 0x99, 0x53, 0x13, 0x6c, 0xd0, 0x4e, 0x78, 0xce, 0x53, + 0xce, 0x9b, 0x95, 0x29, 0xd3, 0x65, 0x0b, 0x45, 0xbb, 0x24, 0xb7, 0x4c, 0x1b, 0x42, 0xbe, 0x32, + 0x49, 0x7c, 0x82, 0xbc, 0x65, 0xda, 0xb2, 0xf2, 0x1e, 0xb4, 0x8a, 0xc2, 0xad, 0xf0, 0x99, 0xcc, + 0x1b, 0x8a, 0x39, 0x89, 0xa2, 0x23, 0xa7, 0x2c, 0x1a, 0xd4, 0xef, 0xc6, 0x45, 0x5a, 0x50, 0x4e, + 0x1e, 0xde, 0x85, 0x8a, 0x3a, 0xda, 0x3c, 0xec, 0x33, 0x28, 0x54, 0x95, 0x32, 0xa1, 0xe2, 0x13, + 0xe6, 0xcf, 0x3c, 0x63, 0x63, 0xe1, 0xf1, 0x43, 0x1c, 0x7a, 0xdc, 0xe8, 0xbc, 0x7d, 0x8a, 0xa7, + 0x99, 0x14, 0x60, 0x3c, 0xb0, 0x40, 0x5f, 0x53, 0x7c, 0x5b, 0x95, 0xea, 0x84, 0xf9, 0xb1, 0xc4, + 0x8d, 0xf3, 0x37, 0x01, 0xc2, 0x41, 0x91, 0x57, 0x35, 0xf4, 0x8b, 0x63, 0x99, 0xcf, 0xa2, 0xf4, + 0x01, 0xc7, 0xf9, 0xa9, 0x6d, 0xc2, 0x9b, 0x01, 0x7a, 0x49, 0xc8, 0x5e, 0x5a, 0xe2, 0x33, 0x59, 0xef, 0x0e, 0xd0, 0x97, 0xaa, 0x19, 0x0e, 0x59, 0x36, 0xbe, 0x8c, 0xde, 0x00, 0x60, 0x36, 0x17, - 0x7e, 0x33, 0x32, 0x1f, 0xf4, 0x27, 0x16, 0xba, 0x12, 0xe8, 0x2b, 0x13, 0x28, 0x3e, 0x89, 0x7f, + 0x7e, 0x0b, 0x32, 0x1f, 0xf4, 0x27, 0x16, 0xba, 0x12, 0xe8, 0x2b, 0x13, 0x28, 0x3e, 0x89, 0x7f, 0x41, 0xe0, 0x41, 0x88, 0xa7, 0xa7, 0x4f, 0x5c, 0xce, 0x9c, 0x98, 0xa5, 0x4f, 0x2c, 0x99, 0x78, - 0xfc, 0x61, 0x0e, 0x15, 0x19, 0x1f, 0x70, 0x29, 0x20, 0x0f, 0xcf, 0xab, 0xf3, 0x77, 0x3a, 0x29, - 0x0e, 0x5c, 0xfc, 0xb0, 0xb2, 0x88, 0x3f, 0x59, 0xa8, 0xa0, 0xf2, 0xcc, 0xc8, 0x10, 0xbd, 0x88, - 0x3b, 0x44, 0x2e, 0xab, 0x93, 0x86, 0xa5, 0x23, 0x51, 0x6d, 0xe8, 0xb4, 0x16, 0x3d, 0x59, 0x21, - 0x5b, 0x84, 0xf8, 0x9d, 0x68, 0x39, 0x8d, 0x15, 0x05, 0x75, 0x59, 0x44, 0x9a, 0x25, 0xaa, 0xd2, - 0x7a, 0xc1, 0x96, 0x20, 0x3e, 0x4d, 0xbf, 0xc0, 0xce, 0x9b, 0xa7, 0x75, 0x36, 0x74, 0x5e, 0x46, - 0x25, 0xed, 0x4a, 0x10, 0xcf, 0xb3, 0x86, 0x80, 0xb7, 0xbe, 0xa3, 0x8d, 0xe8, 0xa7, 0x25, 0x20, - 0x6e, 0xd8, 0x53, 0xc4, 0x52, 0x6d, 0xe0, 0x04, 0x8c, 0x72, 0x7b, 0xc0, 0x0b, 0xe4, 0x8d, 0x85, - 0x6f, 0x43, 0xe4, 0x83, 0xa8, 0xc4, 0xb0, 0xcb, 0x42, 0x65, 0x97, 0x10, 0x9a, 0xa4, 0x6f, 0xec, - 0x29, 0xe2, 0x2b, 0xc6, 0x67, 0xce, 0xab, 0xf5, 0x70, 0x1d, 0xe0, 0xa8, 0x76, 0x04, 0xeb, 0x8a, - 0x58, 0x62, 0x23, 0x6f, 0x3b, 0x62, 0x2d, 0x82, 0x34, 0x46, 0xb6, 0x13, 0xe2, 0xf7, 0xa3, 0x87, - 0x0c, 0x80, 0xd4, 0x11, 0x0e, 0x40, 0xb9, 0x4b, 0x49, 0xb9, 0xe4, 0x75, 0x88, 0xdc, 0x54, 0x51, - 0x9c, 0xa7, 0x6c, 0x1a, 0x90, 0x32, 0x6f, 0xa9, 0xb9, 0x64, 0xf8, 0x76, 0xab, 0xb5, 0xb2, 0x3b, - 0xec, 0x0b, 0x90, 0xd5, 0xf9, 0xdd, 0x96, 0x6a, 0x2f, 0x80, 0xef, 0x44, 0xc5, 0x9d, 0xed, 0x1e, - 0xa7, 0xdf, 0xb7, 0x8d, 0x44, 0x42, 0x2d, 0xcc, 0x3f, 0x2d, 0xe9, 0x82, 0xc0, 0x38, 0xc0, 0x88, - 0xd8, 0x4c, 0xe2, 0x0f, 0xe9, 0x53, 0xf3, 0xc6, 0x03, 0x1b, 0x47, 0xcd, 0xa0, 0x5c, 0x6c, 0xbd, - 0x64, 0x36, 0x8f, 0xf1, 0x90, 0x51, 0xce, 0x7a, 0x23, 0xb7, 0x37, 0xcc, 0x75, 0x0a, 0x8b, 0x34, - 0x57, 0x6e, 0x2b, 0x7b, 0x01, 0x15, 0x33, 0x4b, 0x05, 0x6f, 0xff, 0x8a, 0xbf, 0xd3, 0xd8, 0xfe, - 0x15, 0x7f, 0x27, 0x09, 0xa4, 0x8c, 0x97, 0x2c, 0xd8, 0xc6, 0xc9, 0xef, 0xb2, 0xed, 0xa8, 0x98, - 0x69, 0x08, 0x46, 0x69, 0x33, 0x2c, 0x7e, 0x45, 0x32, 0xf9, 0xcd, 0x97, 0xa2, 0x65, 0x34, 0x48, - 0x22, 0xf5, 0x2a, 0x36, 0x3e, 0xcd, 0xc7, 0x92, 0x16, 0x59, 0x8f, 0x25, 0x95, 0xfd, 0xff, 0x1e, - 0x45, 0x45, 0x16, 0x5b, 0xfd, 0x19, 0x2a, 0x36, 0xb5, 0x3e, 0xd3, 0x46, 0x45, 0x34, 0x26, 0x16, - 0x2e, 0x16, 0x9b, 0x61, 0x36, 0x5d, 0xb5, 0x32, 0x9b, 0xc2, 0xaf, 0xb3, 0x59, 0xa6, 0xc0, 0x04, - 0x49, 0x2c, 0x53, 0x2b, 0xad, 0x48, 0x9e, 0xac, 0x4d, 0xea, 0xf7, 0x39, 0xcf, 0xf3, 0xd4, 0xb8, - 0x55, 0xe9, 0xa7, 0x82, 0x05, 0x15, 0x37, 0x32, 0xb1, 0x3e, 0x23, 0x70, 0xa3, 0xda, 0x7c, 0x13, - 0x0a, 0x0c, 0x28, 0xae, 0xda, 0x64, 0x2c, 0x8e, 0x65, 0x19, 0x78, 0xe3, 0xba, 0xf6, 0xeb, 0x9a, - 0xa7, 0x82, 0x4f, 0xe4, 0xf5, 0xcb, 0xa8, 0x5e, 0x5c, 0xe3, 0x6c, 0xac, 0x62, 0x5f, 0x00, 0x72, - 0x9a, 0x16, 0xdf, 0xc5, 0xcc, 0xb3, 0xa7, 0xf4, 0xe0, 0x71, 0x6d, 0x6e, 0xd1, 0x79, 0x4f, 0x20, - 0xf7, 0xa0, 0x95, 0x20, 0xfe, 0xe3, 0x79, 0x1d, 0xf2, 0xb8, 0x69, 0x8c, 0x94, 0xc2, 0x9a, 0x9f, - 0xa8, 0xd2, 0xab, 0x42, 0x76, 0x9a, 0xf8, 0x9c, 0x4d, 0xcc, 0x61, 0xf4, 0x6f, 0x33, 0x1c, 0x0a, - 0xf8, 0x8d, 0x65, 0x67, 0xe4, 0xfd, 0xa8, 0xd8, 0x8d, 0x57, 0x8e, 0xc7, 0xdd, 0xea, 0xf3, 0x37, - 0x53, 0xeb, 0x4f, 0x8e, 0x72, 0x21, 0x59, 0x28, 0x64, 0x58, 0xe8, 0xf3, 0x80, 0x4c, 0x4e, 0xb1, - 0xd4, 0x16, 0xd3, 0x95, 0x68, 0xac, 0x86, 0x34, 0xc4, 0xa0, 0xf1, 0x51, 0x0e, 0xad, 0x68, 0x75, - 0x77, 0xf8, 0x3d, 0x7b, 0x9b, 0x94, 0x36, 0x2c, 0x7b, 0x2b, 0xd4, 0x20, 0x93, 0x13, 0x5d, 0x73, - 0x2b, 0xc1, 0x82, 0xbd, 0xaa, 0x03, 0xde, 0x60, 0x02, 0xeb, 0x4c, 0x56, 0x7e, 0x51, 0x80, 0x32, - 0xf5, 0x53, 0xb7, 0xe8, 0xb3, 0xf8, 0x86, 0xba, 0x9c, 0xfc, 0xea, 0xa8, 0x29, 0xee, 0x43, 0x18, - 0x5a, 0x39, 0x2b, 0x2f, 0xf3, 0xb2, 0x66, 0xe1, 0x3c, 0x0f, 0x6d, 0x19, 0x33, 0xd1, 0xf6, 0xae, - 0x26, 0x69, 0xbe, 0xf1, 0xae, 0xe6, 0x53, 0xb9, 0x6f, 0x3e, 0x92, 0x14, 0x63, 0x44, 0xe9, 0xa3, - 0x5c, 0x6d, 0xe6, 0x73, 0x92, 0x45, 0xf7, 0x2a, 0x8a, 0x3c, 0x2c, 0x49, 0x8b, 0x82, 0xf7, 0x7b, - 0xe8, 0xf3, 0x92, 0xcf, 0xe4, 0x16, 0x85, 0x79, 0xd8, 0x8d, 0xb1, 0x54, 0xf7, 0x9d, 0xac, 0x17, - 0x26, 0xf7, 0xa0, 0xa5, 0x78, 0x15, 0x6d, 0x6f, 0xa4, 0xf7, 0x60, 0xc8, 0xe3, 0x78, 0x14, 0x24, - 0x4a, 0x26, 0x9d, 0x4c, 0xa4, 0x1f, 0xb4, 0x5b, 0x88, 0xf6, 0xb9, 0xbd, 0x91, 0xd8, 0xe7, 0xba, - 0x53, 0xbd, 0x57, 0x4d, 0xf9, 0x3f, 0x19, 0x9b, 0x80, 0x3e, 0xc4, 0x9d, 0x69, 0xbc, 0x78, 0x2a, - 0x53, 0x52, 0xe4, 0x64, 0x84, 0x35, 0xdf, 0x58, 0xf6, 0x99, 0xd2, 0x2c, 0xfb, 0x8c, 0x65, 0x80, - 0xb1, 0xbf, 0x72, 0x55, 0x72, 0x8f, 0x57, 0xae, 0x56, 0xe4, 0xbc, 0x72, 0xd5, 0xcf, 0xb1, 0x57, - 0x86, 0xc1, 0x82, 0x42, 0x5e, 0xe2, 0x61, 0xae, 0x0c, 0xbf, 0x67, 0x76, 0xe7, 0x03, 0x85, 0x2b, - 0xc4, 0xeb, 0x05, 0x9e, 0xdd, 0x8d, 0x0d, 0xd2, 0xf1, 0x81, 0xfc, 0xc9, 0xd9, 0x73, 0x7a, 0xb4, - 0x2b, 0x19, 0x8b, 0xa4, 0x0f, 0xdf, 0x64, 0x6f, 0x11, 0xff, 0x7b, 0x0e, 0x15, 0x1a, 0xc6, 0x13, - 0x6a, 0x22, 0xb9, 0xc5, 0xa9, 0xd2, 0xe7, 0x9c, 0x60, 0x82, 0xc5, 0xcb, 0x9c, 0x59, 0x99, 0x2c, - 0x5b, 0x0e, 0x65, 0xeb, 0xf0, 0xfc, 0x10, 0x29, 0x87, 0x16, 0x9a, 0x8c, 0x4d, 0x98, 0x56, 0x46, - 0x83, 0x0e, 0x3d, 0x77, 0xb8, 0x7e, 0x50, 0x3f, 0x61, 0xd9, 0xa4, 0x53, 0xd3, 0x87, 0xd2, 0x47, - 0xba, 0xef, 0x46, 0xba, 0xa1, 0x39, 0xda, 0xe8, 0x38, 0xd6, 0xb0, 0x63, 0x9f, 0x62, 0x7d, 0x8d, - 0x48, 0x3e, 0xc9, 0xd8, 0x04, 0x58, 0x69, 0x4c, 0x4b, 0x31, 0x9e, 0x32, 0x64, 0x39, 0xe0, 0x4e, - 0x20, 0xd6, 0x0d, 0x50, 0x8f, 0x65, 0xb3, 0xc6, 0xfc, 0xbf, 0xe2, 0xcc, 0x83, 0x07, 0xb0, 0xb7, - 0x4c, 0x71, 0xaa, 0xe4, 0x13, 0x28, 0x4c, 0xdc, 0x65, 0x45, 0x1e, 0x3f, 0x72, 0x4b, 0x8f, 0x74, - 0x81, 0x51, 0x37, 0x7d, 0x70, 0x06, 0x3e, 0x9d, 0x72, 0x9d, 0xd4, 0xe4, 0xaa, 0xdf, 0x3c, 0x97, - 0x88, 0xca, 0x3b, 0xea, 0xeb, 0xe1, 0x57, 0x6d, 0xdd, 0xd6, 0x3a, 0x0a, 0xdc, 0x24, 0x6d, 0xdd, - 0x21, 0xd7, 0xcd, 0x25, 0xa2, 0xae, 0x7a, 0x57, 0x93, 0x4b, 0xda, 0xea, 0x7a, 0x57, 0x6a, 0x72, - 0x6d, 0xaf, 0x37, 0x90, 0xea, 0x6a, 0xbf, 0xae, 0x79, 0x23, 0xf8, 0x53, 0xb9, 0xd0, 0xa0, 0x23, - 0x2f, 0xa3, 0x64, 0xe4, 0x42, 0x83, 0x8a, 0xbc, 0x14, 0x88, 0xc8, 0x2b, 0xec, 0x34, 0xe4, 0x65, - 0x94, 0x84, 0xf9, 0xf4, 0xd9, 0x5e, 0x84, 0x3c, 0x01, 0x7f, 0xa8, 0xa3, 0x8d, 0x6c, 0x08, 0x60, - 0xeb, 0x21, 0xe6, 0x55, 0x06, 0x2c, 0xbe, 0x6c, 0xfd, 0x86, 0xa7, 0x6b, 0x8c, 0x08, 0xab, 0x60, - 0xa8, 0x0c, 0xc2, 0x93, 0x37, 0xa9, 0xe3, 0x5f, 0xa4, 0xa7, 0x6e, 0x83, 0xf8, 0x0d, 0x1d, 0x27, - 0x33, 0x44, 0xf8, 0x20, 0x5a, 0x8e, 0x17, 0x85, 0xc9, 0xd8, 0x1e, 0x9e, 0xdf, 0x9e, 0x6a, 0xe0, - 0xd4, 0x6c, 0x20, 0x31, 0x47, 0xd9, 0x6c, 0xe2, 0x6a, 0x6b, 0x5f, 0x23, 0x4b, 0x14, 0xa4, 0xca, - 0xaf, 0x6b, 0x96, 0x1c, 0xe1, 0x0a, 0x56, 0x71, 0xb2, 0x0d, 0x99, 0xdf, 0x8d, 0x20, 0x8c, 0x4f, - 0x3d, 0xb3, 0xc7, 0x3e, 0x42, 0xda, 0x48, 0x02, 0x66, 0xe5, 0x24, 0x8a, 0x4f, 0x9b, 0x1f, 0x0e, - 0x6d, 0x74, 0x5c, 0x1b, 0xee, 0x81, 0xb9, 0x92, 0x8c, 0x1d, 0x49, 0x8d, 0xf4, 0x38, 0x5c, 0xb5, - 0x72, 0x4e, 0x16, 0xbe, 0x05, 0x2d, 0x0e, 0xbb, 0x9b, 0x43, 0xa5, 0xab, 0xf3, 0x87, 0x41, 0x66, - 0xf9, 0x96, 0xf1, 0x0c, 0x30, 0x11, 0x9b, 0x49, 0x2e, 0xf1, 0xf9, 0xbc, 0x3c, 0x0b, 0x3a, 0x51, - 0xbf, 0x78, 0x38, 0x35, 0xf1, 0x95, 0x71, 0x0c, 0x87, 0xd1, 0xf9, 0x2f, 0x39, 0x54, 0x62, 0x6e, - 0xff, 0xc4, 0x3c, 0xf7, 0x28, 0x69, 0xce, 0x20, 0xa7, 0x4a, 0x47, 0x38, 0xc1, 0x9e, 0x26, 0x1e, - 0xb0, 0xf4, 0x3a, 0x70, 0x9a, 0xf1, 0x07, 0x82, 0x6d, 0xee, 0xd6, 0xf5, 0x0a, 0x8d, 0x6a, 0x5e, - 0x71, 0x37, 0xd2, 0xad, 0x9f, 0x99, 0xcc, 0x44, 0x46, 0xd8, 0xed, 0xc9, 0xcc, 0xa4, 0xa9, 0x51, - 0x33, 0x62, 0x7a, 0x5e, 0x84, 0x4a, 0x87, 0x36, 0xf0, 0x85, 0x73, 0xe7, 0x36, 0x0a, 0xe8, 0x3b, - 0xe9, 0xaa, 0x75, 0xc2, 0x6f, 0xd9, 0x5e, 0x13, 0x3e, 0xc2, 0xa1, 0xc5, 0xee, 0xa0, 0xe2, 0x2e, - 0x7d, 0x8c, 0x8c, 0xfa, 0xe3, 0xf9, 0x2f, 0x01, 0x07, 0x15, 0x37, 0x68, 0x7e, 0x04, 0x57, 0xdc, - 0x44, 0xe9, 0x92, 0xe7, 0xd5, 0xb1, 0xfa, 0xc5, 0x88, 0x02, 0xe5, 0x20, 0xa1, 0x27, 0x63, 0x03, - 0x7a, 0xf4, 0xb0, 0x36, 0x39, 0x52, 0xe9, 0xd0, 0xfa, 0xce, 0xc0, 0xac, 0x33, 0x03, 0x5e, 0x03, - 0x7e, 0x85, 0x4c, 0xa8, 0x11, 0xb6, 0x48, 0xce, 0x77, 0x88, 0xed, 0xac, 0x94, 0x8c, 0x56, 0xf9, - 0xfc, 0xa3, 0x55, 0x67, 0xa0, 0xc2, 0x90, 0x91, 0xd7, 0x62, 0xac, 0xfc, 0x86, 0x90, 0xa4, 0xdf, - 0xb8, 0x08, 0xec, 0x23, 0x39, 0x3b, 0x56, 0x09, 0xb1, 0x98, 0xe8, 0xd8, 0x19, 0x7d, 0x9e, 0x9a, - 0xe8, 0x37, 0xa2, 0xa3, 0x99, 0xb9, 0xbf, 0xcd, 0x73, 0xb9, 0xaf, 0xa2, 0x62, 0x66, 0x03, 0x7c, - 0xa0, 0xac, 0x2f, 0xa3, 0x22, 0x73, 0x0e, 0x7e, 0xa3, 0x27, 0x7a, 0xbf, 0x99, 0xed, 0x0c, 0x8f, - 0x28, 0xda, 0x2a, 0x58, 0x52, 0x2f, 0x13, 0x9d, 0x1f, 0xb3, 0xc6, 0xa9, 0x3b, 0x60, 0x04, 0xbb, - 0x1b, 0xe9, 0x32, 0x0d, 0x5f, 0x77, 0x23, 0x5d, 0xd2, 0xdb, 0x8d, 0xb6, 0x49, 0x77, 0x70, 0x46, - 0x3b, 0x72, 0x56, 0xbb, 0xde, 0x95, 0xfe, 0xb8, 0xb7, 0x2c, 0xca, 0xa1, 0x22, 0x73, 0xca, 0xf0, - 0xd5, 0xa8, 0x68, 0x77, 0x8b, 0x93, 0x39, 0xe6, 0x2d, 0xa1, 0x27, 0x16, 0x26, 0x54, 0x5c, 0x6e, - 0x4e, 0x07, 0xbc, 0x88, 0xad, 0x04, 0xde, 0x89, 0x8a, 0xe9, 0x07, 0x13, 0x3b, 0x94, 0x38, 0x5b, - 0xb1, 0x70, 0x12, 0xb1, 0xc6, 0xe6, 0xca, 0xc6, 0xa6, 0x96, 0x75, 0xf1, 0x68, 0x55, 0xb6, 0x10, - 0x88, 0x75, 0xf7, 0x12, 0x46, 0xb6, 0x33, 0xa5, 0x7b, 0xb7, 0x2a, 0xfd, 0x4a, 0xb0, 0xa7, 0x88, - 0xdb, 0x6c, 0x87, 0x42, 0x58, 0xca, 0xc7, 0x9b, 0x0f, 0x73, 0xb4, 0x43, 0xde, 0xb2, 0x9f, 0x49, - 0x9d, 0xb8, 0xcc, 0x08, 0xe0, 0x78, 0xc7, 0x9a, 0x8e, 0xbb, 0x6a, 0xe1, 0xac, 0x35, 0x19, 0x3f, - 0x96, 0x9e, 0xfc, 0x4a, 0x3f, 0x39, 0xe3, 0xaa, 0x95, 0xed, 0xd4, 0xf9, 0x1d, 0x68, 0x25, 0x03, - 0x60, 0xda, 0x49, 0x64, 0xef, 0xec, 0x34, 0x71, 0x75, 0x56, 0x65, 0x68, 0x8b, 0xb3, 0xf1, 0xf8, - 0x9f, 0xa3, 0x65, 0x6d, 0x3e, 0x7f, 0xa3, 0xef, 0x37, 0xc6, 0x93, 0xf1, 0x1b, 0x54, 0xe9, 0x59, - 0xc1, 0x80, 0x89, 0xa5, 0x26, 0x01, 0x7d, 0x34, 0xa2, 0x5d, 0x1f, 0x02, 0x2e, 0xa7, 0x9f, 0xb8, - 0xfe, 0x75, 0xcd, 0x32, 0x61, 0x49, 0x69, 0x7a, 0x59, 0xf9, 0x5f, 0xc8, 0x06, 0x32, 0xdf, 0x80, - 0x96, 0xb5, 0xb9, 0xf7, 0x13, 0x5a, 0x8b, 0x09, 0xad, 0x97, 0x88, 0x5b, 0x23, 0x85, 0x89, 0x6b, - 0xb3, 0xaa, 0x84, 0x29, 0x5e, 0xba, 0x9a, 0x9f, 0x22, 0x64, 0xe1, 0xb7, 0x93, 0x73, 0x11, 0x5f, - 0x50, 0xf1, 0x12, 0xaa, 0x4b, 0x08, 0x55, 0x62, 0x7a, 0x67, 0xe1, 0xe2, 0x13, 0x2c, 0x65, 0x7d, - 0xf4, 0x82, 0x3e, 0x7a, 0xd6, 0x24, 0x2b, 0xb3, 0x98, 0xfc, 0xeb, 0xf6, 0x5b, 0x30, 0x24, 0x96, - 0x0b, 0x75, 0x3e, 0x79, 0x22, 0xbb, 0x7a, 0x44, 0x56, 0xd9, 0xd9, 0xe0, 0xc4, 0x93, 0x8d, 0x7a, - 0x18, 0x1e, 0x40, 0x2b, 0xa9, 0x5a, 0xe8, 0x0c, 0x04, 0x5a, 0xbd, 0x81, 0x7d, 0x7e, 0xaa, 0xa8, - 0x6f, 0x57, 0xa5, 0xad, 0x42, 0x76, 0x9a, 0xf8, 0x6a, 0x16, 0x49, 0x7a, 0xf4, 0xdf, 0xff, 0x09, - 0x3c, 0x66, 0xa2, 0x1d, 0xba, 0xad, 0x0d, 0xdc, 0xd4, 0x8e, 0x8d, 0xeb, 0xa3, 0x17, 0x4c, 0x25, - 0xe6, 0x85, 0x0d, 0x1b, 0x52, 0x57, 0x55, 0x39, 0x9b, 0x16, 0x7f, 0x85, 0x43, 0x45, 0xa1, 0x8e, - 0xdd, 0x7e, 0x85, 0x04, 0xc5, 0x2b, 0x24, 0x21, 0x99, 0xe8, 0x91, 0x9a, 0x05, 0x17, 0x3b, 0x73, - 0x1a, 0x41, 0x0a, 0x02, 0x39, 0xf8, 0xca, 0x49, 0x2c, 0x0a, 0x8f, 0xf4, 0xa4, 0x46, 0x7a, 0xc0, - 0x38, 0x40, 0x66, 0x28, 0x7d, 0x5a, 0x9e, 0x02, 0xf4, 0x68, 0x7f, 0xaa, 0xf7, 0xaa, 0xd6, 0xdb, - 0xa7, 0x0d, 0x0f, 0x66, 0xc6, 0xe2, 0x5a, 0x7c, 0x28, 0x35, 0x36, 0x89, 0x39, 0x31, 0x79, 0x35, - 0x3a, 0x15, 0xbf, 0x4a, 0x1e, 0xfd, 0xbf, 0xa8, 0xf5, 0x0f, 0x98, 0x90, 0xcc, 0x67, 0xa7, 0x65, - 0xab, 0x0a, 0xfc, 0x59, 0x0e, 0x2d, 0xf9, 0x4d, 0xc0, 0xaf, 0x18, 0xef, 0xa1, 0x83, 0xd5, 0x5d, - 0x00, 0x98, 0xb8, 0xef, 0x7e, 0x2a, 0x48, 0x5f, 0x5e, 0x88, 0xc6, 0xd9, 0x0a, 0x1a, 0xb0, 0x6f, - 0x58, 0x43, 0x28, 0x9f, 0xbf, 0x55, 0x80, 0x8a, 0x83, 0x4a, 0x38, 0x78, 0xa0, 0x21, 0xd0, 0xea, - 0xf3, 0x1c, 0xa0, 0x9a, 0xc3, 0x87, 0x05, 0xaa, 0x34, 0x54, 0x20, 0xb0, 0x29, 0xe2, 0xff, 0xcd, - 0x51, 0x5d, 0x0b, 0x36, 0x76, 0xe3, 0x2d, 0x4b, 0x2c, 0x64, 0x1f, 0x1e, 0x48, 0x4f, 0x9d, 0x80, - 0x47, 0x70, 0xe6, 0x12, 0x23, 0xae, 0x6d, 0xdb, 0xea, 0x6a, 0x5d, 0x52, 0x53, 0xdd, 0x2e, 0xb9, - 0xae, 0x49, 0x7e, 0xa7, 0x1c, 0xe6, 0xf5, 0x8f, 0xf5, 0x6b, 0x63, 0x15, 0x44, 0xfe, 0x73, 0xca, - 0x75, 0xdb, 0xea, 0xea, 0x9b, 0xa4, 0xad, 0xbb, 0x5c, 0xf5, 0x4d, 0x75, 0xf2, 0x4e, 0x69, 0x2b, - 0xd6, 0x40, 0xea, 0xb7, 0x03, 0xfa, 0xdd, 0x48, 0xb7, 0xa9, 0x71, 0x24, 0x63, 0xf1, 0x2c, 0x62, - 0x78, 0x6f, 0x07, 0xeb, 0xdb, 0xa9, 0x5b, 0x74, 0x4b, 0x4c, 0x8c, 0x80, 0x77, 0x37, 0xf4, 0xb8, - 0xa6, 0x46, 0x71, 0xc3, 0x80, 0xcd, 0x64, 0x22, 0xc3, 0xc9, 0x58, 0x44, 0xbb, 0x7e, 0x2e, 0x3d, - 0x75, 0xc2, 0x90, 0x47, 0x70, 0x13, 0x52, 0x67, 0x6f, 0x6a, 0x7d, 0xd7, 0xe9, 0x7a, 0x83, 0x86, - 0x5c, 0x1b, 0xd3, 0x4f, 0x5c, 0xa7, 0x0e, 0x1e, 0x10, 0x2b, 0x90, 0x10, 0xd5, 0x7a, 0xc7, 0x01, - 0xe1, 0x6e, 0xa4, 0x5b, 0x66, 0xbb, 0x83, 0xff, 0x5b, 0x0e, 0xad, 0x6e, 0xeb, 0x68, 0x0d, 0xfb, - 0xde, 0x0d, 0xf8, 0x95, 0x46, 0x52, 0x36, 0xed, 0x42, 0x38, 0xd2, 0xfe, 0x82, 0x53, 0xa5, 0x29, - 0x4e, 0xc8, 0x8f, 0x23, 0x9e, 0xe0, 0xb4, 0xa1, 0xa9, 0x4c, 0xa4, 0x5f, 0x8b, 0x24, 0xe6, 0x12, - 0x23, 0x0d, 0xb2, 0x6b, 0xbb, 0xec, 0x6a, 0x7a, 0x67, 0x2e, 0x11, 0xad, 0x7b, 0x6b, 0x87, 0xb4, - 0xd5, 0xd5, 0x84, 0x1b, 0x6a, 0x41, 0x47, 0x8c, 0xf3, 0x95, 0xf1, 0xcc, 0x67, 0xa7, 0xcd, 0x51, - 0x34, 0xa7, 0x6d, 0x32, 0x36, 0x68, 0xce, 0x06, 0x76, 0x8c, 0xee, 0x46, 0xba, 0x0d, 0x72, 0x73, - 0x89, 0x11, 0x68, 0x96, 0x89, 0x78, 0x37, 0xd2, 0x05, 0xb9, 0xf5, 0xd1, 0x78, 0x32, 0x31, 0xa2, - 0x9d, 0x3b, 0x9c, 0x1e, 0x1b, 0x93, 0xf3, 0x57, 0x97, 0xbf, 0xca, 0xa1, 0x55, 0x41, 0xa5, 0xbd, - 0xd5, 0xed, 0x51, 0x76, 0xf8, 0xf7, 0x2a, 0xee, 0xd6, 0xf0, 0x5e, 0xf0, 0x39, 0x2d, 0xac, 0xf9, - 0xad, 0x2a, 0xed, 0x17, 0x72, 0x12, 0x45, 0x2f, 0xd8, 0x25, 0x52, 0x67, 0x8f, 0xe9, 0x83, 0x57, - 0xb1, 0xae, 0xd1, 0x75, 0x59, 0x8b, 0xdf, 0xa6, 0xf2, 0xc5, 0xd9, 0x59, 0x7d, 0xe0, 0x23, 0x7d, - 0x74, 0x40, 0x3b, 0x32, 0x66, 0x37, 0x56, 0xdc, 0x8d, 0x74, 0xa7, 0x67, 0xcf, 0xa7, 0xa6, 0x27, - 0x36, 0x6a, 0x7d, 0x87, 0x32, 0xea, 0x85, 0x76, 0x9f, 0xbf, 0x39, 0x19, 0x1b, 0xc0, 0xb2, 0x5c, - 0xdf, 0x99, 0xf4, 0xd5, 0x43, 0xc9, 0x58, 0xdc, 0xa4, 0x35, 0x97, 0xe8, 0x92, 0x73, 0xca, 0xe5, - 0xff, 0x8e, 0x43, 0xc5, 0x21, 0xe0, 0xe7, 0xe4, 0xe1, 0x72, 0x38, 0xeb, 0xff, 0xef, 0x38, 0x55, - 0xfa, 0x17, 0x9c, 0xc0, 0xa6, 0x88, 0x5f, 0x72, 0x74, 0x26, 0x11, 0xa3, 0xdc, 0x5c, 0x22, 0xea, - 0xdc, 0x2a, 0x35, 0x36, 0xba, 0x9c, 0xbb, 0x1a, 0x9d, 0xd2, 0x56, 0x57, 0xfd, 0xe6, 0x72, 0xa8, - 0x57, 0x05, 0xe9, 0x3a, 0x3a, 0xe5, 0xe8, 0xbe, 0x65, 0x48, 0xb7, 0x58, 0x9b, 0x4b, 0x18, 0xb3, - 0x91, 0xbc, 0x0a, 0x63, 0xc0, 0xcf, 0xbe, 0x2d, 0x6d, 0xa9, 0xdb, 0xb5, 0xa3, 0x61, 0x57, 0x63, - 0xd3, 0xf6, 0x86, 0x86, 0xba, 0x5a, 0x83, 0xe8, 0x5c, 0x62, 0xc4, 0xcc, 0xa1, 0xf5, 0x7e, 0x81, - 0xfb, 0x3e, 0x36, 0x00, 0x59, 0xe7, 0x12, 0x51, 0xb3, 0x1c, 0xfa, 0x26, 0xfd, 0xf1, 0x4b, 0x99, - 0x43, 0x2a, 0xa0, 0x99, 0x23, 0x2a, 0xb3, 0x8d, 0xe0, 0x3b, 0x11, 0x0a, 0xfb, 0xda, 0x14, 0xd9, - 0xed, 0x6f, 0x56, 0x42, 0xa5, 0x2b, 0xf2, 0x3b, 0xce, 0x36, 0x19, 0x18, 0xe0, 0xca, 0xc1, 0xe4, - 0x10, 0x05, 0x6d, 0x72, 0x44, 0x3f, 0x75, 0x8b, 0x35, 0xa6, 0xb3, 0xaf, 0xdd, 0xd8, 0xce, 0x4d, - 0x99, 0x7c, 0x7c, 0x17, 0x07, 0x46, 0xa4, 0x1d, 0xed, 0xcd, 0x41, 0xb7, 0x57, 0x21, 0x0a, 0x79, - 0x61, 0xcd, 0x2e, 0x55, 0xfa, 0xa5, 0xc0, 0xc2, 0xb1, 0x0c, 0x80, 0xa7, 0x01, 0xb5, 0xc3, 0x0e, - 0x1c, 0x4e, 0xc5, 0xaf, 0x6e, 0xde, 0x52, 0x47, 0x1f, 0xc8, 0x24, 0x9e, 0x0e, 0x95, 0xe0, 0x0b, - 0x64, 0x84, 0x37, 0x8c, 0x6b, 0x43, 0xc7, 0xb4, 0xd8, 0x41, 0xc0, 0xa8, 0xd4, 0xfa, 0xce, 0x68, - 0x89, 0xb8, 0xd6, 0x77, 0x8b, 0x46, 0xf6, 0x65, 0x69, 0xf3, 0x6e, 0x54, 0x4c, 0xad, 0xee, 0x72, - 0xa0, 0x55, 0xa1, 0x8a, 0x38, 0x31, 0x17, 0xb1, 0x70, 0xb1, 0x0a, 0x06, 0x4d, 0x69, 0x09, 0x59, - 0xd2, 0xed, 0xa9, 0x5b, 0x20, 0x60, 0xa7, 0x46, 0x7a, 0x7c, 0xee, 0xb6, 0xf4, 0x55, 0x35, 0xdd, - 0xff, 0xb9, 0x21, 0x03, 0x31, 0x79, 0xcb, 0xd2, 0x05, 0xa8, 0xc8, 0xec, 0x3d, 0xfe, 0xa7, 0xec, - 0x33, 0xf1, 0x35, 0x02, 0xe3, 0x30, 0x07, 0xbd, 0x08, 0x1b, 0xd9, 0x07, 0x81, 0xdd, 0xc6, 0x65, - 0x7e, 0x33, 0x08, 0x30, 0x98, 0x29, 0xeb, 0x50, 0x61, 0xc8, 0xb3, 0x57, 0x21, 0xaf, 0xff, 0x83, - 0xac, 0x52, 0xa1, 0x4a, 0x4f, 0x0a, 0x26, 0x50, 0x5c, 0x05, 0x74, 0x3c, 0xc1, 0x80, 0x1f, 0x1c, - 0x49, 0x18, 0x12, 0x26, 0x16, 0xef, 0x41, 0x8b, 0x31, 0x8b, 0xa3, 0x86, 0x4e, 0xb2, 0xd3, 0x12, - 0x80, 0x58, 0x6b, 0xcb, 0xae, 0x45, 0xe3, 0xb4, 0x6f, 0xb1, 0x3e, 0x41, 0x9e, 0xad, 0x05, 0xa8, - 0xd6, 0x77, 0xc6, 0x7c, 0x2c, 0x00, 0x16, 0x21, 0x28, 0x23, 0x90, 0x2a, 0x13, 0x5a, 0xfc, 0x1b, - 0x08, 0x51, 0x39, 0x01, 0xce, 0x2f, 0xf0, 0xa6, 0x4e, 0x5c, 0x04, 0x19, 0xb0, 0xb8, 0x12, 0x64, - 0x0b, 0xda, 0xaf, 0x27, 0xae, 0xcb, 0x4c, 0x62, 0x35, 0x16, 0x4b, 0x50, 0xb9, 0x60, 0xf5, 0x9f, - 0xf8, 0x84, 0x21, 0x6c, 0x29, 0x6c, 0x7f, 0xd1, 0x47, 0xad, 0x8f, 0x14, 0xa0, 0xc2, 0x5a, 0x77, - 0xd8, 0x5d, 0xeb, 0x0b, 0xb5, 0xf0, 0x27, 0x38, 0x54, 0xe8, 0xf5, 0x85, 0x5a, 0xac, 0x50, 0xa8, - 0x35, 0x07, 0x54, 0xa9, 0x53, 0x30, 0x81, 0xe2, 0x07, 0x10, 0x10, 0x2f, 0x75, 0xf6, 0xb4, 0xe9, - 0xe8, 0xb8, 0x75, 0xbb, 0x53, 0xda, 0xba, 0xab, 0x46, 0x6a, 0x74, 0x39, 0xe7, 0x12, 0x7d, 0xd0, - 0xc4, 0xb9, 0x44, 0x7f, 0x25, 0xc0, 0x1b, 0x1b, 0x6b, 0x2b, 0x9d, 0x5b, 0xb7, 0xef, 0xa8, 0xc5, - 0x18, 0x75, 0xf4, 0xa7, 0x05, 0x6c, 0x90, 0xeb, 0xb6, 0xb9, 0x76, 0x6c, 0x2b, 0xcf, 0x7c, 0x76, - 0x5a, 0x8f, 0x5c, 0x4d, 0x1f, 0x9c, 0x49, 0xc6, 0x8f, 0xa5, 0xc6, 0xae, 0xa5, 0xce, 0x9e, 0xae, - 0x90, 0xcd, 0x52, 0xf9, 0x3d, 0x50, 0x2d, 0x22, 0x7c, 0x31, 0xaf, 0x64, 0x9b, 0x40, 0xf1, 0x35, - 0xb3, 0x5a, 0x78, 0x6b, 0xb9, 0x8e, 0xd9, 0xca, 0xc6, 0x0d, 0x9b, 0xd3, 0x5f, 0xde, 0x4e, 0xdf, - 0xfe, 0xc2, 0x64, 0x75, 0xc9, 0x58, 0x7c, 0x03, 0xc4, 0xbd, 0xdd, 0x80, 0xd7, 0x7a, 0x6c, 0x20, - 0x7d, 0x73, 0x22, 0x79, 0xe7, 0xba, 0x6c, 0x92, 0x29, 0x8b, 0x2e, 0x41, 0x25, 0x44, 0x12, 0xff, - 0xc7, 0x1e, 0x01, 0x32, 0xfc, 0x56, 0x84, 0xf6, 0xf8, 0x5a, 0x95, 0x46, 0x78, 0xe7, 0x7c, 0x11, - 0xe3, 0xbe, 0x63, 0x81, 0xc5, 0x27, 0xf4, 0x93, 0x87, 0xcd, 0xb7, 0xce, 0xcb, 0x95, 0xfd, 0xe1, - 0x17, 0xd6, 0x2b, 0xfb, 0xc3, 0x2f, 0xae, 0xdf, 0xbf, 0x27, 0x54, 0x21, 0x33, 0x88, 0xfc, 0x07, - 0x88, 0xc7, 0x73, 0x71, 0x53, 0x20, 0xd8, 0xe6, 0x0e, 0x4b, 0x7e, 0xef, 0x36, 0xf3, 0x85, 0x83, - 0x42, 0x88, 0xa5, 0x95, 0x27, 0x59, 0x7c, 0x86, 0x7a, 0xf3, 0x98, 0x4f, 0xab, 0x91, 0xa7, 0x49, - 0x70, 0xc3, 0xee, 0xdc, 0xd2, 0xa3, 0xdd, 0xe9, 0x99, 0x19, 0x39, 0x4f, 0x36, 0xfe, 0x0d, 0x54, - 0xdc, 0x86, 0x7f, 0x34, 0xb9, 0x83, 0xcd, 0x4a, 0x98, 0x5e, 0xdd, 0x59, 0xab, 0x4a, 0x4f, 0x08, - 0x2c, 0x5c, 0x5c, 0x0e, 0x24, 0x52, 0x67, 0x27, 0xb5, 0x99, 0x13, 0x32, 0x9b, 0xc4, 0xff, 0x1e, - 0x95, 0xe0, 0x7e, 0x68, 0x70, 0x07, 0xc3, 0x3e, 0xe2, 0x0f, 0x05, 0xc2, 0x3a, 0x79, 0x77, 0xca, - 0x9e, 0x22, 0xd6, 0x01, 0x95, 0xf4, 0xe4, 0x57, 0xda, 0xa5, 0xc3, 0xda, 0xf0, 0x80, 0xde, 0x77, - 0x52, 0xeb, 0x3b, 0x84, 0x17, 0xfd, 0xf0, 0x00, 0xf8, 0x91, 0x25, 0x63, 0xc7, 0x93, 0xd3, 0xbd, - 0xda, 0xcc, 0x87, 0xf0, 0x26, 0xa7, 0x76, 0xfb, 0x73, 0x7d, 0xb4, 0xdf, 0x7c, 0xff, 0x0e, 0x0c, - 0xa1, 0xb2, 0x9d, 0x6a, 0xd9, 0xd0, 0x12, 0xc4, 0x83, 0xd7, 0x84, 0x12, 0x96, 0x3c, 0x1e, 0x25, - 0x14, 0xf2, 0xed, 0x6e, 0x55, 0xf8, 0xb1, 0x02, 0xc4, 0xfb, 0x28, 0xd8, 0xb9, 0x17, 0xd7, 0x95, - 0x99, 0x9d, 0xff, 0x95, 0x53, 0xa5, 0xbf, 0xe3, 0x84, 0x3c, 0x08, 0xe2, 0xff, 0xc4, 0xc1, 0x41, - 0x56, 0x7a, 0x72, 0x2c, 0x7d, 0xf3, 0x0e, 0xcc, 0xd6, 0xbb, 0x91, 0xee, 0x1a, 0xa9, 0xbe, 0xf6, - 0x6d, 0x57, 0x6d, 0xd3, 0x9b, 0x78, 0xea, 0x35, 0x48, 0x58, 0xd6, 0x1d, 0xc9, 0x7c, 0xd4, 0x93, - 0x9c, 0x3e, 0x9d, 0xbe, 0x79, 0x47, 0x8f, 0xf6, 0x6b, 0xb1, 0x2b, 0xda, 0xe4, 0x4c, 0x6a, 0xfa, - 0xc3, 0xd4, 0xe4, 0xa9, 0xb9, 0x44, 0xb4, 0x49, 0x96, 0x36, 0x6d, 0x72, 0x39, 0x77, 0x35, 0x6c, - 0x6f, 0x6c, 0xc2, 0xd8, 0xbb, 0x6a, 0xde, 0xd9, 0xf5, 0xe6, 0xf6, 0x1d, 0x32, 0xde, 0xaf, 0xbf, - 0xec, 0xca, 0x1c, 0x1e, 0xc2, 0x59, 0xae, 0x0f, 0x61, 0xae, 0x36, 0x3c, 0x08, 0x44, 0xe6, 0x12, - 0x51, 0xa6, 0x90, 0xdc, 0x7c, 0x50, 0xc2, 0xbd, 0xf2, 0x49, 0xce, 0x2d, 0xd2, 0xe6, 0x3a, 0x13, - 0x5d, 0x8b, 0xf6, 0x82, 0xd9, 0x46, 0xce, 0xd3, 0x56, 0xfe, 0x28, 0x87, 0x1e, 0x31, 0xc0, 0xdb, - 0xdc, 0xfb, 0x6b, 0xdc, 0x7e, 0xef, 0x3e, 0x9f, 0x37, 0xbc, 0x97, 0x2e, 0x96, 0xb7, 0x55, 0xa9, - 0x49, 0xc8, 0x8b, 0x20, 0xfe, 0x44, 0xeb, 0xbd, 0x96, 0x9a, 0x39, 0xa6, 0x1d, 0x8e, 0x43, 0x39, - 0xc9, 0xd8, 0x91, 0xcc, 0x99, 0x61, 0x3c, 0x88, 0x03, 0x27, 0x92, 0x33, 0x03, 0x73, 0x89, 0x91, - 0x6d, 0xbb, 0xdb, 0x43, 0xac, 0xb8, 0x3c, 0x97, 0x18, 0xd9, 0x40, 0x61, 0x72, 0x5e, 0x9a, 0x7c, - 0x0b, 0x5a, 0xd5, 0xde, 0xb1, 0xbb, 0xd5, 0xe7, 0x71, 0x35, 0x48, 0xa1, 0x90, 0xaf, 0xd9, 0xaf, - 0x78, 0xa9, 0x0f, 0x37, 0xd9, 0x37, 0x73, 0x12, 0xc5, 0x72, 0x7a, 0xc8, 0x04, 0x27, 0xa8, 0xa4, - 0x42, 0xae, 0x06, 0xb3, 0xcc, 0x64, 0x2c, 0x6e, 0x88, 0x6d, 0x72, 0x4e, 0x5e, 0xfe, 0x5d, 0xc4, - 0xef, 0x36, 0x4a, 0x6e, 0x70, 0x7b, 0x5a, 0xdc, 0xcd, 0x8a, 0xcb, 0x4b, 0x0f, 0xc8, 0xc8, 0x69, - 0x4a, 0x9e, 0x64, 0xf1, 0x21, 0x70, 0x2e, 0x32, 0xbb, 0xd6, 0x55, 0x2b, 0xe7, 0x41, 0x2b, 0x8b, - 0x3f, 0x8e, 0x1e, 0x75, 0x19, 0xaf, 0xc9, 0x51, 0xc3, 0x28, 0x7d, 0x39, 0xf6, 0x55, 0xf3, 0x2c, - 0x8e, 0xb3, 0xec, 0x1e, 0xc6, 0x59, 0xdc, 0x23, 0xc6, 0x13, 0x74, 0xec, 0x85, 0x10, 0xf3, 0x04, - 0xee, 0x47, 0x74, 0x67, 0x2d, 0xb0, 0x6e, 0xcb, 0xc1, 0xce, 0xba, 0xdc, 0x92, 0xaf, 0x2f, 0x5c, - 0xa0, 0x3b, 0xe4, 0x06, 0xfb, 0x25, 0x5d, 0x72, 0x4a, 0x49, 0x55, 0xe7, 0x15, 0xf4, 0xf2, 0x13, - 0x99, 0xe5, 0x96, 0xb6, 0xdc, 0x80, 0x0a, 0x0d, 0xb5, 0x90, 0x76, 0xc3, 0x8b, 0xaa, 0xb4, 0x51, - 0x30, 0x81, 0xe2, 0x0f, 0x0d, 0xad, 0x13, 0x5e, 0x44, 0x64, 0xca, 0x24, 0x06, 0xfe, 0x08, 0x84, - 0xab, 0x92, 0xcd, 0x0c, 0xfc, 0xeb, 0xa8, 0xd0, 0xdd, 0xde, 0xde, 0x7a, 0x00, 0xef, 0xd1, 0x60, - 0x0c, 0x20, 0xad, 0x35, 0x81, 0x22, 0x0f, 0xf6, 0x6b, 0x53, 0xfb, 0xcf, 0x1c, 0x1e, 0x92, 0xcd, - 0x54, 0xbe, 0x19, 0x2d, 0x72, 0x36, 0xec, 0x20, 0xec, 0xa4, 0xa4, 0x66, 0x87, 0x2a, 0xc9, 0x02, - 0xfe, 0x16, 0xb7, 0x60, 0x79, 0xf3, 0xfc, 0x51, 0x67, 0xc3, 0x0e, 0xe6, 0xd5, 0xaa, 0x41, 0x00, - 0xb2, 0x4f, 0xf8, 0x25, 0xe3, 0xaa, 0x7e, 0xf2, 0x32, 0x96, 0x5b, 0xa7, 0x8e, 0xdb, 0xe0, 0xac, - 0x9e, 0x89, 0x29, 0xe2, 0x82, 0xb6, 0x29, 0x6d, 0xd4, 0x36, 0x00, 0x05, 0x6d, 0x53, 0xda, 0x8c, - 0x82, 0xb6, 0x29, 0x6d, 0xdf, 0x45, 0x41, 0xdb, 0x94, 0x36, 0x7e, 0x1f, 0x5a, 0xb4, 0xb9, 0x61, - 0x07, 0xf1, 0xb7, 0x29, 0xa9, 0x51, 0x54, 0x69, 0xb7, 0x80, 0xbf, 0xc5, 0xf7, 0x80, 0xe6, 0xe6, - 0xef, 0xa2, 0x45, 0x96, 0x37, 0x7b, 0x62, 0x04, 0x6f, 0x58, 0x32, 0x2e, 0x81, 0xff, 0x38, 0xfb, - 0xb9, 0x45, 0x08, 0x54, 0xf4, 0x7b, 0x55, 0xfa, 0xcb, 0xac, 0xe7, 0x16, 0x5b, 0xa1, 0x58, 0x6a, - 0x08, 0x63, 0xee, 0xb1, 0xa6, 0x8f, 0x52, 0x87, 0x76, 0x67, 0xc3, 0x0e, 0x3c, 0xfc, 0x87, 0x7a, - 0xb5, 0x89, 0xd3, 0x60, 0x1a, 0x23, 0xba, 0xf0, 0x00, 0x88, 0xc2, 0xe6, 0xa6, 0x99, 0x3e, 0xfc, - 0x69, 0x7a, 0x2c, 0xaa, 0x0d, 0x93, 0x37, 0x10, 0xaf, 0xdf, 0x48, 0xcf, 0x1e, 0xd3, 0xa2, 0x58, - 0x62, 0x67, 0xe9, 0x67, 0xbd, 0xb9, 0xf8, 0xd7, 0x84, 0x63, 0x03, 0x80, 0xe1, 0xd8, 0xa0, 0xf4, - 0x7f, 0x52, 0xa0, 0x4a, 0xff, 0x8d, 0x70, 0xec, 0x6c, 0x04, 0x31, 0xc9, 0x01, 0x51, 0xe0, 0xd8, - 0x58, 0x63, 0x22, 0xf2, 0x45, 0x58, 0xf1, 0x7b, 0x14, 0x3f, 0xdc, 0xbe, 0xd2, 0xa2, 0xbd, 0xda, - 0xf0, 0x67, 0xd9, 0x4c, 0x35, 0x2f, 0x2f, 0x6d, 0x6c, 0xd8, 0x4e, 0x90, 0x52, 0x9f, 0x9d, 0x4f, - 0x4e, 0xdf, 0x36, 0xc1, 0x94, 0xeb, 0x63, 0x42, 0x77, 0x6e, 0x6a, 0xd1, 0x5e, 0x7d, 0xb4, 0xef, - 0x6e, 0xa4, 0xdb, 0xbd, 0x2f, 0x04, 0xa4, 0xb7, 0xd7, 0xef, 0xaa, 0xad, 0xdb, 0x26, 0xd5, 0xd7, - 0xea, 0xd1, 0xfe, 0xcc, 0x68, 0x04, 0xb2, 0x55, 0x62, 0x5a, 0x2c, 0x9d, 0xbb, 0x91, 0x6e, 0xed, - 0x4a, 0x37, 0x96, 0x20, 0xc8, 0x11, 0x0a, 0xb8, 0x27, 0xea, 0x23, 0xdd, 0xa6, 0xbd, 0x00, 0x3c, - 0x14, 0xd9, 0x42, 0x52, 0x23, 0x3d, 0x46, 0x9c, 0xdb, 0xe7, 0x83, 0x3f, 0x94, 0x97, 0xd1, 0x7a, - 0xc8, 0xab, 0xb2, 0x1b, 0x23, 0x17, 0x1a, 0x35, 0x97, 0xf3, 0x74, 0x12, 0x3f, 0xc0, 0x21, 0x14, - 0x22, 0xf2, 0x05, 0x96, 0xd8, 0xe8, 0x8d, 0xcf, 0x9c, 0x78, 0x05, 0x86, 0x44, 0x57, 0xd3, 0xa8, - 0x4a, 0x0d, 0x02, 0x93, 0x41, 0xac, 0xa1, 0x2f, 0x7a, 0x9e, 0x3d, 0x9d, 0xeb, 0x5a, 0x09, 0xad, - 0x49, 0xc6, 0xe2, 0x36, 0x69, 0xec, 0x2c, 0x99, 0x8c, 0x44, 0xac, 0x4a, 0xc6, 0xe2, 0x3f, 0xde, - 0xb0, 0x59, 0x66, 0xe8, 0xf1, 0xd7, 0x38, 0x54, 0xe4, 0xa5, 0xa5, 0x85, 0x4a, 0x97, 0x13, 0xdd, - 0x70, 0xfe, 0xea, 0x84, 0x55, 0xe9, 0xd7, 0x82, 0x85, 0x2f, 0x7a, 0x4d, 0xb9, 0xcd, 0xac, 0x8d, - 0x7e, 0xea, 0x22, 0x5b, 0x1b, 0x72, 0x55, 0x9e, 0x4a, 0x6a, 0xe5, 0xda, 0xed, 0xcf, 0xb5, 0xf8, - 0x05, 0x2d, 0x71, 0x50, 0x1f, 0xec, 0xc7, 0x6a, 0x31, 0xf1, 0xfa, 0x05, 0xa7, 0x6f, 0x87, 0x4d, - 0x92, 0x05, 0xc7, 0x71, 0x08, 0xc5, 0x5b, 0x21, 0x5b, 0x05, 0xf2, 0xed, 0xa8, 0xc8, 0xd7, 0x86, - 0xb9, 0xbb, 0x7f, 0x4f, 0x80, 0xc6, 0x56, 0xc9, 0xd1, 0x64, 0x5d, 0x06, 0x02, 0x38, 0xdf, 0x58, - 0x19, 0xd8, 0x23, 0xa7, 0xe1, 0x29, 0xac, 0xcb, 0x82, 0x65, 0x8a, 0xac, 0xa7, 0xcc, 0x89, 0x51, - 0xed, 0xe0, 0x90, 0x71, 0x60, 0x61, 0xe6, 0xe1, 0x7b, 0x39, 0xf4, 0x90, 0xcf, 0xef, 0x0b, 0x6f, - 0x0d, 0x34, 0xfb, 0xfc, 0x0d, 0xee, 0x50, 0x68, 0x5f, 0x20, 0xe8, 0xa5, 0x0e, 0xfe, 0x64, 0x63, - 0xce, 0x4d, 0x15, 0x7f, 0x96, 0x75, 0xb4, 0x05, 0x5d, 0xd1, 0x4e, 0x93, 0x2d, 0x85, 0x0b, 0xe0, - 0x30, 0xa2, 0x20, 0x31, 0xc2, 0xe3, 0x76, 0x72, 0x2e, 0x4d, 0xfe, 0x02, 0x87, 0x56, 0x85, 0xd8, - 0xa7, 0x48, 0x5d, 0xb5, 0xa1, 0xd2, 0x95, 0xc4, 0x58, 0x18, 0x52, 0xa5, 0x76, 0x21, 0x27, 0x51, - 0xfc, 0xa5, 0x55, 0x0b, 0xe3, 0xf1, 0x53, 0xd3, 0xa7, 0xc5, 0x55, 0x0b, 0xd7, 0x03, 0xcd, 0x6b, - 0x36, 0x98, 0x73, 0x90, 0xd0, 0x08, 0xe6, 0xd9, 0x2f, 0x54, 0x8b, 0x3e, 0x51, 0x3a, 0xd2, 0x63, - 0xd2, 0xa0, 0x5d, 0x94, 0x53, 0x1e, 0x96, 0x62, 0x1e, 0xf2, 0x85, 0x8c, 0xe7, 0x52, 0xe9, 0xdb, - 0x8f, 0x44, 0xe3, 0x2e, 0xac, 0x79, 0x5f, 0x95, 0xde, 0x15, 0x72, 0x53, 0xc5, 0xba, 0xbc, 0x23, - 0xc2, 0x3a, 0xad, 0x24, 0xe3, 0xc7, 0xa0, 0xe8, 0x4a, 0x47, 0x26, 0xd2, 0xaf, 0x8d, 0x7d, 0xe6, - 0x80, 0x2b, 0x0d, 0xb6, 0xc7, 0x7c, 0x72, 0x29, 0x93, 0xf7, 0x75, 0x7d, 0xa1, 0x6d, 0x01, 0xbf, - 0x2f, 0x1c, 0x08, 0x1a, 0x95, 0x79, 0x88, 0x54, 0x06, 0xde, 0xd7, 0xcd, 0x4e, 0x64, 0x47, 0x6d, - 0xfe, 0xba, 0x80, 0xad, 0xca, 0xac, 0x8b, 0xad, 0x16, 0x39, 0x24, 0xf9, 0xff, 0x83, 0x43, 0x10, - 0x26, 0xbb, 0xd6, 0x5c, 0x62, 0x7c, 0xfe, 0x47, 0xff, 0x6d, 0xd3, 0xbf, 0xe6, 0x1a, 0xa7, 0x4a, - 0xe3, 0x9c, 0x90, 0x95, 0x57, 0x3c, 0xc1, 0x99, 0x5a, 0x34, 0xbb, 0xea, 0xca, 0x81, 0xf7, 0xa5, - 0x3e, 0xee, 0x4a, 0x9d, 0x3d, 0x0d, 0xb2, 0x3d, 0xf5, 0xd0, 0x98, 0xbe, 0xac, 0x0d, 0x1d, 0xa1, - 0x2f, 0x48, 0x46, 0x4f, 0xb2, 0x11, 0xd1, 0xf5, 0xbe, 0xdb, 0xe9, 0xa3, 0x97, 0x93, 0xb1, 0x01, - 0x10, 0xe6, 0xb5, 0xa1, 0x29, 0xba, 0x53, 0x90, 0xc0, 0xd7, 0x66, 0x16, 0xa0, 0x56, 0xb1, 0xf0, - 0xba, 0x96, 0xb3, 0xea, 0xc9, 0x7b, 0x98, 0x25, 0xb3, 0x23, 0xa4, 0x04, 0x89, 0x41, 0x04, 0xee, - 0x40, 0x90, 0xcb, 0xf8, 0xb9, 0xa9, 0x39, 0xce, 0x32, 0x50, 0x4a, 0x07, 0x4d, 0x96, 0x73, 0x73, - 0xf0, 0x5d, 0x1c, 0x5a, 0xd6, 0xa2, 0x1c, 0x68, 0x70, 0xfb, 0x82, 0xf4, 0xee, 0x43, 0xce, 0x3d, - 0xcf, 0x2d, 0xca, 0x01, 0xc2, 0x07, 0x88, 0x8f, 0x8b, 0x81, 0x2c, 0xbe, 0x61, 0xbc, 0xca, 0xde, - 0x95, 0x51, 0x2f, 0x1b, 0x57, 0x4f, 0x92, 0xb1, 0x41, 0x6d, 0xea, 0x50, 0xea, 0x62, 0x97, 0x98, - 0x89, 0xf4, 0x27, 0x63, 0x91, 0xb9, 0x44, 0x54, 0x4c, 0x47, 0x7a, 0xb5, 0x73, 0x87, 0x29, 0x57, - 0x05, 0x63, 0xdb, 0xd4, 0xa1, 0x8c, 0x7a, 0x59, 0x36, 0x48, 0xc1, 0xfb, 0xfd, 0x01, 0x4f, 0x8b, - 0x12, 0xdc, 0x1c, 0x74, 0xb7, 0xef, 0x6d, 0x70, 0x87, 0xf7, 0x92, 0xbb, 0x10, 0x45, 0x70, 0x5b, - 0x2f, 0x3b, 0x4d, 0xac, 0xa3, 0x8f, 0x4f, 0xcf, 0x0e, 0x53, 0x43, 0xcb, 0xe4, 0x1d, 0xed, 0xcc, - 0x38, 0xa8, 0x73, 0xb9, 0x9c, 0x7c, 0x3d, 0xe6, 0x7b, 0xeb, 0x77, 0x7b, 0x42, 0xeb, 0xa9, 0xb9, - 0x69, 0x3d, 0xd0, 0x93, 0xb3, 0xe9, 0xf2, 0x1f, 0x71, 0xa8, 0xd0, 0x1f, 0xf0, 0x82, 0x8d, 0x0b, - 0xce, 0xc5, 0x7b, 0x39, 0x55, 0xea, 0xe2, 0x04, 0x13, 0x2c, 0x76, 0xd0, 0xb2, 0x89, 0x1d, 0xab, - 0xd2, 0xa1, 0x0d, 0x9d, 0xd4, 0x22, 0x89, 0xea, 0x6d, 0x52, 0x63, 0x53, 0x9d, 0xbc, 0xab, 0xae, - 0xc9, 0x59, 0x5b, 0xe9, 0x78, 0x7b, 0xbb, 0xbc, 0xa5, 0x4e, 0xbe, 0x1b, 0xe9, 0x66, 0xa0, 0xda, - 0xd0, 0xa7, 0xfa, 0x68, 0xbf, 0x36, 0x3a, 0x0e, 0x16, 0x32, 0x87, 0xab, 0xbe, 0xb6, 0xae, 0xa1, - 0xae, 0xbe, 0xb6, 0xae, 0xbe, 0x69, 0x97, 0x73, 0xeb, 0x0e, 0x8c, 0xe7, 0x48, 0x1d, 0xbd, 0x96, - 0xfa, 0x8c, 0xde, 0x3c, 0x33, 0xf5, 0x43, 0x30, 0x9e, 0xc9, 0x66, 0x05, 0xf8, 0x8b, 0x1c, 0x5a, - 0xea, 0x21, 0x3b, 0x21, 0x3d, 0x0b, 0xcf, 0xf1, 0x74, 0x72, 0xd9, 0xf6, 0xcb, 0x86, 0xa0, 0xd2, - 0xee, 0xf6, 0x79, 0xe1, 0xd8, 0x90, 0xe6, 0x14, 0x9b, 0x4c, 0xff, 0x2d, 0x4b, 0xcc, 0x48, 0x0c, - 0xe1, 0x0d, 0x7d, 0xe6, 0xc3, 0xdc, 0xed, 0x36, 0x19, 0x8b, 0xb3, 0x9b, 0xb8, 0x7e, 0x0a, 0x0b, - 0x46, 0x94, 0xeb, 0x4e, 0x4f, 0x60, 0xbd, 0x92, 0x9c, 0x47, 0xc8, 0x94, 0x3a, 0xdf, 0xc7, 0xa1, - 0x15, 0x3e, 0x9b, 0x0e, 0x5b, 0x5a, 0x4a, 0xaa, 0x5a, 0x96, 0x5b, 0xd5, 0x6c, 0x4d, 0x17, 0x3c, - 0xf0, 0xb2, 0xb2, 0x8b, 0xcf, 0x83, 0x3e, 0x44, 0x5d, 0x74, 0x0c, 0x71, 0xc3, 0xbc, 0xe3, 0x93, - 0x89, 0xd0, 0x4b, 0x8b, 0x72, 0x56, 0xc6, 0xb2, 0x7f, 0xbf, 0x18, 0xad, 0xce, 0xdb, 0x1f, 0xfc, - 0x87, 0x1c, 0x5a, 0xda, 0xae, 0x04, 0x7d, 0x01, 0x2f, 0x3d, 0xf2, 0x25, 0xd6, 0x75, 0x0a, 0x12, - 0xfd, 0xb0, 0x26, 0xcd, 0x6e, 0xc2, 0xe3, 0x71, 0x62, 0x96, 0xd5, 0x08, 0x41, 0x64, 0x82, 0xf1, - 0x4f, 0x47, 0x0f, 0x6a, 0x67, 0x6f, 0xce, 0x25, 0x46, 0x36, 0x56, 0x3a, 0xc4, 0x4a, 0xc7, 0x0b, - 0x95, 0x8e, 0x17, 0x2b, 0x1d, 0x3f, 0xae, 0x74, 0xbc, 0x54, 0xe9, 0x78, 0xb9, 0xd2, 0xf1, 0x4a, - 0xa5, 0xe3, 0xd5, 0x4a, 0xc7, 0xc6, 0x0d, 0x95, 0x8e, 0x8d, 0x1b, 0x2b, 0x1d, 0x1b, 0xc5, 0x4a, - 0x87, 0xf8, 0x62, 0xa5, 0xe3, 0x85, 0x97, 0x2a, 0x1d, 0x2f, 0xbe, 0x52, 0xe9, 0x78, 0x69, 0x03, - 0x56, 0xe9, 0x68, 0xb9, 0xfc, 0xc7, 0x8b, 0x50, 0x51, 0x50, 0xf1, 0x2b, 0xfb, 0x36, 0xb5, 0xba, - 0x9b, 0xa9, 0x72, 0xd4, 0xb3, 0x48, 0x95, 0x22, 0x8b, 0x04, 0x0b, 0x2e, 0xfe, 0x7d, 0x01, 0xdd, - 0xe7, 0x48, 0xef, 0xeb, 0x17, 0x0f, 0xa7, 0xa7, 0x0e, 0xe5, 0x56, 0xa6, 0x7e, 0x7b, 0x93, 0x6b, - 0xd3, 0x3b, 0xbb, 0xa4, 0xfa, 0xda, 0x5d, 0xd2, 0x8e, 0xa6, 0xed, 0xbb, 0xe4, 0xba, 0xfa, 0xba, - 0xb7, 0xb1, 0xa2, 0x1f, 0x19, 0x49, 0x5d, 0xb8, 0x9c, 0x9e, 0x3d, 0xac, 0x8f, 0x5e, 0x48, 0xc6, - 0x8e, 0xb3, 0xa4, 0x5e, 0x73, 0x30, 0x99, 0xb6, 0x49, 0xf5, 0x3b, 0xa4, 0xad, 0xf3, 0x64, 0x1b, - 0xb0, 0x65, 0xab, 0x75, 0x35, 0x4a, 0x35, 0x5b, 0xeb, 0x76, 0xcd, 0x9f, 0x1b, 0x8e, 0x16, 0xe6, - 0x23, 0xb0, 0xce, 0xd8, 0x02, 0x48, 0x0b, 0xec, 0x75, 0x67, 0x09, 0xdd, 0x8d, 0x74, 0xa7, 0x8f, - 0x5e, 0xc6, 0x52, 0xfa, 0x50, 0x37, 0x66, 0xdf, 0x64, 0x71, 0x24, 0x63, 0xf1, 0x79, 0x9a, 0x1a, - 0xd5, 0x46, 0xc7, 0xe9, 0xed, 0xd8, 0x99, 0x33, 0x99, 0x8f, 0xce, 0x69, 0xbd, 0xbd, 0xe9, 0x5b, - 0x5f, 0xe0, 0xe1, 0x3c, 0xd8, 0xab, 0x1d, 0xfa, 0x32, 0x19, 0x3b, 0x0a, 0xd7, 0xf7, 0x08, 0xbf, - 0xbc, 0xae, 0x8f, 0x5e, 0xd0, 0x86, 0x07, 0xb5, 0xeb, 0x87, 0xf4, 0x68, 0xbf, 0x3e, 0xda, 0xc7, - 0xd6, 0x0f, 0x0f, 0x91, 0xd5, 0xff, 0x65, 0x7f, 0xff, 0x28, 0x7a, 0x38, 0x8f, 0x03, 0x25, 0xff, - 0x7b, 0xb4, 0xba, 0x35, 0x17, 0x6c, 0x9e, 0xdc, 0x93, 0x67, 0x7f, 0xf3, 0x63, 0x88, 0x55, 0xec, - 0x29, 0x00, 0xf8, 0x8f, 0x91, 0x13, 0xc8, 0x9c, 0x43, 0xfa, 0x64, 0xec, 0x88, 0xab, 0x56, 0xce, - 0x4f, 0x85, 0xff, 0x15, 0x7a, 0xd8, 0x9e, 0xa0, 0x30, 0xa7, 0xf5, 0xc4, 0x86, 0x97, 0x2f, 0x5d, - 0xe4, 0xd9, 0x62, 0xa9, 0x71, 0x3e, 0x1f, 0x22, 0x16, 0x4e, 0x72, 0x5e, 0x13, 0x69, 0x53, 0xa5, - 0x0f, 0x58, 0xd7, 0xc0, 0xf7, 0xa9, 0xd7, 0xdd, 0xd8, 0xb8, 0x7e, 0x7a, 0xd0, 0xbc, 0x39, 0xac, - 0xdd, 0x38, 0x9f, 0x8c, 0x0f, 0x6a, 0x1f, 0x7e, 0x9a, 0x8c, 0x7d, 0x0a, 0x9e, 0x82, 0xa6, 0x8f, - 0x20, 0x7c, 0x6a, 0x97, 0x06, 0x20, 0xa6, 0x0d, 0xce, 0x02, 0xae, 0x84, 0xb1, 0x01, 0xfd, 0xf4, - 0x14, 0xe6, 0xe6, 0xf3, 0xbc, 0x11, 0x48, 0x75, 0xea, 0xc5, 0x7f, 0x2a, 0x9d, 0x7a, 0xc9, 0x9f, - 0x4a, 0xa7, 0x5e, 0xfa, 0xe7, 0xd7, 0xa9, 0x97, 0xfd, 0x43, 0xd4, 0xa9, 0xff, 0x8e, 0xcb, 0xab, - 0x53, 0x43, 0x84, 0xa3, 0x69, 0x4e, 0x95, 0x6e, 0xe7, 0xd7, 0xa9, 0x2f, 0xe6, 0xd7, 0xa9, 0xbf, - 0x7b, 0x0d, 0xfa, 0x1b, 0xeb, 0xc3, 0xf7, 0xa3, 0xe5, 0x16, 0xfd, 0xb9, 0xb5, 0xdc, 0x0e, 0x56, - 0xc9, 0x45, 0xf7, 0x50, 0x72, 0x5f, 0x57, 0xa5, 0x6a, 0x56, 0xc9, 0xad, 0x7a, 0x20, 0x25, 0x97, - 0xd5, 0x56, 0xbb, 0x73, 0xc5, 0x89, 0xe2, 0xfb, 0x16, 0x27, 0x88, 0x9f, 0x66, 0xb6, 0x38, 0xf1, - 0x4c, 0x5e, 0x71, 0x42, 0x9b, 0x8e, 0xa7, 0x27, 0x27, 0xf3, 0x0b, 0x12, 0x36, 0x61, 0xdc, 0xd4, - 0x5f, 0x97, 0xe7, 0x13, 0xc6, 0x4d, 0xfd, 0xf5, 0xa9, 0x05, 0xf5, 0xd7, 0x7c, 0xda, 0xe9, 0x54, - 0x3e, 0xed, 0xb4, 0x84, 0x68, 0xa7, 0xdd, 0x9c, 0x2a, 0xfd, 0x3e, 0x8f, 0x7a, 0xda, 0xf2, 0x4d, - 0xd5, 0x53, 0x73, 0x26, 0x80, 0x9e, 0xaa, 0x0d, 0xf7, 0x98, 0x2e, 0xe9, 0xf4, 0x28, 0x3a, 0x36, - 0x41, 0xc3, 0x4b, 0x8d, 0xcc, 0xaf, 0xad, 0xda, 0x2c, 0x09, 0x2b, 0xfe, 0x14, 0x96, 0x84, 0x23, - 0x79, 0xf5, 0x63, 0x38, 0x14, 0xff, 0xa5, 0x2a, 0xbd, 0x93, 0x4f, 0x3f, 0xae, 0xfd, 0x06, 0xfa, - 0xf1, 0x81, 0x0e, 0x7f, 0xd8, 0x47, 0xa5, 0x12, 0x72, 0x41, 0xf0, 0xbe, 0xd5, 0xe3, 0x55, 0x7f, - 0x62, 0xf5, 0x38, 0x84, 0x0a, 0xb1, 0x86, 0x87, 0x57, 0x1e, 0x75, 0x27, 0x27, 0x16, 0x15, 0x13, - 0x28, 0xbe, 0x99, 0x9a, 0x1e, 0x4a, 0xcf, 0x1e, 0x76, 0xd4, 0xb8, 0x43, 0xca, 0x4b, 0x2f, 0x3a, - 0x52, 0x89, 0x93, 0xa9, 0x8b, 0x5d, 0x10, 0xc4, 0xd5, 0x8a, 0x6f, 0x42, 0x56, 0x27, 0x5e, 0x94, - 0xc4, 0x55, 0x27, 0x73, 0x62, 0x56, 0x8b, 0x5f, 0xc1, 0xcb, 0xf1, 0x56, 0x6f, 0x7a, 0xf6, 0xf0, - 0xc6, 0x97, 0xb6, 0xd4, 0x60, 0x19, 0xc8, 0xa4, 0x99, 0x5f, 0x39, 0xe5, 0xbf, 0x63, 0xe5, 0xf4, - 0x0a, 0x87, 0x0a, 0x43, 0x4a, 0xab, 0xe2, 0x09, 0x07, 0x82, 0xa5, 0x0f, 0x13, 0x86, 0xb3, 0xf1, - 0x3e, 0x2e, 0xb2, 0xac, 0x6b, 0xa4, 0x79, 0xc0, 0xf5, 0x16, 0x7a, 0xc3, 0xa0, 0x23, 0xbe, 0x49, - 0x25, 0x2d, 0x62, 0x30, 0x33, 0xa0, 0xa9, 0x91, 0x1e, 0xd8, 0x7d, 0x40, 0x95, 0xa9, 0xc4, 0x02, - 0x49, 0xff, 0x80, 0xf5, 0x46, 0xbd, 0xe1, 0xc6, 0x0c, 0x79, 0x01, 0x55, 0x36, 0x69, 0xfe, 0x83, - 0xd0, 0xa2, 0x19, 0xc5, 0x70, 0xf5, 0x3f, 0x4c, 0xc5, 0x70, 0xcd, 0x6b, 0xa8, 0xc4, 0x36, 0x34, - 0x0f, 0xe2, 0x06, 0x5c, 0xf6, 0x9f, 0x38, 0xb4, 0x8c, 0x76, 0x22, 0xff, 0x2a, 0x5a, 0xd2, 0xa2, - 0x1c, 0x30, 0x05, 0x6b, 0x12, 0x3c, 0x12, 0x20, 0xe2, 0x63, 0xd0, 0x2f, 0xe0, 0xbe, 0x37, 0xdb, - 0x8b, 0xf9, 0x1d, 0x31, 0x83, 0xca, 0x90, 0xce, 0x6f, 0x41, 0x45, 0x2d, 0xca, 0x81, 0x46, 0xc5, - 0x13, 0x54, 0xc2, 0x54, 0x30, 0x26, 0x5e, 0x9d, 0x16, 0x54, 0x7c, 0xaa, 0x45, 0x39, 0xc0, 0x8e, - 0x48, 0xf9, 0x6e, 0xb2, 0x70, 0xc0, 0x3d, 0xbb, 0x42, 0xb6, 0x30, 0x29, 0xb1, 0x06, 0x72, 0x1c, - 0x47, 0xc5, 0x61, 0x93, 0x18, 0x40, 0x09, 0x31, 0xad, 0xf7, 0xda, 0x42, 0xc4, 0x00, 0xb3, 0xec, - 0x6f, 0x39, 0x54, 0x64, 0xf2, 0x4a, 0xfe, 0x67, 0x68, 0x19, 0x30, 0x3d, 0xa3, 0x91, 0x3f, 0x54, - 0xa5, 0x32, 0xc1, 0x80, 0x89, 0x8f, 0x01, 0x7f, 0xcc, 0x6d, 0xa6, 0x81, 0xc1, 0xbf, 0x4c, 0x59, - 0x33, 0xa3, 0x01, 0x90, 0x98, 0x5f, 0x16, 0x54, 0x2c, 0x02, 0x22, 0xda, 0xf0, 0x80, 0x6c, 0x41, - 0x79, 0x0f, 0xcd, 0x48, 0x64, 0xab, 0x45, 0x56, 0xcc, 0x0d, 0x0b, 0x2a, 0xfe, 0x18, 0x32, 0xd2, - 0x5b, 0x01, 0x0d, 0x3b, 0x6a, 0xb6, 0xba, 0x9c, 0xbb, 0x5c, 0xdb, 0xa4, 0xcd, 0x75, 0xeb, 0x1b, - 0x64, 0xd7, 0x4e, 0xa9, 0xa9, 0x8e, 0x7e, 0x6d, 0x93, 0xe4, 0x2d, 0x75, 0x4d, 0xf0, 0x51, 0x21, - 0x5b, 0x14, 0xca, 0xfe, 0x73, 0x15, 0x2a, 0xa5, 0x17, 0xd0, 0x19, 0xcf, 0xe7, 0xed, 0x10, 0x40, - 0xe4, 0xd7, 0x84, 0xc5, 0x7b, 0xdc, 0xad, 0x4a, 0x6d, 0x60, 0x9f, 0xdf, 0x16, 0x90, 0xc0, 0xa9, - 0x4a, 0x6f, 0x08, 0xb9, 0xa9, 0xe2, 0x8f, 0xc8, 0x85, 0xbb, 0x2a, 0x6f, 0x60, 0x9f, 0xbf, 0x0a, - 0x6e, 0xe1, 0x79, 0x2b, 0x8d, 0xeb, 0xdd, 0x24, 0x4e, 0x13, 0x71, 0x05, 0xa3, 0x97, 0x0b, 0x72, - 0xf3, 0xf3, 0xfb, 0x50, 0xa1, 0xb2, 0xbf, 0xdd, 0xed, 0xf7, 0x2a, 0x34, 0x7c, 0x18, 0xd8, 0x9e, - 0x4c, 0xa0, 0xb8, 0xd5, 0xf8, 0x55, 0x09, 0xbe, 0x5b, 0xa9, 0xc9, 0x53, 0xfa, 0x17, 0x27, 0xe6, - 0x12, 0x51, 0xd6, 0xdd, 0x23, 0xe8, 0xf6, 0x7b, 0x03, 0x6d, 0x95, 0x8e, 0x56, 0xc5, 0x1d, 0x0a, - 0x57, 0xed, 0x73, 0x87, 0xc2, 0x4a, 0xa5, 0xa3, 0x2d, 0x10, 0x0a, 0x57, 0xb5, 0x07, 0xbc, 0xa1, - 0x4a, 0x47, 0x7b, 0xd0, 0x17, 0xc0, 0xfb, 0x87, 0x6c, 0xd2, 0xe5, 0x7f, 0x83, 0xf8, 0x36, 0xf7, - 0xfe, 0xba, 0xb6, 0xf6, 0xf0, 0x81, 0x9a, 0x8e, 0xd6, 0x16, 0x08, 0x1c, 0x4d, 0x1d, 0xa2, 0x89, - 0x7f, 0x47, 0x9e, 0x64, 0x71, 0x63, 0x9b, 0x7b, 0x7f, 0x95, 0x82, 0x81, 0x55, 0xbb, 0x3b, 0x5a, - 0x5b, 0xaa, 0xbc, 0x04, 0x5c, 0xa9, 0x0d, 0x9c, 0xd0, 0xaf, 0x8d, 0x51, 0xaf, 0x37, 0xc2, 0xc7, - 0x2d, 0x7f, 0xa1, 0x3c, 0x64, 0xf8, 0xdf, 0xa2, 0x15, 0x21, 0xa3, 0x1f, 0x6a, 0x95, 0x56, 0xf7, - 0x01, 0xaa, 0x4b, 0x11, 0x49, 0x32, 0x2b, 0x49, 0xfc, 0x29, 0xb5, 0x4c, 0x81, 0xd7, 0xec, 0xf0, - 0xa0, 0x76, 0x69, 0x24, 0x73, 0x62, 0x16, 0x9c, 0xa7, 0xf0, 0xde, 0x74, 0xf5, 0xa8, 0xd6, 0x77, - 0x49, 0x9b, 0xa4, 0x4e, 0x77, 0xa6, 0x98, 0xbf, 0x71, 0x03, 0xf8, 0x17, 0xca, 0x59, 0xf4, 0xf8, - 0xff, 0x3f, 0x87, 0x56, 0x9b, 0xa0, 0x1d, 0x7e, 0xbf, 0xa2, 0x78, 0x15, 0x2f, 0xb9, 0x92, 0x06, - 0x7a, 0x56, 0x94, 0x53, 0xa5, 0x3e, 0x4e, 0xc8, 0x8f, 0x23, 0x06, 0x98, 0xf1, 0xee, 0xa0, 0x09, - 0x55, 0x61, 0x5f, 0x9b, 0x52, 0x09, 0xfe, 0x57, 0x50, 0x8b, 0xd4, 0x44, 0xbf, 0xf6, 0x55, 0x2f, - 0xd4, 0x11, 0xb3, 0x26, 0x6a, 0x37, 0x3c, 0x9f, 0x9a, 0x9e, 0x48, 0x7d, 0x12, 0xcf, 0x9c, 0xfa, - 0x5c, 0xbb, 0x34, 0xa2, 0x5d, 0x3f, 0x06, 0x35, 0xd4, 0x86, 0x07, 0xd3, 0x1f, 0x7d, 0x36, 0x5f, - 0xf5, 0xf3, 0xd7, 0x83, 0xff, 0xaf, 0x1c, 0x7a, 0xca, 0x4a, 0x09, 0xfb, 0x5a, 0x7d, 0xbf, 0x21, - 0x7b, 0x50, 0xd3, 0xde, 0xa0, 0xe2, 0xde, 0x1b, 0x68, 0xf5, 0x52, 0x65, 0xee, 0x13, 0x4e, 0x95, - 0x2e, 0x73, 0xc2, 0xc2, 0xb8, 0xe2, 0x41, 0x8e, 0x6d, 0x96, 0x85, 0x51, 0x15, 0xde, 0x1b, 0x54, - 0x42, 0x18, 0xa5, 0x32, 0x7d, 0xf5, 0x8a, 0x36, 0x74, 0x8c, 0x4e, 0x67, 0x72, 0x55, 0x24, 0x73, - 0xba, 0x8f, 0x18, 0x4d, 0x8c, 0xe6, 0x31, 0x17, 0xa8, 0x32, 0x87, 0x87, 0x92, 0x33, 0x83, 0x58, - 0xf1, 0x26, 0xed, 0x4c, 0x9d, 0xf9, 0x4a, 0xeb, 0x3b, 0xa4, 0x4f, 0x1d, 0x87, 0x91, 0x82, 0x18, - 0x61, 0x99, 0x53, 0x9f, 0xb3, 0xce, 0x41, 0x3f, 0xde, 0x20, 0x2f, 0x5c, 0x49, 0xac, 0x96, 0x3c, - 0x1e, 0x6a, 0xf1, 0xb5, 0xd7, 0x07, 0xbc, 0x4a, 0xe8, 0x6d, 0x5f, 0x78, 0xef, 0xd6, 0x80, 0xc7, - 0xdd, 0xda, 0x18, 0x0e, 0x04, 0xdd, 0xcd, 0xa0, 0x38, 0x16, 0x82, 0xab, 0xdc, 0xfc, 0x58, 0xe2, - 0x7a, 0xb8, 0x8d, 0xa0, 0x8f, 0xf6, 0xeb, 0xa3, 0xd7, 0xb4, 0xd1, 0xeb, 0xc0, 0x0e, 0xf1, 0xb6, - 0x43, 0xda, 0xc0, 0x56, 0x08, 0xae, 0xd6, 0xce, 0x4f, 0x8b, 0x3f, 0xcf, 0xa1, 0xc7, 0x6c, 0xa9, - 0xe0, 0x79, 0xd4, 0x10, 0xf0, 0x86, 0x68, 0x34, 0x08, 0xaf, 0x2a, 0xb9, 0x85, 0xf9, 0x70, 0xc4, - 0x4d, 0x50, 0x97, 0x96, 0x8e, 0xdd, 0x4a, 0x15, 0x68, 0x3b, 0x8e, 0xfa, 0xc6, 0x64, 0xec, 0x68, - 0xe6, 0xdc, 0xf9, 0x5a, 0xb7, 0xd2, 0x16, 0xf0, 0x37, 0x2a, 0x61, 0x08, 0xce, 0x92, 0x1a, 0xe9, - 0x69, 0x08, 0x78, 0x73, 0x6b, 0x09, 0x55, 0x9c, 0xaf, 0x00, 0x2c, 0x25, 0x3e, 0xe1, 0x6b, 0xf6, - 0x07, 0x82, 0x8a, 0x49, 0x2f, 0xc4, 0xf4, 0x2c, 0x51, 0xec, 0x0a, 0x6b, 0xde, 0x50, 0xa5, 0xd7, - 0x85, 0x85, 0xf0, 0xc4, 0xb5, 0x50, 0x51, 0xab, 0x52, 0xc6, 0x45, 0xaf, 0xf4, 0xe4, 0x58, 0x6a, - 0xf2, 0x94, 0xbc, 0x50, 0x66, 0x2c, 0xa2, 0x3c, 0x1c, 0x68, 0x69, 0x0a, 0x84, 0xdd, 0xad, 0x3b, - 0xfc, 0x41, 0xc5, 0xed, 0x3d, 0xe0, 0x24, 0x9e, 0x58, 0xc8, 0xba, 0x44, 0x90, 0x2f, 0x5d, 0xfc, - 0x71, 0xa0, 0xa5, 0x2a, 0x8c, 0xa1, 0x55, 0x1d, 0x00, 0xae, 0x22, 0x4f, 0x14, 0x56, 0x02, 0x5b, - 0x75, 0x50, 0xa0, 0x83, 0xca, 0x31, 0x23, 0x3d, 0xd4, 0xf3, 0x21, 0x1f, 0x2d, 0xfe, 0x0f, 0x1c, - 0x7a, 0xbc, 0xcd, 0xbd, 0x9f, 0x4d, 0x68, 0x50, 0x82, 0x1e, 0xc5, 0x1f, 0xc6, 0x33, 0xa7, 0x98, - 0xd4, 0xe4, 0x43, 0x4e, 0x95, 0x86, 0x38, 0x61, 0x7e, 0x3c, 0x31, 0x88, 0x99, 0x9f, 0xbd, 0x4a, - 0xed, 0x66, 0x6a, 0x25, 0x05, 0xd1, 0xb5, 0x40, 0xa4, 0x57, 0xca, 0xb8, 0x22, 0xd3, 0x66, 0x25, - 0xcd, 0x85, 0x80, 0x57, 0x0d, 0xc1, 0xd1, 0x27, 0x2e, 0xc1, 0x3a, 0xd2, 0xfa, 0xce, 0x68, 0x5d, - 0xa3, 0xfa, 0xc4, 0x47, 0xac, 0xa3, 0xae, 0x3c, 0x7f, 0x75, 0x78, 0x95, 0x43, 0x8f, 0x30, 0xbc, - 0x81, 0x24, 0x9b, 0x2f, 0xd5, 0x95, 0xd4, 0xfc, 0x4a, 0x95, 0xde, 0x13, 0xf2, 0x22, 0x88, 0x4e, - 0x1b, 0x0f, 0x83, 0x96, 0x10, 0x16, 0x66, 0x6b, 0x43, 0x5e, 0x4e, 0x06, 0x66, 0xe8, 0xd4, 0x55, - 0x55, 0xce, 0x4b, 0x9a, 0xff, 0x9f, 0x39, 0xf4, 0x04, 0xa6, 0xd2, 0xec, 0xc3, 0x3b, 0xac, 0x42, - 0x2e, 0x1c, 0xca, 0x4a, 0x5b, 0xa0, 0xd3, 0xdd, 0x6a, 0xde, 0x0a, 0x2e, 0xa9, 0x39, 0xc1, 0xa9, - 0xd2, 0x31, 0x4e, 0x58, 0x08, 0x53, 0x0c, 0x1a, 0x21, 0xcd, 0xdc, 0xc6, 0xad, 0xf6, 0x20, 0xd4, - 0xc5, 0xc6, 0xff, 0xaf, 0x1f, 0x82, 0x47, 0x00, 0xf4, 0xd1, 0x4f, 0xb5, 0xd1, 0x71, 0xbc, 0x94, - 0xb0, 0xee, 0xac, 0x84, 0x92, 0xb1, 0x09, 0xfd, 0x8b, 0x71, 0xed, 0x50, 0x34, 0x77, 0xd1, 0xbc, - 0x40, 0x39, 0x2b, 0xd6, 0x39, 0x88, 0x91, 0x44, 0xff, 0x7c, 0x8c, 0x5e, 0xfb, 0x5c, 0xa8, 0x42, - 0x7c, 0x3d, 0x6b, 0x82, 0x5c, 0x61, 0x84, 0x08, 0xae, 0x62, 0x4d, 0x90, 0x0e, 0xb0, 0x18, 0x82, - 0x70, 0x64, 0x06, 0x20, 0x98, 0xc7, 0x8a, 0xb8, 0x8d, 0x8d, 0x68, 0xb0, 0xd2, 0x0a, 0x49, 0xc4, - 0x44, 0x34, 0x78, 0x9a, 0x89, 0x55, 0x60, 0x23, 0x49, 0x61, 0x6c, 0x7c, 0x02, 0x26, 0xe0, 0xde, - 0xaa, 0x07, 0x0a, 0xb8, 0xe7, 0xb4, 0x5d, 0xdb, 0x7e, 0x88, 0x89, 0x8a, 0x6e, 0x81, 0x45, 0x3e, - 0xeb, 0x52, 0x17, 0x89, 0x80, 0xc7, 0xdc, 0xed, 0x66, 0xa2, 0xf6, 0xf1, 0x0f, 0x14, 0xb5, 0xcf, - 0x69, 0xbb, 0x14, 0xfe, 0x30, 0x53, 0x3a, 0x13, 0x79, 0x8f, 0x67, 0xb3, 0xe7, 0x89, 0xbf, 0xf7, - 0x37, 0xec, 0x6d, 0x6d, 0xb8, 0x27, 0x3b, 0xcb, 0xa9, 0xd2, 0x34, 0x7b, 0x5b, 0x7b, 0x92, 0xcb, - 0x15, 0xfb, 0xbe, 0x27, 0xd7, 0xb6, 0xc7, 0xb9, 0xdc, 0xb0, 0x11, 0xab, 0x09, 0xef, 0xfe, 0x9d, - 0x2a, 0xfd, 0x36, 0x37, 0x6c, 0xc4, 0x5e, 0x56, 0xad, 0x37, 0xd9, 0x89, 0x29, 0x60, 0xd0, 0x70, - 0x12, 0xc3, 0x83, 0xc9, 0xc4, 0x88, 0x36, 0x4a, 0x82, 0x6c, 0x92, 0xf9, 0x94, 0x39, 0x38, 0x9e, - 0x9a, 0xf9, 0xdc, 0x91, 0xdb, 0x4d, 0x8e, 0xd4, 0x74, 0x4f, 0x72, 0xfa, 0x16, 0xbb, 0x39, 0x3a, - 0xe6, 0x09, 0x3c, 0xf1, 0xaf, 0x38, 0xf4, 0xf0, 0xee, 0x8e, 0x3d, 0x7b, 0x94, 0xa0, 0x11, 0xa4, - 0x08, 0x62, 0xbb, 0x3c, 0xca, 0xae, 0xfb, 0x7c, 0x18, 0xe2, 0x6f, 0x00, 0x58, 0x65, 0x5c, 0xd1, - 0xae, 0x22, 0x3a, 0x35, 0x15, 0x3b, 0x80, 0x1b, 0xb2, 0x62, 0x07, 0xcb, 0x49, 0xe9, 0x75, 0x06, - 0x46, 0xfe, 0x48, 0x0d, 0x1e, 0x06, 0xf6, 0x0a, 0x46, 0x60, 0x08, 0x3e, 0xca, 0x92, 0x32, 0xdb, - 0xe2, 0xd8, 0xb8, 0x61, 0x83, 0x9c, 0xaf, 0x42, 0xfc, 0x25, 0xd8, 0x34, 0x36, 0x07, 0xdd, 0x1e, - 0x65, 0x4f, 0x47, 0x6b, 0x93, 0x12, 0x6c, 0xf3, 0xf9, 0xc9, 0x9e, 0xd6, 0xa8, 0x78, 0xc8, 0x19, - 0x68, 0x49, 0xcd, 0x1e, 0x55, 0xf2, 0x08, 0xf3, 0x63, 0x89, 0x9b, 0xf0, 0x96, 0xd1, 0x4c, 0xd3, - 0xaa, 0xc2, 0x56, 0x62, 0x55, 0x48, 0xf1, 0x54, 0x9a, 0xd7, 0x44, 0xf0, 0xdc, 0x23, 0xbc, 0xcd, - 0xd1, 0x10, 0xf0, 0x3a, 0x32, 0x91, 0x88, 0x76, 0x38, 0xae, 0x8f, 0x46, 0x4c, 0x36, 0x27, 0xcf, - 0x5f, 0x04, 0xdf, 0xc3, 0xa1, 0xe5, 0x21, 0x8f, 0xdb, 0x4f, 0x6c, 0x90, 0x9d, 0xee, 0x56, 0x72, - 0xe4, 0x59, 0x52, 0xf3, 0x4f, 0x54, 0xe9, 0x7d, 0xc1, 0x96, 0x20, 0x6e, 0xc3, 0x5f, 0x55, 0x3e, - 0xfa, 0x59, 0x99, 0x35, 0x31, 0xf4, 0x8f, 0x23, 0xfa, 0x97, 0x47, 0xa1, 0x3c, 0xfc, 0x7f, 0xe4, - 0xb8, 0xc9, 0xee, 0xb1, 0xbc, 0x76, 0x55, 0xb5, 0x0d, 0xff, 0xc6, 0x0d, 0xb2, 0x8d, 0x38, 0x16, - 0x86, 0x1e, 0x69, 0x73, 0xef, 0x27, 0xd1, 0x8c, 0xf0, 0xbc, 0x0d, 0x61, 0xd1, 0x0d, 0x2f, 0xe9, - 0xc7, 0x49, 0x75, 0x3e, 0x50, 0xa5, 0x66, 0x21, 0x2f, 0x82, 0xb8, 0x1d, 0xf7, 0x91, 0x3f, 0xe0, - 0x55, 0xaa, 0xda, 0x0d, 0x38, 0xec, 0x46, 0xd0, 0x25, 0x54, 0x93, 0x20, 0x26, 0x6c, 0xb6, 0x4f, - 0xd8, 0xcd, 0xc8, 0x1a, 0xcd, 0x57, 0x37, 0x6c, 0x90, 0xf3, 0x16, 0x83, 0xe5, 0x90, 0x95, 0x64, - 0x8e, 0xee, 0x68, 0xdf, 0x14, 0x0c, 0xb4, 0xbd, 0xab, 0x04, 0x03, 0xa5, 0x6b, 0xc8, 0x22, 0x22, - 0x76, 0x9a, 0xec, 0x34, 0x51, 0x82, 0x4d, 0xb2, 0xa3, 0xbd, 0x6a, 0x4f, 0x30, 0xd0, 0x56, 0xf5, - 0x1b, 0x25, 0x18, 0xa0, 0xb2, 0x07, 0xbb, 0x41, 0xcf, 0x25, 0xfa, 0x20, 0x78, 0xad, 0x83, 0x15, - 0x47, 0xc8, 0x90, 0xf6, 0xcb, 0xd9, 0x34, 0xf9, 0x73, 0x1c, 0x7a, 0xd4, 0xae, 0x8d, 0x48, 0x7b, - 0xf0, 0x52, 0xf3, 0x7a, 0x4b, 0x9f, 0xb0, 0x8e, 0x5e, 0xe6, 0x41, 0x11, 0xdf, 0x64, 0xb6, 0x6d, - 0x2f, 0x4e, 0xa9, 0x72, 0xef, 0x21, 0x1b, 0xa4, 0xd7, 0x5b, 0x69, 0x69, 0x47, 0x7d, 0x97, 0xf4, - 0x93, 0x13, 0xd6, 0x95, 0xa5, 0x9c, 0xc1, 0xc4, 0x7b, 0xf7, 0x3c, 0x25, 0xf0, 0x57, 0xb0, 0x84, - 0x9d, 0x9b, 0x44, 0x75, 0xc3, 0x27, 0x49, 0x15, 0x49, 0xa4, 0xd0, 0xf9, 0xb1, 0xe6, 0xad, 0x25, - 0x55, 0x15, 0x41, 0x09, 0x4a, 0xc6, 0x2e, 0x59, 0x0a, 0xe3, 0x7c, 0xb5, 0x9c, 0xbf, 0x10, 0x7e, - 0x82, 0x43, 0x6b, 0xf2, 0xa4, 0x6e, 0x72, 0xfb, 0x5a, 0x3b, 0x82, 0x4a, 0xe9, 0x53, 0xa4, 0xa6, - 0xe4, 0x80, 0x70, 0x01, 0x34, 0x71, 0xeb, 0x3c, 0x55, 0xdd, 0x03, 0xe9, 0x74, 0x7d, 0xc2, 0xe5, - 0x40, 0x6d, 0x78, 0x10, 0xee, 0x40, 0xce, 0x5b, 0xdd, 0x05, 0x4a, 0xe2, 0xbb, 0x0b, 0x90, 0xc3, - 0x4c, 0xde, 0xdc, 0xde, 0x91, 0xa5, 0xdf, 0x10, 0x0d, 0xab, 0x74, 0x2d, 0xa9, 0xf5, 0x97, 0x9c, - 0x2a, 0xdd, 0xe0, 0x84, 0x7b, 0xa2, 0x8b, 0x51, 0x56, 0x67, 0x6b, 0x6e, 0xef, 0x78, 0x40, 0xbd, - 0xad, 0x7c, 0x73, 0xc3, 0x8e, 0x8a, 0xef, 0x50, 0x79, 0xbb, 0x67, 0x85, 0x49, 0xd0, 0x59, 0x1a, - 0x7d, 0xe4, 0x69, 0x26, 0xe8, 0x2c, 0x0d, 0x3e, 0xf2, 0x1e, 0x04, 0x19, 0xa9, 0x74, 0xd4, 0x6f, - 0x97, 0xb7, 0x49, 0x5b, 0xab, 0xf5, 0x89, 0x8f, 0xb5, 0x58, 0x6c, 0x2e, 0x11, 0xdd, 0xd1, 0x50, - 0x4b, 0xc2, 0x85, 0x54, 0xd3, 0x17, 0xd2, 0x62, 0x13, 0x06, 0xb0, 0xae, 0x6a, 0x93, 0xe4, 0xda, - 0x5a, 0x57, 0x4b, 0x53, 0x60, 0xa0, 0xe6, 0x12, 0x51, 0x7a, 0x21, 0xaf, 0x5a, 0xbb, 0xfd, 0x39, - 0x88, 0xd4, 0x66, 0xd4, 0x10, 0x27, 0x5a, 0xae, 0x04, 0x83, 0x81, 0xe0, 0x36, 0x1a, 0xcd, 0xde, - 0x41, 0xea, 0xf1, 0xb4, 0x2a, 0x3d, 0x29, 0xd8, 0x12, 0xc4, 0xe5, 0xb6, 0x60, 0xf6, 0xb6, 0x34, - 0xfe, 0xdf, 0x71, 0xe8, 0x51, 0xfb, 0x86, 0xe1, 0x6c, 0xef, 0x80, 0x6d, 0xee, 0x19, 0x32, 0x84, - 0xa7, 0x39, 0x55, 0x3a, 0xce, 0x09, 0xf3, 0x20, 0xfd, 0x59, 0x77, 0xba, 0x79, 0xea, 0x94, 0xa7, - 0x4d, 0xdb, 0x94, 0x36, 0x68, 0x53, 0xd9, 0x02, 0x6d, 0x32, 0x90, 0xfe, 0x21, 0xb5, 0xc9, 0xa8, - 0x13, 0x1f, 0x40, 0x4b, 0xdb, 0x02, 0xe4, 0x26, 0xde, 0xb3, 0xf9, 0x23, 0x73, 0x6f, 0x23, 0xa9, - 0xc4, 0x3a, 0x4e, 0x6e, 0x4d, 0x52, 0x74, 0x71, 0x1d, 0xfc, 0x85, 0xe8, 0x30, 0x86, 0x71, 0xdc, - 0x29, 0xd1, 0x95, 0x32, 0x73, 0x2d, 0x75, 0x75, 0x9a, 0x4d, 0x93, 0x69, 0x3e, 0xfe, 0xf7, 0x68, - 0xd9, 0x3e, 0x65, 0xf7, 0xde, 0x40, 0xa0, 0xa5, 0xf4, 0x07, 0xf9, 0xc3, 0xbc, 0xbe, 0x0d, 0xc9, - 0x24, 0xb6, 0x1c, 0x89, 0x56, 0x63, 0x64, 0x10, 0xab, 0x9d, 0x92, 0x83, 0xfe, 0x06, 0xdb, 0x77, - 0x56, 0x6c, 0x65, 0xe6, 0xc8, 0x2c, 0x73, 0xee, 0xbc, 0x0d, 0x53, 0x36, 0x88, 0xf0, 0xff, 0x86, - 0x43, 0x4f, 0x2a, 0xfb, 0xdb, 0x15, 0xbf, 0x17, 0x4b, 0x65, 0x0d, 0x01, 0x6f, 0xa8, 0x81, 0x1a, - 0xfe, 0x9c, 0x1d, 0xe1, 0xc0, 0x9e, 0x3d, 0xa5, 0x3f, 0x74, 0x70, 0xe5, 0x4b, 0x8c, 0x3b, 0xf4, - 0x0b, 0xa2, 0x8a, 0x1e, 0xf3, 0xf0, 0x1e, 0x98, 0x81, 0x3e, 0x71, 0x09, 0x0f, 0xdc, 0x48, 0x8f, - 0xa3, 0x3d, 0xe0, 0x9d, 0x4b, 0x44, 0x71, 0x56, 0x2c, 0x1b, 0x26, 0x63, 0x03, 0xc9, 0xc4, 0x48, - 0xd6, 0xe8, 0x98, 0x9c, 0x3d, 0x99, 0x18, 0x49, 0x9d, 0xbd, 0xa9, 0x0f, 0x5e, 0x76, 0xb4, 0xf8, - 0x5a, 0x5b, 0x71, 0x2f, 0x9a, 0x57, 0x59, 0xaa, 0x36, 0x6e, 0x90, 0x17, 0xac, 0x02, 0xd6, 0x70, - 0x79, 0xbf, 0xb2, 0xaf, 0x21, 0xe0, 0x6d, 0x84, 0x8d, 0x14, 0x6c, 0x85, 0xcf, 0x91, 0x09, 0xb9, - 0x5b, 0x95, 0x7e, 0x21, 0xe4, 0x49, 0x16, 0x6b, 0x72, 0x61, 0x58, 0xd5, 0x3b, 0x79, 0xbd, 0x3d, - 0xe0, 0xd5, 0xa6, 0xe3, 0xa9, 0xcf, 0x8e, 0x6a, 0x97, 0x46, 0x92, 0x77, 0x7a, 0x93, 0x77, 0x8e, - 0x6a, 0xc3, 0x83, 0x7a, 0xff, 0x00, 0xd4, 0xdd, 0x29, 0x19, 0xbd, 0xec, 0xd8, 0xf0, 0x75, 0xcd, - 0x62, 0xa1, 0xa0, 0xfc, 0x2f, 0xe4, 0x3c, 0xe4, 0xb1, 0xa0, 0xc3, 0x7b, 0x95, 0x4e, 0x9f, 0x47, - 0x69, 0x08, 0x04, 0x5a, 0xcd, 0x80, 0xdf, 0xcf, 0x13, 0x4e, 0xe2, 0x57, 0xa5, 0x16, 0x21, 0x4f, - 0xb2, 0xb8, 0x23, 0x17, 0x66, 0xc6, 0x5b, 0xa1, 0x01, 0x75, 0x23, 0xbd, 0x95, 0x8e, 0x64, 0x6c, - 0x3a, 0x7d, 0xa5, 0x4b, 0x8b, 0x1f, 0x37, 0x5f, 0x01, 0x48, 0x5d, 0x3c, 0x9e, 0x8c, 0x1f, 0x4b, - 0xc6, 0xaf, 0x6a, 0x1f, 0x76, 0x69, 0xd1, 0x93, 0x66, 0x1d, 0xc9, 0x31, 0xa1, 0x9c, 0xa7, 0xa8, - 0xb2, 0xbb, 0x1c, 0x2a, 0x66, 0xe6, 0x19, 0x2f, 0xb3, 0xa1, 0xff, 0x20, 0x94, 0x2b, 0x01, 0x88, - 0x2f, 0x64, 0x4f, 0xb9, 0x72, 0x7a, 0xfa, 0x64, 0x14, 0x96, 0x9c, 0xee, 0x85, 0xe8, 0x86, 0x6f, - 0x2b, 0xbb, 0x01, 0xa3, 0x82, 0x86, 0x0e, 0xdc, 0x8c, 0x96, 0x92, 0xf7, 0x77, 0x82, 0x6c, 0x2c, - 0x5d, 0x0a, 0x12, 0xcb, 0xb2, 0xe9, 0x02, 0xdc, 0x76, 0xd1, 0x98, 0xe2, 0xf2, 0x2f, 0xa3, 0x25, - 0xe1, 0x40, 0x8b, 0x62, 0x84, 0xcf, 0x85, 0xd7, 0xa2, 0x08, 0x44, 0x5c, 0x9d, 0x4d, 0x86, 0x80, - 0x65, 0x48, 0x2d, 0xfb, 0x8a, 0x43, 0x4b, 0x48, 0x3c, 0x19, 0xfe, 0x39, 0xe6, 0x2c, 0xa7, 0xe6, - 0x11, 0x55, 0x7a, 0x48, 0xc0, 0xdf, 0x22, 0x82, 0xf8, 0x69, 0x8e, 0x2d, 0xca, 0x01, 0x38, 0xe1, - 0x59, 0x67, 0x3b, 0xe1, 0xa9, 0x29, 0x55, 0xa5, 0xd5, 0x02, 0x40, 0xc4, 0xe5, 0x14, 0x97, 0xbc, - 0x4d, 0x4a, 0xcf, 0x7e, 0x48, 0xfc, 0xef, 0x3d, 0x7b, 0x14, 0x4f, 0x98, 0x3d, 0x8b, 0xa0, 0x20, - 0xf1, 0x15, 0xc8, 0xa1, 0x9f, 0xe8, 0xd3, 0xcf, 0x8f, 0xce, 0x25, 0xa2, 0xe5, 0xf5, 0x81, 0x46, - 0x7a, 0x79, 0xb7, 0xd2, 0xd1, 0x10, 0x54, 0xf6, 0x28, 0x41, 0x16, 0x52, 0x1f, 0xa8, 0xdb, 0xaf, - 0x78, 0x3a, 0xc2, 0x24, 0xfe, 0x37, 0xa1, 0x50, 0x16, 0x29, 0x47, 0xcb, 0xd9, 0x98, 0x51, 0xfc, - 0x16, 0xb4, 0x82, 0x8d, 0x01, 0x65, 0x3f, 0x64, 0xca, 0x4a, 0x12, 0x57, 0x50, 0x41, 0x93, 0x84, - 0x20, 0x77, 0xd5, 0xca, 0x59, 0xe9, 0xfc, 0x46, 0x5b, 0x78, 0x45, 0x78, 0x29, 0x85, 0x1c, 0x86, - 0xf2, 0x6c, 0x46, 0x5b, 0x84, 0xc5, 0x0f, 0x72, 0x5d, 0xac, 0x20, 0x2a, 0xab, 0x65, 0xdf, 0xf8, - 0x09, 0x9b, 0xd9, 0x16, 0x64, 0xd1, 0xf0, 0xac, 0x62, 0x9c, 0xa8, 0xe2, 0x10, 0x1d, 0xc7, 0x4c, - 0x65, 0x6d, 0x1f, 0xad, 0x66, 0x80, 0xbe, 0xc5, 0xf3, 0xc7, 0x33, 0x32, 0x9a, 0xf3, 0xad, 0x63, - 0xf4, 0xbd, 0x6b, 0xc6, 0xe8, 0x83, 0x47, 0x3b, 0x56, 0xe7, 0xdc, 0x9e, 0xc7, 0xa9, 0x34, 0xa2, - 0x23, 0x8d, 0xc9, 0xb7, 0x36, 0x97, 0x34, 0xa4, 0x64, 0x05, 0xe4, 0x3b, 0x97, 0xc7, 0x87, 0x18, - 0xee, 0x6e, 0x12, 0xbf, 0xfe, 0x1c, 0x1f, 0xe2, 0xf7, 0xb3, 0x7c, 0x88, 0x93, 0xb1, 0x38, 0xa0, - 0xe8, 0xa7, 0x6e, 0xd1, 0x53, 0x56, 0xb0, 0x75, 0x50, 0xaf, 0x95, 0x6f, 0xeb, 0x5b, 0xfc, 0x7f, - 0x16, 0xd8, 0xef, 0xa6, 0x82, 0x7f, 0xd5, 0x1f, 0x0a, 0x54, 0xe9, 0xaf, 0x0a, 0xec, 0xb7, 0x53, - 0xbf, 0x2a, 0xc8, 0x72, 0x4f, 0xa7, 0xb7, 0x55, 0xbb, 0xef, 0x98, 0xdb, 0x4f, 0x6c, 0x00, 0x60, - 0x26, 0xca, 0xdd, 0x48, 0xb7, 0x76, 0xfb, 0x73, 0xd3, 0xdf, 0x1c, 0xef, 0x0e, 0xca, 0xfe, 0xf0, - 0x0b, 0x73, 0x89, 0xa8, 0xb2, 0x3f, 0xfc, 0xe2, 0x5c, 0x22, 0xba, 0x7f, 0x4f, 0xc8, 0xc1, 0xde, - 0xd8, 0x05, 0x43, 0x2d, 0xbd, 0x2c, 0x7c, 0xfd, 0x10, 0xec, 0x0d, 0x40, 0x54, 0xeb, 0xbd, 0x95, - 0x9c, 0x3e, 0xc9, 0x22, 0xeb, 0x7d, 0x27, 0xf5, 0xd1, 0x4f, 0x59, 0xea, 0x6c, 0x5e, 0xaa, 0x86, - 0x99, 0xee, 0xf1, 0xb1, 0x38, 0x2e, 0xd3, 0x51, 0x1e, 0x6e, 0xf5, 0xf9, 0x3b, 0xf6, 0x53, 0x0a, - 0xa6, 0x27, 0x7c, 0xdf, 0xf0, 0xfe, 0x3d, 0xa1, 0x0a, 0xf3, 0x1a, 0xef, 0xdd, 0x48, 0xb7, 0x7e, - 0xea, 0xa2, 0xd5, 0x54, 0x5c, 0x52, 0x3f, 0x96, 0x77, 0xcf, 0x9d, 0xb2, 0xee, 0x58, 0x93, 0x87, - 0x45, 0x93, 0xb1, 0x69, 0x7d, 0x34, 0xae, 0x4f, 0x98, 0x9e, 0x4b, 0x03, 0xa9, 0xe3, 0x17, 0xf4, - 0x13, 0x7d, 0x77, 0x23, 0xdd, 0xe6, 0xa0, 0x90, 0xe1, 0xb0, 0x5f, 0xe8, 0xbd, 0xb2, 0x08, 0xa1, - 0x8e, 0x90, 0x12, 0x6c, 0x24, 0xaf, 0x13, 0x50, 0x57, 0xb1, 0xde, 0x45, 0xaa, 0xd4, 0xb5, 0x48, - 0x60, 0x12, 0xc4, 0xbf, 0x2f, 0xa0, 0xd2, 0x11, 0x1c, 0xf0, 0x0f, 0x0f, 0xa6, 0x66, 0x26, 0xd3, - 0x3d, 0x23, 0xfa, 0xe8, 0xb5, 0x4a, 0x07, 0x9c, 0xd8, 0x82, 0xdb, 0x44, 0x6a, 0xa4, 0x87, 0xfa, - 0xfd, 0x93, 0xc4, 0x75, 0x8e, 0x96, 0x57, 0x42, 0x60, 0x96, 0x81, 0xa9, 0x44, 0xb6, 0xb2, 0xab, - 0xe9, 0xb1, 0xa8, 0x15, 0xea, 0x70, 0xf6, 0x5c, 0x7a, 0xaa, 0x0b, 0xd0, 0x21, 0xc0, 0x4c, 0xe6, - 0xf0, 0x80, 0xd6, 0x7b, 0x59, 0x53, 0xa3, 0xa0, 0xc9, 0x64, 0x22, 0xd3, 0xe9, 0xaf, 0x8e, 0x81, - 0xf7, 0x98, 0x7e, 0x7e, 0x34, 0x7d, 0xa5, 0x4b, 0xbf, 0xd1, 0x4d, 0x9d, 0x14, 0xe0, 0x5a, 0xc1, - 0xe8, 0x78, 0x7a, 0xf6, 0x2c, 0x26, 0x6e, 0x2c, 0x01, 0x6d, 0x32, 0xaa, 0xf7, 0x0d, 0xc3, 0xb6, - 0xa9, 0x0d, 0x4d, 0x69, 0x47, 0x2e, 0x6a, 0xbd, 0x97, 0xd3, 0xd7, 0x0f, 0x6a, 0xf1, 0x2b, 0x98, - 0x7e, 0xef, 0x80, 0x36, 0xdc, 0xe7, 0xe8, 0xf0, 0xd3, 0x38, 0x06, 0x78, 0x5b, 0x77, 0x80, 0xc7, - 0x2c, 0x48, 0x2e, 0x95, 0x0e, 0x6d, 0x74, 0xdc, 0x61, 0xb5, 0xde, 0xa1, 0x8f, 0x46, 0x88, 0xce, - 0x9a, 0x4d, 0xbe, 0xd2, 0x01, 0x57, 0x97, 0x1d, 0x2d, 0x1d, 0xbb, 0x15, 0x4f, 0xb8, 0xd5, 0xd1, - 0xe1, 0xf7, 0x04, 0x82, 0xde, 0x80, 0xdf, 0x81, 0xf9, 0xdc, 0xff, 0xc3, 0xde, 0x9f, 0x47, 0x47, - 0x71, 0xad, 0x09, 0x82, 0x78, 0x85, 0x36, 0xc4, 0x65, 0x13, 0xc1, 0x26, 0x83, 0x8d, 0x85, 0x8c, - 0x6d, 0x14, 0x4f, 0x2c, 0x0e, 0x6f, 0x58, 0x5e, 0x43, 0x0b, 0x58, 0x36, 0x08, 0x39, 0x04, 0x3c, - 0x3f, 0x2f, 0xcf, 0x2f, 0x91, 0xc2, 0x38, 0x8d, 0x94, 0xa9, 0x97, 0x99, 0xc2, 0xc6, 0x6f, 0xa9, - 0x64, 0x11, 0x48, 0x20, 0x21, 0x11, 0x66, 0x95, 0x85, 0x01, 0x9b, 0xcd, 0x8b, 0x90, 0x79, 0xf8, - 0x81, 0x48, 0x49, 0xa6, 0xbb, 0x4e, 0x77, 0x75, 0x57, 0xfd, 0xaa, 0x97, 0xe2, 0x57, 0x35, 0x5d, - 0x35, 0xd5, 0xd5, 0x33, 0x55, 0x64, 0x64, 0xa6, 0xe6, 0x74, 0x0f, 0x33, 0xa7, 0x67, 0xce, 0xe9, - 0xc3, 0x99, 0x73, 0x66, 0x4e, 0xdc, 0xef, 0xde, 0x1b, 0x37, 0x96, 0x4c, 0x09, 0x8c, 0x59, 0x6c, - 0xf8, 0x07, 0xe5, 0xdd, 0xe3, 0xde, 0xef, 0x7e, 0xf7, 0xdb, 0x3f, 0x13, 0x5d, 0x15, 0x2d, 0x5c, - 0x88, 0xeb, 0xb0, 0xfd, 0xc5, 0xf3, 0x8b, 0x43, 0xc1, 0x60, 0x64, 0xf1, 0x22, 0xb3, 0x64, 0x31, - 0x14, 0x15, 0x19, 0x7b, 0x86, 0xe3, 0x83, 0x26, 0xc5, 0x44, 0x76, 0x96, 0x5b, 0xaa, 0xca, 0x1d, - 0x80, 0x78, 0x49, 0x40, 0x93, 0x5a, 0x02, 0x75, 0xd6, 0x8a, 0x49, 0xde, 0x41, 0x42, 0xf0, 0xda, - 0xeb, 0xe4, 0x2d, 0x02, 0xb1, 0x19, 0xc3, 0xc3, 0x31, 0xe1, 0x32, 0xcd, 0x7a, 0xb4, 0x25, 0x3e, - 0xb0, 0x1b, 0xe6, 0x60, 0x24, 0xaa, 0x11, 0x1d, 0x5a, 0x92, 0x3a, 0x76, 0x3a, 0x79, 0x3c, 0xe6, - 0xac, 0x3e, 0xfc, 0x29, 0xa9, 0xc0, 0x09, 0x90, 0xac, 0xba, 0x05, 0x64, 0xad, 0x54, 0x94, 0x60, - 0x74, 0xf5, 0x83, 0x4c, 0x12, 0xb6, 0xb2, 0x44, 0xb5, 0xaf, 0x49, 0x3c, 0x97, 0xe5, 0xb6, 0x8f, - 0x1b, 0xc5, 0x43, 0xe5, 0xff, 0x16, 0x74, 0xe5, 0xff, 0x14, 0x78, 0x33, 0xb9, 0x2b, 0xc2, 0x75, - 0xd9, 0xc9, 0x2d, 0x2a, 0x32, 0x8e, 0xf7, 0x98, 0x17, 0xc7, 0x8e, 0x2c, 0x68, 0xd7, 0x1e, 0x13, - 0x7b, 0x0e, 0xc6, 0xd8, 0x27, 0xa4, 0xfa, 0x2f, 0x24, 0x8f, 0x9d, 0x31, 0x21, 0x12, 0xf7, 0xae, - 0x58, 0xbb, 0x12, 0x43, 0x24, 0x86, 0x8c, 0xa1, 0xa3, 0x23, 0x51, 0x3d, 0x1e, 0xdb, 0x4e, 0x2c, - 0xdf, 0x71, 0xe4, 0x23, 0xdb, 0x1d, 0x04, 0x41, 0x2b, 0xb5, 0xbd, 0x06, 0x12, 0x29, 0x71, 0xb0, - 0x7f, 0x44, 0x6f, 0x33, 0xfa, 0x2f, 0x32, 0xc7, 0xab, 0x78, 0xec, 0x54, 0xa2, 0x37, 0x66, 0x1c, - 0x3a, 0x1d, 0x1f, 0xd8, 0x4b, 0xd6, 0x7b, 0xbc, 0xc7, 0xc2, 0x17, 0xbd, 0xb1, 0xc4, 0xa1, 0x7e, - 0xde, 0xba, 0xaf, 0x3d, 0x8b, 0x84, 0xd5, 0x53, 0x42, 0xeb, 0xc3, 0x85, 0x13, 0xf0, 0xae, 0xfd, - 0x2c, 0xe3, 0x33, 0x54, 0x45, 0x5b, 0xc3, 0x4b, 0x34, 0x2c, 0xe8, 0xca, 0x45, 0x41, 0xb2, 0x06, - 0x91, 0xbf, 0x12, 0x88, 0xcd, 0x71, 0xf7, 0x36, 0xe0, 0x0f, 0x98, 0x90, 0x17, 0x96, 0x6e, 0x1e, - 0x3a, 0x4d, 0x8c, 0x90, 0xec, 0xd9, 0xb6, 0x41, 0xdb, 0x14, 0x1f, 0x88, 0x99, 0x30, 0xdb, 0xa8, - 0x45, 0x30, 0xcd, 0x11, 0x1f, 0x88, 0x59, 0x7d, 0x2f, 0x7d, 0x92, 0x3c, 0x4d, 0x8c, 0xb5, 0x58, - 0x77, 0x1a, 0x17, 0x0a, 0x6f, 0xc4, 0xc5, 0x5d, 0x23, 0x07, 0xbe, 0x85, 0x8b, 0xf5, 0x2c, 0x93, - 0x47, 0x98, 0x0f, 0xd6, 0xc9, 0x2d, 0xaf, 0xc2, 0xa0, 0x65, 0x45, 0xe6, 0xbd, 0x58, 0xd8, 0xe0, - 0x0f, 0x3d, 0xbf, 0x78, 0xa3, 0x2f, 0xb4, 0xb8, 0xd1, 0xbf, 0x6e, 0x31, 0x99, 0xef, 0x59, 0xd5, - 0x5a, 0xb8, 0xf8, 0x1f, 0x04, 0x24, 0x36, 0x87, 0xb4, 0xba, 0x88, 0x2f, 0x14, 0x59, 0x63, 0x21, - 0x2d, 0x30, 0x33, 0xfc, 0x54, 0xd0, 0x95, 0x1e, 0x41, 0xf2, 0x68, 0x20, 0x6f, 0x15, 0x6c, 0xc8, - 0xab, 0xbd, 0xd3, 0x85, 0xbc, 0x8a, 0xd2, 0x60, 0x2f, 0xec, 0x91, 0x42, 0x6e, 0x3d, 0xf4, 0x36, - 0xc9, 0xf1, 0xf6, 0x4e, 0x86, 0xc3, 0x12, 0xe7, 0x4e, 0x27, 0xb6, 0x75, 0x01, 0x41, 0x6a, 0x74, - 0x7d, 0x69, 0xf4, 0x5f, 0x74, 0x07, 0x33, 0x00, 0x44, 0xac, 0x7a, 0xac, 0xcc, 0x3c, 0xdd, 0xa9, - 0xeb, 0xea, 0xc1, 0xda, 0x62, 0x55, 0x4b, 0x44, 0x69, 0x68, 0x08, 0x06, 0xc2, 0xc4, 0xe5, 0xd0, - 0x95, 0x24, 0x4a, 0xa9, 0xc7, 0x61, 0x88, 0xff, 0x4c, 0xd0, 0x95, 0xef, 0x04, 0xc9, 0xdd, 0x4f, - 0x3e, 0x2d, 0xc4, 0x07, 0x76, 0x26, 0x3e, 0x3d, 0x6f, 0xc1, 0x33, 0x46, 0x8b, 0xe5, 0x15, 0x75, - 0xc6, 0xf6, 0xd6, 0xe4, 0xf0, 0x19, 0x08, 0x06, 0x6e, 0x9c, 0x69, 0x4f, 0x7d, 0xde, 0x0a, 0x44, - 0x10, 0xf1, 0xe0, 0x1a, 0xea, 0x49, 0x7e, 0xfb, 0x99, 0x31, 0xb4, 0x0f, 0xec, 0xe7, 0xe1, 0x32, - 0xf1, 0x74, 0x30, 0x41, 0xaf, 0xfd, 0x17, 0x13, 0xfd, 0x7b, 0xcd, 0xfb, 0x7f, 0xec, 0x84, 0xd1, - 0x6a, 0x8e, 0x00, 0xf3, 0x5a, 0x21, 0xa1, 0x40, 0x91, 0x88, 0x25, 0x22, 0x6c, 0xdb, 0x80, 0x7f, - 0x81, 0x11, 0x52, 0xdf, 0x6c, 0x4d, 0xee, 0x3d, 0x7d, 0x25, 0xba, 0x45, 0x75, 0xaf, 0x5e, 0xdc, - 0x9e, 0x85, 0x0a, 0x68, 0x69, 0x75, 0x80, 0x6c, 0xc5, 0xe4, 0x8c, 0x5b, 0xf1, 0x2f, 0x05, 0x5d, - 0x19, 0x16, 0x24, 0x57, 0x37, 0xbc, 0x13, 0xbb, 0xee, 0x8e, 0x9d, 0x70, 0x2d, 0x5e, 0xdc, 0x93, - 0x85, 0xa6, 0x85, 0xc9, 0xde, 0xc0, 0x65, 0x86, 0xbd, 0x98, 0x92, 0x71, 0x2f, 0xfe, 0x5c, 0xd0, - 0x95, 0x3f, 0x13, 0x24, 0xaf, 0x9e, 0xf2, 0x97, 0x4e, 0xc0, 0x00, 0x28, 0xe7, 0x13, 0xbb, 0x01, - 0x7e, 0x63, 0x78, 0x8c, 0xcf, 0xe4, 0x16, 0x1f, 0x88, 0x81, 0xa5, 0x6b, 0x3c, 0xd6, 0x91, 0xd8, - 0x7f, 0x71, 0x31, 0x98, 0xfa, 0x2d, 0x86, 0x80, 0x3d, 0xc6, 0xbe, 0xed, 0x64, 0x00, 0x7c, 0xc3, - 0xd3, 0x6d, 0x05, 0x48, 0xcd, 0x60, 0x43, 0xdc, 0xfb, 0x10, 0x1f, 0xd8, 0x0d, 0x67, 0x61, 0x6e, - 0x88, 0xd7, 0x17, 0x88, 0x6d, 0x59, 0x48, 0x0c, 0xc3, 0x2e, 0xf1, 0x5b, 0x52, 0x90, 0x71, 0x4b, - 0x88, 0x72, 0xcd, 0xa3, 0xa3, 0x7c, 0xdc, 0x09, 0x20, 0x77, 0xe6, 0x5e, 0x78, 0x2c, 0x5d, 0x7c, - 0x9c, 0xc5, 0xd6, 0x06, 0x25, 0xe8, 0x1c, 0x5d, 0x29, 0x64, 0xb1, 0xb5, 0x6d, 0x0c, 0xd7, 0xaa, - 0x3a, 0xaf, 0x40, 0xd9, 0xd3, 0xd2, 0x06, 0xca, 0x9e, 0x9e, 0x29, 0x50, 0xf6, 0x8c, 0x51, 0x02, - 0x65, 0xcf, 0x74, 0x05, 0xca, 0x7e, 0x1a, 0xe5, 0x34, 0x68, 0x61, 0xd0, 0x41, 0x8d, 0xa7, 0x49, - 0xf1, 0xb5, 0x70, 0xbd, 0x5c, 0xc8, 0x16, 0x99, 0x38, 0x7c, 0x09, 0x12, 0x67, 0xb1, 0x64, 0x98, - 0x5a, 0xb8, 0x5e, 0x6c, 0x41, 0xe3, 0x42, 0x2d, 0x81, 0x88, 0x39, 0x6a, 0xa1, 0xb7, 0x80, 0x4a, - 0x6d, 0xc1, 0xda, 0x12, 0x2c, 0x13, 0xc3, 0xa2, 0x02, 0xda, 0x41, 0x5e, 0x62, 0x25, 0x2a, 0x71, - 0x78, 0x41, 0x76, 0xf5, 0xb3, 0xbf, 0x21, 0xa6, 0x17, 0x4d, 0x01, 0x4a, 0xba, 0x8a, 0x5b, 0x05, - 0x26, 0x89, 0xbb, 0x6f, 0x54, 0x49, 0x1c, 0xb6, 0x08, 0xa1, 0x92, 0xb8, 0x72, 0xc7, 0xa4, 0xf1, - 0x81, 0x9d, 0x00, 0x5e, 0xe6, 0xbc, 0x38, 0x61, 0x1a, 0x0d, 0x2a, 0xd6, 0x63, 0xec, 0x3c, 0x16, - 0x1f, 0xd8, 0x95, 0x41, 0x3a, 0xb7, 0x09, 0x15, 0x90, 0x43, 0xaf, 0x0d, 0x69, 0xe4, 0x85, 0x9b, - 0x8d, 0x77, 0x70, 0xa5, 0xae, 0xbc, 0x22, 0xb9, 0x2a, 0xe5, 0xa7, 0x78, 0xdb, 0x3d, 0xaf, 0xc7, - 0xcd, 0xfb, 0x6d, 0x53, 0x5d, 0x23, 0x89, 0xbf, 0x45, 0x53, 0x69, 0x59, 0x30, 0x1c, 0x21, 0x73, - 0xcf, 0xb1, 0x02, 0xb8, 0xbb, 0x6b, 0x1d, 0x93, 0x8f, 0x99, 0x2d, 0x50, 0xdd, 0x43, 0x89, 0x9b, - 0xd0, 0x04, 0x5f, 0x20, 0x10, 0x8c, 0x60, 0x71, 0x7c, 0xb8, 0xf0, 0x7e, 0x4c, 0xea, 0x2c, 0xcc, - 0x48, 0xea, 0x28, 0x56, 0x7b, 0x20, 0x76, 0x16, 0xe8, 0xca, 0xc3, 0x12, 0x3f, 0x8c, 0x3c, 0x13, - 0x96, 0x66, 0x15, 0x11, 0x07, 0x06, 0xbe, 0x91, 0xf8, 0x26, 0x9a, 0xdc, 0xe4, 0xfb, 0x10, 0x8b, - 0xf6, 0x20, 0xd3, 0x09, 0x51, 0xcd, 0xe0, 0x34, 0x49, 0x8e, 0x2a, 0x79, 0x6e, 0xa2, 0xbf, 0x2b, - 0x3e, 0xf0, 0xa5, 0x65, 0xd1, 0x83, 0x2d, 0x09, 0x6b, 0x69, 0xce, 0x14, 0xd5, 0xd1, 0x5e, 0x6c, - 0x44, 0x93, 0xc3, 0x1b, 0xfc, 0xcd, 0x60, 0xf0, 0x54, 0x1d, 0xf0, 0x47, 0xb0, 0x06, 0x25, 0x1f, - 0x92, 0x7f, 0x3a, 0xaa, 0xe4, 0xc5, 0x24, 0xb2, 0xd3, 0x85, 0x73, 0xa9, 0x4b, 0x3b, 0x88, 0xa9, - 0x1e, 0x66, 0x11, 0xd9, 0x2b, 0x42, 0xb9, 0x5c, 0xa8, 0x54, 0x1d, 0x03, 0x88, 0x9f, 0x09, 0x68, - 0x8e, 0xaf, 0xb1, 0x31, 0xf8, 0x41, 0x9d, 0x59, 0x4e, 0x30, 0xe9, 0xcf, 0xdf, 0xd3, 0x02, 0xcb, - 0x7c, 0xfe, 0x46, 0xad, 0x01, 0xab, 0x34, 0xf2, 0x41, 0xed, 0x9a, 0xa9, 0x9d, 0xfc, 0x02, 0x51, - 0xd5, 0xd1, 0xe0, 0x9a, 0xbc, 0xb1, 0x28, 0x59, 0x1d, 0x4e, 0xf7, 0xc8, 0x31, 0xdd, 0x7c, 0xa5, - 0x9a, 0x69, 0x70, 0xf1, 0x63, 0x01, 0xcd, 0xb6, 0xd7, 0x57, 0x07, 0xb8, 0x35, 0x16, 0xe1, 0x35, - 0x12, 0x2b, 0x4b, 0xfb, 0xfe, 0xbc, 0xc0, 0x2b, 0xbb, 0x6e, 0x60, 0x59, 0x19, 0xa6, 0xfd, 0x3e, - 0x51, 0xa3, 0x69, 0x04, 0x67, 0x46, 0x76, 0x5f, 0x57, 0xef, 0x17, 0x50, 0x81, 0x13, 0x92, 0xaf, - 0x2b, 0x02, 0xf4, 0xdb, 0xba, 0xf2, 0x06, 0x7a, 0x5d, 0xb2, 0xc9, 0xe9, 0xa8, 0x1d, 0x3f, 0xbc, - 0x04, 0x54, 0x64, 0x4b, 0x72, 0xa7, 0xf5, 0x5f, 0xb4, 0x4c, 0x90, 0xf8, 0x20, 0x8b, 0xc9, 0x9e, - 0x6d, 0x23, 0xd1, 0x9e, 0xe4, 0xde, 0xd3, 0x90, 0xa7, 0x0a, 0xae, 0x4a, 0xf1, 0x57, 0xd9, 0x68, - 0x12, 0xcd, 0x0e, 0x0a, 0x38, 0xea, 0x57, 0xe6, 0x7d, 0xb1, 0x7e, 0x33, 0x19, 0xe0, 0x52, 0x5d, - 0x79, 0x52, 0x72, 0x54, 0xc9, 0x0f, 0x55, 0x54, 0x00, 0xa2, 0xab, 0xae, 0x2c, 0x85, 0x2a, 0xb7, - 0x86, 0x42, 0x75, 0x74, 0x12, 0xdf, 0x47, 0x05, 0x7c, 0x09, 0x67, 0xa4, 0x8d, 0xd1, 0xbd, 0xab, - 0x52, 0x7e, 0x94, 0xce, 0x02, 0xc2, 0xc2, 0xf4, 0x33, 0xb9, 0xba, 0x9a, 0x5f, 0xf3, 0x41, 0x30, - 0xb4, 0x81, 0xfb, 0x9a, 0x6c, 0xee, 0x6b, 0xec, 0x55, 0xb6, 0xaf, 0x81, 0x2a, 0xaf, 0xaf, 0xb1, - 0x77, 0x32, 0xbf, 0x86, 0x2f, 0xc1, 0x5f, 0x93, 0xc3, 0x7d, 0x8d, 0xb3, 0xd2, 0xf5, 0x35, 0x69, - 0x67, 0x72, 0x75, 0x2d, 0x3e, 0x96, 0x8b, 0x90, 0xf5, 0x4e, 0x89, 0xef, 0x91, 0xe7, 0x64, 0x55, - 0x4b, 0xc4, 0x71, 0x58, 0xd8, 0x93, 0xdc, 0x55, 0x29, 0x3f, 0xcc, 0x7d, 0x60, 0x85, 0xc2, 0x33, - 0x4e, 0xf6, 0x89, 0x9d, 0x1d, 0x45, 0x8d, 0x18, 0x2e, 0x54, 0x07, 0xd8, 0x44, 0x70, 0x62, 0x58, - 0x69, 0xe5, 0xac, 0x73, 0xcc, 0xc3, 0x3f, 0x23, 0xb6, 0x79, 0x9c, 0xfd, 0xc4, 0x20, 0x9a, 0x44, - 0xa7, 0x2e, 0xf7, 0x7f, 0xc4, 0x0e, 0x0b, 0x3b, 0x0f, 0xdb, 0x6b, 0xe4, 0x27, 0xf9, 0xd5, 0x57, - 0x54, 0xc0, 0xeb, 0x5b, 0x5d, 0xc9, 0x30, 0xe8, 0xc1, 0x7e, 0x6a, 0xb3, 0x8d, 0x73, 0x6c, 0x90, - 0x6a, 0xd5, 0x3e, 0x8a, 0xd8, 0x88, 0x0d, 0x57, 0xcc, 0x35, 0xc0, 0x7c, 0x39, 0x56, 0x12, 0x07, - 0x5b, 0x85, 0xfc, 0x24, 0xff, 0x11, 0x63, 0x9f, 0xce, 0x36, 0x88, 0x18, 0x22, 0x74, 0x2e, 0xdb, - 0x59, 0x0c, 0x2c, 0x10, 0xaa, 0xaf, 0x5c, 0x57, 0x5e, 0x94, 0x3c, 0xaa, 0xe5, 0x12, 0x07, 0xb8, - 0x64, 0x38, 0x37, 0x8f, 0xee, 0x62, 0x90, 0xbd, 0xfb, 0xdc, 0x94, 0x20, 0x1d, 0xc6, 0x71, 0xf9, - 0xdd, 0xb5, 0x1e, 0x33, 0xa6, 0x3d, 0x41, 0x77, 0xef, 0xe2, 0x7e, 0x01, 0x4d, 0xe0, 0x48, 0x38, - 0x51, 0x45, 0x05, 0xf5, 0xc1, 0x40, 0xc4, 0xe7, 0x0f, 0x68, 0x21, 0x95, 0x50, 0x7e, 0x00, 0xa4, - 0x8f, 0xe8, 0xca, 0x43, 0x92, 0xab, 0x52, 0x9e, 0x02, 0x31, 0x2d, 0x18, 0x41, 0xa7, 0xba, 0x9a, - 0x88, 0x2b, 0xd0, 0x64, 0x42, 0xd8, 0xad, 0xd5, 0x42, 0x61, 0x7f, 0x90, 0xe6, 0x53, 0x9c, 0xaf, - 0x2b, 0xf3, 0x24, 0x47, 0x95, 0x3c, 0xc5, 0x41, 0x1a, 0xaa, 0x8e, 0x06, 0xc5, 0x17, 0xe7, 0xa2, - 0xfb, 0x20, 0x15, 0x21, 0x8f, 0x64, 0x69, 0xe2, 0xfc, 0x77, 0x79, 0x9d, 0x84, 0x40, 0xe1, 0x43, - 0xe2, 0x75, 0x12, 0x0f, 0xd8, 0x68, 0x5e, 0x7b, 0x52, 0x98, 0xea, 0xca, 0x6b, 0xe5, 0x85, 0xa1, - 0x99, 0x05, 0x42, 0x61, 0xb4, 0xc0, 0x95, 0xe2, 0x89, 0xd7, 0x47, 0x2c, 0xb5, 0xa9, 0x4b, 0xe6, - 0x7b, 0xa9, 0x4b, 0x98, 0x87, 0xfa, 0xb5, 0xf2, 0x9c, 0x50, 0x56, 0x81, 0x40, 0xb4, 0x26, 0x94, - 0x16, 0xcf, 0xbe, 0x5e, 0x5a, 0x7c, 0x93, 0x43, 0x05, 0xf2, 0xa4, 0x47, 0x6e, 0x6e, 0xef, 0x5d, - 0xb9, 0xa7, 0x0f, 0xb9, 0xa7, 0x0f, 0xb9, 0xeb, 0xf4, 0x21, 0xff, 0x8f, 0xe0, 0xa1, 0x0f, 0xf9, - 0x07, 0x41, 0x57, 0xfe, 0x93, 0x60, 0xd3, 0x87, 0xfc, 0x5b, 0x9b, 0x44, 0x65, 0xcc, 0x8c, 0xcf, - 0xd5, 0xa1, 0x8e, 0x3b, 0x4d, 0x21, 0x72, 0x4f, 0xcb, 0x70, 0x4f, 0xcb, 0x20, 0xee, 0xf7, 0xd0, - 0x32, 0x2c, 0x1d, 0x3b, 0xa6, 0xff, 0xf1, 0xaa, 0x1c, 0xfe, 0x3a, 0x93, 0xca, 0xe1, 0xa8, 0xa0, - 0x2b, 0xbd, 0xde, 0x2a, 0x87, 0x56, 0x3b, 0x7e, 0xe0, 0xa4, 0x32, 0x57, 0x87, 0x3a, 0x32, 0xe9, - 0x1c, 0x20, 0x2a, 0xcf, 0x0f, 0xaa, 0x74, 0x48, 0x27, 0x5f, 0x9e, 0x74, 0x4f, 0xbe, 0xec, 0x94, - 0x2f, 0x4f, 0xfe, 0x49, 0xcb, 0x97, 0xa7, 0x8c, 0x5d, 0xbe, 0xbc, 0xcc, 0x92, 0x2f, 0x4f, 0xa5, - 0xd1, 0x94, 0x1e, 0xb4, 0xdc, 0x7a, 0xa6, 0xe3, 0xd8, 0x7d, 0xa9, 0x6f, 0x4f, 0x1a, 0x5d, 0x17, - 0x98, 0x6f, 0x0f, 0x97, 0x52, 0x80, 0x49, 0xa3, 0xbf, 0x14, 0x2c, 0xd9, 0xaf, 0x38, 0xba, 0xec, - 0x17, 0x13, 0x6b, 0x4c, 0xf6, 0xab, 0x5d, 0xaf, 0xec, 0xb7, 0xb4, 0x08, 0xc2, 0x13, 0x42, 0xa0, - 0x2c, 0xf3, 0x81, 0x05, 0x61, 0x08, 0xeb, 0xa7, 0x77, 0xd0, 0xe6, 0x5c, 0xfe, 0x45, 0x26, 0x30, - 0x3e, 0x67, 0x09, 0x8c, 0xa7, 0x8d, 0x2a, 0x30, 0xc6, 0xb1, 0x82, 0xa8, 0xc0, 0x38, 0xc4, 0x31, - 0xbf, 0x45, 0xdf, 0x5f, 0x78, 0x0c, 0xe1, 0x85, 0xc0, 0xe4, 0x99, 0xe5, 0x54, 0x30, 0x9f, 0x27, - 0x9e, 0x0f, 0xa3, 0x02, 0xe6, 0x03, 0x02, 0x2a, 0xa8, 0x73, 0x4a, 0x98, 0xa7, 0x93, 0x6c, 0x81, - 0xeb, 0x83, 0xc1, 0xf5, 0x8d, 0xda, 0xa2, 0xe6, 0x50, 0x30, 0x12, 0x5c, 0xd7, 0xf2, 0xee, 0xa2, - 0xba, 0x48, 0xc8, 0x1f, 0x58, 0x8f, 0x0d, 0xce, 0xc6, 0x26, 0x7f, 0x1e, 0xbb, 0x08, 0xd8, 0xb5, - 0x08, 0xb1, 0x47, 0x40, 0x53, 0xeb, 0x5c, 0x02, 0xe8, 0x19, 0x63, 0x58, 0xda, 0x4d, 0x17, 0x4f, - 0xbb, 0x96, 0x21, 0x36, 0xda, 0xc5, 0xd3, 0x33, 0xbd, 0x83, 0xb9, 0xac, 0xf4, 0x35, 0xd7, 0x45, - 0x42, 0x2d, 0xf5, 0x11, 0x92, 0xb7, 0x9f, 0x17, 0x45, 0x3f, 0x40, 0xe6, 0xc0, 0xef, 0xb1, 0x53, - 0x2c, 0x1d, 0xb6, 0x49, 0xa4, 0x6f, 0x9b, 0x2c, 0x92, 0x66, 0x93, 0x4b, 0xcf, 0xec, 0xca, 0x22, - 0xb9, 0xc0, 0x1c, 0xdf, 0x78, 0x59, 0xb0, 0x98, 0xd4, 0xcb, 0x02, 0xe6, 0x38, 0x2f, 0x0b, 0xf4, - 0x4e, 0x17, 0x9f, 0xcf, 0x42, 0xb3, 0xbd, 0x86, 0x0b, 0x37, 0x07, 0x03, 0x61, 0x4d, 0x5c, 0x84, - 0x72, 0xea, 0xa9, 0xe1, 0xe7, 0x24, 0x92, 0x62, 0xd9, 0x2c, 0x30, 0x99, 0xf2, 0xbd, 0xc6, 0x27, - 0x9f, 0x82, 0x89, 0x7b, 0xf2, 0xe8, 0x66, 0x15, 0x17, 0x8b, 0x65, 0x68, 0x5c, 0x13, 0xb1, 0x8b, - 0x07, 0x3e, 0x18, 0x27, 0x03, 0xa1, 0x65, 0xb2, 0xc8, 0xf7, 0xa2, 0x2a, 0x1e, 0x52, 0x29, 0x3e, - 0x86, 0xf2, 0x42, 0x5a, 0xb8, 0xa5, 0x31, 0x42, 0x62, 0xcd, 0xe3, 0x88, 0x0f, 0xa4, 0x48, 0x9e, - 0x08, 0x3d, 0x93, 0x83, 0x1f, 0x27, 0x3e, 0xed, 0x55, 0x49, 0xa9, 0xb8, 0x09, 0x4d, 0xf9, 0x40, - 0x5b, 0xf7, 0x0e, 0x7f, 0xf6, 0x39, 0xde, 0x79, 0x8a, 0x7f, 0xae, 0xad, 0xe3, 0xc4, 0xb8, 0x6b, - 0x65, 0xc8, 0x9e, 0xeb, 0xec, 0x2d, 0x17, 0xd2, 0xe4, 0xe7, 0x51, 0xe3, 0xec, 0xa7, 0x20, 0x00, - 0x48, 0x1c, 0xde, 0x3a, 0x72, 0xa8, 0x5b, 0x9d, 0xfc, 0x81, 0x6d, 0x84, 0xe2, 0x3f, 0x2b, 0x42, - 0xf7, 0xad, 0xc1, 0xfa, 0x34, 0x2f, 0xa1, 0xc3, 0x53, 0x6e, 0xa1, 0x03, 0x36, 0x16, 0xe5, 0x84, - 0x0e, 0xf9, 0x54, 0xbe, 0xc0, 0x0b, 0x11, 0xd6, 0xb9, 0x0c, 0x38, 0x61, 0x1b, 0x71, 0xb6, 0x09, - 0xa7, 0x01, 0xe7, 0xc3, 0xf6, 0xdf, 0xe0, 0xc1, 0x60, 0x51, 0xfa, 0xa3, 0xd9, 0x75, 0x66, 0xa7, - 0xb7, 0xeb, 0xb4, 0x42, 0xe9, 0xd9, 0x25, 0x14, 0x39, 0x37, 0x2e, 0xa1, 0xc8, 0xf5, 0x96, 0x50, - 0xa4, 0xdd, 0xc2, 0x9b, 0x28, 0xa1, 0xc8, 0xbb, 0x25, 0x12, 0x8a, 0x71, 0x77, 0xb0, 0x84, 0x22, - 0xff, 0x9e, 0x84, 0xe2, 0x96, 0x48, 0x28, 0x3a, 0xed, 0x16, 0x9b, 0x10, 0xdc, 0xff, 0xbf, 0x66, - 0xe9, 0x4a, 0x2a, 0xcb, 0x26, 0xa1, 0xf8, 0xfb, 0xac, 0xbb, 0x4b, 0x0e, 0x71, 0xb7, 0x1a, 0x66, - 0xfe, 0xa3, 0x4b, 0x64, 0x82, 0xd2, 0x10, 0x2c, 0x6b, 0xaa, 0x03, 0x91, 0xc7, 0x65, 0x20, 0x58, - 0xee, 0x56, 0x81, 0xca, 0x84, 0x7b, 0x02, 0x95, 0x1b, 0x10, 0xa8, 0x4c, 0xf4, 0x16, 0xa8, 0xa4, - 0x7f, 0x98, 0x7e, 0xbc, 0x02, 0x95, 0x3f, 0x7a, 0x0b, 0x54, 0x20, 0x39, 0x22, 0x49, 0x48, 0xea, - 0x25, 0x50, 0x79, 0xff, 0x0e, 0x15, 0x9a, 0x4c, 0xbe, 0x27, 0x34, 0x71, 0x0a, 0x4d, 0xa6, 0xfc, - 0xa4, 0x85, 0x26, 0x05, 0x63, 0x17, 0x9a, 0x3c, 0xeb, 0x8c, 0x46, 0x32, 0x4f, 0x57, 0xa6, 0x5b, - 0xd1, 0x48, 0xc6, 0xb3, 0x38, 0x24, 0xbc, 0xa4, 0x84, 0x5a, 0xe7, 0xf1, 0x92, 0x92, 0x69, 0x77, - 0x91, 0xa4, 0x64, 0xfa, 0x5d, 0x2e, 0x29, 0x99, 0x71, 0xe7, 0x4a, 0x4a, 0x66, 0xde, 0x91, 0x92, - 0x92, 0x59, 0x3f, 0x52, 0x49, 0xc9, 0x71, 0x41, 0x57, 0x8e, 0x0a, 0xe8, 0xb0, 0x20, 0x11, 0x26, - 0x1d, 0x32, 0xe6, 0xd7, 0xe3, 0xf8, 0x5f, 0x54, 0x58, 0xf2, 0x0b, 0xb8, 0xc3, 0x9c, 0xf8, 0x33, - 0xd5, 0x7f, 0x21, 0x71, 0x76, 0x0b, 0x0e, 0x51, 0x4e, 0x4c, 0xd3, 0xcc, 0x26, 0x7b, 0x2f, 0x42, - 0x2d, 0x83, 0xd2, 0x91, 0x83, 0x7f, 0x48, 0xf4, 0x7d, 0x66, 0xf4, 0x5f, 0x34, 0xfa, 0x0e, 0x8e, - 0xec, 0xe8, 0x22, 0x80, 0x1d, 0x3b, 0x95, 0xdc, 0x7b, 0xc4, 0x18, 0x3e, 0x6b, 0x7c, 0xdc, 0x69, - 0x97, 0xb9, 0x38, 0x18, 0xf0, 0xcb, 0x02, 0xc5, 0x13, 0x58, 0xfa, 0xe2, 0x45, 0x68, 0xdc, 0x93, - 0xbe, 0x8c, 0x22, 0x7d, 0xf9, 0x3c, 0x0b, 0xdd, 0x07, 0x71, 0x3c, 0xbc, 0xa4, 0x2f, 0xab, 0xdc, - 0xd2, 0x97, 0xc7, 0x74, 0x65, 0x11, 0x2f, 0x7d, 0x99, 0xc7, 0x03, 0x84, 0xc3, 0xe4, 0xc3, 0x1d, - 0x67, 0xeb, 0x16, 0x88, 0x65, 0x98, 0x70, 0x2f, 0xed, 0x67, 0xc9, 0x22, 0xc4, 0x29, 0xe3, 0xc7, - 0xc9, 0x08, 0x68, 0x18, 0xbc, 0xbc, 0x86, 0xbb, 0x07, 0x5e, 0xa3, 0x80, 0xd7, 0x7f, 0x17, 0xd0, - 0xcc, 0xe5, 0x5a, 0xe4, 0x66, 0x4a, 0xf6, 0x5e, 0x4d, 0x03, 0x42, 0x37, 0xe2, 0x9a, 0x5d, 0xb6, - 0x5a, 0x57, 0x5e, 0x43, 0xab, 0xa4, 0x34, 0x6b, 0x94, 0x0b, 0x13, 0x47, 0x4e, 0xa4, 0xfa, 0x3f, - 0xe3, 0x65, 0x73, 0xa9, 0xfe, 0x93, 0x89, 0xad, 0xad, 0x99, 0xc1, 0xe5, 0x6f, 0xb3, 0xd1, 0x2c, - 0xd7, 0x88, 0x77, 0x07, 0xac, 0xac, 0x42, 0x39, 0x26, 0x7f, 0x47, 0x00, 0xe4, 0xfe, 0x4c, 0x86, - 0xe9, 0x44, 0xe2, 0x69, 0x36, 0xb7, 0x4b, 0x3c, 0x61, 0x8b, 0x54, 0x5c, 0xe3, 0x05, 0x7c, 0xb9, - 0xb7, 0x06, 0xf8, 0xca, 0x56, 0xe9, 0xca, 0x0a, 0xf4, 0x8a, 0x94, 0xee, 0x28, 0xe4, 0xb9, 0xe9, - 0x4e, 0x17, 0x76, 0xe6, 0xb2, 0x80, 0x4f, 0xe0, 0xb2, 0x40, 0xf7, 0xb3, 0xf8, 0xdf, 0x65, 0xa1, - 0x59, 0x2b, 0xfc, 0xe1, 0x3b, 0x17, 0x9c, 0x21, 0xd9, 0x19, 0x3a, 0x21, 0x48, 0xe9, 0xd6, 0x29, - 0xff, 0xde, 0xeb, 0xa3, 0xc9, 0x63, 0x0d, 0x22, 0x2e, 0xc8, 0x0e, 0x10, 0x8f, 0x6d, 0x37, 0x77, - 0xf6, 0xe8, 0x0e, 0x08, 0x29, 0x0d, 0x71, 0x5f, 0x92, 0x83, 0xdb, 0x8c, 0xee, 0x36, 0x28, 0x27, - 0x82, 0x56, 0x3c, 0x9a, 0xd5, 0xb7, 0xf5, 0x34, 0x23, 0x3b, 0xe3, 0x03, 0x31, 0xa8, 0x35, 0x5a, - 0x71, 0x18, 0x23, 0xdc, 0x9e, 0xbf, 0x38, 0xc5, 0xff, 0x53, 0x16, 0x2a, 0x74, 0xaf, 0xf3, 0x6e, - 0xbb, 0x28, 0xd9, 0x37, 0x7c, 0x51, 0x20, 0x33, 0x03, 0x5c, 0x94, 0xb2, 0x57, 0x74, 0x65, 0x39, - 0xaa, 0x92, 0xd2, 0x6e, 0x88, 0x27, 0x32, 0x4a, 0x03, 0xa8, 0x7f, 0x53, 0x80, 0xc6, 0xd5, 0xc2, - 0x36, 0x8b, 0x6f, 0xba, 0x01, 0x13, 0xd2, 0x72, 0x58, 0x80, 0xb9, 0x90, 0x02, 0x66, 0x29, 0x0d, - 0xf9, 0x1f, 0x7b, 0x5c, 0x8e, 0x0f, 0x77, 0xb2, 0xcc, 0x2e, 0xa5, 0xb6, 0x94, 0x8a, 0x1c, 0xf4, - 0xd6, 0xd8, 0x6c, 0x35, 0xf1, 0x2b, 0x0e, 0x2a, 0x90, 0xc5, 0x34, 0xf2, 0x44, 0x5f, 0x62, 0xff, - 0x0e, 0x50, 0x81, 0x98, 0xf4, 0x1e, 0xcb, 0x28, 0xb0, 0x75, 0x18, 0xa2, 0x0a, 0x3d, 0xf5, 0x04, - 0x4c, 0x42, 0xf4, 0x23, 0x21, 0x34, 0x41, 0x0b, 0xac, 0x6f, 0xf4, 0x87, 0xdf, 0xab, 0xb1, 0x34, - 0x2b, 0xb5, 0xba, 0xb2, 0x52, 0xe2, 0xcb, 0xe5, 0x17, 0x60, 0xf4, 0xd4, 0xae, 0xb3, 0x89, 0xfd, - 0x3b, 0x4c, 0x9a, 0x7e, 0xfb, 0x21, 0x36, 0x87, 0xb1, 0xb7, 0x1f, 0xc2, 0xe5, 0xbb, 0x27, 0x7b, - 0x5c, 0x26, 0x93, 0xf1, 0x83, 0xf1, 0xc1, 0x3a, 0x73, 0xbc, 0x82, 0x75, 0x92, 0xd4, 0x44, 0xee, - 0x60, 0x9d, 0xcf, 0x5b, 0x9c, 0x6d, 0xae, 0x75, 0x67, 0x19, 0x67, 0x3b, 0x83, 0x27, 0x82, 0x3c, - 0xa2, 0x6d, 0xfe, 0x02, 0x4d, 0x20, 0x1b, 0x89, 0x83, 0xac, 0x43, 0x88, 0x68, 0x9c, 0x1d, 0x23, - 0x27, 0xb2, 0xa9, 0x59, 0x93, 0x4b, 0xa1, 0x3f, 0xcb, 0x2e, 0x0f, 0x39, 0xce, 0x1e, 0x2b, 0x33, - 0xa1, 0xe2, 0xdd, 0x60, 0xa8, 0xe9, 0xea, 0x50, 0x87, 0x5c, 0xb6, 0xae, 0x25, 0xec, 0x0f, 0x68, - 0xe1, 0xb0, 0xca, 0x8f, 0x25, 0x7e, 0x88, 0xb3, 0x41, 0x94, 0xbf, 0xaa, 0x6a, 0x61, 0x12, 0x8b, - 0x19, 0x67, 0xc5, 0x60, 0x85, 0xf2, 0x4a, 0x90, 0xb6, 0x82, 0xb4, 0x00, 0x62, 0x83, 0x40, 0xe4, - 0x1b, 0x16, 0x4e, 0x38, 0x71, 0xf6, 0x28, 0x26, 0xdf, 0x2d, 0x87, 0x0a, 0x16, 0x66, 0x18, 0x92, - 0xdf, 0xf0, 0x51, 0x8f, 0xd9, 0xc0, 0xe2, 0x32, 0x34, 0xa1, 0x41, 0x0b, 0x63, 0x16, 0xc9, 0x1f, - 0x0c, 0x10, 0x7d, 0x09, 0xb6, 0x46, 0xe6, 0xcb, 0x65, 0x91, 0x7c, 0xdb, 0x19, 0x9c, 0xde, 0x0e, - 0xab, 0xbb, 0x54, 0xbe, 0x81, 0xb8, 0x1a, 0x8d, 0xf7, 0x87, 0x57, 0xbd, 0xfb, 0x6e, 0xa3, 0x3f, - 0xa0, 0x91, 0xd8, 0xc8, 0x38, 0x8b, 0x8b, 0x55, 0x2a, 0x3f, 0x42, 0x90, 0x3f, 0xc8, 0x8d, 0x2f, - 0xfc, 0x21, 0x39, 0xd8, 0x95, 0x3c, 0x39, 0x98, 0x8c, 0x5d, 0x72, 0x2c, 0xce, 0xea, 0x22, 0x36, - 0xa0, 0x9c, 0x0d, 0xfe, 0x40, 0x03, 0x49, 0xc0, 0x8b, 0xe1, 0x0a, 0x17, 0xc8, 0x55, 0x0c, 0x5c, - 0x89, 0xa0, 0xc4, 0xbe, 0xe9, 0x1b, 0x96, 0x86, 0x17, 0x37, 0x69, 0xe1, 0x60, 0x18, 0xe7, 0xc6, - 0xf8, 0x32, 0x71, 0x18, 0xa7, 0x1f, 0x83, 0xcc, 0xaa, 0x5d, 0xfd, 0xa9, 0xad, 0xc3, 0x90, 0x8b, - 0x55, 0xc5, 0x83, 0x89, 0x2b, 0x10, 0xa2, 0xc7, 0x52, 0x5d, 0x89, 0x23, 0x1a, 0xd3, 0xdc, 0xf9, - 0x56, 0xb1, 0x3c, 0x07, 0x76, 0xbd, 0x62, 0x65, 0x65, 0x79, 0x7c, 0xa0, 0x8f, 0xda, 0xc9, 0x13, - 0xc4, 0xc4, 0x35, 0x14, 0xa3, 0x02, 0x42, 0x0d, 0x5a, 0x73, 0x63, 0x70, 0x13, 0x06, 0x93, 0x89, - 0x56, 0x44, 0x49, 0xae, 0x58, 0x5e, 0x05, 0x23, 0x40, 0xd8, 0x50, 0x6b, 0xf5, 0x9d, 0xfb, 0x92, - 0xbb, 0xbe, 0x86, 0xf0, 0x2f, 0xc9, 0x4f, 0xbe, 0x8b, 0x5f, 0x3a, 0x9c, 0xdc, 0x77, 0xe8, 0xea, - 0x50, 0xc7, 0x63, 0x65, 0xc9, 0xf6, 0x2f, 0x92, 0xdd, 0xdb, 0x13, 0xbd, 0x31, 0xe8, 0x81, 0x61, - 0x09, 0xcc, 0xcd, 0xa1, 0x40, 0xe5, 0x06, 0x17, 0x5f, 0x42, 0x39, 0xeb, 0xd6, 0x57, 0x57, 0x12, - 0xf9, 0x25, 0xfe, 0x14, 0x5c, 0x20, 0xcf, 0x8b, 0xc7, 0x76, 0xc5, 0x07, 0x7a, 0x68, 0x4c, 0xdc, - 0xc4, 0xe1, 0x13, 0x89, 0x58, 0xb7, 0x09, 0x2a, 0xec, 0xdb, 0x54, 0xdc, 0x50, 0x7c, 0x05, 0xe5, - 0xad, 0x5b, 0x8f, 0xaf, 0x34, 0x04, 0xeb, 0x95, 0x75, 0x65, 0xb1, 0x44, 0x8a, 0xe4, 0x87, 0xd9, - 0x28, 0xec, 0x12, 0x7b, 0x8d, 0x44, 0x9a, 0x8b, 0x15, 0x28, 0xaf, 0x41, 0x6b, 0x8e, 0xb0, 0x40, - 0xbd, 0xa0, 0x78, 0x84, 0x22, 0x79, 0xee, 0xc8, 0xd6, 0xd3, 0x23, 0x07, 0x4e, 0xa7, 0x5d, 0x0e, - 0x69, 0x27, 0xae, 0x44, 0xf9, 0xe6, 0x5f, 0x78, 0x49, 0x05, 0x16, 0x63, 0xc3, 0x0a, 0xe5, 0x62, - 0x18, 0x28, 0xe3, 0x8a, 0x58, 0x6b, 0xb1, 0x1a, 0xe5, 0xd7, 0x6b, 0x01, 0x08, 0x1f, 0x3c, 0xd5, - 0x4a, 0x01, 0xc1, 0x0a, 0xe5, 0xb9, 0xf1, 0x81, 0x3e, 0xe3, 0xd2, 0xd6, 0xb4, 0xeb, 0x62, 0x2d, - 0xc5, 0x3a, 0x84, 0xe0, 0xef, 0x1a, 0x2b, 0x9b, 0x0a, 0x76, 0xd1, 0xe3, 0x8a, 0xe5, 0x62, 0x18, - 0x2e, 0xe3, 0xea, 0xb8, 0xf6, 0xe2, 0x6b, 0x28, 0x1f, 0x27, 0xae, 0x09, 0x69, 0x11, 0x2c, 0x47, - 0xcb, 0x87, 0x04, 0x2d, 0xac, 0x50, 0x7e, 0x84, 0x20, 0x84, 0x81, 0x58, 0xfc, 0xd2, 0x61, 0xa3, - 0x7f, 0x3b, 0x0b, 0x22, 0xe4, 0x08, 0xc1, 0xce, 0x7a, 0x88, 0x5f, 0x0a, 0x68, 0x42, 0x7d, 0x48, - 0x6b, 0xd0, 0x02, 0x11, 0xbf, 0xaf, 0x31, 0x5c, 0x38, 0xdd, 0x3b, 0x78, 0x10, 0x79, 0x86, 0x16, - 0x55, 0x58, 0x4d, 0x41, 0xdc, 0x8f, 0x63, 0x62, 0xf3, 0x23, 0xc8, 0x2b, 0xe8, 0x25, 0xdc, 0x95, - 0xdc, 0x77, 0xc8, 0xe8, 0x3b, 0x98, 0xec, 0xd9, 0x06, 0x19, 0x89, 0x68, 0xb8, 0xde, 0x5d, 0x24, - 0x24, 0x5d, 0xcf, 0x36, 0xab, 0x1b, 0x93, 0x25, 0x80, 0xf4, 0xdf, 0x6c, 0x0d, 0xc9, 0xb4, 0xf8, - 0xa1, 0xc5, 0x32, 0x34, 0x1e, 0x63, 0x6d, 0xcb, 0xc9, 0xb7, 0xfc, 0x7e, 0x5d, 0xb9, 0x4f, 0xb2, - 0x4a, 0xe5, 0x89, 0xb6, 0x78, 0xca, 0x56, 0x85, 0xf8, 0xbc, 0xdb, 0x03, 0x18, 0x9e, 0x08, 0x3e, - 0x2a, 0xf2, 0xc4, 0x74, 0xf1, 0x90, 0x67, 0xbf, 0x81, 0x0a, 0x9c, 0xdf, 0xee, 0x21, 0x81, 0x59, - 0xc2, 0x4b, 0x60, 0x3c, 0x24, 0x87, 0xd6, 0x10, 0xbc, 0x74, 0xa6, 0x49, 0x57, 0xde, 0x47, 0xef, - 0x49, 0xf4, 0xad, 0x97, 0xdf, 0xe6, 0x9f, 0x1c, 0x13, 0x2c, 0xf6, 0x7d, 0x1b, 0x1f, 0xfe, 0xd8, - 0xe8, 0xbf, 0x38, 0x32, 0xdc, 0xdd, 0xa0, 0x6d, 0x0c, 0x36, 0x13, 0xfd, 0xfb, 0x95, 0xe8, 0x16, - 0xf0, 0xef, 0x04, 0xac, 0x01, 0xb9, 0xe0, 0x40, 0x85, 0xcb, 0x52, 0xf3, 0x81, 0x64, 0x18, 0x48, - 0xeb, 0x91, 0x9e, 0xbd, 0xc9, 0x93, 0x83, 0xc5, 0xc6, 0x14, 0x94, 0xb3, 0xda, 0x17, 0xde, 0x20, - 0xbe, 0x86, 0xf2, 0x22, 0xbe, 0xf0, 0x06, 0x46, 0x50, 0x3c, 0xa3, 0x2b, 0x4f, 0x49, 0xa4, 0x48, - 0x2e, 0x8d, 0x0f, 0x0e, 0x62, 0x64, 0x66, 0x45, 0x71, 0xbe, 0x34, 0x9c, 0x88, 0xf5, 0xc7, 0x07, - 0x76, 0x27, 0x8f, 0x9d, 0x31, 0x81, 0x09, 0xd7, 0x83, 0x2c, 0x5a, 0x25, 0xbd, 0xc4, 0xdf, 0xa1, - 0x7c, 0xf3, 0x2f, 0x8c, 0xe3, 0x80, 0x9a, 0xc0, 0x39, 0x69, 0x58, 0xa1, 0xac, 0x92, 0x6e, 0x14, - 0xb7, 0x81, 0x62, 0x06, 0x4c, 0x6e, 0x88, 0xe3, 0x1e, 0x88, 0xbd, 0x71, 0xf4, 0xfd, 0xd5, 0x41, - 0xab, 0xcc, 0xe2, 0xdc, 0xc3, 0xcb, 0x42, 0xc1, 0x26, 0x52, 0x91, 0xec, 0x6b, 0x57, 0xd9, 0xe8, - 0xe2, 0x87, 0x2c, 0x1c, 0x26, 0xd0, 0x1c, 0xbf, 0xc2, 0x14, 0x20, 0x09, 0x87, 0x39, 0x91, 0x5f, - 0xf1, 0xb5, 0xf2, 0xca, 0x50, 0xb9, 0x3a, 0xb1, 0xba, 0xa6, 0x7a, 0x75, 0xb5, 0xb2, 0xa2, 0xfa, - 0x8d, 0xea, 0x9a, 0xe5, 0xea, 0x38, 0x75, 0x4d, 0x4d, 0x0d, 0xfe, 0xa3, 0x6e, 0x4d, 0x45, 0x45, - 0x55, 0x5d, 0x9d, 0x3a, 0x6e, 0x99, 0x52, 0xbd, 0x62, 0x8d, 0x5a, 0xa5, 0x8e, 0x5b, 0x5d, 0xbd, - 0xb2, 0x6a, 0xd5, 0x9a, 0xd5, 0xea, 0xe4, 0x65, 0xab, 0xd4, 0x8a, 0xaa, 0xd5, 0x55, 0xea, 0xca, - 0xea, 0x1a, 0x65, 0x75, 0x15, 0x0b, 0x83, 0xf9, 0x4b, 0x8b, 0x6e, 0x05, 0xf2, 0x03, 0xbb, 0xcc, - 0x32, 0xba, 0xf5, 0x29, 0x98, 0x1b, 0x34, 0x3c, 0xd6, 0xc1, 0xee, 0x3c, 0x31, 0xb2, 0xf7, 0x10, - 0x18, 0x40, 0x00, 0x49, 0x9b, 0xe8, 0xea, 0x4e, 0x1e, 0x8f, 0xb1, 0xe3, 0xb5, 0x68, 0xdb, 0x27, - 0x50, 0x6e, 0x38, 0xe2, 0x0b, 0x45, 0x08, 0x8d, 0x32, 0x57, 0x57, 0xe6, 0x48, 0x50, 0x22, 0x8b, - 0x30, 0x36, 0x4b, 0x42, 0x65, 0x82, 0x2e, 0x54, 0x89, 0x8b, 0x50, 0xb6, 0x16, 0x68, 0x20, 0xde, - 0x22, 0xf8, 0xaa, 0x98, 0xbf, 0x69, 0x0f, 0x93, 0x16, 0x3e, 0x7c, 0x84, 0xf4, 0x30, 0x2b, 0xc4, - 0x15, 0x68, 0x92, 0x86, 0xa3, 0xaa, 0xd1, 0x50, 0xc3, 0xe3, 0xf0, 0x3b, 0x85, 0x3d, 0x9b, 0xec, - 0x35, 0x74, 0x0c, 0xf8, 0x22, 0x32, 0x86, 0xbd, 0x89, 0xb8, 0x06, 0x4d, 0xa8, 0x6f, 0x09, 0x85, - 0xb4, 0x40, 0xa4, 0x2e, 0xa2, 0x35, 0x13, 0x2a, 0x02, 0x23, 0x41, 0xbe, 0x5c, 0x9e, 0x47, 0x46, - 0xea, 0xfb, 0xdc, 0xe8, 0x3d, 0x4d, 0xfc, 0x88, 0x7b, 0xb6, 0x25, 0xfa, 0x4e, 0x8c, 0x7c, 0x49, - 0x9e, 0x12, 0x95, 0x6f, 0x2f, 0x56, 0xa3, 0x89, 0xe1, 0x88, 0xd6, 0x5c, 0x67, 0xb2, 0x42, 0x81, - 0x7a, 0x93, 0xae, 0xc8, 0xa6, 0x39, 0x75, 0x6c, 0x15, 0x8e, 0x25, 0xe2, 0xf1, 0x54, 0x5b, 0x0b, - 0x71, 0x8b, 0x60, 0x6e, 0xab, 0xd6, 0x4c, 0xad, 0xef, 0x1f, 0x74, 0x1b, 0xc5, 0x84, 0x37, 0x2c, - 0x32, 0x67, 0x25, 0xe8, 0xee, 0x55, 0x5d, 0x79, 0x59, 0x82, 0x2e, 0xf2, 0x8b, 0x30, 0x7c, 0xaa, - 0xff, 0x64, 0x72, 0x70, 0x3b, 0x0c, 0xcf, 0xe5, 0x74, 0xb4, 0x28, 0x2e, 0x28, 0x84, 0x4b, 0x83, - 0x63, 0x85, 0x6f, 0x31, 0x06, 0x06, 0x12, 0x07, 0xce, 0xab, 0x30, 0x8e, 0xf8, 0x12, 0x1f, 0xb5, - 0x1e, 0xe8, 0x8c, 0x62, 0x5d, 0x79, 0x90, 0x8f, 0x5a, 0xcf, 0xbe, 0x04, 0x73, 0xcb, 0x98, 0xb6, - 0xe1, 0x03, 0xd5, 0xbf, 0xc4, 0x33, 0x07, 0x13, 0xb9, 0x11, 0x2c, 0xe6, 0xc0, 0x3e, 0x82, 0x2b, - 0x7a, 0x1c, 0x47, 0x3d, 0x4f, 0xf2, 0x0c, 0x75, 0x0f, 0x20, 0x86, 0x71, 0x6b, 0x3c, 0x16, 0xb3, - 0x85, 0xba, 0x6f, 0xf4, 0x85, 0x23, 0x20, 0xb5, 0x25, 0x64, 0x01, 0x04, 0x9b, 0xb7, 0x8a, 0x65, - 0x31, 0x3e, 0xb0, 0x33, 0xf1, 0xf5, 0x31, 0x3b, 0x72, 0xb5, 0xea, 0xf9, 0x50, 0xf7, 0x53, 0x3c, - 0x43, 0xdd, 0xc3, 0xda, 0x21, 0x58, 0xad, 0x39, 0x3b, 0x25, 0xbe, 0x9b, 0xd0, 0xe4, 0x77, 0x83, - 0xa1, 0x7a, 0x8d, 0x06, 0xf0, 0xa6, 0x19, 0xdb, 0x70, 0x60, 0x41, 0x47, 0x95, 0xbc, 0x84, 0x9c, - 0x17, 0x4d, 0x97, 0x08, 0x49, 0x2c, 0x93, 0x83, 0x6d, 0x89, 0xbe, 0xcf, 0x18, 0x92, 0x03, 0x97, - 0xec, 0xc4, 0xee, 0x53, 0x46, 0xdb, 0x79, 0xd5, 0x31, 0x82, 0xd8, 0x29, 0xa0, 0x89, 0xf5, 0xc1, - 0xa6, 0xa6, 0x60, 0xa0, 0xd6, 0x17, 0xf2, 0x35, 0x85, 0x0b, 0xa7, 0x62, 0xa8, 0x79, 0xc4, 0x13, - 0x6a, 0x2a, 0xb8, 0x86, 0x00, 0x3c, 0xd8, 0x41, 0xd1, 0x36, 0x80, 0xbc, 0xc8, 0x68, 0xfd, 0xda, - 0x68, 0x3d, 0xcb, 0x34, 0xd9, 0x10, 0xe4, 0x3e, 0x75, 0xe1, 0xb4, 0x09, 0x73, 0x60, 0x22, 0x42, - 0xa3, 0xbd, 0x1c, 0x1d, 0x89, 0xea, 0xaa, 0xad, 0xb7, 0x58, 0x01, 0xd8, 0x96, 0x23, 0x31, 0x1e, - 0xd5, 0x95, 0xf9, 0x12, 0x2b, 0x94, 0x0b, 0x79, 0x6c, 0xcb, 0x73, 0x71, 0x2a, 0x6b, 0x23, 0xd6, - 0x20, 0x14, 0x08, 0x36, 0x68, 0xd5, 0xb5, 0x26, 0xcb, 0x8a, 0x53, 0xb3, 0x8d, 0x07, 0x99, 0x0d, - 0x57, 0x2c, 0x3f, 0x00, 0x3a, 0x2b, 0x72, 0x10, 0x1f, 0x77, 0xc6, 0x87, 0x7b, 0x93, 0x3d, 0xdb, - 0xaa, 0x6b, 0x09, 0xef, 0xcb, 0x35, 0x15, 0xd7, 0xa1, 0x09, 0xe6, 0x2f, 0x92, 0x57, 0x90, 0xe4, - 0x0e, 0xc0, 0x19, 0x51, 0xf8, 0x72, 0x79, 0x51, 0xea, 0xcc, 0x37, 0xc6, 0xf0, 0x3e, 0xec, 0xfe, - 0x69, 0xc5, 0x36, 0x05, 0x30, 0xeb, 0xbf, 0x68, 0xc4, 0xf6, 0x26, 0x7b, 0xb6, 0x71, 0xed, 0x55, - 0xbe, 0xf3, 0xec, 0x1a, 0x84, 0xac, 0x4b, 0xe9, 0xf1, 0x0e, 0x4b, 0xf6, 0x77, 0x78, 0xba, 0xf3, - 0x80, 0xcc, 0xce, 0xbc, 0x76, 0xe5, 0x45, 0x34, 0xd5, 0x75, 0x5c, 0xd7, 0xa5, 0x60, 0xd9, 0x23, - 0xe8, 0x4a, 0xa7, 0x80, 0x76, 0x0a, 0x12, 0x7e, 0x5a, 0xe5, 0xcd, 0x02, 0xe1, 0x40, 0x70, 0xb2, - 0x19, 0x16, 0x13, 0x1a, 0x7e, 0xa6, 0xb6, 0x82, 0x09, 0x53, 0x34, 0x71, 0xf0, 0xa8, 0xf1, 0xcd, - 0x36, 0xf8, 0x68, 0x07, 0xea, 0x30, 0x09, 0x39, 0x1a, 0x0a, 0x12, 0xd8, 0x76, 0xa3, 0x63, 0x3f, - 0x20, 0x99, 0xab, 0x43, 0x6d, 0x89, 0x7d, 0xdf, 0x1a, 0xdd, 0x6d, 0xf1, 0xd8, 0x1e, 0x5f, 0xb3, - 0x3f, 0x3e, 0x40, 0xc8, 0xc5, 0xc4, 0xd1, 0x1d, 0xc6, 0x8e, 0xed, 0xa9, 0x4b, 0xdd, 0xc9, 0xc1, - 0x6f, 0xaf, 0x0e, 0xb5, 0x17, 0x7f, 0x32, 0x09, 0xe5, 0x60, 0x84, 0xf9, 0x33, 0xc2, 0xde, 0xc3, - 0x2b, 0x3f, 0x4b, 0x57, 0xa6, 0x13, 0xf6, 0x7e, 0xa2, 0x0d, 0xc9, 0x02, 0xef, 0xfe, 0x0a, 0xca, - 0x83, 0xcc, 0x39, 0xe4, 0xfd, 0x06, 0x1a, 0x1f, 0x8a, 0xe4, 0x87, 0xf9, 0x08, 0x95, 0x60, 0x5d, - 0xc6, 0xde, 0xf0, 0x75, 0x1b, 0xc2, 0xc1, 0xe6, 0xf0, 0x62, 0x5f, 0xb3, 0x5f, 0x25, 0xcd, 0xc5, - 0xa7, 0x51, 0x4e, 0xa3, 0x3f, 0xb0, 0xc1, 0xe6, 0xc9, 0x69, 0x16, 0xc8, 0x85, 0x10, 0x8c, 0x08, - 0x9a, 0x11, 0xd6, 0xba, 0x3d, 0x9a, 0xdc, 0x7b, 0x5a, 0xc5, 0xf5, 0x62, 0x13, 0xca, 0x6b, 0x86, - 0x1b, 0x06, 0x82, 0x99, 0x22, 0xaf, 0x03, 0x5c, 0xc4, 0xdf, 0x2d, 0xfc, 0xac, 0x90, 0x4e, 0xf2, - 0x23, 0xe4, 0xbb, 0xa8, 0x49, 0x09, 0xbb, 0x5e, 0x1b, 0xb4, 0x4d, 0x57, 0xa2, 0x9b, 0xf1, 0xb1, - 0x19, 0xfd, 0x17, 0x55, 0xd2, 0x5e, 0x7c, 0x1a, 0xe5, 0x86, 0xb4, 0x48, 0x68, 0x13, 0x49, 0x57, - 0x05, 0x21, 0x53, 0x71, 0x89, 0x3c, 0x23, 0xd5, 0x7f, 0x02, 0x46, 0x23, 0xb1, 0xca, 0xbf, 0x3e, - 0x96, 0xd8, 0xf7, 0x8d, 0x0a, 0xb5, 0xe2, 0x22, 0xfa, 0x2a, 0xe7, 0x71, 0x01, 0x50, 0xe1, 0x55, - 0x9e, 0xe8, 0xf5, 0x1e, 0x2f, 0x80, 0xf7, 0x18, 0x6c, 0x23, 0x67, 0xea, 0xca, 0x34, 0x78, 0x8f, - 0x27, 0xba, 0x5f, 0xe2, 0x65, 0xce, 0x97, 0x38, 0x1f, 0x2f, 0x0d, 0x4b, 0xc3, 0x1c, 0x2f, 0xf1, - 0xc4, 0x4c, 0x6f, 0xb0, 0x6e, 0x45, 0x08, 0x07, 0xf3, 0xbb, 0x8f, 0x4c, 0x8e, 0x81, 0x92, 0x44, - 0x0b, 0xe0, 0xd3, 0x80, 0x24, 0xc2, 0xc2, 0xc1, 0xc3, 0xc6, 0xa9, 0x5d, 0x8c, 0x59, 0xa8, 0x59, - 0xb5, 0xba, 0x6e, 0xb5, 0xa2, 0xae, 0xae, 0xaa, 0xbc, 0x56, 0x5e, 0x1e, 0x7a, 0x49, 0x45, 0x56, - 0xc1, 0xf7, 0x22, 0x96, 0xde, 0xb4, 0x88, 0x25, 0x64, 0xb9, 0x6e, 0x33, 0x62, 0xe9, 0x71, 0x58, - 0x95, 0x83, 0x58, 0xe2, 0x9f, 0x54, 0x20, 0x93, 0x88, 0x1e, 0x1d, 0x13, 0x4e, 0x16, 0xa5, 0x54, - 0x6d, 0x7b, 0x91, 0xe0, 0x3d, 0x2d, 0xd1, 0x95, 0x47, 0x6c, 0x2f, 0x12, 0x41, 0x8c, 0xa3, 0xbc, - 0x4b, 0xaf, 0x20, 0x64, 0xa2, 0xc9, 0x95, 0x5a, 0xe4, 0xbd, 0x20, 0x4d, 0x11, 0x8b, 0x6d, 0x6f, - 0xb9, 0x62, 0xf9, 0x3e, 0xf3, 0x6f, 0x86, 0xb2, 0xe2, 0x83, 0x9f, 0x27, 0x8f, 0x6e, 0x36, 0x76, - 0x0c, 0x9b, 0x50, 0xc2, 0x35, 0x13, 0x2b, 0x39, 0x5c, 0x0d, 0x4f, 0x2c, 0x0e, 0x00, 0x63, 0xe1, - 0x6a, 0xc7, 0x38, 0xde, 0xc8, 0xfa, 0x92, 0x80, 0x26, 0x86, 0x37, 0xf8, 0x9b, 0x57, 0xd1, 0xf8, - 0x23, 0x93, 0xf1, 0x7b, 0xd7, 0x23, 0xe8, 0xca, 0x7e, 0x41, 0xb2, 0x55, 0xc9, 0xad, 0x02, 0x0b, - 0x3d, 0x02, 0x18, 0x84, 0x04, 0x1d, 0x39, 0xd2, 0x0d, 0xfb, 0x5b, 0x9a, 0xdc, 0x7b, 0x96, 0x57, - 0x5e, 0x43, 0x6a, 0x48, 0x6a, 0x31, 0x66, 0xf6, 0x24, 0x1d, 0x20, 0x9b, 0x06, 0xbe, 0xed, 0xfc, - 0x40, 0xb0, 0xfd, 0x64, 0x0e, 0x82, 0x99, 0x3a, 0xe0, 0xd0, 0x8c, 0xee, 0xdd, 0xc9, 0xc1, 0x3e, - 0x78, 0x4b, 0x55, 0xdb, 0xaa, 0xc4, 0x20, 0x1a, 0x1f, 0x09, 0xf9, 0x02, 0xe1, 0x46, 0xf3, 0x74, - 0xe0, 0xb5, 0x7f, 0x4d, 0x57, 0x6a, 0x24, 0xab, 0x54, 0x56, 0x52, 0xa7, 0x3e, 0x37, 0xb6, 0x9f, - 0x33, 0x86, 0x3f, 0xa6, 0x09, 0x6d, 0x3b, 0xe2, 0x03, 0x51, 0x6b, 0x2f, 0x13, 0x07, 0xce, 0x93, - 0x84, 0x80, 0xa9, 0xe1, 0xaf, 0x13, 0x9d, 0x9f, 0x25, 0x2f, 0x0d, 0xa6, 0xfa, 0xf7, 0x18, 0x67, - 0xf7, 0x25, 0x8f, 0xc7, 0x12, 0xfb, 0x77, 0x24, 0x7a, 0xbf, 0x56, 0xad, 0xd1, 0xc4, 0xbf, 0x12, - 0xd0, 0x78, 0x16, 0x49, 0x85, 0xd0, 0x07, 0x7d, 0x82, 0xae, 0x7c, 0x21, 0x48, 0x56, 0xb9, 0xfc, - 0x89, 0x00, 0xb9, 0xf7, 0xd9, 0x75, 0x67, 0x7b, 0x67, 0x44, 0x0f, 0xd9, 0xb2, 0x0f, 0x12, 0xbd, - 0xc5, 0x2e, 0xb6, 0x0f, 0xb0, 0x6f, 0xf1, 0x81, 0x58, 0x24, 0xd4, 0xa2, 0xf1, 0xdd, 0xd2, 0x75, - 0x28, 0x2d, 0xa2, 0x8c, 0x38, 0x6b, 0x0d, 0x8d, 0xe2, 0x83, 0xad, 0xa9, 0xad, 0xc3, 0x90, 0xce, - 0x14, 0xd0, 0x0d, 0xec, 0x84, 0x6a, 0x2d, 0x74, 0xf6, 0x33, 0x68, 0xc2, 0x8d, 0x3e, 0x52, 0x3b, - 0x05, 0x5d, 0xd9, 0x2e, 0xa0, 0xad, 0x82, 0x84, 0xdf, 0x05, 0xf9, 0x37, 0x3c, 0x7d, 0x6c, 0xa2, - 0xc9, 0x9d, 0xa7, 0xe3, 0xc3, 0xbd, 0xec, 0x28, 0x49, 0x00, 0x16, 0x8c, 0x44, 0x59, 0x8e, 0x10, - 0xb0, 0xa2, 0x31, 0x1b, 0x0f, 0x6d, 0x49, 0xf4, 0x9d, 0x80, 0x2e, 0xec, 0x0d, 0x00, 0xbb, 0xc3, - 0x91, 0x1d, 0x9d, 0x89, 0xfd, 0xdf, 0x30, 0x13, 0x37, 0x13, 0x2a, 0xb8, 0x18, 0x76, 0xc9, 0xbe, - 0xf6, 0x2b, 0xd1, 0x2d, 0xc5, 0xc7, 0xb2, 0xd1, 0xb8, 0xd5, 0x1b, 0xb4, 0x0a, 0x7f, 0x43, 0x48, - 0x7c, 0x02, 0x65, 0xaf, 0xad, 0xad, 0x20, 0xef, 0x13, 0xa6, 0x5c, 0xcd, 0xdf, 0x72, 0x61, 0x72, - 0x78, 0x4f, 0xe2, 0xcc, 0x1f, 0x99, 0x3a, 0x7a, 0x6d, 0x6d, 0x05, 0x91, 0xac, 0x99, 0xd5, 0xe6, - 0xb3, 0x56, 0x51, 0x5d, 0xa9, 0x92, 0x77, 0x0a, 0x9e, 0x35, 0xb3, 0x40, 0x9e, 0x08, 0x49, 0x88, - 0xa0, 0xb7, 0x8a, 0xcb, 0xc4, 0x2a, 0x94, 0x5f, 0x5d, 0x5b, 0xd3, 0xd2, 0xb4, 0x4e, 0x0b, 0x91, - 0x8c, 0x8c, 0x18, 0x27, 0xb0, 0x42, 0x79, 0x36, 0x34, 0x37, 0x3a, 0x5a, 0x8d, 0xee, 0xaf, 0x8c, - 0xae, 0xfe, 0xe4, 0xde, 0xd3, 0xd5, 0xb5, 0x46, 0xef, 0x37, 0xc6, 0xe1, 0xa8, 0xca, 0x5a, 0x89, - 0x4f, 0x33, 0x6c, 0x9a, 0x63, 0xe5, 0x39, 0xa0, 0xd8, 0x54, 0x24, 0x43, 0xe0, 0x7b, 0x41, 0x19, - 0x63, 0x82, 0xf2, 0xca, 0xd0, 0x38, 0xf2, 0x84, 0x11, 0x0e, 0x0e, 0xf4, 0x1a, 0xa4, 0xcc, 0xea, - 0xaa, 0x5b, 0x04, 0x3e, 0xad, 0x74, 0x04, 0x37, 0xcb, 0x1b, 0x25, 0xb8, 0xd9, 0x38, 0x67, 0x70, - 0xb3, 0xb2, 0xa7, 0x75, 0xe5, 0x09, 0x24, 0x4b, 0x74, 0xbb, 0xe5, 0x47, 0xe1, 0x64, 0x81, 0x18, - 0x59, 0xfd, 0x6a, 0x15, 0x21, 0x55, 0x60, 0x05, 0x6d, 0xba, 0xd1, 0xb6, 0x1d, 0xb6, 0xb9, 0x78, - 0x9f, 0x80, 0x26, 0x92, 0x4e, 0x90, 0xf5, 0x6d, 0x3a, 0xca, 0xc5, 0x16, 0x02, 0xa0, 0xce, 0x51, - 0xe1, 0x87, 0x09, 0x83, 0xe6, 0xf1, 0x01, 0xbc, 0xe1, 0xa3, 0x99, 0xed, 0xdc, 0x6d, 0x6e, 0x0b, - 0x67, 0xda, 0xb7, 0x90, 0xee, 0x50, 0x99, 0x79, 0x1e, 0x68, 0xbe, 0x64, 0x9b, 0x50, 0x9e, 0xbe, - 0xfa, 0xd5, 0xaa, 0x22, 0xf3, 0x00, 0x61, 0xb1, 0x64, 0x5d, 0xd7, 0x16, 0x63, 0x69, 0x8c, 0x25, - 0x32, 0x50, 0xb5, 0x5f, 0x8b, 0x7b, 0x04, 0x9e, 0x8f, 0x12, 0x2c, 0xf7, 0x03, 0x8e, 0x8f, 0xaa, - 0xe7, 0x52, 0x7f, 0x01, 0xc4, 0x96, 0x57, 0xd4, 0x2d, 0x7c, 0x75, 0x69, 0xdd, 0xc2, 0x25, 0xf8, - 0xdf, 0x02, 0x63, 0xfb, 0x21, 0xa3, 0x95, 0x04, 0x58, 0x34, 0xaf, 0x25, 0x31, 0xcd, 0xdf, 0x61, - 0x9c, 0xe9, 0x61, 0xa3, 0x40, 0xe8, 0x7b, 0x4b, 0xce, 0xd4, 0x1b, 0x35, 0x2e, 0x9e, 0x33, 0xba, - 0xbe, 0x01, 0xbd, 0x4a, 0x09, 0xcf, 0x98, 0xbd, 0x82, 0x26, 0x90, 0x1f, 0x5c, 0x54, 0xa0, 0x05, - 0x26, 0xef, 0xce, 0x97, 0xcb, 0x13, 0x61, 0x59, 0x34, 0x18, 0xc6, 0xb8, 0x50, 0x6e, 0x81, 0x50, - 0x18, 0xcd, 0x57, 0xf9, 0x46, 0x62, 0x98, 0x4b, 0xc8, 0x95, 0x4d, 0x73, 0x43, 0xaf, 0xe4, 0xd2, - 0x71, 0x29, 0x24, 0x64, 0x0b, 0x8d, 0x7d, 0x6f, 0x7e, 0x63, 0x6c, 0x0f, 0xa8, 0x98, 0x20, 0xd9, - 0x19, 0x36, 0xc6, 0x81, 0xcb, 0x11, 0x8f, 0xed, 0x49, 0x9d, 0xf9, 0x2e, 0xb1, 0x7f, 0x18, 0x36, - 0x16, 0x50, 0x35, 0x8e, 0xc3, 0x51, 0x58, 0xc4, 0xe5, 0xc9, 0x7a, 0x0d, 0xe5, 0x85, 0xb4, 0xf5, - 0xfe, 0x60, 0x80, 0xc0, 0xfb, 0x33, 0x18, 0xde, 0xa1, 0x48, 0x16, 0xad, 0x18, 0x31, 0xbd, 0xa7, - 0xcd, 0xab, 0x72, 0xe4, 0xc8, 0xb5, 0xf2, 0x59, 0xa1, 0x19, 0x05, 0x42, 0x61, 0x83, 0x3b, 0x36, - 0x08, 0xe9, 0x25, 0xaa, 0x28, 0x77, 0x63, 0x73, 0x7d, 0x75, 0x25, 0xb9, 0x07, 0xcf, 0x99, 0xf4, - 0x08, 0x94, 0xc8, 0x25, 0x04, 0x12, 0x4f, 0x6d, 0x4e, 0xf4, 0xb6, 0x27, 0x87, 0xf7, 0x24, 0x07, - 0x7b, 0xfd, 0x0d, 0xf0, 0x19, 0xf1, 0x81, 0x9d, 0x64, 0x93, 0xb0, 0x5e, 0x93, 0xae, 0x14, 0x3a, - 0xda, 0x13, 0xc9, 0xe5, 0xd1, 0x44, 0x72, 0xde, 0x6a, 0xdb, 0x6b, 0xe5, 0x33, 0x42, 0xd3, 0xbc, - 0x16, 0xc8, 0xb1, 0xc3, 0x6b, 0x6c, 0xb2, 0xff, 0x71, 0x34, 0x17, 0xf6, 0x6c, 0x9b, 0xec, 0x7f, - 0x22, 0x48, 0xfd, 0x41, 0xe4, 0x9f, 0x76, 0x54, 0x5e, 0x09, 0x10, 0x46, 0x13, 0xb4, 0xc0, 0x46, - 0x7f, 0x28, 0x18, 0x68, 0xd2, 0x02, 0xd4, 0x0d, 0xe5, 0x35, 0x5d, 0x79, 0x4a, 0xe2, 0xcb, 0xe5, - 0x47, 0xc9, 0x36, 0x60, 0x79, 0x69, 0x69, 0x11, 0x00, 0xea, 0x9b, 0xcd, 0xa1, 0x60, 0x43, 0x69, - 0x51, 0x83, 0xb6, 0xae, 0x65, 0x7d, 0x69, 0x51, 0x38, 0xe2, 0x5b, 0xff, 0x36, 0x9e, 0x53, 0xcd, - 0x31, 0xff, 0x56, 0x73, 0x71, 0x85, 0x9a, 0x63, 0xb6, 0x52, 0xf9, 0xd1, 0xc4, 0x37, 0x10, 0xd2, - 0x02, 0xeb, 0xfd, 0x01, 0x48, 0x02, 0x3c, 0x9e, 0xaa, 0xf8, 0x1e, 0x91, 0xb8, 0x62, 0xb9, 0xd0, - 0x18, 0xda, 0x97, 0xf8, 0x78, 0x37, 0x13, 0xcb, 0x01, 0x09, 0xb8, 0x61, 0x69, 0xf8, 0x5a, 0xf9, - 0xe4, 0xd0, 0x44, 0x35, 0x7b, 0xc3, 0xd2, 0xb0, 0x9a, 0x8b, 0x75, 0x27, 0x2a, 0xd7, 0x4d, 0x5c, - 0x85, 0x26, 0xf8, 0xc3, 0x55, 0x1f, 0x9a, 0x60, 0xea, 0xdf, 0x08, 0xc4, 0x5c, 0x3e, 0xc8, 0xcc, - 0xf9, 0x72, 0x79, 0x8e, 0x25, 0x96, 0xc6, 0xdb, 0x95, 0xdc, 0xf5, 0xb5, 0xd1, 0x79, 0x94, 0xa0, - 0x39, 0xbe, 0xa5, 0xf8, 0xaf, 0x05, 0x76, 0x63, 0xf0, 0x72, 0x81, 0x7c, 0xfb, 0x4c, 0xd0, 0x95, - 0x56, 0x41, 0xe2, 0x6b, 0xe4, 0x8d, 0xbc, 0x8a, 0x87, 0x6d, 0xd2, 0xbb, 0x5a, 0x83, 0x06, 0x99, - 0xc3, 0x4b, 0x8b, 0xc2, 0xfe, 0xc0, 0xfa, 0x46, 0xed, 0xed, 0xd2, 0x22, 0xab, 0x90, 0x7a, 0x19, - 0xc4, 0x52, 0x9b, 0xf7, 0x8e, 0x6c, 0x39, 0x09, 0x43, 0x5c, 0x1d, 0xea, 0x80, 0xa6, 0x50, 0x9b, - 0xdc, 0xf5, 0x75, 0xf2, 0xab, 0x5d, 0xac, 0x8a, 0x11, 0xc3, 0xd0, 0xe6, 0x5a, 0xf9, 0xcc, 0xd0, - 0x74, 0x15, 0x59, 0x43, 0xaa, 0x79, 0x50, 0xa1, 0xf2, 0xab, 0x13, 0x0f, 0x08, 0x68, 0x9a, 0xd5, - 0xa6, 0x82, 0xa1, 0x25, 0xa0, 0x21, 0x71, 0x4e, 0x2a, 0xaf, 0x7a, 0xf9, 0x55, 0xe2, 0x9f, 0x42, - 0x13, 0xc8, 0x39, 0x96, 0x8a, 0x09, 0xc3, 0x28, 0x58, 0x12, 0xc3, 0x0b, 0x9d, 0xea, 0x3f, 0x51, - 0x5d, 0x09, 0xac, 0x34, 0x34, 0x7c, 0x39, 0x18, 0x8e, 0x90, 0x57, 0xd2, 0x6b, 0x06, 0xf1, 0x33, - 0x81, 0xf9, 0xa0, 0x4d, 0xc2, 0xbc, 0x55, 0xa9, 0x77, 0xec, 0x04, 0x0b, 0xb3, 0xda, 0x5c, 0xcf, - 0xde, 0xd2, 0x95, 0xd7, 0x98, 0xeb, 0xd9, 0x72, 0xb6, 0x2a, 0x28, 0xb0, 0xa4, 0x28, 0xdd, 0x31, - 0x63, 0xe0, 0x24, 0x98, 0x44, 0xf3, 0x66, 0xd0, 0x10, 0x7f, 0x30, 0x3e, 0xd0, 0x69, 0x7c, 0x77, - 0x00, 0x94, 0xb9, 0xf2, 0x92, 0xf8, 0xc0, 0x97, 0xd7, 0xca, 0x73, 0x7b, 0x84, 0xac, 0x82, 0xe9, - 0xcc, 0x59, 0xad, 0xcc, 0x12, 0x47, 0x4d, 0xa6, 0xaf, 0xe5, 0x74, 0x4b, 0x1c, 0x35, 0x9e, 0x09, - 0xa2, 0xae, 0x95, 0xe7, 0x85, 0x72, 0x0a, 0xb2, 0x0a, 0xa7, 0x5b, 0x12, 0xa9, 0xcd, 0x02, 0x9a, - 0x1c, 0x0c, 0x34, 0x6e, 0x82, 0xcf, 0xa8, 0x0e, 0xbc, 0x1b, 0xc4, 0x64, 0x66, 0x7e, 0xf9, 0x2f, - 0x74, 0x65, 0xad, 0xe4, 0xa8, 0x92, 0x2b, 0xe3, 0x83, 0xad, 0x30, 0x1a, 0xd9, 0x70, 0x8b, 0xdd, - 0xe8, 0x04, 0xd9, 0x79, 0xb2, 0xf7, 0x88, 0x71, 0x86, 0xbc, 0xc9, 0xd0, 0xd2, 0xad, 0x4f, 0x71, - 0x8c, 0x2a, 0x5e, 0x15, 0xd0, 0xf8, 0x75, 0xf5, 0x61, 0x62, 0x64, 0x0e, 0x52, 0xa2, 0xc5, 0xa3, - 0xee, 0x73, 0x39, 0xed, 0x01, 0x5b, 0x7d, 0x44, 0xd0, 0x95, 0x4f, 0x04, 0xc9, 0x1a, 0x48, 0xee, - 0x14, 0xf8, 0xa5, 0xde, 0x82, 0x50, 0xc1, 0xbc, 0x29, 0x09, 0xb1, 0xd4, 0x80, 0x17, 0x11, 0x0b, - 0xae, 0x55, 0x6b, 0x69, 0x62, 0x42, 0x40, 0x13, 0x34, 0xce, 0xb0, 0x5e, 0xf4, 0x4e, 0xf1, 0xef, - 0xfa, 0x66, 0xce, 0x30, 0x1d, 0xbe, 0xba, 0x5b, 0xd0, 0x95, 0x0e, 0x41, 0xe2, 0x07, 0x93, 0x7f, - 0xe7, 0xf8, 0xec, 0x1f, 0xc6, 0xd6, 0x9e, 0x7d, 0xec, 0xc8, 0xde, 0x43, 0xb6, 0xcf, 0xe4, 0xd7, - 0x22, 0x56, 0x98, 0x84, 0x5c, 0xb0, 0xa5, 0xa1, 0xba, 0x92, 0xa4, 0xd6, 0xc4, 0x74, 0x24, 0x2d, - 0x93, 0xe7, 0x38, 0xa3, 0x15, 0xc6, 0x07, 0x76, 0x82, 0xca, 0xbd, 0xba, 0x52, 0xa5, 0xad, 0xc4, - 0xef, 0x04, 0x84, 0x60, 0x4b, 0x30, 0x96, 0x03, 0x19, 0xd9, 0x61, 0x41, 0x57, 0x0e, 0x09, 0x12, - 0x57, 0x21, 0xef, 0xb4, 0x89, 0x91, 0x2c, 0x85, 0x70, 0xeb, 0xd7, 0x89, 0xde, 0x76, 0xf3, 0x71, - 0x37, 0x39, 0x87, 0x23, 0x89, 0x7d, 0x6d, 0x57, 0x87, 0x3a, 0x56, 0x2a, 0x35, 0xca, 0xf2, 0xaa, - 0xca, 0x77, 0x2a, 0x56, 0xac, 0xa9, 0x5b, 0x5d, 0xa5, 0x2e, 0x80, 0xb3, 0x4e, 0xb4, 0x1f, 0x4c, - 0x9e, 0x39, 0x06, 0xa3, 0x94, 0x30, 0xc0, 0x4d, 0x1c, 0xec, 0x2f, 0xaa, 0xae, 0xa9, 0xac, 0xaa, - 0xad, 0xaa, 0xa9, 0xac, 0xaa, 0x59, 0xcd, 0xfa, 0x38, 0x70, 0x5f, 0x6a, 0xc7, 0x97, 0xe6, 0x05, - 0x18, 0xfc, 0x36, 0xb1, 0xf3, 0x78, 0x89, 0xca, 0x2d, 0x4c, 0x2c, 0x43, 0x79, 0x10, 0x9b, 0xb0, - 0x70, 0x06, 0x16, 0x18, 0x62, 0xa2, 0x9d, 0x14, 0xc9, 0x33, 0x60, 0x00, 0xf8, 0x55, 0xc4, 0x84, - 0x84, 0xa4, 0x5a, 0x7c, 0x12, 0xe5, 0x06, 0x82, 0x0d, 0x5a, 0xb8, 0x70, 0x26, 0xee, 0x8a, 0x49, - 0x68, 0x28, 0x91, 0xa7, 0x41, 0x4f, 0xf3, 0x87, 0xd5, 0x0f, 0xea, 0xc4, 0x83, 0x02, 0x9a, 0x12, - 0xd0, 0x22, 0x1f, 0x04, 0x43, 0x1b, 0xea, 0xb4, 0x48, 0xc4, 0x1f, 0x58, 0x4f, 0xed, 0xb5, 0xe7, - 0xba, 0xcc, 0x76, 0x6c, 0xcd, 0xca, 0x6b, 0x74, 0xa5, 0x42, 0x72, 0xf6, 0x95, 0x97, 0x30, 0xb2, - 0x37, 0x39, 0xd8, 0x6b, 0x1c, 0x89, 0x25, 0x8f, 0x45, 0x81, 0xf7, 0x65, 0x5e, 0x85, 0xe0, 0x4f, - 0x91, 0xd8, 0x7f, 0x11, 0xca, 0xaf, 0x95, 0xe7, 0x7e, 0x26, 0x64, 0xe5, 0x0b, 0xaa, 0x73, 0x28, - 0xf1, 0xff, 0x2f, 0xa0, 0xe9, 0x64, 0x09, 0xe5, 0xbe, 0xb0, 0xbf, 0x9e, 0xad, 0x0f, 0x42, 0x02, - 0x3f, 0xe4, 0x76, 0x41, 0x73, 0xb5, 0x2d, 0xff, 0x48, 0x57, 0x82, 0x92, 0xe7, 0x28, 0xf2, 0xcf, - 0x09, 0xf2, 0xc1, 0x6b, 0x24, 0x17, 0x96, 0xae, 0x14, 0xde, 0x3d, 0xa2, 0x51, 0xc5, 0x5e, 0x0d, - 0x7c, 0x56, 0xdb, 0x8d, 0xcd, 0xf5, 0xc9, 0xbe, 0x76, 0xf3, 0x24, 0xe9, 0xa7, 0x90, 0x2f, 0xb3, - 0x7f, 0x90, 0xe7, 0xb4, 0xe2, 0x3f, 0x0b, 0x68, 0x26, 0xa9, 0x50, 0x1a, 0x36, 0xfa, 0x02, 0xf5, - 0x1a, 0xfb, 0x2e, 0x88, 0x39, 0xfc, 0x70, 0x9a, 0xef, 0xb2, 0xb7, 0x2e, 0xdf, 0x22, 0xe8, 0xca, - 0x9f, 0x4a, 0xb3, 0xcc, 0xb6, 0x9a, 0x7b, 0x2c, 0xb9, 0x81, 0xba, 0x67, 0x7c, 0x32, 0x72, 0xf0, - 0x3c, 0x1f, 0xcc, 0x93, 0x7d, 0x9d, 0xd1, 0x6d, 0x72, 0x63, 0xfe, 0xe6, 0x8d, 0x61, 0xa8, 0x36, - 0xbf, 0xd0, 0x1e, 0x53, 0x0f, 0x3a, 0x00, 0x67, 0xe9, 0x79, 0x76, 0x6a, 0x9a, 0x2f, 0x11, 0xff, - 0x46, 0x40, 0x13, 0x4d, 0xf8, 0x62, 0x9f, 0x36, 0xdb, 0xdb, 0x3f, 0xa5, 0xc6, 0x6a, 0x53, 0xae, - 0x0b, 0xba, 0xb2, 0x5b, 0x90, 0x6c, 0xfd, 0xe4, 0xdf, 0xf3, 0xc1, 0x49, 0x1d, 0x1f, 0x40, 0x9c, - 0x88, 0xa9, 0x1f, 0x33, 0xf1, 0x75, 0xe6, 0x9c, 0x9b, 0xe1, 0x90, 0xcc, 0x96, 0x07, 0x8e, 0x26, - 0xdb, 0x2f, 0x1a, 0x6d, 0x5f, 0x8d, 0xf4, 0x46, 0x89, 0x35, 0x1f, 0xd6, 0xea, 0x9a, 0xaf, 0x11, - 0x1d, 0xb3, 0xbc, 0xa2, 0x0e, 0x68, 0x7c, 0xe2, 0x16, 0x84, 0x85, 0x9b, 0xaa, 0x6d, 0x35, 0xe2, - 0x16, 0x01, 0x4d, 0x01, 0xe9, 0xaa, 0xaa, 0xf9, 0x03, 0xe1, 0x88, 0xaf, 0xb1, 0x11, 0x47, 0x47, - 0xce, 0x2f, 0x7f, 0x5d, 0x57, 0xd6, 0x48, 0xce, 0x3a, 0xb9, 0x1c, 0x28, 0xb4, 0x91, 0x1d, 0x9d, - 0xa9, 0xcf, 0x5b, 0xf9, 0x78, 0xa4, 0xbc, 0x9c, 0x17, 0xb8, 0xfb, 0xd4, 0x67, 0x5f, 0x01, 0x52, - 0x49, 0x6c, 0x6d, 0x35, 0xb6, 0xff, 0x31, 0x3e, 0xb0, 0x2b, 0xd1, 0xdb, 0x9e, 0xd8, 0xd7, 0xa6, - 0x3a, 0x07, 0x15, 0x0f, 0x09, 0x68, 0xaa, 0x3f, 0xe0, 0x8f, 0xac, 0x08, 0xae, 0xf7, 0x07, 0x6a, - 0x7d, 0xe1, 0xf0, 0x07, 0xc1, 0x50, 0x03, 0xce, 0x79, 0x39, 0xbe, 0x7c, 0x83, 0xae, 0xbc, 0x27, - 0xb9, 0x6b, 0xe5, 0xba, 0x0c, 0x4b, 0x00, 0x41, 0x14, 0x93, 0x2b, 0x34, 0x93, 0x3e, 0xa3, 0xaf, - 0xcc, 0x3d, 0x8f, 0xf8, 0x3a, 0x9a, 0x40, 0x6e, 0x31, 0xc6, 0xc0, 0x0f, 0xe0, 0x45, 0x61, 0xdb, - 0x24, 0xbe, 0x5c, 0x9e, 0xcf, 0x23, 0x09, 0xc0, 0xbf, 0x0b, 0x5a, 0x02, 0x0d, 0x5a, 0xa8, 0xd1, - 0xb7, 0x69, 0x71, 0x70, 0x23, 0xfe, 0xbf, 0x44, 0xe5, 0xbb, 0x88, 0x7f, 0x2e, 0xa0, 0x59, 0xbe, - 0x96, 0x48, 0x70, 0xb9, 0x16, 0x30, 0x89, 0x2f, 0x6d, 0x25, 0xfe, 0x14, 0xac, 0xb7, 0x26, 0xd1, - 0x94, 0x77, 0x09, 0xba, 0xb2, 0x43, 0x90, 0xd2, 0xb5, 0x92, 0x1b, 0xf9, 0xe7, 0x6e, 0x25, 0xb7, - 0x13, 0x60, 0x1f, 0x42, 0x3d, 0xd1, 0x31, 0xe9, 0x41, 0x28, 0x5a, 0x90, 0x93, 0x71, 0xee, 0x81, - 0xcf, 0x16, 0x11, 0x81, 0x54, 0xe2, 0xc0, 0xf9, 0xd2, 0x22, 0xb8, 0x13, 0xc0, 0xa0, 0x12, 0xb4, - 0x8c, 0x0f, 0x29, 0x50, 0xaf, 0xa9, 0xe9, 0x96, 0x21, 0xfe, 0x1f, 0x02, 0x1a, 0x4f, 0x5b, 0x85, - 0x0b, 0x1f, 0xf4, 0x56, 0x75, 0x55, 0x93, 0x06, 0xd4, 0xce, 0xb1, 0x02, 0x7b, 0x24, 0x97, 0x7f, - 0x21, 0xe8, 0xca, 0x09, 0x41, 0xb2, 0xfa, 0xcb, 0x07, 0x9c, 0xb4, 0x4b, 0x51, 0x9a, 0x79, 0xe9, - 0xc2, 0x4b, 0x8b, 0x78, 0x91, 0x23, 0xbf, 0x76, 0xf8, 0x42, 0xfa, 0x55, 0xc0, 0x9d, 0xb3, 0x89, - 0xa0, 0x61, 0xb2, 0x67, 0x9b, 0x2d, 0xdb, 0x1f, 0x24, 0x5d, 0x83, 0x34, 0xd0, 0x20, 0xdc, 0x31, - 0x3a, 0x62, 0x10, 0xda, 0x40, 0xb5, 0x16, 0x29, 0x7e, 0x2b, 0x10, 0x57, 0x58, 0x4c, 0x36, 0x16, - 0x8d, 0x91, 0x6e, 0xab, 0xa2, 0x3d, 0x80, 0x82, 0xc1, 0xd4, 0xbd, 0x35, 0x8c, 0xbc, 0xc6, 0xe8, - 0x3b, 0x68, 0x6c, 0xa1, 0x79, 0x16, 0x80, 0xe6, 0x20, 0x8e, 0x6a, 0x80, 0x1e, 0xb4, 0xf0, 0xba, - 0x77, 0x5a, 0x42, 0x8d, 0x8b, 0x49, 0x6a, 0xb6, 0x77, 0xfc, 0x4d, 0xbe, 0xf5, 0xda, 0xe2, 0xe6, - 0x90, 0x7f, 0xa3, 0xbf, 0x51, 0x6b, 0x58, 0xaf, 0x41, 0x41, 0xb2, 0xaf, 0x9d, 0xef, 0xac, 0x5a, - 0x33, 0x88, 0xbf, 0x42, 0xf9, 0x4d, 0x34, 0x8e, 0xed, 0x3c, 0xcb, 0xfa, 0x80, 0x15, 0xca, 0x4f, - 0x92, 0xc9, 0x89, 0x77, 0xda, 0x82, 0x0a, 0x05, 0x1c, 0x4a, 0x99, 0xf7, 0x22, 0x71, 0xae, 0xc5, - 0x9e, 0x65, 0x25, 0x0b, 0xc0, 0x0e, 0xae, 0x44, 0x65, 0x03, 0x88, 0xbf, 0x47, 0x93, 0xf1, 0x74, - 0x16, 0x27, 0x53, 0x8c, 0xe7, 0x59, 0xab, 0x2b, 0x75, 0x92, 0xa3, 0x4a, 0x56, 0x8c, 0xfe, 0x21, - 0xa3, 0xf5, 0x04, 0x63, 0x0e, 0x80, 0x5c, 0xa3, 0xa2, 0x17, 0x90, 0xb3, 0x92, 0x1d, 0x20, 0xe4, - 0xc8, 0x81, 0xf3, 0xc9, 0x2f, 0x62, 0x46, 0x74, 0x88, 0xcd, 0xec, 0x18, 0x52, 0xf4, 0xa3, 0x29, - 0xfe, 0x30, 0xa8, 0xe8, 0x48, 0x21, 0xce, 0x40, 0x99, 0x5f, 0xfe, 0xa2, 0xae, 0x3c, 0x27, 0x39, - 0xeb, 0xe4, 0x12, 0xc6, 0x70, 0x82, 0x7e, 0x15, 0xe6, 0x2e, 0xe5, 0xee, 0x0d, 0x9b, 0xc9, 0xd9, - 0xd7, 0x69, 0xfb, 0x38, 0x3f, 0xad, 0xed, 0x23, 0xa1, 0xcc, 0xd2, 0xd9, 0x3e, 0x9e, 0x10, 0xd0, - 0x14, 0x02, 0x39, 0x15, 0xbe, 0x88, 0xb6, 0x3e, 0x18, 0xda, 0x84, 0x93, 0x45, 0x8e, 0x2f, 0xff, - 0x8d, 0xae, 0x7c, 0x28, 0x39, 0xeb, 0x64, 0xcd, 0x62, 0x68, 0xdb, 0xbe, 0x72, 0xe8, 0x3b, 0x4c, - 0x60, 0x6d, 0xdb, 0xce, 0xb8, 0x42, 0xf8, 0xba, 0xc4, 0x41, 0x9c, 0x89, 0x7c, 0x30, 0x76, 0x25, - 0xba, 0x19, 0x76, 0x7c, 0xc1, 0xba, 0x16, 0x7f, 0x63, 0x83, 0x16, 0x5a, 0xec, 0x6f, 0x6a, 0x0e, - 0x86, 0x22, 0x5a, 0xa8, 0x84, 0x0b, 0xe8, 0x0b, 0x6d, 0x55, 0xe7, 0xbc, 0x62, 0x0d, 0x1a, 0xef, - 0x0f, 0xbf, 0x13, 0x7e, 0xcf, 0x17, 0xd2, 0x1a, 0x70, 0x22, 0xc8, 0x7c, 0xe2, 0x1d, 0xc4, 0x4a, - 0xe5, 0x79, 0xdc, 0x76, 0x9e, 0x8d, 0xc7, 0xbe, 0x72, 0x6f, 0x27, 0xb6, 0x28, 0xc3, 0x8d, 0xc5, - 0xff, 0x4d, 0x40, 0x93, 0xeb, 0x39, 0x6f, 0xa2, 0xea, 0x4a, 0x92, 0xc9, 0x91, 0x64, 0x40, 0x71, - 0x54, 0xca, 0x5f, 0x12, 0x1a, 0x97, 0x11, 0x2d, 0xf1, 0xd8, 0x1e, 0x70, 0x30, 0xab, 0xae, 0x2c, - 0x65, 0x7c, 0x56, 0xf2, 0x8b, 0xd8, 0x95, 0xe8, 0x16, 0x92, 0xcc, 0x71, 0xe7, 0x91, 0xd4, 0xd6, - 0x61, 0xf3, 0x93, 0x76, 0x5f, 0x30, 0xba, 0xf6, 0xb3, 0xf6, 0xc6, 0x8e, 0xbe, 0x54, 0xff, 0xe6, - 0x2b, 0xd1, 0x2d, 0x20, 0x40, 0x8a, 0xc7, 0xf6, 0x80, 0xb3, 0x7b, 0x7c, 0x60, 0x57, 0x72, 0xf0, - 0x48, 0x7c, 0x20, 0x0a, 0x64, 0x34, 0xe7, 0xe0, 0x66, 0x52, 0x46, 0x51, 0x8b, 0x9c, 0x86, 0xe6, - 0xc9, 0xd8, 0xb9, 0xe4, 0x99, 0x63, 0x80, 0x2b, 0x1c, 0x63, 0xab, 0x8e, 0xc5, 0x8b, 0xeb, 0x5d, - 0x76, 0xff, 0x0b, 0xf0, 0xb7, 0x62, 0xb0, 0x74, 0xda, 0xfd, 0x4b, 0x36, 0x46, 0xd3, 0xe1, 0x50, - 0xcd, 0x39, 0x44, 0x25, 0x0e, 0x5f, 0x72, 0x45, 0xa9, 0x69, 0x02, 0x2d, 0x3d, 0x56, 0x80, 0x87, - 0x0b, 0x4b, 0x30, 0x66, 0xba, 0xcf, 0x8b, 0x48, 0xc1, 0x2d, 0x40, 0x6b, 0xcb, 0xf5, 0x90, 0xe7, - 0x39, 0xb0, 0xaf, 0x35, 0xdf, 0xd9, 0xa3, 0xd4, 0x5c, 0xd5, 0x6a, 0x2e, 0xbe, 0x85, 0xc6, 0xf9, - 0xc3, 0x2b, 0xfd, 0x1f, 0x6a, 0x0d, 0x85, 0x12, 0x06, 0x09, 0x1c, 0xcf, 0x99, 0x96, 0xc9, 0x4f, - 0x98, 0x97, 0xf8, 0xcc, 0x37, 0x6e, 0x80, 0x4c, 0x5c, 0xb8, 0x30, 0xb2, 0x95, 0xa0, 0x3a, 0x0e, - 0xf6, 0x00, 0x46, 0x68, 0xf7, 0xef, 0xe3, 0x07, 0xf9, 0x0b, 0x34, 0xd9, 0xce, 0x26, 0x7b, 0xf4, - 0x7e, 0xcc, 0xae, 0xfd, 0x77, 0xd1, 0x72, 0xe5, 0xaf, 0xae, 0x6a, 0x0e, 0xd7, 0x36, 0xb6, 0xac, - 0xf7, 0x07, 0xf8, 0xa1, 0xdf, 0x44, 0x05, 0x4e, 0x6e, 0xf4, 0xe6, 0x0d, 0x4e, 0xfd, 0x37, 0xd9, - 0x33, 0x71, 0x5d, 0x9a, 0x9b, 0xf6, 0x2c, 0x5d, 0x69, 0xcd, 0x42, 0x5b, 0xb2, 0x24, 0x97, 0xdc, - 0x5b, 0x7e, 0x97, 0x3f, 0x59, 0x87, 0x13, 0x08, 0xb9, 0x59, 0xd8, 0xaa, 0xda, 0x7c, 0x85, 0x7a, - 0x4d, 0x3e, 0x97, 0xe7, 0x6d, 0xaf, 0x44, 0xb7, 0x80, 0xf6, 0x93, 0x97, 0x7e, 0xa4, 0xfa, 0x2f, - 0x00, 0x41, 0x01, 0x6a, 0xd0, 0xc4, 0xee, 0x13, 0x46, 0xd7, 0xe7, 0x97, 0x05, 0x4b, 0xae, 0x7d, - 0x59, 0xe0, 0x25, 0xd3, 0x97, 0x05, 0x26, 0x2f, 0xbe, 0x2c, 0x10, 0x29, 0xaf, 0xdd, 0xb3, 0x8a, - 0x93, 0x81, 0x5e, 0x16, 0x78, 0xe1, 0xe4, 0x65, 0x81, 0x93, 0x26, 0x5e, 0x16, 0x78, 0x51, 0xa0, - 0x35, 0x07, 0xd4, 0xb1, 0x10, 0x5d, 0x7f, 0x99, 0x83, 0xa6, 0x3a, 0x36, 0x21, 0xdc, 0x7c, 0xa7, - 0xfb, 0x99, 0xd4, 0xda, 0x1c, 0xb2, 0x66, 0xa5, 0x63, 0x08, 0x49, 0x28, 0x29, 0x5f, 0xc4, 0x27, - 0x17, 0xa6, 0x3e, 0xfb, 0x0a, 0x4e, 0xd6, 0x7c, 0x41, 0xb9, 0xd3, 0x21, 0x1e, 0x59, 0xbf, 0x43, - 0x39, 0x11, 0x5f, 0x78, 0x03, 0x71, 0xc3, 0x9a, 0xee, 0x65, 0x82, 0x04, 0x69, 0x29, 0x70, 0x33, - 0xf9, 0x65, 0x5e, 0x80, 0x05, 0x7a, 0xbf, 0xab, 0x43, 0x6d, 0x00, 0x25, 0x89, 0xde, 0xf6, 0xab, - 0x43, 0xed, 0xc0, 0x6b, 0x10, 0xf9, 0x1d, 0xf8, 0xa8, 0x50, 0xbb, 0x13, 0xcb, 0x5c, 0xf0, 0xd3, - 0x5e, 0x15, 0x8f, 0x27, 0xfe, 0xd6, 0xed, 0x10, 0x96, 0x37, 0x46, 0x87, 0x30, 0xfc, 0xba, 0xb8, - 0x1c, 0xc2, 0xe6, 0xf0, 0x0e, 0x61, 0xec, 0x93, 0xd3, 0xf8, 0x84, 0x2d, 0xd7, 0x95, 0x4a, 0x54, - 0x2e, 0xb9, 0xe1, 0x40, 0x9e, 0xc1, 0xdf, 0x06, 0x13, 0xc9, 0x79, 0xfb, 0xd6, 0x5c, 0x16, 0xf0, - 0x2e, 0x16, 0xff, 0x55, 0x16, 0x9a, 0xa1, 0x34, 0x34, 0xd4, 0xb5, 0xac, 0x0b, 0x68, 0x11, 0x66, - 0x6d, 0xaa, 0x6a, 0xbf, 0x16, 0xd7, 0xba, 0xb5, 0x49, 0x4b, 0xb1, 0x4a, 0xc1, 0xd2, 0x26, 0xe5, - 0x53, 0x92, 0xe6, 0x5a, 0xf9, 0x03, 0xa1, 0x39, 0x9e, 0x5a, 0x8f, 0xb2, 0x9c, 0xf2, 0x8a, 0xba, - 0x85, 0xbc, 0x4a, 0xe8, 0x75, 0x94, 0x17, 0xc6, 0xb3, 0x11, 0x04, 0xe2, 0xf2, 0x39, 0x82, 0xb5, - 0xd4, 0xe1, 0xc4, 0xdb, 0x44, 0xae, 0x02, 0x1d, 0xe4, 0x19, 0x24, 0x0a, 0x48, 0x5f, 0xb7, 0xc9, - 0x8f, 0x50, 0x17, 0x0f, 0x95, 0x54, 0x8b, 0x4f, 0xa0, 0xfc, 0x60, 0xb3, 0x49, 0x4d, 0x07, 0xa9, - 0x82, 0x08, 0xdb, 0xa3, 0xb0, 0x42, 0x79, 0x3c, 0x18, 0x6e, 0xc5, 0x63, 0x31, 0x95, 0x15, 0x96, - 0xbd, 0xaa, 0x2b, 0x2f, 0xa3, 0x65, 0x92, 0xf7, 0x2e, 0xc8, 0x85, 0xe4, 0x18, 0xb8, 0x89, 0x01, - 0xc5, 0xd8, 0xd1, 0x01, 0x59, 0x42, 0xf1, 0x96, 0x6c, 0x34, 0xd3, 0x6b, 0xa0, 0x3b, 0xff, 0x82, - 0xfe, 0xf6, 0xc6, 0xbd, 0x6b, 0x6f, 0x02, 0x3c, 0x93, 0x43, 0x48, 0xb3, 0x77, 0xf2, 0x1c, 0xf7, - 0x29, 0xa4, 0x07, 0xed, 0xe2, 0x03, 0xb9, 0xe8, 0xc1, 0xba, 0x0f, 0xfc, 0x91, 0xfa, 0xf7, 0xc8, - 0x18, 0x6b, 0x08, 0xc3, 0x4a, 0xc4, 0x62, 0x3f, 0x24, 0x74, 0xd7, 0xa0, 0x71, 0x0d, 0xfe, 0x30, - 0x0e, 0x2d, 0x95, 0x85, 0xb7, 0xfe, 0x09, 0x5d, 0x79, 0x4c, 0xa2, 0x65, 0xf2, 0x23, 0xc6, 0x50, - 0xd4, 0x68, 0x3d, 0xc7, 0x33, 0xd5, 0x90, 0x88, 0xda, 0xca, 0x14, 0xf4, 0xb1, 0x31, 0x14, 0x55, - 0x69, 0x07, 0xee, 0xb6, 0x64, 0xdf, 0xe4, 0xdb, 0xf2, 0x73, 0x34, 0xd9, 0x1f, 0xae, 0x33, 0x0f, - 0xa0, 0xbe, 0xba, 0x79, 0xa5, 0x09, 0x99, 0x39, 0x78, 0xc1, 0x38, 0xc2, 0x83, 0xa3, 0x4a, 0x9e, - 0x4d, 0x2c, 0x40, 0x86, 0xa2, 0x46, 0x77, 0xff, 0xc8, 0xe1, 0x43, 0x89, 0xe8, 0xe6, 0xea, 0x5a, - 0x92, 0x2a, 0xde, 0xd1, 0x56, 0xfc, 0x1d, 0x9a, 0x56, 0xdf, 0xe8, 0xf3, 0x37, 0x55, 0x7d, 0xd8, - 0xec, 0x0f, 0x69, 0x0d, 0x75, 0x5a, 0x7d, 0x30, 0xd0, 0x10, 0x26, 0xa6, 0x65, 0xd8, 0x7e, 0xd8, - 0xab, 0x5e, 0x7e, 0x6c, 0x6d, 0x6d, 0xc5, 0xc2, 0x8a, 0x9a, 0x6a, 0x7e, 0x57, 0xe2, 0x03, 0xbb, - 0x4a, 0x8d, 0xa1, 0x8b, 0x89, 0xe8, 0xa9, 0xe4, 0xf0, 0x1e, 0xa3, 0xf3, 0x58, 0x75, 0xad, 0xf1, - 0xc9, 0xa7, 0x89, 0xbd, 0xe7, 0x89, 0xa9, 0x92, 0xd7, 0x38, 0x36, 0x2c, 0x90, 0x37, 0x66, 0x2c, - 0xd0, 0xa0, 0x2b, 0x3e, 0xf4, 0x8e, 0x34, 0x1a, 0xdc, 0xc8, 0x8f, 0x18, 0x6d, 0x3b, 0x12, 0x9d, - 0x9f, 0xc1, 0x01, 0x52, 0x41, 0x08, 0xbf, 0x64, 0x2f, 0xec, 0x40, 0x4f, 0xb3, 0xf8, 0xbf, 0xe5, - 0xa0, 0xa2, 0xcc, 0x33, 0xdc, 0xf9, 0x88, 0x82, 0xbe, 0xbb, 0x39, 0x77, 0xcc, 0xbb, 0x9b, 0x7b, - 0xcb, 0xf0, 0x94, 0x58, 0x67, 0x59, 0xb1, 0xe4, 0x65, 0xa6, 0x64, 0x1c, 0xe6, 0x2d, 0xe4, 0x10, - 0x60, 0x6c, 0x2c, 0xf8, 0x64, 0xe6, 0x2d, 0x65, 0xaf, 0xeb, 0xca, 0x1a, 0x54, 0x27, 0x8d, 0x0a, - 0x19, 0xf2, 0x5c, 0x1e, 0xf8, 0x6c, 0x40, 0x97, 0x06, 0x13, 0x76, 0xde, 0x8f, 0x66, 0x01, 0x89, - 0xb0, 0xd6, 0x1f, 0x8a, 0xb4, 0xf8, 0x1a, 0xef, 0x99, 0x8b, 0xdc, 0x33, 0x17, 0xb9, 0x67, 0x2e, - 0xf2, 0xe3, 0x31, 0x17, 0xf9, 0xf7, 0x9e, 0xe6, 0x22, 0x5f, 0xdd, 0x49, 0xe6, 0x22, 0x0f, 0x86, - 0x1e, 0xf0, 0x34, 0x17, 0x19, 0xb7, 0x11, 0x50, 0x92, 0xdd, 0x6e, 0xa4, 0x55, 0x40, 0x93, 0xde, - 0x0b, 0x86, 0x23, 0x4e, 0x8b, 0x91, 0x77, 0x74, 0xe5, 0x2d, 0xc9, 0x5e, 0x23, 0xbf, 0x6a, 0xfb, - 0x99, 0x3a, 0xd4, 0x93, 0xd8, 0x75, 0x84, 0x30, 0x8a, 0xdf, 0x1d, 0x4e, 0xb4, 0x1f, 0x4c, 0xf6, - 0x6c, 0x33, 0x5b, 0xf0, 0xbc, 0x63, 0x29, 0x6f, 0x58, 0xc2, 0xcb, 0xf2, 0x54, 0xfb, 0xd8, 0xe2, - 0x39, 0x01, 0x89, 0x5c, 0x09, 0xc1, 0xc2, 0xc4, 0x70, 0x79, 0x8b, 0xa0, 0x2b, 0x1b, 0x24, 0x8f, - 0x7a, 0x79, 0x8d, 0xbb, 0xcc, 0x43, 0x81, 0xd2, 0xa0, 0x6d, 0x0c, 0x68, 0x91, 0xc5, 0xfe, 0x86, - 0xfa, 0x12, 0xfc, 0xf8, 0xed, 0x37, 0xb6, 0x9f, 0x8b, 0xc7, 0x76, 0x5b, 0x8b, 0x4d, 0xf6, 0x6c, - 0xe3, 0x3b, 0x5c, 0x2b, 0x9f, 0x1a, 0x9a, 0xa2, 0xe6, 0x41, 0x37, 0x35, 0xdb, 0xdf, 0x50, 0xaf, - 0xfe, 0x89, 0xea, 0x31, 0xbd, 0xf8, 0x85, 0x65, 0xdb, 0x32, 0x19, 0x4b, 0xc8, 0x1e, 0xf7, 0x96, - 0xdd, 0xbb, 0x5e, 0x83, 0xdb, 0x6b, 0xe2, 0x32, 0xe5, 0x26, 0x98, 0xb8, 0x14, 0xdc, 0x6a, 0x13, - 0x17, 0xcb, 0x02, 0x60, 0xea, 0x75, 0x5b, 0x00, 0x74, 0x7b, 0xa8, 0xf2, 0xc5, 0x31, 0xa9, 0xf2, - 0x97, 0xdd, 0x1c, 0x55, 0xbe, 0x5b, 0x85, 0xff, 0xff, 0x4b, 0xa7, 0xc2, 0x9f, 0x36, 0x76, 0x15, - 0x7e, 0xe8, 0xd6, 0xab, 0xf0, 0xaf, 0x5f, 0x75, 0x3f, 0xfd, 0xc7, 0xab, 0xba, 0x9f, 0xf1, 0xa3, - 0x50, 0xdd, 0x0f, 0xda, 0x74, 0x90, 0x33, 0x31, 0x1e, 0x7b, 0x6a, 0xac, 0x78, 0xec, 0xb6, 0xab, - 0x22, 0x1d, 0xda, 0xb3, 0x59, 0x37, 0xaa, 0x3d, 0x8b, 0x0a, 0x28, 0x2b, 0x40, 0x0d, 0x68, 0x5c, - 0x31, 0x9c, 0x4d, 0x0a, 0x37, 0xdc, 0xec, 0xab, 0x87, 0x20, 0x9c, 0xd8, 0x7f, 0x24, 0x2b, 0x10, - 0x96, 0x5f, 0x36, 0xf6, 0x0c, 0x9b, 0x54, 0xf1, 0x17, 0xb1, 0x91, 0x03, 0xdf, 0xb2, 0x60, 0xa0, - 0xae, 0x87, 0xd1, 0xf9, 0xd6, 0x24, 0x8e, 0x74, 0xc7, 0x07, 0xbe, 0xe4, 0xfb, 0xaa, 0x59, 0x81, - 0xb0, 0xf8, 0x02, 0x8b, 0xec, 0x52, 0x61, 0xf2, 0xa3, 0xf7, 0x59, 0x4e, 0xd4, 0x7c, 0xb9, 0x8c, - 0x80, 0x52, 0x34, 0x59, 0x0f, 0x95, 0xaf, 0xb8, 0x19, 0xd1, 0x1e, 0x6f, 0x4c, 0x5b, 0xb0, 0x3f, - 0x4b, 0x57, 0xf4, 0x2c, 0xd4, 0x95, 0x25, 0xa5, 0xe3, 0x7e, 0xa8, 0x89, 0x01, 0xbf, 0x37, 0x3f, - 0x01, 0xd5, 0xc1, 0xff, 0x95, 0x8d, 0x26, 0xd9, 0x40, 0x87, 0x25, 0x7f, 0x10, 0x5c, 0xc9, 0x1f, - 0x78, 0x70, 0xb0, 0x39, 0x48, 0xae, 0x63, 0x34, 0x46, 0x16, 0xbe, 0x9b, 0x25, 0x19, 0x81, 0xd3, - 0x46, 0x59, 0x80, 0xb7, 0x08, 0xa1, 0x2c, 0x6c, 0x33, 0x24, 0x8e, 0xee, 0x48, 0xf6, 0x7d, 0xc7, - 0x88, 0x83, 0x8d, 0xf6, 0xb0, 0xa4, 0xd9, 0x78, 0xa2, 0x45, 0x99, 0x27, 0x72, 0x25, 0x18, 0x87, - 0x5b, 0xc7, 0xf3, 0xfa, 0xf6, 0x29, 0xcf, 0x9d, 0x4e, 0x9d, 0xfa, 0xdc, 0x9e, 0x5c, 0xfc, 0x17, - 0x28, 0xf7, 0xd7, 0x2d, 0x41, 0xa6, 0xa7, 0x98, 0x9b, 0x76, 0xc6, 0xd7, 0xcc, 0x56, 0xa0, 0xae, - 0x80, 0x1e, 0xf2, 0x2c, 0x7e, 0x6c, 0x5c, 0x34, 0x72, 0xa8, 0xdb, 0x68, 0x3b, 0xaf, 0x42, 0xfd, - 0xf7, 0xb9, 0x0d, 0xdf, 0x33, 0xe7, 0x74, 0x71, 0xaf, 0x80, 0x26, 0xdb, 0x57, 0x2e, 0x16, 0xa1, - 0x09, 0xf5, 0xcd, 0x2d, 0x24, 0x9a, 0x5a, 0x98, 0x0c, 0xc3, 0x17, 0x89, 0xf7, 0xa3, 0xf1, 0xf5, - 0xcd, 0x2d, 0x2b, 0xfc, 0x4d, 0xfe, 0x48, 0x98, 0x0c, 0x69, 0x15, 0x88, 0x8f, 0xa0, 0xc9, 0x4d, - 0x5a, 0x53, 0x30, 0xb4, 0x89, 0x0d, 0x81, 0x79, 0x6c, 0xd5, 0x51, 0x2a, 0x16, 0xa3, 0x89, 0x50, - 0x42, 0x06, 0x02, 0x97, 0x17, 0x5b, 0x59, 0xf1, 0x7f, 0xc9, 0x41, 0x85, 0xde, 0xf7, 0xf4, 0x9e, - 0x5e, 0xeb, 0x27, 0xa6, 0xd7, 0x22, 0x81, 0x2c, 0xd3, 0x82, 0x83, 0x3c, 0xc7, 0x8d, 0xb7, 0x47, - 0x57, 0x72, 0x9d, 0x14, 0xd0, 0xa4, 0x57, 0x5b, 0xd6, 0x11, 0xdb, 0x2c, 0x55, 0xfb, 0xb5, 0x58, - 0x83, 0xd0, 0x06, 0x56, 0x40, 0x90, 0xdf, 0x22, 0x5d, 0x99, 0x2f, 0x71, 0xc5, 0xf2, 0x4c, 0x18, - 0xdf, 0x2a, 0x81, 0xb4, 0x24, 0x34, 0x59, 0x2f, 0xd7, 0xb4, 0xac, 0x4a, 0x57, 0xca, 0xd1, 0x4b, - 0x92, 0x7d, 0x16, 0xb9, 0x98, 0x78, 0x97, 0x7e, 0xf7, 0xb1, 0xd1, 0x7a, 0x22, 0xf1, 0x79, 0x34, - 0xf1, 0xc7, 0x5d, 0xce, 0xc1, 0x2e, 0x0b, 0xdc, 0x30, 0xc5, 0xfb, 0xf3, 0xd0, 0x74, 0x6b, 0x88, - 0x8a, 0x60, 0x20, 0xa0, 0xd5, 0x47, 0xcc, 0xf5, 0xae, 0x71, 0xcb, 0xea, 0x70, 0x88, 0x35, 0x4e, - 0x56, 0xf7, 0x68, 0x3c, 0xb6, 0x87, 0x8a, 0xeb, 0x16, 0x00, 0x31, 0x53, 0x56, 0x94, 0x6a, 0xfd, - 0x2e, 0x75, 0xa6, 0x3f, 0x1e, 0xdb, 0x53, 0x56, 0x54, 0xdf, 0x18, 0x5e, 0xf8, 0xe1, 0x87, 0x1f, - 0xda, 0xe4, 0x6d, 0xbf, 0x46, 0xc8, 0x7c, 0x36, 0x22, 0x21, 0x1f, 0xd5, 0xc7, 0xe5, 0x03, 0x31, - 0xc1, 0x15, 0xcb, 0x2f, 0x71, 0x66, 0x2e, 0x45, 0x60, 0x71, 0x82, 0xad, 0xed, 0xf7, 0x98, 0xcc, - 0x1e, 0x78, 0xa1, 0x42, 0xe1, 0xf1, 0xfd, 0xc9, 0xe1, 0x3d, 0xa9, 0x33, 0x97, 0x46, 0x0e, 0x9c, - 0x49, 0xf6, 0x6c, 0xb3, 0x32, 0x76, 0xa8, 0xdc, 0x68, 0xe2, 0x3a, 0xcb, 0x7c, 0x3c, 0x9b, 0x26, - 0x5f, 0x7e, 0xd6, 0xfc, 0x8e, 0x60, 0x4b, 0x03, 0x16, 0x54, 0x2c, 0x02, 0x21, 0x1c, 0x8e, 0x0c, - 0x59, 0x5a, 0x64, 0xcb, 0xc2, 0x1d, 0xdb, 0x43, 0xa2, 0xf9, 0x60, 0xe9, 0x1b, 0x48, 0xe2, 0x38, - 0xf1, 0x1f, 0xb3, 0x2e, 0xff, 0x5c, 0x40, 0xe3, 0x7d, 0xcc, 0xf8, 0x26, 0x87, 0xa5, 0x2b, 0xd8, - 0x24, 0x59, 0xc5, 0x72, 0x23, 0x6f, 0xa4, 0xc5, 0xb8, 0x0d, 0x3c, 0x04, 0xd8, 0xba, 0x50, 0xfa, - 0x89, 0x52, 0xb1, 0xb1, 0xe4, 0x17, 0xb1, 0x67, 0x8b, 0xc0, 0xd3, 0x35, 0xf9, 0x45, 0x0c, 0xdb, - 0x15, 0x42, 0x1d, 0x38, 0xac, 0x82, 0x59, 0x0d, 0xde, 0x0a, 0xd7, 0x28, 0xd7, 0xca, 0x73, 0x43, - 0xd9, 0xe6, 0x1a, 0xad, 0x05, 0x88, 0xab, 0x98, 0xac, 0x30, 0x97, 0x1e, 0xe8, 0x28, 0xb2, 0xc2, - 0x34, 0x22, 0x33, 0x2a, 0x29, 0xac, 0x47, 0x53, 0x43, 0x5a, 0x18, 0x6b, 0x82, 0xb0, 0x15, 0x0b, - 0x97, 0x1a, 0x1c, 0x87, 0xc9, 0x72, 0xd7, 0xca, 0x0f, 0x28, 0xaf, 0xd6, 0xf1, 0x5b, 0x4c, 0x5b, - 0x14, 0xad, 0x37, 0x9b, 0xa8, 0xee, 0x1e, 0x65, 0x11, 0x5d, 0xf9, 0x35, 0x0a, 0x4a, 0x9e, 0x60, - 0x2a, 0x2b, 0x00, 0xe4, 0x24, 0x39, 0x02, 0xbd, 0x9d, 0x16, 0x80, 0x03, 0x70, 0x90, 0x2d, 0xdf, - 0xde, 0xba, 0x18, 0x40, 0x86, 0x18, 0xcf, 0xe0, 0x70, 0xfe, 0x26, 0xb1, 0x02, 0xa7, 0xc8, 0x13, - 0x4d, 0xc5, 0xad, 0x59, 0x68, 0x32, 0x7f, 0xb7, 0xee, 0xf8, 0x87, 0x81, 0x62, 0x32, 0xc7, 0xaa, - 0xe5, 0x87, 0x9d, 0x68, 0x00, 0x50, 0x73, 0x22, 0x7a, 0x0a, 0xfa, 0x8f, 0x82, 0xc9, 0x3a, 0xb2, - 0xd0, 0x0c, 0x8f, 0x9d, 0xff, 0xa9, 0x6e, 0xc7, 0xbf, 0xc8, 0x46, 0x53, 0xaa, 0xb1, 0xa9, 0x1f, - 0x0e, 0xdf, 0x8d, 0xd5, 0x8f, 0xab, 0x2c, 0x04, 0x23, 0x58, 0xb0, 0xcf, 0xfc, 0x53, 0xc6, 0x8c, - 0x26, 0x19, 0x36, 0x59, 0x6e, 0x7b, 0x2b, 0xb2, 0xac, 0x30, 0x33, 0x63, 0x78, 0x2b, 0xf8, 0x47, - 0x42, 0xfc, 0x3d, 0xca, 0xf5, 0x07, 0x22, 0x44, 0x1d, 0x91, 0x5f, 0xfe, 0x9e, 0xae, 0x68, 0x12, - 0x94, 0xc8, 0x6f, 0x11, 0x7e, 0x18, 0xee, 0xc3, 0xfe, 0x8b, 0xc6, 0x50, 0x17, 0xa0, 0xa7, 0x52, - 0xce, 0x8c, 0xd9, 0x88, 0x1e, 0x8a, 0x0f, 0x9e, 0x00, 0xdc, 0xcb, 0xb7, 0x59, 0x54, 0xc4, 0xc2, - 0x38, 0xc6, 0x07, 0x5b, 0x8d, 0xfe, 0x8b, 0xf1, 0xd8, 0x1e, 0xa8, 0x21, 0x39, 0x52, 0x60, 0x12, - 0xf1, 0x2d, 0x34, 0xc9, 0x76, 0x9f, 0x09, 0x66, 0xc4, 0x46, 0xdf, 0xf6, 0x1a, 0xb9, 0x98, 0x47, - 0x3f, 0x4c, 0x77, 0x9c, 0x1c, 0xdc, 0xb6, 0xc0, 0xf7, 0x51, 0x4b, 0x48, 0x8b, 0xc7, 0xf6, 0x94, - 0xa8, 0xf6, 0x2e, 0x65, 0xe6, 0x36, 0xa3, 0x25, 0x92, 0xf3, 0x3c, 0xe4, 0x07, 0xe2, 0xb1, 0x3d, - 0x94, 0xc7, 0xe1, 0x51, 0x2e, 0x68, 0xae, 0x8a, 0xff, 0xa9, 0x10, 0x15, 0xd0, 0x2e, 0x4c, 0x37, - 0x75, 0xd8, 0x43, 0x37, 0x85, 0x33, 0x4d, 0x70, 0xef, 0x5d, 0x70, 0x34, 0xdd, 0x14, 0x44, 0x1c, - 0x30, 0x86, 0xf7, 0x8d, 0xaa, 0xa1, 0x22, 0x71, 0x61, 0x61, 0x75, 0xf1, 0xa1, 0x1e, 0x38, 0x0c, - 0xd0, 0x4f, 0xd1, 0x59, 0x7e, 0x30, 0x3d, 0x95, 0x43, 0x60, 0x90, 0x7d, 0xa3, 0x02, 0x83, 0x7a, - 0x4e, 0xdf, 0x05, 0x07, 0xbb, 0x5c, 0x57, 0xca, 0x38, 0x7d, 0xd7, 0x8d, 0x3f, 0xac, 0x96, 0x7e, - 0xeb, 0xa6, 0xbf, 0x59, 0x6f, 0xb8, 0x35, 0x51, 0xcf, 0x39, 0x23, 0x77, 0xf1, 0x4b, 0x05, 0x59, - 0x43, 0x06, 0xb5, 0x19, 0xa7, 0x95, 0xfa, 0xb9, 0x87, 0x56, 0xea, 0xe9, 0x51, 0xb4, 0x52, 0x69, - 0xc7, 0xbd, 0xed, 0x7a, 0xa9, 0xb7, 0x3c, 0xf4, 0x52, 0xcf, 0x5d, 0x87, 0x5e, 0xaa, 0x20, 0x34, - 0xd9, 0xa6, 0x97, 0xfa, 0x13, 0x9b, 0x66, 0x6a, 0x93, 0x5b, 0x33, 0x35, 0x41, 0x9e, 0xed, 0xca, - 0x4e, 0x52, 0x1e, 0x0c, 0x36, 0x42, 0x6e, 0x92, 0x67, 0x75, 0x65, 0xa9, 0x5d, 0x6b, 0x55, 0x92, - 0x41, 0x6b, 0x65, 0xd9, 0x31, 0x9b, 0xb8, 0xcc, 0xae, 0xc3, 0xfa, 0x37, 0x9e, 0x3a, 0xac, 0xe3, - 0x77, 0x92, 0x0e, 0xab, 0x30, 0x34, 0xd3, 0x53, 0x87, 0xf5, 0x27, 0x76, 0xe5, 0x15, 0xe7, 0x5a, - 0x3c, 0xd1, 0xdb, 0xb5, 0xd8, 0x89, 0xe9, 0x6e, 0x83, 0xde, 0xe5, 0x59, 0x67, 0xa4, 0xbb, 0x79, - 0x69, 0xf5, 0x2e, 0x1c, 0x65, 0x4d, 0x14, 0x2f, 0x67, 0x31, 0x62, 0x26, 0xa8, 0x9d, 0xe4, 0xd3, - 0x7a, 0x30, 0xdd, 0x47, 0x92, 0x66, 0xe5, 0x21, 0x5d, 0x59, 0x2f, 0x59, 0xdd, 0xe4, 0x37, 0x88, - 0x81, 0x79, 0x6c, 0x0f, 0x04, 0x1b, 0x91, 0x93, 0xa7, 0x3a, 0xe1, 0x35, 0x28, 0x2b, 0x8a, 0xc7, - 0xf6, 0x54, 0x57, 0x1a, 0x7a, 0x87, 0xf5, 0x6c, 0x96, 0x16, 0xc5, 0x07, 0x07, 0x13, 0xdb, 0xba, - 0xe2, 0x03, 0xd1, 0xe4, 0xa9, 0x4e, 0xa3, 0xf3, 0x9c, 0xd1, 0xd5, 0xcf, 0x72, 0x51, 0x0e, 0x9e, - 0xa0, 0xf8, 0x39, 0x3e, 0x10, 0x33, 0x76, 0x6c, 0x67, 0x1e, 0x7d, 0xd6, 0x74, 0x4e, 0x5f, 0xd3, - 0x29, 0x77, 0x9d, 0xaf, 0xa9, 0xdf, 0xee, 0xaa, 0x55, 0x40, 0x91, 0x7b, 0xa5, 0xdd, 0x55, 0xeb, - 0xc9, 0xb1, 0xb8, 0x6a, 0x95, 0xb2, 0x35, 0x91, 0x12, 0xbb, 0xef, 0x96, 0xdd, 0xff, 0x27, 0x8d, - 0xdf, 0xb6, 0x0b, 0x88, 0x6f, 0xbb, 0xd0, 0x7d, 0xa3, 0xcb, 0x3b, 0x07, 0xa2, 0x01, 0xe2, 0x04, - 0x4a, 0x4e, 0xef, 0x9c, 0x67, 0x6e, 0xd8, 0x3b, 0xc7, 0xe5, 0x95, 0xe3, 0xe5, 0xe2, 0x32, 0xed, - 0x4e, 0x77, 0x71, 0x99, 0xfe, 0xfd, 0x5d, 0x5c, 0x5e, 0x46, 0xe3, 0x36, 0x6a, 0xa1, 0xb0, 0x49, - 0x07, 0xcc, 0xa0, 0xb2, 0x93, 0x87, 0x24, 0x5a, 0x26, 0x17, 0xda, 0x76, 0x98, 0xcb, 0x4c, 0xc6, - 0xd8, 0x60, 0xda, 0xd4, 0xc1, 0xaa, 0xcf, 0xbc, 0x43, 0x59, 0xf5, 0x56, 0x01, 0xe5, 0xf8, 0x42, - 0x9a, 0x2f, 0x5d, 0x7e, 0x2c, 0x48, 0x1e, 0x14, 0xd2, 0x7c, 0xe0, 0x0f, 0x86, 0xdb, 0xca, 0xaf, - 0x92, 0xef, 0x1f, 0xfc, 0xd6, 0x88, 0x9d, 0x04, 0xb7, 0x1e, 0xf3, 0x8c, 0x8f, 0x1c, 0x81, 0x79, - 0x16, 0x90, 0x90, 0x57, 0x34, 0x4f, 0x5b, 0x69, 0x91, 0xd1, 0x76, 0x08, 0x74, 0x07, 0x04, 0xb9, - 0xd1, 0xf6, 0x45, 0x4b, 0x4a, 0x54, 0x3c, 0xe4, 0xed, 0xd3, 0xa8, 0x0c, 0x0a, 0xba, 0x72, 0x41, - 0x40, 0xdf, 0x0a, 0x92, 0x8b, 0x58, 0x97, 0x17, 0xc2, 0x87, 0x18, 0x17, 0xfe, 0x00, 0x6a, 0x12, - 0x26, 0xe3, 0x83, 0x53, 0x2b, 0xaf, 0xa8, 0x23, 0x4a, 0x76, 0x8c, 0xf5, 0x33, 0xe8, 0x3f, 0x7e, - 0x30, 0xb5, 0xc7, 0x7f, 0xcc, 0x42, 0x53, 0x1d, 0xcb, 0xbe, 0xf3, 0x25, 0xcb, 0x75, 0x0e, 0xc9, - 0xb2, 0x47, 0xa2, 0xb8, 0x96, 0xfa, 0x08, 0x84, 0x26, 0x06, 0xc9, 0xf2, 0x1c, 0x18, 0xc7, 0x76, - 0x59, 0xf4, 0x0e, 0x90, 0xf1, 0x92, 0xec, 0x1c, 0xd4, 0x6f, 0xc0, 0xb5, 0x1b, 0xf2, 0x0c, 0x07, - 0x56, 0x1c, 0x85, 0xf3, 0xfe, 0x9f, 0xb3, 0xd1, 0x2c, 0x08, 0x48, 0xed, 0xb6, 0x2c, 0xfc, 0xa1, - 0x6c, 0xab, 0xe3, 0xc4, 0xea, 0x03, 0xe6, 0xc5, 0x2f, 0x14, 0x88, 0x2c, 0x01, 0x3a, 0x25, 0x47, - 0xa5, 0x7c, 0x5c, 0xb0, 0x9b, 0x70, 0x5c, 0x89, 0x6e, 0x61, 0xb1, 0x6f, 0x09, 0x4b, 0x6d, 0xe2, - 0xe0, 0xc1, 0x56, 0xc8, 0xa3, 0x45, 0x26, 0x5a, 0x48, 0x2e, 0x75, 0xa2, 0x3d, 0x0a, 0x61, 0x65, - 0x78, 0x22, 0x2b, 0x3e, 0xd0, 0x19, 0x1f, 0xea, 0x49, 0x9d, 0x3a, 0x69, 0x74, 0xed, 0x89, 0x0f, - 0x0e, 0xc6, 0x87, 0xf7, 0x59, 0xb1, 0x49, 0x31, 0xef, 0x64, 0xce, 0x41, 0xf3, 0xd3, 0x52, 0x6c, - 0xb4, 0xdb, 0x1f, 0x5e, 0x16, 0x0c, 0xd5, 0x6b, 0x0d, 0x46, 0x37, 0x4e, 0xbf, 0xd8, 0xd9, 0x65, - 0x74, 0x77, 0x18, 0x17, 0x4e, 0xc4, 0x87, 0x7b, 0xaf, 0x44, 0xb7, 0xa8, 0x8e, 0x65, 0x8b, 0x2f, - 0xb9, 0xdc, 0x18, 0x30, 0x37, 0x68, 0x19, 0x30, 0xcf, 0x80, 0xf5, 0x92, 0x77, 0xc2, 0xc3, 0x98, - 0xf9, 0x05, 0x5d, 0x79, 0x16, 0x3d, 0x23, 0xa5, 0x3b, 0x20, 0x9a, 0x38, 0x8c, 0x57, 0x7b, 0xda, - 0xa4, 0x6d, 0xb1, 0x1c, 0x54, 0xe8, 0xdd, 0xf7, 0xce, 0xbf, 0x36, 0x6b, 0xc7, 0xa6, 0x90, 0xc1, - 0x41, 0x4b, 0xe0, 0xda, 0xcc, 0x25, 0xd7, 0xe6, 0xc2, 0x1f, 0x60, 0x5b, 0xbc, 0xd5, 0x32, 0xbf, - 0x1a, 0x83, 0x5a, 0x06, 0x4b, 0x52, 0x72, 0xcd, 0x66, 0x61, 0x59, 0xe2, 0xf7, 0x98, 0x8f, 0x61, - 0x4b, 0x75, 0x34, 0x1d, 0x4c, 0x47, 0x73, 0x27, 0x79, 0x14, 0xa5, 0x3d, 0x77, 0x3b, 0xd4, 0x65, - 0xf0, 0xbe, 0xf8, 0xcf, 0x59, 0xe8, 0x7e, 0x50, 0x7e, 0xdb, 0x07, 0xc1, 0x7a, 0xc7, 0x1f, 0x12, - 0x3d, 0xac, 0xa4, 0xba, 0xdb, 0xac, 0x31, 0xe9, 0x6e, 0x71, 0xbc, 0x44, 0xa2, 0xbb, 0x9d, 0xe0, - 0xd6, 0xd7, 0x8a, 0xe5, 0x56, 0x4c, 0xee, 0x6c, 0x2a, 0xdf, 0x79, 0xc0, 0x8a, 0xc9, 0x2d, 0xb2, - 0x8b, 0x67, 0xec, 0x39, 0x48, 0x25, 0x3c, 0x94, 0xba, 0x21, 0x8d, 0x68, 0x0e, 0xbf, 0x8c, 0xfb, - 0x21, 0x17, 0x92, 0xa4, 0x3a, 0x9c, 0x4a, 0x6b, 0xa4, 0xb5, 0x73, 0xe4, 0xb3, 0xc3, 0x76, 0xb3, - 0x01, 0x58, 0x56, 0x71, 0x7b, 0x36, 0x7a, 0x20, 0xc3, 0x70, 0x77, 0xfe, 0x05, 0xad, 0xb7, 0x5d, - 0xd0, 0xd1, 0x4e, 0x09, 0x7b, 0xa3, 0xc0, 0x3d, 0x9d, 0x0f, 0xc3, 0xc1, 0x6e, 0x19, 0xdd, 0xbb, - 0x93, 0x3d, 0xdb, 0x78, 0x95, 0x3b, 0x84, 0x3b, 0x20, 0xef, 0x1c, 0x71, 0xe7, 0xc8, 0xbc, 0x53, - 0xf2, 0x42, 0xf7, 0xce, 0x3b, 0x46, 0x1c, 0xf9, 0xec, 0x70, 0x06, 0x50, 0xef, 0xcb, 0x47, 0x05, - 0x70, 0x5f, 0x6e, 0xc1, 0xeb, 0x77, 0x36, 0x0b, 0xe5, 0xd3, 0x87, 0x84, 0xbc, 0x7b, 0x7b, 0xb3, - 0x74, 0xa5, 0x3b, 0x4b, 0x62, 0xc5, 0xf2, 0xd6, 0x2c, 0xea, 0xa7, 0x13, 0x33, 0xda, 0xce, 0xc3, - 0x85, 0xb5, 0xa7, 0x11, 0xba, 0x12, 0xdd, 0xc2, 0x57, 0xc6, 0x87, 0x7a, 0xe2, 0x03, 0x51, 0xe3, - 0xe2, 0x79, 0xdb, 0x13, 0x48, 0xce, 0x82, 0x30, 0xc2, 0x54, 0xfa, 0xcb, 0xe4, 0xac, 0x60, 0x27, - 0xc6, 0x62, 0x7a, 0x27, 0xce, 0x1e, 0x05, 0xeb, 0x35, 0x7e, 0x60, 0x63, 0xcf, 0xe9, 0x44, 0xef, - 0x91, 0xd4, 0x77, 0x5b, 0x47, 0xf6, 0x5d, 0xba, 0x3a, 0xd4, 0x91, 0x18, 0x68, 0x4d, 0x76, 0x6f, - 0x87, 0x37, 0xcf, 0x7c, 0x40, 0x2f, 0x7d, 0x62, 0xd2, 0x1a, 0xfb, 0x2e, 0x19, 0xdd, 0xbb, 0x8d, - 0xae, 0x6f, 0x48, 0x5c, 0x7a, 0x6c, 0x11, 0x67, 0x2e, 0x97, 0xc3, 0xbe, 0xf0, 0xe0, 0x26, 0xbf, - 0xda, 0x65, 0xb4, 0x0d, 0xa6, 0x3e, 0xfb, 0xca, 0x1c, 0xe7, 0x8b, 0x18, 0x78, 0xad, 0x9b, 0x9f, - 0x7a, 0x7c, 0x9b, 0xc9, 0x39, 0x01, 0xda, 0xc6, 0xf1, 0x46, 0xcd, 0x07, 0x95, 0xed, 0x87, 0x78, - 0x44, 0x40, 0x22, 0x0d, 0x6e, 0x01, 0x07, 0x85, 0xe5, 0x16, 0x70, 0x9f, 0x83, 0xba, 0xd2, 0x28, - 0x79, 0x54, 0xcb, 0x6b, 0x09, 0x28, 0xe0, 0xe8, 0x18, 0x30, 0xb8, 0xc9, 0x02, 0xf6, 0xed, 0x4f, - 0xee, 0x3b, 0x51, 0x56, 0x14, 0xa1, 0xd1, 0xf0, 0x17, 0x8c, 0xec, 0x8d, 0x26, 0xfa, 0x37, 0x43, - 0xb3, 0x92, 0xa2, 0x90, 0x16, 0xf1, 0xf9, 0x03, 0x0b, 0xe2, 0x83, 0xad, 0xc9, 0x53, 0x83, 0x23, - 0x87, 0x8e, 0x97, 0x42, 0x9a, 0x22, 0x52, 0x8d, 0x73, 0x51, 0xbb, 0xe7, 0xf2, 0xa2, 0x69, 0x72, - 0x7e, 0xe4, 0x34, 0x4d, 0xee, 0x8d, 0xd0, 0x34, 0x62, 0x9b, 0x80, 0xa6, 0x35, 0xd8, 0xef, 0x5a, - 0x7d, 0x30, 0x04, 0xa9, 0x3d, 0xf2, 0x81, 0xed, 0xf2, 0xaa, 0x97, 0x9f, 0x03, 0x28, 0x36, 0xf6, - 0x1c, 0x84, 0x51, 0x4b, 0x8b, 0x60, 0xbf, 0xc8, 0x66, 0xb1, 0x9d, 0xe2, 0x5d, 0x73, 0x8c, 0xd8, - 0xc7, 0xb0, 0x4d, 0xaa, 0xd7, 0x90, 0x34, 0x9c, 0xac, 0xeb, 0xea, 0x8f, 0x4a, 0x57, 0x7d, 0x9d, - 0x83, 0xa6, 0x3a, 0x3a, 0xdd, 0x23, 0xa8, 0x7e, 0xac, 0x04, 0xd5, 0x4b, 0xba, 0xf2, 0x3c, 0x7a, - 0x56, 0x72, 0x1f, 0xf8, 0x98, 0x29, 0xa9, 0x4b, 0x12, 0x2a, 0xa0, 0xd9, 0xaa, 0xd9, 0xf3, 0xe2, - 0x6d, 0x09, 0x52, 0xca, 0x3f, 0x2f, 0x0f, 0x8e, 0xa2, 0x19, 0xb3, 0x24, 0x1c, 0x7c, 0x06, 0x15, - 0x0f, 0x8d, 0xd6, 0xdc, 0xcc, 0x1a, 0x2d, 0xbb, 0x1e, 0x2b, 0xe2, 0xf2, 0xb7, 0x7a, 0xfd, 0xe6, - 0xfb, 0x5b, 0x91, 0x85, 0x5b, 0x0a, 0xa9, 0xa7, 0x1d, 0x0e, 0x57, 0x0f, 0x8e, 0xa2, 0x90, 0x62, - 0x8a, 0xa7, 0x3a, 0xbb, 0x5b, 0xd5, 0xf3, 0x37, 0xe8, 0x56, 0x45, 0x16, 0x44, 0xfc, 0xaa, 0x5e, - 0x70, 0x6b, 0xb3, 0x8a, 0xd2, 0xfb, 0x55, 0xd1, 0x53, 0xb0, 0x34, 0x56, 0x55, 0x1e, 0x1a, 0xab, - 0x87, 0x47, 0xd1, 0x58, 0x91, 0x51, 0x78, 0xfd, 0xd4, 0x9b, 0x5e, 0xfa, 0xa9, 0x67, 0x6e, 0x58, - 0x3f, 0x65, 0xd7, 0x43, 0xbd, 0xee, 0xa1, 0x87, 0x5a, 0xaa, 0x2b, 0x4f, 0xda, 0xf4, 0x50, 0x8f, - 0x3a, 0xf4, 0x50, 0x6f, 0x6e, 0x58, 0x1a, 0x2e, 0x2d, 0xc2, 0x8a, 0xa7, 0xb7, 0x79, 0xb5, 0x94, - 0x4d, 0x07, 0xb5, 0xe1, 0x7a, 0x75, 0x50, 0xdf, 0xc7, 0x73, 0xea, 0x6b, 0x4f, 0xad, 0x53, 0xfb, - 0x9d, 0xa3, 0x75, 0xfa, 0xf1, 0xc4, 0xd3, 0x75, 0xe2, 0xb0, 0xdb, 0xa0, 0xf4, 0xe2, 0x98, 0xb9, - 0xc9, 0x37, 0xc8, 0xcc, 0x89, 0xff, 0xd6, 0xca, 0x24, 0x02, 0x3a, 0xa4, 0x7e, 0x41, 0x57, 0xde, - 0x65, 0xc1, 0xef, 0xdf, 0x22, 0x6b, 0x67, 0xa9, 0x44, 0x70, 0x46, 0x4d, 0xf8, 0x59, 0xa1, 0x56, - 0x29, 0xab, 0xab, 0x6b, 0x96, 0x5f, 0x1d, 0xea, 0x20, 0x59, 0x43, 0xae, 0x0e, 0x75, 0x54, 0x56, - 0xad, 0xa8, 0x22, 0x85, 0xcb, 0x94, 0x15, 0x6b, 0xd4, 0xaa, 0xab, 0x43, 0x1d, 0x2c, 0x1d, 0x9b, - 0xb2, 0xba, 0x7a, 0x55, 0x0d, 0x6d, 0x54, 0x55, 0x79, 0xad, 0xbc, 0x22, 0xa4, 0xa8, 0xf9, 0x74, - 0x1c, 0x2b, 0xf9, 0x48, 0x3e, 0x1d, 0xc5, 0xca, 0x3e, 0x32, 0xd9, 0x3e, 0x88, 0x3a, 0x8e, 0x8c, - 0xa1, 0xfe, 0x09, 0x0b, 0xc6, 0x3f, 0xa6, 0xf0, 0xbc, 0xae, 0x63, 0xfb, 0x09, 0x84, 0xe7, 0x75, - 0x7d, 0xf3, 0x5d, 0x17, 0x9e, 0x77, 0x0d, 0xca, 0x87, 0x30, 0x94, 0x2c, 0x3e, 0x2f, 0x46, 0xfc, - 0xac, 0x50, 0x96, 0x9c, 0x01, 0x7a, 0xcd, 0xb7, 0x11, 0xe7, 0xa7, 0x04, 0xb7, 0x6c, 0x3e, 0x5e, - 0x2f, 0xeb, 0x25, 0x7e, 0xeb, 0x15, 0xb0, 0xf7, 0x63, 0x41, 0x57, 0xba, 0xec, 0x4a, 0xd4, 0xe8, - 0x4d, 0x57, 0xa2, 0xde, 0xb6, 0x30, 0xbd, 0x5e, 0x4e, 0x7a, 0x33, 0xef, 0x50, 0x27, 0xbd, 0x59, - 0x3f, 0x32, 0x27, 0xbd, 0xc2, 0x1f, 0xaf, 0x93, 0xde, 0x7d, 0x3f, 0x0a, 0x27, 0x3d, 0x47, 0xf8, - 0xd8, 0xd9, 0x37, 0x2f, 0x7c, 0xec, 0xb7, 0x02, 0x1a, 0xcf, 0x34, 0x95, 0x85, 0x73, 0xc6, 0xf8, - 0x36, 0x79, 0x9a, 0x20, 0x54, 0xfd, 0xe0, 0x26, 0x08, 0x6c, 0x06, 0xf1, 0x75, 0x2e, 0x04, 0xe9, - 0xfd, 0xd4, 0x38, 0xeb, 0x19, 0x2e, 0x04, 0xe9, 0xc2, 0xeb, 0x0a, 0x41, 0xca, 0x85, 0x1e, 0x75, - 0x1b, 0x37, 0x3c, 0x70, 0x4b, 0x8c, 0x1b, 0x7e, 0xe7, 0x0e, 0x39, 0x3a, 0x77, 0x54, 0x92, 0x1c, - 0x7b, 0x25, 0xb8, 0xc2, 0x91, 0xce, 0x1b, 0x35, 0x1c, 0xa9, 0x3b, 0x0c, 0x69, 0x83, 0xdd, 0x2e, - 0xf2, 0x41, 0x12, 0xfe, 0xc8, 0x43, 0x0d, 0xea, 0x0f, 0xac, 0x87, 0xc9, 0x6f, 0x52, 0x90, 0xd2, - 0xa2, 0x3b, 0xd0, 0x82, 0xe3, 0x7d, 0xde, 0x82, 0x63, 0xde, 0xa8, 0xc7, 0xf0, 0xbd, 0xac, 0x3b, - 0x22, 0xb6, 0x74, 0x4b, 0x10, 0xe7, 0x76, 0xb5, 0x49, 0xa6, 0x73, 0xc5, 0x72, 0x05, 0xef, 0xfb, - 0xc8, 0xe7, 0x9c, 0x2e, 0x4d, 0x1c, 0x1d, 0xc2, 0xa1, 0x9b, 0x62, 0x0b, 0x22, 0xfe, 0x26, 0x6d, - 0x51, 0x4d, 0xf0, 0x83, 0x05, 0x25, 0x8b, 0x96, 0x05, 0x43, 0x4d, 0xbe, 0x08, 0x94, 0xa8, 0xcb, - 0x2a, 0x1e, 0x7f, 0xfc, 0xf1, 0x67, 0x4a, 0x4a, 0x6c, 0x49, 0x9c, 0xca, 0x2d, 0xbb, 0xb4, 0x87, - 0x38, 0x12, 0x9d, 0xda, 0xa5, 0x89, 0xcc, 0x2e, 0xcd, 0x83, 0x44, 0xa7, 0xe6, 0x69, 0x27, 0x05, - 0x34, 0x19, 0x76, 0x95, 0x1d, 0x26, 0x84, 0xaf, 0xfd, 0xbd, 0xae, 0xfc, 0x46, 0x72, 0x54, 0xc9, - 0x7e, 0x63, 0xf8, 0x63, 0xc7, 0x3e, 0x03, 0xae, 0x8b, 0x0f, 0xc4, 0xe8, 0xd9, 0x60, 0xd3, 0x91, - 0xcc, 0x87, 0x6c, 0x99, 0xaa, 0x2d, 0x06, 0x63, 0x12, 0x30, 0xdc, 0xe6, 0x23, 0xb7, 0xaa, 0x8e, - 0xa9, 0xbd, 0x62, 0xc4, 0x3e, 0xfc, 0xa3, 0x8d, 0x11, 0xfb, 0x9e, 0x15, 0x4b, 0xf5, 0x91, 0x51, - 0x21, 0x17, 0x07, 0x6e, 0x65, 0x71, 0x56, 0xe7, 0x8f, 0x25, 0xce, 0xea, 0xbd, 0xb8, 0xaa, 0x37, - 0x6c, 0xd7, 0xf3, 0x9f, 0x05, 0x5d, 0xf9, 0x3b, 0x01, 0xfd, 0xad, 0x20, 0xb9, 0x24, 0x8d, 0xf2, - 0xb7, 0x82, 0xa7, 0x7b, 0x33, 0x50, 0x0d, 0xa9, 0xfe, 0x13, 0xe0, 0xdb, 0x1c, 0x1f, 0x6c, 0xe5, - 0xb3, 0x3c, 0x13, 0xed, 0x9c, 0xde, 0x11, 0xbf, 0x74, 0x26, 0xd1, 0xf7, 0xb9, 0xb7, 0x7a, 0xe1, - 0x58, 0x87, 0x89, 0x88, 0x70, 0xe6, 0xbc, 0x2b, 0xd1, 0x2d, 0xc4, 0xdd, 0x1a, 0x62, 0x99, 0xe3, - 0x54, 0x7c, 0x4c, 0xb4, 0x9b, 0xfc, 0x64, 0xc0, 0x68, 0x3d, 0x07, 0xc2, 0x3f, 0x3c, 0xe9, 0x85, - 0xc4, 0xd1, 0x8b, 0x89, 0xce, 0x33, 0xd0, 0x98, 0x04, 0x7d, 0xa7, 0x19, 0x23, 0xdd, 0xbe, 0xd6, - 0xc5, 0x7f, 0x99, 0x8d, 0xa6, 0x3a, 0xbe, 0xeb, 0xee, 0x33, 0xfc, 0x49, 0x43, 0xd3, 0xbb, 0x0d, - 0x7f, 0x98, 0x66, 0xd4, 0x43, 0xda, 0x7e, 0x5b, 0xc3, 0xa6, 0x95, 0x55, 0xe8, 0xca, 0x4b, 0xe8, - 0x05, 0xc9, 0x7d, 0x16, 0x54, 0xf9, 0x6d, 0x83, 0xb1, 0x34, 0xe2, 0xf0, 0xbf, 0x13, 0xd0, 0x0c, - 0x55, 0x8b, 0x84, 0x36, 0xb9, 0x32, 0xdf, 0x3d, 0xe5, 0x96, 0x89, 0x17, 0xa6, 0x53, 0xb9, 0xf2, - 0x42, 0xef, 0xe7, 0x39, 0xad, 0x54, 0x16, 0xb5, 0x85, 0xf6, 0x08, 0x15, 0x98, 0x8a, 0xb6, 0x42, - 0x10, 0x1a, 0xa1, 0xb0, 0x81, 0x33, 0xb3, 0x79, 0x59, 0x57, 0xaa, 0x50, 0x85, 0xe4, 0xbd, 0x28, - 0x79, 0x2e, 0x64, 0x81, 0x8c, 0x0f, 0xec, 0x32, 0xba, 0xf6, 0xb8, 0x43, 0x14, 0xdb, 0xe0, 0xf4, - 0x8b, 0x6c, 0x34, 0xd3, 0x6b, 0x94, 0x3b, 0x1f, 0x58, 0x57, 0x8e, 0x0d, 0x58, 0xf1, 0x22, 0x00, - 0x58, 0x67, 0xc0, 0x83, 0xe4, 0xad, 0x14, 0x7a, 0x65, 0x0c, 0x4a, 0x21, 0x18, 0x0b, 0x3b, 0x3f, - 0x5b, 0x63, 0xf1, 0x39, 0xa4, 0x41, 0xfd, 0x53, 0xb6, 0x46, 0x57, 0x54, 0x54, 0x2b, 0xa5, 0xd9, - 0xd8, 0x0c, 0xe7, 0x93, 0xd9, 0xf2, 0x6d, 0x57, 0x16, 0x9a, 0xb4, 0x5c, 0x8b, 0xa4, 0xd3, 0xf8, - 0x67, 0xdd, 0x3c, 0x8d, 0x7f, 0x23, 0xb1, 0xb5, 0xc7, 0x8c, 0x10, 0x9c, 0x08, 0xa6, 0xf9, 0xad, - 0x52, 0xf9, 0x05, 0x37, 0x59, 0x60, 0x0b, 0x77, 0xc5, 0xec, 0xe4, 0x77, 0x5b, 0x9a, 0x4d, 0xbc, - 0x65, 0x24, 0x06, 0xa1, 0x35, 0x54, 0xd9, 0x13, 0xba, 0xf2, 0x18, 0x5a, 0x2c, 0xd9, 0xbf, 0x4d, - 0x16, 0xc1, 0x63, 0x3c, 0x2d, 0xe4, 0x9e, 0xcc, 0x41, 0x93, 0xf9, 0x1e, 0x3f, 0x39, 0x88, 0xd5, - 0x50, 0x2e, 0xe6, 0x9b, 0xd2, 0xa1, 0xd3, 0x2a, 0x9e, 0xa9, 0x0a, 0xbc, 0x1b, 0x04, 0xa5, 0x05, - 0xf4, 0x91, 0xe7, 0x39, 0x46, 0x36, 0x5a, 0xcf, 0xc7, 0x07, 0xc9, 0xab, 0x47, 0x66, 0x81, 0x96, - 0xb7, 0x59, 0x97, 0xa9, 0xe8, 0xca, 0x0b, 0xe8, 0x39, 0xc9, 0x71, 0xd2, 0x0e, 0xe0, 0xc8, 0x7c, - 0x6d, 0x7e, 0x43, 0x88, 0x20, 0x6e, 0x2b, 0xc4, 0xf5, 0x68, 0x22, 0x55, 0xe4, 0x61, 0x29, 0x02, - 0xa0, 0x6e, 0xf3, 0xb1, 0x90, 0x6c, 0x15, 0x54, 0x74, 0x66, 0xc4, 0xf6, 0x19, 0x67, 0xa9, 0x0c, - 0xaa, 0x67, 0x1b, 0xaf, 0x63, 0x5a, 0x10, 0xd9, 0xa0, 0x2d, 0xde, 0xb0, 0x34, 0xbc, 0x18, 0xeb, - 0x98, 0x4a, 0x54, 0x5b, 0xff, 0xe2, 0x1e, 0x01, 0x4d, 0xad, 0x78, 0x4f, 0xab, 0xdf, 0x80, 0x13, - 0xac, 0x90, 0xe0, 0x14, 0xe2, 0x8b, 0x28, 0xdf, 0x1f, 0x08, 0x68, 0xa1, 0xea, 0xda, 0x70, 0xa1, - 0x80, 0xc5, 0x83, 0x38, 0x4c, 0x03, 0x2b, 0x94, 0xa7, 0x03, 0x6f, 0x0e, 0x1e, 0x97, 0x4c, 0x3e, - 0xc8, 0xea, 0xcb, 0x2a, 0x75, 0x45, 0x41, 0x2f, 0x4a, 0xee, 0xa1, 0xe5, 0x07, 0x13, 0x9f, 0x47, - 0x13, 0x47, 0x4e, 0x04, 0x82, 0x0d, 0x1a, 0xb1, 0xc8, 0xc1, 0xa6, 0xd1, 0xeb, 0xea, 0x89, 0xcc, - 0xf5, 0xb2, 0xc0, 0x46, 0x29, 0x3e, 0x9f, 0x8d, 0x44, 0x7e, 0x84, 0x70, 0x73, 0x30, 0x10, 0xd6, - 0xee, 0xf4, 0x6b, 0xd4, 0xc8, 0xae, 0x91, 0x77, 0x0e, 0x45, 0xd7, 0x07, 0x2d, 0xaa, 0xf4, 0x45, - 0x7c, 0x20, 0x9d, 0xc1, 0x29, 0xc4, 0xe1, 0x6e, 0x3d, 0x08, 0x83, 0xe3, 0x8d, 0xc2, 0x5b, 0x06, - 0xd3, 0x94, 0x6e, 0xd0, 0x36, 0x25, 0x0e, 0xf6, 0x57, 0xd7, 0xc2, 0x2d, 0x9b, 0x5d, 0x87, 0xc6, - 0xb3, 0xee, 0x1e, 0x04, 0xee, 0x12, 0x3b, 0xed, 0x3c, 0xdb, 0x4b, 0xb8, 0xa6, 0xe2, 0x75, 0xf3, - 0xc4, 0x2f, 0x31, 0x93, 0xf5, 0xd8, 0x7c, 0xba, 0x5b, 0x24, 0xff, 0x12, 0xd6, 0xe1, 0xb8, 0x09, - 0x92, 0x2b, 0x02, 0x42, 0xd6, 0xc8, 0x62, 0x85, 0xc9, 0xe6, 0x54, 0x7d, 0xe8, 0x0f, 0x43, 0x76, - 0xe0, 0x7c, 0x92, 0x18, 0x8f, 0x94, 0xc9, 0x73, 0x88, 0xa0, 0x87, 0x03, 0x07, 0xaa, 0x92, 0xeb, - 0x53, 0x69, 0x2b, 0xb1, 0xdc, 0xfd, 0x96, 0x60, 0xa9, 0x06, 0xf7, 0x96, 0x10, 0xa8, 0x04, 0xad, - 0xb6, 0x17, 0x59, 0xb3, 0xc2, 0xae, 0xcb, 0xcf, 0xb6, 0xd2, 0xb6, 0xdb, 0x74, 0xf9, 0x85, 0xee, - 0x71, 0x3c, 0xf4, 0xfa, 0xc5, 0x7f, 0x97, 0x85, 0xa6, 0xad, 0x09, 0x54, 0x04, 0x43, 0x0d, 0xc1, - 0x00, 0x7c, 0xed, 0xcd, 0xb9, 0x3d, 0x62, 0x9d, 0xfb, 0x53, 0x9f, 0xd4, 0x95, 0x9f, 0xf1, 0x9f, - 0x3a, 0x97, 0x18, 0xe8, 0xb1, 0x85, 0x62, 0x54, 0xc5, 0xea, 0x71, 0x24, 0x8e, 0x22, 0x81, 0xff, - 0xf6, 0x10, 0xcd, 0xad, 0x97, 0x8d, 0x97, 0xf4, 0x96, 0xae, 0xfc, 0x82, 0xe6, 0xd6, 0xab, 0x25, - 0xeb, 0xc1, 0xdf, 0x08, 0xab, 0xb9, 0x3a, 0xd4, 0x61, 0xe8, 0x1d, 0x5e, 0xeb, 0x8c, 0xc7, 0x3a, - 0x46, 0xa2, 0xed, 0xf1, 0x81, 0xa8, 0xc9, 0xc1, 0x0c, 0x1d, 0x34, 0x5a, 0xdb, 0xdc, 0xbd, 0x49, - 0x62, 0x3e, 0x6a, 0x0f, 0xe4, 0xb5, 0x4b, 0xf2, 0x1c, 0x90, 0xaa, 0x92, 0xce, 0x5d, 0xfd, 0xa9, - 0x6f, 0xb6, 0x1a, 0xb1, 0x93, 0x00, 0x51, 0xc5, 0x97, 0xb3, 0xd0, 0x74, 0x7b, 0xa7, 0xbb, 0xe3, - 0xee, 0xdb, 0x83, 0xde, 0x3c, 0xe4, 0x75, 0xdb, 0x56, 0x35, 0x13, 0x45, 0x71, 0x1d, 0xd6, 0x38, - 0x92, 0xec, 0xe4, 0xf8, 0xca, 0x93, 0x31, 0x09, 0x05, 0x02, 0xf6, 0x9a, 0xd5, 0xba, 0xb2, 0x0c, - 0x55, 0x4a, 0x9e, 0xbb, 0x21, 0xcf, 0xe1, 0xa1, 0xc0, 0xb1, 0x87, 0xee, 0x5b, 0xf9, 0x9f, 0xb2, - 0xd0, 0xd4, 0x7b, 0xd0, 0x9a, 0x1e, 0x5a, 0x97, 0xea, 0xca, 0x93, 0xe8, 0x71, 0xc9, 0xbd, 0x47, - 0xf2, 0x5c, 0x1e, 0x56, 0xe3, 0x03, 0x9d, 0x4e, 0x70, 0xfd, 0xeb, 0x2c, 0x24, 0xde, 0x03, 0x56, - 0x5f, 0xd9, 0x2b, 0xba, 0xb2, 0x1c, 0x55, 0x49, 0x1e, 0x7b, 0x61, 0x07, 0x01, 0xf7, 0x16, 0xba, - 0xa1, 0x35, 0x96, 0x43, 0x25, 0x14, 0x3c, 0xb4, 0x56, 0xbb, 0xa0, 0x75, 0xe1, 0x18, 0xa0, 0xf5, - 0x5a, 0xf9, 0x38, 0x5d, 0xc8, 0xc9, 0x17, 0x0a, 0x1a, 0x38, 0xb8, 0xbd, 0x68, 0x59, 0x2d, 0xc0, - 0x6e, 0x1f, 0x15, 0x74, 0xe5, 0x75, 0x66, 0xb5, 0x50, 0xc3, 0x2f, 0x18, 0x16, 0xb9, 0xc0, 0x6e, - 0x3f, 0xb0, 0x98, 0x98, 0x1a, 0x2c, 0xa6, 0x96, 0x06, 0x8b, 0x95, 0xca, 0xca, 0x85, 0xc4, 0xd8, - 0x60, 0xb1, 0x5a, 0xb5, 0x72, 0xd5, 0xda, 0x2a, 0xfa, 0xb3, 0xe4, 0x5a, 0x79, 0x79, 0xe8, 0x25, - 0xb7, 0x05, 0x82, 0xdb, 0x5a, 0x61, 0x02, 0x37, 0x88, 0x3a, 0xd9, 0x3e, 0x0a, 0x33, 0x53, 0x50, - 0xd1, 0x04, 0x96, 0x92, 0x89, 0xc5, 0x0b, 0x5a, 0xa2, 0x2b, 0x0b, 0x25, 0xbe, 0x3c, 0xcd, 0xbd, - 0x33, 0x5b, 0x40, 0x14, 0x1b, 0xbe, 0xb1, 0xb8, 0x82, 0xbf, 0xc7, 0x39, 0xd4, 0x79, 0xf1, 0x7a, - 0xee, 0x31, 0x7f, 0x81, 0x97, 0x5a, 0x76, 0x25, 0xb9, 0xd4, 0x64, 0x6e, 0xba, 0x65, 0x57, 0x32, - 0x9e, 0x8c, 0x14, 0x6d, 0xa5, 0x97, 0x9f, 0xb9, 0x06, 0x94, 0xeb, 0xca, 0x8b, 0xe8, 0x79, 0xc9, - 0x7d, 0xf8, 0xf2, 0x03, 0xe0, 0xa3, 0x68, 0x2e, 0xba, 0xba, 0x16, 0x06, 0xc0, 0x37, 0x17, 0x60, - 0x90, 0xa7, 0x1c, 0xff, 0x29, 0x0b, 0x89, 0x7c, 0xff, 0xbb, 0xe3, 0x42, 0xfe, 0xdc, 0x76, 0x21, - 0x3d, 0x69, 0x35, 0x72, 0x0f, 0x71, 0x94, 0x15, 0xb8, 0x87, 0xf7, 0xc3, 0x46, 0x24, 0xda, 0xba, - 0x8d, 0x9d, 0x47, 0x0c, 0xbd, 0xc3, 0x38, 0x7e, 0x36, 0xf5, 0xed, 0x09, 0x72, 0xcc, 0xe4, 0x5e, - 0xd6, 0xe9, 0x4a, 0x2d, 0xaa, 0x91, 0x3c, 0xb6, 0x44, 0x7e, 0x94, 0x17, 0x33, 0x11, 0x15, 0x2a, - 0x5e, 0x9b, 0x65, 0x57, 0x81, 0x29, 0x32, 0xf7, 0x05, 0x7d, 0x01, 0x68, 0x3c, 0x58, 0x91, 0x58, - 0x88, 0xc6, 0x85, 0x5b, 0xea, 0xeb, 0xb5, 0x30, 0xb9, 0x97, 0x2a, 0xfd, 0x29, 0xce, 0x44, 0x79, - 0xef, 0xfa, 0xfc, 0x8d, 0xd8, 0x36, 0xdf, 0xac, 0x20, 0xbf, 0x8a, 0xff, 0x5d, 0x16, 0x9a, 0x6d, - 0x13, 0x7b, 0xad, 0xc4, 0x7a, 0x3d, 0x7a, 0xd3, 0x9f, 0x73, 0x8b, 0xae, 0xb0, 0xd5, 0x25, 0x07, - 0x8e, 0x93, 0x99, 0x8b, 0x3b, 0x51, 0x3a, 0x5a, 0xe0, 0xf7, 0x16, 0xca, 0x03, 0x35, 0x21, 0x21, - 0x7c, 0x1f, 0x48, 0xc3, 0xcd, 0xc2, 0x9c, 0xe5, 0x0f, 0xeb, 0x4a, 0xb1, 0x44, 0x7a, 0xd0, 0xcc, - 0x36, 0xa0, 0x6f, 0x04, 0xdd, 0x23, 0x99, 0x80, 0xb4, 0x10, 0x9f, 0x75, 0x39, 0xa2, 0x3d, 0x98, - 0x2e, 0x93, 0x06, 0x05, 0x6f, 0x4b, 0x38, 0xb6, 0x56, 0x57, 0xea, 0xd0, 0x6b, 0x52, 0x86, 0x6f, - 0xa7, 0xf7, 0x2c, 0xdd, 0x3a, 0x1c, 0x19, 0x76, 0x60, 0x51, 0xc5, 0x57, 0xb3, 0xd0, 0x1c, 0xcf, - 0x31, 0xef, 0x0e, 0xe0, 0xb7, 0x5b, 0x53, 0x8f, 0x72, 0x5e, 0x7c, 0xd4, 0x40, 0xe6, 0x18, 0x94, - 0x1c, 0x3e, 0x63, 0x3b, 0x2d, 0x80, 0xfd, 0x5f, 0xe8, 0xca, 0x5a, 0xb4, 0x5a, 0xca, 0xb4, 0x35, - 0xf2, 0xfc, 0xcc, 0xfb, 0x9d, 0x4e, 0xee, 0x7a, 0x0a, 0xcb, 0x5d, 0xeb, 0x83, 0xa1, 0x06, 0xf3, - 0x22, 0x98, 0x8c, 0x3b, 0x05, 0xde, 0x35, 0x94, 0x7c, 0x11, 0x30, 0x13, 0x38, 0xdd, 0xeb, 0x2a, - 0x9b, 0x5c, 0xd0, 0x1c, 0x4a, 0xd4, 0x88, 0xe4, 0xea, 0xf5, 0x9f, 0x4c, 0x6c, 0x6d, 0xa5, 0x8f, - 0x56, 0xbe, 0x2e, 0xe4, 0xe6, 0x0b, 0x05, 0xa9, 0x71, 0x0e, 0x7a, 0xda, 0x7b, 0x52, 0x79, 0x2a, - 0x44, 0xf4, 0xb1, 0xa1, 0x44, 0xe8, 0x58, 0x6c, 0x08, 0x58, 0x18, 0xc5, 0xbf, 0xa4, 0xcf, 0xa3, - 0x71, 0x04, 0x5d, 0x92, 0xdb, 0xf5, 0x90, 0xae, 0xdc, 0x27, 0xd1, 0x32, 0x79, 0xb2, 0xfd, 0x1d, - 0xc5, 0x60, 0xfc, 0xa1, 0xa0, 0xd2, 0x7a, 0xf1, 0x35, 0x34, 0x2e, 0xfc, 0x5e, 0xf0, 0x83, 0xda, - 0x0f, 0xa8, 0xcb, 0x0d, 0xd6, 0x6f, 0xd3, 0x32, 0xb9, 0x84, 0x74, 0xef, 0xdf, 0x9e, 0x3c, 0xba, - 0x99, 0x70, 0x76, 0x67, 0xf7, 0x25, 0x8f, 0xc7, 0x16, 0x50, 0x9d, 0x5c, 0x27, 0xfc, 0x2e, 0x51, - 0x69, 0x1f, 0x5e, 0x96, 0xc2, 0x63, 0xfd, 0x22, 0xc0, 0xfa, 0x74, 0x25, 0x24, 0x50, 0x23, 0xd9, - 0x2e, 0x10, 0xbb, 0xd1, 0x55, 0x15, 0xff, 0x87, 0x2c, 0x34, 0x85, 0x75, 0xbf, 0x3b, 0xe0, 0xfe, - 0x15, 0x9b, 0xb8, 0xc0, 0x1b, 0x52, 0x3c, 0x45, 0x6e, 0x84, 0x94, 0xe2, 0x61, 0x9d, 0x78, 0xd5, - 0x39, 0xb7, 0x40, 0x9e, 0x67, 0xdb, 0xb4, 0x31, 0xa1, 0x77, 0x2a, 0x9d, 0x3a, 0x2a, 0x20, 0x91, - 0x0c, 0xc7, 0x03, 0xf8, 0xf7, 0x83, 0x1e, 0x9a, 0xd5, 0xca, 0x63, 0x64, 0xf9, 0x91, 0x4c, 0xc7, - 0x6d, 0xde, 0x0e, 0x8a, 0x03, 0xd9, 0xa1, 0x27, 0xb3, 0xd0, 0x34, 0xdb, 0x40, 0x77, 0xc7, 0xc1, - 0xd7, 0xd8, 0x10, 0x5e, 0xa1, 0xd7, 0xc1, 0x63, 0xb1, 0xe8, 0x58, 0x0f, 0xdf, 0xa7, 0x2b, 0xbf, - 0x44, 0x6f, 0x49, 0x5e, 0x5b, 0x21, 0x2f, 0x4c, 0xb7, 0x8d, 0xd7, 0x07, 0x0c, 0xd1, 0x2c, 0x78, - 0xf3, 0x49, 0xd8, 0xb6, 0x37, 0xd1, 0x44, 0xea, 0xb8, 0xc5, 0x49, 0x29, 0x31, 0x22, 0xb0, 0x55, - 0xc8, 0xf3, 0x13, 0xbd, 0x31, 0xe3, 0xd3, 0x5d, 0x30, 0xa5, 0xd1, 0x77, 0x20, 0xf9, 0xf5, 0xc9, - 0xf8, 0xc0, 0x1f, 0x98, 0x29, 0x30, 0x31, 0x05, 0xb0, 0xf5, 0x11, 0x7f, 0x86, 0xb2, 0x2b, 0x6a, - 0xd7, 0xe0, 0x93, 0x98, 0x04, 0xdb, 0x69, 0xfe, 0x96, 0xa7, 0xc0, 0x37, 0x54, 0xd4, 0xae, 0x21, - 0x1f, 0x6f, 0x96, 0x8a, 0x8b, 0x50, 0x76, 0x93, 0xd6, 0x84, 0xf7, 0x7e, 0x12, 0x04, 0xe2, 0x36, - 0x7f, 0x53, 0xac, 0x6a, 0x6c, 0x6f, 0x35, 0xfa, 0x0e, 0xd2, 0xf6, 0x4d, 0x5a, 0x93, 0xb8, 0x14, - 0x65, 0x2f, 0xaf, 0x5d, 0x83, 0xb7, 0x7e, 0x12, 0xe8, 0x0b, 0xcd, 0xdf, 0xf2, 0xfd, 0xd0, 0x7e, - 0x39, 0x1d, 0x9c, 0x5f, 0xe1, 0x12, 0xd5, 0x6c, 0x52, 0x3c, 0x38, 0x01, 0xe5, 0xd3, 0xed, 0x15, - 0xdf, 0x40, 0xf9, 0x26, 0x7e, 0xad, 0xb1, 0xe2, 0x44, 0xbf, 0xa0, 0x2b, 0xcf, 0x4a, 0xac, 0x50, - 0x5e, 0xcc, 0x73, 0x9b, 0xa5, 0x45, 0x89, 0x23, 0xdd, 0xf1, 0xd8, 0x27, 0xcc, 0xac, 0x00, 0x76, - 0x9b, 0x6f, 0xa2, 0xb2, 0xae, 0xe2, 0xfb, 0x30, 0x36, 0xde, 0xd8, 0x2c, 0xcb, 0xac, 0x89, 0x15, - 0xca, 0x2f, 0x12, 0xd6, 0x84, 0x58, 0xdf, 0x93, 0x3c, 0xd6, 0xd8, 0x52, 0x94, 0x0c, 0xa9, 0x77, - 0x54, 0x57, 0x56, 0xc0, 0xdf, 0x0b, 0x2a, 0xd6, 0xae, 0x5c, 0x5c, 0x5d, 0x59, 0x51, 0x52, 0x6a, - 0x74, 0xf5, 0x93, 0xfd, 0x66, 0x43, 0x89, 0x4b, 0x51, 0x1e, 0x26, 0xaa, 0x29, 0x27, 0x81, 0x41, - 0x8e, 0x14, 0xc9, 0xd3, 0x08, 0xac, 0xc5, 0xf6, 0xd0, 0xf3, 0xa9, 0xae, 0x54, 0x49, 0xa5, 0xf8, - 0x8c, 0x85, 0x07, 0x38, 0x37, 0x13, 0x86, 0x07, 0xa6, 0xf2, 0x78, 0x20, 0x3e, 0x30, 0x58, 0x5d, - 0x6b, 0xbd, 0x20, 0xcb, 0x78, 0x02, 0x2f, 0x97, 0x1a, 0xb6, 0x3c, 0xcc, 0x13, 0x78, 0x85, 0x0e, - 0x4e, 0xa3, 0xc2, 0x8b, 0xd3, 0x78, 0x0c, 0x65, 0xaf, 0xad, 0xad, 0x20, 0x4e, 0x25, 0x78, 0x7a, - 0xf3, 0xb7, 0x3c, 0xc3, 0xd1, 0x77, 0x6d, 0x6d, 0x45, 0x51, 0x75, 0xa5, 0x6a, 0xd6, 0x89, 0x6f, - 0x32, 0xdf, 0x98, 0x71, 0x96, 0x60, 0x9d, 0xfa, 0xc6, 0x3c, 0xc5, 0x77, 0x84, 0x38, 0x23, 0x96, - 0x3d, 0xe4, 0xc5, 0x4b, 0xc6, 0x05, 0xf3, 0xba, 0x24, 0x2e, 0x9c, 0x35, 0x7a, 0xcf, 0x99, 0xf0, - 0xb1, 0xf3, 0xa8, 0x71, 0xe1, 0xd3, 0x64, 0x5f, 0x3b, 0xf3, 0x9f, 0x59, 0x85, 0xf2, 0x1b, 0xb4, - 0x8d, 0x7e, 0x73, 0x9b, 0x88, 0x83, 0xc9, 0xe3, 0xba, 0xb2, 0x44, 0x62, 0x85, 0xf2, 0xfc, 0x0a, - 0x85, 0xe5, 0x58, 0x4f, 0x9d, 0xf9, 0xce, 0x38, 0xbe, 0xa3, 0xba, 0xd2, 0xe8, 0xba, 0x80, 0x03, - 0xb1, 0x58, 0xb7, 0x81, 0xb5, 0x17, 0xbf, 0xb5, 0x18, 0x55, 0x70, 0x2a, 0xf9, 0x44, 0xd0, 0x95, - 0x03, 0x02, 0xe3, 0x54, 0x3b, 0x04, 0x9e, 0x49, 0x25, 0x31, 0x54, 0xec, 0x8c, 0x66, 0x11, 0xe4, - 0x14, 0x8e, 0x0f, 0xf4, 0x59, 0x86, 0xf6, 0x45, 0x60, 0xc3, 0x19, 0x1f, 0xe8, 0x2b, 0x2d, 0x02, - 0x43, 0x78, 0xb3, 0x90, 0x78, 0xbf, 0x9a, 0x85, 0x1c, 0x23, 0x4a, 0xfa, 0x03, 0x6f, 0x41, 0x9b, - 0x73, 0x95, 0xbb, 0x58, 0x65, 0x09, 0xe3, 0x51, 0x0f, 0x0a, 0x68, 0x32, 0xfd, 0x4c, 0x12, 0x22, - 0x12, 0xa5, 0x67, 0x6c, 0x48, 0x76, 0x78, 0x6c, 0x4d, 0xe5, 0xe8, 0x46, 0x21, 0x9d, 0xb7, 0x7b, - 0x67, 0x06, 0x66, 0x89, 0x83, 0xfd, 0x80, 0x5c, 0xae, 0x44, 0x37, 0x57, 0xd4, 0xae, 0xb9, 0x12, - 0xdd, 0xbc, 0xb2, 0x6a, 0xe5, 0x95, 0xe8, 0xe6, 0xe5, 0xb5, 0x6b, 0x92, 0x7d, 0xed, 0xe4, 0xce, - 0x3b, 0x06, 0x14, 0x3b, 0x04, 0x94, 0xff, 0x51, 0x30, 0x00, 0x5e, 0xa5, 0x13, 0xbc, 0xf1, 0xef, - 0x1b, 0xa4, 0x1e, 0x3c, 0x28, 0x59, 0x73, 0x79, 0x39, 0x93, 0xb6, 0x41, 0xaa, 0x78, 0x0b, 0x53, - 0xe0, 0x90, 0x5d, 0x66, 0x3b, 0xf3, 0xfe, 0x5e, 0x1d, 0xea, 0xc0, 0x5d, 0x2a, 0x17, 0xf8, 0x9a, - 0x17, 0x86, 0xdf, 0xd3, 0x02, 0x1f, 0xbd, 0xa7, 0x05, 0x16, 0x3e, 0x51, 0xb4, 0xb8, 0xe8, 0xf1, - 0xa7, 0x97, 0x2c, 0x59, 0xf2, 0x44, 0x89, 0xca, 0x86, 0x14, 0x5b, 0x05, 0x94, 0x8b, 0x19, 0x72, - 0xec, 0xb4, 0x92, 0x31, 0x7b, 0x33, 0xde, 0x1f, 0x68, 0x2c, 0xbf, 0xec, 0x80, 0x70, 0xd6, 0xaa, - 0xa8, 0xba, 0xd2, 0x0e, 0x4c, 0x0b, 0xe2, 0x83, 0xad, 0x15, 0x0a, 0x59, 0xf8, 0xb0, 0x8e, 0x03, - 0x1b, 0xee, 0x66, 0xbc, 0x7f, 0x89, 0x0a, 0x03, 0x8a, 0xdb, 0x88, 0x45, 0x2e, 0x4d, 0x2e, 0x8d, - 0xc3, 0xa0, 0x79, 0x64, 0x56, 0xac, 0xe1, 0xda, 0x40, 0xfa, 0x67, 0x5b, 0x37, 0x86, 0xf5, 0xa8, - 0xee, 0x95, 0x4f, 0x5f, 0xcd, 0x05, 0x24, 0xe2, 0x30, 0x3f, 0xdf, 0x9d, 0x52, 0xec, 0x0c, 0xcd, - 0xca, 0x2f, 0x13, 0xaf, 0x1b, 0xd7, 0xeb, 0xe5, 0x34, 0x33, 0xec, 0xbf, 0x98, 0xd8, 0x7d, 0xc2, - 0x68, 0xef, 0x4c, 0x7e, 0xd5, 0x9f, 0x68, 0xdb, 0x6f, 0x1c, 0xdf, 0x3f, 0xb2, 0xf5, 0x74, 0xf2, - 0xdc, 0x60, 0x72, 0xf0, 0x08, 0xa8, 0xc6, 0x8a, 0xff, 0xa5, 0x80, 0xa6, 0xaf, 0xf0, 0x87, 0x23, - 0x36, 0x83, 0x4a, 0x55, 0xfb, 0xb5, 0x18, 0x42, 0x13, 0x4d, 0x32, 0x74, 0x2d, 0xb5, 0xe7, 0x14, - 0x2c, 0xa5, 0xb2, 0xad, 0x42, 0x7e, 0x16, 0xc8, 0xd6, 0x8d, 0x64, 0x4b, 0x98, 0x39, 0xe9, 0x7b, - 0xc1, 0x70, 0x84, 0xb7, 0x20, 0x24, 0x74, 0xae, 0xd1, 0x7a, 0x7a, 0x64, 0xeb, 0x69, 0x4a, 0xea, - 0xda, 0x86, 0xa2, 0x71, 0x41, 0x3d, 0x17, 0x24, 0x17, 0xc2, 0x8b, 0xcd, 0x5b, 0x85, 0x02, 0x5b, - 0x50, 0xfc, 0x0f, 0xd9, 0x68, 0x86, 0x47, 0x97, 0x3b, 0x5f, 0xbf, 0x6c, 0xa7, 0x74, 0xd3, 0xea, - 0x97, 0x21, 0xd5, 0x02, 0xa6, 0x77, 0x44, 0x5e, 0xad, 0x4c, 0x84, 0xb5, 0xa0, 0x5c, 0x8e, 0x0a, - 0xe9, 0xd4, 0xbe, 0x73, 0x33, 0xab, 0x7d, 0x89, 0x1d, 0xae, 0x53, 0xe9, 0x3b, 0x8f, 0x57, 0xfa, - 0x82, 0x23, 0xe2, 0x18, 0x23, 0xb2, 0x7b, 0x9f, 0x85, 0x3c, 0x37, 0xdd, 0xf9, 0x8d, 0xa2, 0x0d, - 0xfe, 0x5f, 0xc9, 0xe9, 0xd6, 0x92, 0x74, 0x21, 0x16, 0x88, 0x3e, 0xcf, 0xbb, 0x50, 0x0a, 0x96, - 0xd4, 0xc1, 0xdb, 0x85, 0x32, 0x27, 0x94, 0x55, 0xd8, 0xc0, 0x7b, 0x50, 0xbe, 0xc0, 0xde, 0x3c, - 0x38, 0xeb, 0x47, 0x46, 0x0d, 0x50, 0x0a, 0x43, 0xd0, 0x67, 0xed, 0xb6, 0x64, 0x0d, 0xdc, 0x2d, - 0x70, 0x92, 0x16, 0x20, 0x30, 0xb0, 0x97, 0x86, 0x25, 0x69, 0xa9, 0x67, 0x86, 0x48, 0x0b, 0xe2, - 0x43, 0x47, 0x8d, 0xae, 0x2d, 0x89, 0x03, 0xe7, 0x81, 0x4a, 0x4e, 0xf5, 0x9f, 0x20, 0xf1, 0xb7, - 0xb0, 0x1d, 0x9c, 0x95, 0xd3, 0x05, 0x1f, 0x27, 0xc1, 0x43, 0xd8, 0x06, 0xef, 0x28, 0xb8, 0xbb, - 0x43, 0x37, 0xfe, 0xac, 0xa0, 0x51, 0x09, 0x27, 0xbc, 0x21, 0xc2, 0x49, 0xef, 0x23, 0x92, 0xe7, - 0x13, 0x13, 0x12, 0x9c, 0x35, 0x06, 0xce, 0x22, 0x3e, 0xb0, 0xcb, 0x32, 0x62, 0x80, 0x0b, 0xbc, - 0x23, 0x0f, 0xcd, 0xf4, 0xea, 0xff, 0xd3, 0xba, 0xc1, 0x43, 0x02, 0x2a, 0x20, 0xfd, 0x2d, 0xa7, - 0x86, 0x3c, 0x3c, 0xf0, 0x73, 0xce, 0x81, 0xbd, 0x77, 0x8b, 0xce, 0xe7, 0xf0, 0x70, 0x50, 0x75, - 0x65, 0x95, 0xe4, 0x1a, 0x5a, 0x7e, 0x96, 0x37, 0x24, 0xb1, 0x99, 0xfb, 0x93, 0xa6, 0xf8, 0x5b, - 0xb7, 0xc5, 0x2f, 0xee, 0x02, 0x4f, 0x4a, 0x90, 0xa0, 0xc0, 0x81, 0xaa, 0xae, 0xe1, 0xc4, 0x2d, - 0x1e, 0x08, 0x28, 0x7f, 0x8c, 0x76, 0x27, 0x37, 0x0b, 0x05, 0xcd, 0xfe, 0x25, 0x9a, 0xe1, 0xb9, - 0x07, 0x1e, 0x86, 0x00, 0x8b, 0xed, 0x86, 0x00, 0xf7, 0x79, 0x5a, 0xe3, 0x60, 0x9e, 0x91, 0xb3, - 0x03, 0xf8, 0xa5, 0xae, 0xbc, 0x89, 0x7e, 0x21, 0xa5, 0x81, 0x56, 0xf9, 0x51, 0xc0, 0x71, 0x0e, - 0x70, 0xbf, 0x0e, 0x64, 0xd7, 0x51, 0x80, 0x26, 0x63, 0xf4, 0x69, 0x61, 0xb9, 0xe5, 0x5e, 0xee, - 0xf6, 0x0f, 0x8f, 0x16, 0x40, 0x1a, 0x50, 0xd5, 0xed, 0xcf, 0x72, 0xfa, 0x82, 0xc3, 0xe9, 0xfe, - 0x7a, 0x91, 0xec, 0x0f, 0x91, 0xd2, 0xf4, 0x79, 0xb7, 0xeb, 0xfd, 0xf5, 0xbc, 0x1b, 0x95, 0x1e, - 0x9e, 0xf7, 0xf3, 0x47, 0xf1, 0xbc, 0x87, 0x41, 0x7e, 0x18, 0xc7, 0xfb, 0x88, 0x16, 0x8e, 0xdc, - 0x32, 0xc7, 0xfb, 0x9b, 0x9e, 0x96, 0xf4, 0x9e, 0x73, 0xfd, 0x4d, 0x72, 0xae, 0xff, 0x37, 0x16, - 0x53, 0x0c, 0xc1, 0x9a, 0xcf, 0xdc, 0x4a, 0x9f, 0xf3, 0xf2, 0xd0, 0x4b, 0x99, 0x7d, 0xce, 0xf3, - 0x60, 0x90, 0xb1, 0xb8, 0x9c, 0x3f, 0x8b, 0xf2, 0x82, 0xef, 0xbe, 0x1b, 0xd6, 0x22, 0xd8, 0x01, - 0x7f, 0x12, 0x48, 0x52, 0x49, 0x91, 0x3c, 0x85, 0x90, 0x91, 0x9b, 0xbb, 0x92, 0xa7, 0x06, 0x47, - 0x76, 0x74, 0x5d, 0x2b, 0xcf, 0x91, 0xb2, 0x16, 0xfc, 0x89, 0x4a, 0xea, 0xc5, 0xe7, 0x50, 0x6e, - 0xa3, 0xbf, 0xc9, 0x1f, 0xc1, 0x8e, 0xf7, 0x58, 0x94, 0x35, 0x47, 0x82, 0x12, 0x66, 0x83, 0x88, - 0x63, 0xb7, 0x25, 0xf6, 0x7d, 0x83, 0x7b, 0xe7, 0x4a, 0xd9, 0x85, 0xa9, 0x71, 0x2a, 0x34, 0xb1, - 0x93, 0x57, 0x05, 0xb7, 0x9f, 0xbc, 0x12, 0xab, 0x38, 0x1f, 0xed, 0xa9, 0x78, 0x3d, 0x25, 0xba, - 0xf2, 0x20, 0xe7, 0xa3, 0x3d, 0x8d, 0xe4, 0x9e, 0x48, 0x5d, 0xda, 0x91, 0x18, 0x24, 0x81, 0x62, - 0x28, 0xbe, 0xb1, 0x7c, 0xb2, 0x6f, 0x57, 0xd4, 0x63, 0x9f, 0xdb, 0x31, 0x70, 0x9a, 0xa5, 0x1c, - 0xb9, 0x29, 0xce, 0x7f, 0x36, 0x8b, 0xfe, 0xe9, 0x63, 0xb6, 0xe8, 0x2f, 0x3b, 0x26, 0xe8, 0xca, - 0x61, 0x01, 0xf5, 0x08, 0x92, 0xe3, 0xc5, 0x95, 0x77, 0x08, 0x46, 0xdb, 0x17, 0xe6, 0x51, 0x1e, - 0x3e, 0x16, 0x1f, 0x3c, 0xcf, 0x6f, 0x2c, 0x79, 0xc3, 0xa9, 0x67, 0x0b, 0x79, 0xed, 0x71, 0xb3, - 0xf8, 0x40, 0x4c, 0x09, 0x34, 0x18, 0xad, 0xe7, 0x92, 0xe7, 0x06, 0xad, 0x00, 0x43, 0x47, 0xba, - 0x47, 0x8e, 0x5d, 0xe4, 0x9b, 0x19, 0xd1, 0x21, 0x60, 0xf1, 0xcd, 0x36, 0x6d, 0x87, 0x8c, 0x4b, - 0xc3, 0xc9, 0x7d, 0x27, 0x48, 0xe4, 0xb2, 0xbd, 0xa7, 0x13, 0x7d, 0xc7, 0xf9, 0x49, 0x8b, 0xff, - 0x29, 0x17, 0x4d, 0xb1, 0x2d, 0xee, 0xa7, 0x45, 0x11, 0xff, 0x31, 0x3d, 0x45, 0xfc, 0xa4, 0x17, - 0x45, 0x7c, 0xa7, 0x90, 0xc2, 0xd1, 0xb4, 0xa4, 0xf0, 0xad, 0xe2, 0xc5, 0x7f, 0x70, 0x42, 0x98, - 0x38, 0xb4, 0x38, 0xa1, 0x93, 0x4a, 0x69, 0xae, 0x83, 0xe4, 0x3d, 0x90, 0xcd, 0x39, 0x71, 0x8b, - 0xad, 0x02, 0x42, 0xf5, 0xbe, 0x00, 0x44, 0xc2, 0x6a, 0x20, 0x52, 0x27, 0xfc, 0xac, 0x72, 0xc5, - 0xf2, 0x6a, 0x7e, 0x7c, 0x6b, 0x2b, 0x20, 0xc3, 0xd8, 0xd6, 0x61, 0xe3, 0xf8, 0x11, 0x90, 0xda, - 0x2e, 0xa0, 0x71, 0x36, 0x8e, 0xc2, 0xde, 0x05, 0x82, 0x0d, 0x9a, 0xe5, 0x44, 0xdd, 0xde, 0x69, - 0xb4, 0x6e, 0x4e, 0x9d, 0x19, 0x80, 0xb6, 0x25, 0x2a, 0x37, 0x83, 0xcb, 0xde, 0x3c, 0xeb, 0x07, - 0xb2, 0x37, 0x17, 0x0f, 0x0a, 0x68, 0xbc, 0xaf, 0x25, 0x12, 0xac, 0xab, 0xf7, 0x35, 0x6a, 0xe4, - 0x9a, 0x7d, 0xa4, 0x2b, 0x1f, 0x48, 0x56, 0xa9, 0xfc, 0xbe, 0xcd, 0xa3, 0x11, 0xab, 0x35, 0x8c, - 0xa1, 0x8b, 0x89, 0xe8, 0xa9, 0xf8, 0xd0, 0x40, 0x72, 0xe8, 0x8b, 0xd2, 0x22, 0xa3, 0xf7, 0xb4, - 0x49, 0xa9, 0xbb, 0x6a, 0xcc, 0x95, 0xb4, 0x77, 0x9a, 0x04, 0xfd, 0xc0, 0x2e, 0xaa, 0x6c, 0x81, - 0x45, 0x91, 0x11, 0x5d, 0x3d, 0x54, 0x6b, 0xda, 0xe2, 0xe3, 0x02, 0x9a, 0x6c, 0x87, 0x4f, 0xf1, - 0x45, 0x94, 0xdb, 0xac, 0x85, 0x9a, 0xa8, 0x1a, 0xbf, 0x24, 0x33, 0x38, 0x2f, 0xaa, 0x35, 0xdb, - 0x62, 0xb8, 0x53, 0xa1, 0xdf, 0xec, 0xd7, 0x10, 0xb2, 0x0a, 0x3d, 0x80, 0x71, 0xa1, 0x1d, 0x18, - 0xd3, 0xc5, 0xb2, 0xe6, 0x53, 0x56, 0xbe, 0x89, 0x0a, 0x9c, 0x0c, 0xa5, 0xb8, 0xdc, 0x5a, 0x67, - 0xc6, 0x90, 0xd8, 0xf8, 0xa5, 0x80, 0xa6, 0xf2, 0x44, 0xfe, 0xa1, 0x26, 0xeb, 0x2d, 0xde, 0x3d, - 0x0e, 0xdd, 0x67, 0xc2, 0x38, 0xb6, 0xf9, 0xae, 0xe6, 0xe4, 0x91, 0xc4, 0x54, 0xd4, 0x65, 0x92, - 0x33, 0x2f, 0xbd, 0x3b, 0x0f, 0x75, 0x0b, 0xe3, 0x54, 0x35, 0xdf, 0x57, 0x06, 0xc5, 0xd8, 0xa3, - 0xec, 0x9b, 0xc7, 0x1e, 0xad, 0xb0, 0x9b, 0xd2, 0xe5, 0x50, 0x9b, 0xf0, 0x22, 0xbb, 0x29, 0xdd, - 0x54, 0xb8, 0x52, 0x35, 0x56, 0x11, 0xe3, 0x3a, 0x79, 0x23, 0xba, 0x65, 0x0e, 0x95, 0x28, 0xf0, - 0x71, 0x38, 0xb8, 0x8a, 0x5d, 0x25, 0x3a, 0x05, 0xb4, 0x16, 0x4c, 0x19, 0xea, 0xd0, 0x7e, 0x6e, - 0xb1, 0xc8, 0x5b, 0x60, 0xd9, 0xde, 0xd7, 0x95, 0xf5, 0x8c, 0xba, 0x7d, 0x9b, 0x57, 0xf8, 0x5c, - 0x37, 0x75, 0x5b, 0x3d, 0x0a, 0x79, 0xeb, 0x41, 0x99, 0x8e, 0xfb, 0x1e, 0x94, 0x69, 0xfe, 0xd8, - 0x29, 0xd3, 0xb6, 0x47, 0x29, 0x65, 0xca, 0x99, 0x97, 0x8c, 0xbf, 0x49, 0xe6, 0x25, 0x7f, 0x10, - 0x74, 0xe5, 0x8c, 0x80, 0xbe, 0x12, 0xa4, 0xf4, 0x20, 0x8e, 0x03, 0x35, 0x79, 0x13, 0x43, 0x64, - 0xc6, 0x5b, 0x4c, 0x12, 0xfd, 0x6d, 0x36, 0x9a, 0xed, 0xb5, 0xda, 0xbb, 0xcd, 0xc4, 0x21, 0xdb, - 0xcb, 0x71, 0x9b, 0x7c, 0x0d, 0x36, 0x71, 0x71, 0x53, 0x48, 0xfc, 0x86, 0x13, 0x0a, 0xa9, 0xe9, - 0xc6, 0x7d, 0x75, 0xf1, 0x15, 0x74, 0x91, 0x1a, 0x76, 0x24, 0xe8, 0x94, 0xf0, 0x13, 0x45, 0x54, - 0x86, 0x03, 0xa0, 0x62, 0x7e, 0x0f, 0x10, 0xc9, 0x4c, 0x06, 0xc4, 0xa7, 0xa1, 0x09, 0xdc, 0xe7, - 0x73, 0x1a, 0x78, 0xe1, 0xc6, 0x35, 0xf0, 0x59, 0xd7, 0xa9, 0x81, 0x77, 0xda, 0x6f, 0x64, 0xff, - 0x00, 0xf6, 0x1b, 0x39, 0xd7, 0x63, 0xbf, 0x91, 0x7b, 0x9d, 0xf6, 0x1b, 0x79, 0xd7, 0x6d, 0xbf, - 0x21, 0x76, 0x59, 0x88, 0x15, 0x64, 0x59, 0x1f, 0xe8, 0x4a, 0x84, 0x21, 0xd6, 0xf7, 0xdd, 0x9a, - 0xf4, 0xab, 0x43, 0x6d, 0xe0, 0x5a, 0xcf, 0xd3, 0x0d, 0xc6, 0x99, 0x9e, 0xf8, 0xc5, 0xf6, 0x64, - 0xcf, 0x36, 0xc8, 0x22, 0x4c, 0x10, 0x2d, 0xa7, 0x47, 0x2f, 0x2d, 0xa2, 0x78, 0xb8, 0xb4, 0xc8, - 0xc4, 0xb8, 0x55, 0x95, 0xa5, 0x45, 0x0e, 0x51, 0x00, 0xc5, 0xb2, 0x0a, 0xca, 0x03, 0x4d, 0x31, - 0x91, 0x8a, 0x41, 0xbc, 0x58, 0xb3, 0x48, 0x9e, 0xeb, 0xd0, 0x35, 0x3b, 0x77, 0x9c, 0x74, 0x14, - 0x7f, 0x6b, 0x7f, 0xc3, 0x40, 0x02, 0xf6, 0x86, 0xae, 0xfc, 0xdc, 0xfe, 0x86, 0xdd, 0x3c, 0x85, - 0xb1, 0xe3, 0xcd, 0xe3, 0xc8, 0x02, 0xf4, 0xbd, 0x0d, 0x39, 0x26, 0xdc, 0x90, 0x21, 0xc7, 0xc4, - 0x9b, 0x6f, 0xc8, 0x51, 0x83, 0xf2, 0x9a, 0x7d, 0xe1, 0xf0, 0x07, 0x0d, 0x44, 0xc2, 0x84, 0x83, - 0x38, 0x91, 0x22, 0xb9, 0x84, 0x06, 0xc1, 0x3e, 0x6c, 0x9c, 0xda, 0x65, 0x74, 0xec, 0x87, 0xa7, - 0xa8, 0xb4, 0x88, 0xc4, 0xc0, 0xc2, 0x61, 0xf9, 0x52, 0xa7, 0x3e, 0x37, 0xfa, 0xb7, 0xab, 0xa4, - 0x8b, 0xf8, 0x36, 0xc2, 0xa7, 0x4a, 0xc4, 0x3c, 0xd5, 0xba, 0xb2, 0x4c, 0x22, 0x07, 0x28, 0x3f, - 0xe7, 0x38, 0x68, 0x90, 0x3f, 0x73, 0x07, 0xf2, 0x6c, 0x91, 0x15, 0x13, 0x10, 0x6b, 0xbc, 0x81, - 0xf6, 0x8e, 0xc7, 0x76, 0x57, 0x28, 0x2a, 0x1e, 0x56, 0x54, 0x38, 0xbb, 0x93, 0x29, 0x54, 0x6c, - 0x5e, 0xcc, 0xd9, 0x9d, 0xcc, 0xf4, 0xb6, 0x3b, 0xe1, 0x2c, 0x4d, 0x7e, 0xc5, 0x02, 0x56, 0x16, - 0x60, 0x8c, 0xfd, 0x68, 0x06, 0x8c, 0x9d, 0x21, 0x7d, 0x3d, 0xd9, 0x77, 0x9c, 0xb8, 0x9e, 0x5a, - 0x4e, 0x93, 0x70, 0x93, 0x2f, 0xa3, 0xbc, 0x88, 0xcf, 0x1f, 0x88, 0xd0, 0xd8, 0x8a, 0x33, 0xdc, - 0x8e, 0xec, 0xfe, 0x40, 0x84, 0xbc, 0x2d, 0xd0, 0x52, 0x9e, 0x68, 0x33, 0x76, 0x23, 0xa5, 0xe2, - 0xef, 0xd1, 0xa4, 0x96, 0x40, 0x5d, 0xfd, 0x7b, 0x5a, 0x43, 0x4b, 0xa3, 0x6f, 0x5d, 0xa3, 0x86, - 0x45, 0x3c, 0x93, 0xca, 0x5f, 0xd7, 0x95, 0x35, 0x92, 0xbd, 0x46, 0xae, 0xe4, 0x3d, 0x4d, 0x98, - 0xc8, 0xd3, 0x88, 0x0e, 0x2d, 0x01, 0x89, 0xa8, 0xd1, 0xb5, 0x25, 0x3e, 0xb0, 0x1b, 0x1a, 0x5d, - 0x1d, 0xea, 0x78, 0x8c, 0x4a, 0x51, 0x3b, 0xf9, 0x0a, 0xd5, 0x3e, 0xa8, 0x58, 0xc9, 0xd9, 0x7e, - 0x4d, 0xb3, 0x80, 0xde, 0xb2, 0xfd, 0xba, 0xcf, 0x66, 0xfb, 0xb5, 0x61, 0x69, 0xb8, 0xc8, 0xac, - 0x0a, 0xf8, 0x9a, 0x34, 0xce, 0xca, 0xeb, 0x55, 0x94, 0xeb, 0x5b, 0xaf, 0x05, 0x22, 0x58, 0x94, - 0x33, 0x09, 0x32, 0xb2, 0x42, 0x09, 0xa5, 0x71, 0x14, 0xf3, 0x47, 0x11, 0x5b, 0xfb, 0x63, 0x46, - 0xef, 0xe9, 0x64, 0xec, 0xd2, 0xd5, 0xa1, 0x8e, 0x25, 0xe6, 0x02, 0xf1, 0x0f, 0x15, 0x7a, 0x88, - 0xc5, 0x28, 0xdb, 0xdf, 0x50, 0x4f, 0x12, 0x4f, 0x15, 0xe8, 0xca, 0x24, 0xc9, 0xfc, 0x2d, 0xe7, - 0x25, 0x7a, 0x63, 0x89, 0xb6, 0x4b, 0xaa, 0xf9, 0x43, 0x7c, 0x18, 0xe5, 0x84, 0x7c, 0xf5, 0x1b, - 0x48, 0x42, 0xa9, 0xa9, 0xba, 0x32, 0x59, 0xc2, 0x05, 0xd0, 0xea, 0xd3, 0xf3, 0x2a, 0xfe, 0x25, - 0x96, 0xa1, 0x09, 0x00, 0x15, 0x15, 0x8d, 0xbe, 0x30, 0x44, 0xd1, 0x23, 0x82, 0x26, 0xbe, 0x1c, - 0x77, 0x32, 0x3e, 0xdd, 0xa5, 0xf2, 0x85, 0xe2, 0x0b, 0x68, 0x3c, 0x79, 0x61, 0x36, 0x3e, 0x85, - 0xe3, 0xd5, 0x91, 0xe7, 0xcc, 0x2a, 0x95, 0x0b, 0xe0, 0xdb, 0xfc, 0xcd, 0x1b, 0x9f, 0x32, 0x29, - 0xfd, 0xc3, 0x51, 0xd5, 0xaa, 0x14, 0xab, 0xd1, 0x24, 0x86, 0x5e, 0xf0, 0xf6, 0xde, 0x47, 0x2d, - 0x4c, 0x8b, 0x24, 0x7b, 0x0d, 0x7d, 0x4d, 0x12, 0x67, 0x8f, 0x12, 0xfb, 0x39, 0x7b, 0xbd, 0xf8, - 0x0c, 0x1a, 0xbf, 0x6e, 0x43, 0x05, 0x49, 0x7a, 0x3b, 0x1b, 0x6f, 0xf1, 0x1c, 0x5d, 0x29, 0x94, - 0xac, 0x52, 0x79, 0x02, 0xcb, 0x26, 0x65, 0x62, 0x23, 0x56, 0x2e, 0x46, 0xd0, 0x04, 0x9e, 0xce, - 0x98, 0x93, 0xc6, 0x9b, 0x97, 0xbb, 0x10, 0x1c, 0xe9, 0x00, 0xb7, 0x02, 0xa2, 0x6e, 0xf1, 0xf4, - 0x06, 0xbd, 0x1a, 0xe7, 0x4e, 0xa7, 0x4e, 0x7d, 0x4e, 0x00, 0x9a, 0x6f, 0x20, 0x2e, 0x03, 0xc3, - 0x24, 0xfc, 0xd9, 0xf7, 0x5b, 0xee, 0xa9, 0xac, 0x50, 0x9e, 0x63, 0xb3, 0xf0, 0xa3, 0xf8, 0x82, - 0x5a, 0x0f, 0xd2, 0x66, 0xe2, 0xfb, 0xe6, 0x3d, 0x0b, 0x6f, 0x60, 0x21, 0xd1, 0xb0, 0x24, 0x88, - 0x14, 0xc9, 0x55, 0x0e, 0x8c, 0x9a, 0x68, 0xff, 0xc2, 0x38, 0x73, 0xb1, 0xba, 0xb6, 0x94, 0x99, - 0x54, 0x8d, 0xe8, 0x6d, 0x46, 0xff, 0x45, 0x48, 0xff, 0x40, 0xa6, 0xc2, 0xe4, 0x34, 0xc9, 0x47, - 0x80, 0x4d, 0x70, 0x54, 0x32, 0x9c, 0x49, 0x46, 0x80, 0x4b, 0x87, 0xaa, 0xf9, 0xc2, 0xc1, 0x00, - 0x8e, 0x85, 0x46, 0xc9, 0x08, 0xbe, 0x42, 0x9e, 0x1f, 0x1f, 0xd8, 0x09, 0xb6, 0x62, 0xd4, 0x12, - 0x79, 0x47, 0xf2, 0xf4, 0xae, 0xf8, 0x40, 0x1f, 0x98, 0x8e, 0x19, 0xbb, 0x8f, 0x18, 0x9f, 0x1c, - 0x55, 0x6d, 0x7d, 0xbe, 0x4f, 0xe0, 0xa2, 0x17, 0x50, 0x81, 0xf3, 0x48, 0xae, 0x2b, 0x04, 0x10, - 0xb1, 0x47, 0xe7, 0xe9, 0x34, 0x79, 0x21, 0x6f, 0x8a, 0xc4, 0x88, 0x0c, 0xc0, 0xc4, 0x3c, 0xf9, - 0x07, 0xdb, 0x55, 0x7c, 0x54, 0x40, 0xb3, 0xad, 0xd0, 0x00, 0xe1, 0x95, 0x5a, 0xc4, 0x57, 0xe9, - 0xc3, 0xc9, 0x4d, 0x30, 0x43, 0x5d, 0x8e, 0xf2, 0x09, 0x3c, 0x51, 0x6f, 0xb6, 0x47, 0x4c, 0xe8, - 0x64, 0x85, 0x4c, 0xcd, 0xe9, 0x72, 0x08, 0x60, 0x4d, 0xa8, 0xaf, 0x76, 0x86, 0x69, 0xe4, 0x39, - 0x36, 0xd1, 0x7b, 0xeb, 0x56, 0x90, 0xe7, 0xc1, 0xea, 0x8b, 0xaf, 0x64, 0xa3, 0x39, 0x9e, 0x7d, - 0xef, 0x36, 0x9f, 0xa9, 0x4c, 0x2c, 0x86, 0xf9, 0x55, 0xb6, 0xb8, 0x40, 0x9e, 0x7b, 0x71, 0x3b, - 0x79, 0x8d, 0xb7, 0x75, 0xe5, 0x0d, 0xf4, 0xba, 0x94, 0xe9, 0x28, 0xa8, 0x19, 0xbf, 0xe7, 0xda, - 0x47, 0xe1, 0x37, 0xfe, 0x95, 0xc0, 0xf8, 0x0d, 0x73, 0x58, 0x5e, 0x8d, 0xd0, 0xe0, 0x19, 0x18, - 0xa8, 0x81, 0x89, 0x72, 0x38, 0x09, 0x4e, 0x83, 0xb8, 0x02, 0x4d, 0xae, 0xb7, 0xae, 0x43, 0x4d, - 0x4b, 0x13, 0x31, 0xd0, 0xc6, 0xa8, 0xce, 0x51, 0x25, 0x4f, 0xe1, 0xd9, 0xa2, 0xc4, 0xbe, 0x6f, - 0x54, 0x47, 0x83, 0xb2, 0xc5, 0xba, 0x52, 0x8a, 0x24, 0x89, 0x5f, 0x59, 0xc6, 0xa3, 0x29, 0xfe, - 0x24, 0x0b, 0xcd, 0x31, 0xb9, 0xb1, 0x95, 0x38, 0x10, 0xed, 0xcd, 0x97, 0x50, 0x95, 0xc5, 0x04, - 0x5d, 0x39, 0x2f, 0xa0, 0x73, 0x82, 0x94, 0x69, 0x1e, 0xf9, 0xe3, 0xb4, 0x62, 0x02, 0x08, 0x91, - 0x7b, 0x7b, 0x84, 0x05, 0xff, 0x7b, 0x36, 0xba, 0xdf, 0x7b, 0xd5, 0x3f, 0x4d, 0x71, 0xc1, 0xed, - 0x0d, 0xed, 0x45, 0xfc, 0x31, 0x32, 0x9e, 0x88, 0x3c, 0x9f, 0xbf, 0xd2, 0x1e, 0xb0, 0x93, 0xf9, - 0x56, 0x77, 0x65, 0xa1, 0x59, 0x16, 0xc2, 0xa8, 0x08, 0x69, 0x0d, 0x5a, 0x20, 0xe2, 0xf7, 0x35, - 0xaa, 0xda, 0xaf, 0xc5, 0x2f, 0x04, 0x34, 0x3e, 0xac, 0x85, 0x36, 0x6a, 0xa1, 0x57, 0xe9, 0x83, - 0x57, 0xbe, 0x53, 0xd0, 0x95, 0xdf, 0x4b, 0x56, 0xb1, 0xfc, 0xeb, 0xf8, 0xc0, 0xce, 0xc4, 0x4e, - 0xc2, 0x58, 0x24, 0x7b, 0xb6, 0x25, 0x07, 0xb7, 0xc5, 0x07, 0xcf, 0x27, 0x7b, 0xb6, 0x6d, 0xd0, - 0x36, 0x99, 0x20, 0xd7, 0x7f, 0x31, 0x1e, 0xdb, 0xbd, 0xa1, 0x65, 0x9d, 0xb6, 0x10, 0x53, 0x98, - 0x26, 0x10, 0x1f, 0xec, 0x67, 0xb7, 0x85, 0xb5, 0xc0, 0xa2, 0xfe, 0x85, 0x0d, 0x21, 0xff, 0x46, - 0x2d, 0x44, 0x52, 0x14, 0x93, 0x5f, 0xd0, 0x23, 0xd1, 0xdb, 0x5e, 0x5d, 0x4b, 0x93, 0x88, 0xb2, - 0x5b, 0xc7, 0x96, 0x41, 0xd5, 0x2b, 0xe9, 0xbe, 0x45, 0xbe, 0x9f, 0xdf, 0x25, 0xab, 0x8a, 0x45, - 0x5d, 0x62, 0x23, 0x15, 0x5f, 0xcd, 0x42, 0x85, 0xde, 0xa3, 0xdc, 0xf9, 0xba, 0xc4, 0xb7, 0x6d, - 0x0e, 0x41, 0xf3, 0xd2, 0x80, 0xbf, 0xf5, 0x4d, 0x1e, 0x0f, 0x5a, 0xe2, 0xdc, 0x69, 0x63, 0x7b, - 0x47, 0xb2, 0x67, 0x5b, 0xaa, 0x7f, 0x73, 0xfc, 0xe2, 0x49, 0x9b, 0x7f, 0x10, 0x89, 0xfa, 0x95, - 0x76, 0x7b, 0xd2, 0xee, 0x72, 0x66, 0x18, 0xfc, 0xfb, 0x71, 0x0e, 0x37, 0xde, 0xbb, 0x16, 0x0c, - 0xed, 0xaf, 0x47, 0xd6, 0x0d, 0xe8, 0x37, 0xd6, 0xa0, 0x89, 0xf5, 0x8d, 0x7e, 0x2d, 0x10, 0x01, - 0xff, 0x52, 0x22, 0x50, 0x7b, 0xcc, 0xe4, 0x0b, 0x6d, 0x15, 0xf2, 0x0c, 0xf8, 0x60, 0x93, 0xf6, - 0xc6, 0x7e, 0xa6, 0x46, 0x77, 0xa7, 0xd1, 0x77, 0xc0, 0x1a, 0xd3, 0xd6, 0x5a, 0x5c, 0x8b, 0x26, - 0xc1, 0x22, 0x95, 0x86, 0x86, 0x90, 0x16, 0x0e, 0x13, 0x25, 0xc5, 0x12, 0xf3, 0xf8, 0xed, 0x35, - 0x4c, 0x89, 0x02, 0x91, 0xf2, 0x31, 0x6b, 0xc5, 0xb2, 0x95, 0x17, 0xa8, 0xf6, 0xc6, 0xe2, 0x72, - 0x84, 0xea, 0x7d, 0x15, 0x5a, 0x28, 0x62, 0x52, 0x19, 0x44, 0x55, 0xf1, 0xa8, 0xc9, 0xc9, 0x73, - 0xc5, 0xd4, 0xc9, 0xba, 0x42, 0x81, 0xe7, 0x98, 0x84, 0x96, 0x2d, 0x52, 0xb9, 0x36, 0x62, 0x2d, - 0x1a, 0xdf, 0x12, 0xd6, 0x42, 0xab, 0x83, 0x1b, 0xb4, 0x00, 0xd1, 0x57, 0xc8, 0x26, 0xdb, 0x62, - 0x95, 0xca, 0xb3, 0x53, 0x67, 0x2e, 0x8d, 0x1c, 0x38, 0xc3, 0xac, 0x2c, 0x22, 0x66, 0xa9, 0x2d, - 0xaf, 0x70, 0x81, 0x6a, 0x35, 0x17, 0x6b, 0xd0, 0x24, 0xb2, 0xad, 0x95, 0xc1, 0x26, 0x9f, 0x9f, - 0x3a, 0xea, 0xe0, 0xc8, 0xb7, 0xf6, 0x1a, 0x46, 0x23, 0x1f, 0x39, 0x62, 0x74, 0x77, 0xb2, 0xb1, - 0xec, 0x8d, 0xc4, 0x55, 0x08, 0xc1, 0x96, 0x9a, 0x6b, 0x26, 0x82, 0xb6, 0xc5, 0xba, 0x32, 0x5f, - 0xe2, 0x8a, 0xe5, 0x99, 0x30, 0x92, 0x55, 0x02, 0xb7, 0x88, 0xfb, 0x64, 0x56, 0x23, 0xbe, 0x6a, - 0xc2, 0x8a, 0xf9, 0xcb, 0x04, 0x6b, 0x10, 0xb8, 0x2d, 0xd4, 0x95, 0x62, 0xc9, 0x2a, 0xa5, 0x51, - 0xf4, 0x59, 0x81, 0x63, 0x34, 0xab, 0x65, 0xd9, 0x3e, 0x41, 0x57, 0xf6, 0x08, 0x68, 0xb7, 0x20, - 0x65, 0xb8, 0x4a, 0xd4, 0xd3, 0x3f, 0x2d, 0x16, 0xe4, 0x7c, 0xc2, 0x6d, 0xf0, 0x73, 0x59, 0xb0, - 0x9f, 0xfb, 0x65, 0x81, 0x3b, 0xbb, 0xcb, 0x82, 0xb5, 0xeb, 0x97, 0x05, 0xfb, 0xae, 0x15, 0xef, - 0x77, 0xba, 0x94, 0xdf, 0x55, 0x08, 0xb5, 0xec, 0x75, 0x5d, 0x59, 0x83, 0xea, 0xa4, 0x4c, 0x9f, - 0x90, 0x76, 0x53, 0x33, 0x23, 0xbd, 0x9e, 0x2c, 0x34, 0xdb, 0x96, 0xbe, 0xea, 0x2e, 0x42, 0x7a, - 0x59, 0xf6, 0xb7, 0xb7, 0x56, 0x57, 0x56, 0xa2, 0x57, 0xa5, 0x0c, 0x9f, 0x23, 0xcf, 0xb3, 0x25, - 0x82, 0xf3, 0x7a, 0x62, 0x6c, 0x6f, 0x70, 0x6f, 0x16, 0x9a, 0x93, 0x76, 0xb4, 0x3b, 0x1f, 0x6a, - 0x88, 0xd1, 0x73, 0xa6, 0x4f, 0x90, 0x8b, 0xf9, 0x1d, 0x71, 0x5e, 0xc5, 0x51, 0x60, 0x67, 0x67, - 0x2e, 0x2a, 0xe4, 0xec, 0x48, 0xec, 0x90, 0xf3, 0x89, 0x07, 0xe4, 0xfc, 0x4e, 0x57, 0xc2, 0x3c, - 0xe0, 0xbc, 0xcb, 0x1f, 0x04, 0x03, 0x1f, 0x27, 0xd4, 0x60, 0xa0, 0x49, 0x0f, 0x31, 0x36, 0x80, - 0x81, 0x1f, 0x7c, 0xe3, 0x9f, 0xf9, 0x9b, 0x99, 0x2d, 0xb0, 0xf5, 0x40, 0x3e, 0xef, 0x7e, 0x20, - 0x1f, 0x4c, 0xff, 0x40, 0x92, 0xee, 0xd6, 0xf3, 0x18, 0xa0, 0x48, 0x98, 0xcb, 0x35, 0x59, 0xa3, - 0x2b, 0x95, 0x12, 0x57, 0x2c, 0x3f, 0x65, 0x9c, 0xf9, 0x2c, 0xd1, 0x76, 0x21, 0xf9, 0x55, 0xbf, - 0xf9, 0x34, 0x0e, 0x75, 0x5d, 0x1d, 0xea, 0x60, 0x9f, 0x73, 0x25, 0xba, 0xd9, 0x5a, 0xee, 0x95, - 0xe8, 0x66, 0xee, 0x4b, 0x98, 0xd1, 0xb1, 0x35, 0x94, 0xf8, 0x16, 0x9a, 0x50, 0x1f, 0x0c, 0x04, - 0xb4, 0x7a, 0x98, 0x10, 0x5e, 0xcd, 0x32, 0x5d, 0x59, 0x22, 0xf1, 0xe5, 0xf2, 0xbc, 0x91, 0x8f, - 0xbf, 0x4b, 0xec, 0x3e, 0xc1, 0xa6, 0x4b, 0x7e, 0xf2, 0x6d, 0x6a, 0xf3, 0xde, 0x44, 0xdb, 0xfe, - 0x54, 0xb4, 0x75, 0xa4, 0xe7, 0xd4, 0xc8, 0xe6, 0x8f, 0x2d, 0x03, 0x73, 0xab, 0x1b, 0xa7, 0x1d, - 0xcf, 0xfd, 0x1e, 0xda, 0xf1, 0xbc, 0x1b, 0xb0, 0xdb, 0xa4, 0xf4, 0x72, 0x5a, 0x30, 0xa2, 0x96, - 0xf9, 0x19, 0x6e, 0x2c, 0x61, 0xa8, 0xb7, 0x64, 0x83, 0xc1, 0xc7, 0x5d, 0x49, 0x30, 0xd7, 0xdb, - 0xf8, 0xc5, 0x31, 0x10, 0xcc, 0xa5, 0xba, 0x52, 0x42, 0x08, 0xe6, 0x79, 0xa3, 0xee, 0x8d, 0xdd, - 0xad, 0x3e, 0xfd, 0x2e, 0x8d, 0x79, 0xb3, 0xd3, 0x62, 0x84, 0xd9, 0xa8, 0xb0, 0x3a, 0xe0, 0x8f, - 0x2c, 0x73, 0x9a, 0x39, 0xab, 0xda, 0xaf, 0x8b, 0xe7, 0xa0, 0xfb, 0xd2, 0xd4, 0x85, 0x9b, 0x8b, - 0x0f, 0x65, 0xa1, 0x99, 0x4a, 0x43, 0x03, 0xa9, 0xd4, 0x1a, 0x38, 0x3f, 0x8a, 0x37, 0xbc, 0x0d, - 0xb7, 0x05, 0x4b, 0x53, 0xe1, 0x69, 0xb8, 0x3d, 0x99, 0x37, 0xd3, 0xae, 0xae, 0xf4, 0xb6, 0xbd, - 0x7e, 0xce, 0x8d, 0x06, 0x5c, 0xa1, 0x79, 0xc0, 0x42, 0xcc, 0xcb, 0x12, 0x55, 0xd3, 0x95, 0x75, - 0xe8, 0x57, 0x52, 0x9a, 0x85, 0xcb, 0xf3, 0x8d, 0x6f, 0xb6, 0x13, 0x8a, 0x6e, 0xe7, 0x51, 0xa3, - 0xf5, 0x84, 0xc3, 0x6e, 0x9c, 0x52, 0x3b, 0x5e, 0x0b, 0xb3, 0xc5, 0xdf, 0xed, 0xcd, 0x42, 0xb3, - 0x3c, 0xa7, 0xb8, 0xf3, 0x5f, 0xa0, 0x75, 0xba, 0xf2, 0x0e, 0x7a, 0x5b, 0x4a, 0xb7, 0x7c, 0x59, - 0x1a, 0xcb, 0x16, 0x8d, 0xf2, 0x0a, 0xfd, 0xe3, 0x34, 0x24, 0xd2, 0xd0, 0xcf, 0xc1, 0x96, 0x06, - 0x2a, 0x40, 0x7b, 0x07, 0x8d, 0x23, 0x16, 0xd6, 0x04, 0x54, 0xaa, 0x74, 0x65, 0x01, 0x89, 0xab, - 0x8c, 0x4d, 0x01, 0xe6, 0xc4, 0x63, 0x7b, 0x98, 0x0f, 0x45, 0x6a, 0xd7, 0xd9, 0xc4, 0xfe, 0x1d, - 0xcc, 0x20, 0xe0, 0x5a, 0xf9, 0xac, 0xd0, 0x8c, 0x82, 0xac, 0xc2, 0xe9, 0xae, 0x10, 0xce, 0x2a, - 0x1d, 0x55, 0x7c, 0x1e, 0xe5, 0x04, 0x2c, 0xc7, 0x9e, 0x12, 0x1c, 0xdb, 0xc2, 0x2c, 0x90, 0x67, - 0xb0, 0x81, 0xe3, 0x03, 0x7d, 0xe6, 0xa8, 0xc4, 0xb5, 0x07, 0x48, 0x96, 0x97, 0x54, 0xdc, 0x4a, - 0xdc, 0x2a, 0xa0, 0x7c, 0xad, 0xc1, 0x1f, 0xc1, 0x1a, 0x3f, 0xd8, 0xd0, 0xf5, 0xba, 0xd2, 0x20, - 0xb1, 0x42, 0xf9, 0x75, 0x78, 0xe4, 0xea, 0x7c, 0xbe, 0x3a, 0x13, 0x00, 0x0f, 0x7f, 0xc6, 0x14, - 0xa7, 0xc4, 0x4e, 0xa8, 0xab, 0x3f, 0x39, 0xb4, 0x3f, 0xf5, 0xdd, 0x1e, 0xc8, 0xe7, 0x43, 0x4c, - 0xba, 0xb1, 0x13, 0x10, 0x36, 0xfe, 0xde, 0x06, 0xba, 0x7d, 0x96, 0x64, 0x99, 0xb4, 0xef, 0xdf, - 0xa3, 0xb2, 0x39, 0xc4, 0x83, 0x02, 0x42, 0x41, 0x9a, 0x73, 0x20, 0x4c, 0xf0, 0x8f, 0xec, 0xc2, - 0x3f, 0xae, 0xed, 0x5d, 0xc4, 0x12, 0x15, 0x10, 0x0d, 0x51, 0xa5, 0xae, 0x28, 0x12, 0x37, 0x94, - 0xfc, 0x38, 0x44, 0x3f, 0x49, 0x1c, 0xdd, 0x61, 0xec, 0xd8, 0x9e, 0xba, 0xd4, 0x9d, 0x1c, 0xfc, - 0xd6, 0x38, 0xf3, 0x69, 0x72, 0xf7, 0x37, 0x44, 0x4d, 0x73, 0x76, 0x1f, 0xb8, 0x1e, 0xc1, 0xeb, - 0x04, 0x69, 0xe3, 0x54, 0x6e, 0x00, 0xf1, 0x8f, 0x02, 0x9a, 0x88, 0xad, 0xd2, 0xe9, 0xe2, 0x72, - 0xf1, 0xe2, 0x9e, 0x18, 0xc3, 0xe2, 0xaa, 0xb8, 0x6e, 0xb0, 0xbc, 0x37, 0x75, 0xe5, 0x75, 0xc9, - 0x36, 0x9c, 0xfc, 0x32, 0x9f, 0xc2, 0x8d, 0xe5, 0x1f, 0x20, 0x0a, 0x90, 0x1d, 0x5f, 0xc2, 0xe6, - 0x41, 0x2d, 0x9f, 0xd1, 0x0d, 0x4c, 0x4f, 0x41, 0x7c, 0x06, 0xdb, 0xaf, 0xda, 0xc6, 0x15, 0xff, - 0x19, 0xa7, 0x9b, 0x09, 0xb6, 0x34, 0x58, 0xc8, 0x95, 0x38, 0xf4, 0xce, 0xf6, 0x58, 0x3a, 0x45, - 0xe8, 0x24, 0x12, 0x82, 0xb3, 0xa7, 0xbc, 0x55, 0x30, 0x4f, 0x3d, 0xb6, 0x87, 0xe5, 0xee, 0x60, - 0x06, 0x1b, 0xa9, 0x6f, 0x4f, 0x26, 0xda, 0x2e, 0xf0, 0xe6, 0x21, 0x38, 0xc7, 0x13, 0x95, 0xb1, - 0xd2, 0x44, 0xb9, 0x10, 0x6b, 0x80, 0x48, 0x5d, 0x87, 0x3f, 0x26, 0xb7, 0xef, 0x4a, 0x74, 0x33, - 0x71, 0x83, 0x8b, 0x0f, 0xec, 0x4a, 0xfc, 0xe1, 0x58, 0xa2, 0xb7, 0x1d, 0x22, 0x43, 0x26, 0x0e, - 0x9c, 0x8f, 0x0f, 0xf5, 0x80, 0x4e, 0xde, 0xfc, 0x66, 0xc8, 0xb8, 0xee, 0x5c, 0x96, 0xf8, 0x1b, - 0x34, 0x31, 0x18, 0x5e, 0x89, 0x3f, 0x03, 0xbb, 0x41, 0x8d, 0xc3, 0x1f, 0x38, 0xd3, 0xf9, 0x81, - 0xab, 0xea, 0x70, 0xe0, 0x81, 0x17, 0x75, 0xe5, 0x39, 0xc9, 0xd6, 0x41, 0x2e, 0x65, 0x9f, 0xb5, - 0x8a, 0x40, 0x37, 0xfb, 0x30, 0x3e, 0x47, 0x09, 0xc1, 0x41, 0xb6, 0xbe, 0xa2, 0x2e, 0xa0, 0xa9, - 0x64, 0x22, 0x6e, 0x09, 0xf9, 0x69, 0xf6, 0x98, 0x34, 0x5c, 0x1f, 0x2a, 0x37, 0x89, 0x0d, 0xc9, - 0xdd, 0x53, 0x5e, 0xc2, 0xd6, 0xc2, 0x27, 0xb6, 0x83, 0x55, 0x99, 0xd0, 0x8a, 0x61, 0xc3, 0xb6, - 0x1e, 0xf7, 0x20, 0xe2, 0x2e, 0x01, 0x4d, 0x63, 0x2a, 0x5b, 0x6e, 0x59, 0x28, 0x7d, 0xe4, 0x01, - 0x68, 0xba, 0x3e, 0x54, 0xfe, 0xac, 0xae, 0x2c, 0x95, 0xbc, 0x7a, 0xcb, 0xf3, 0xd8, 0xd2, 0x6c, - 0xe6, 0xc1, 0xfc, 0x5a, 0xbc, 0xfa, 0x89, 0x2f, 0x59, 0x99, 0x76, 0x26, 0x50, 0x03, 0xd5, 0xd9, - 0x56, 0xa6, 0x9d, 0x29, 0xf4, 0x35, 0xff, 0xc4, 0x18, 0x8c, 0xb1, 0xd4, 0x07, 0x59, 0x85, 0xd3, - 0xad, 0x3c, 0x3b, 0x2b, 0xd0, 0x24, 0x7c, 0xe8, 0xb5, 0xd4, 0xf5, 0x70, 0x22, 0x1d, 0xe7, 0x21, - 0xc9, 0x5e, 0x23, 0x8b, 0x90, 0x52, 0x0d, 0xae, 0x37, 0x10, 0x9f, 0xaa, 0xbd, 0x89, 0x18, 0x15, - 0x50, 0x5e, 0x3d, 0x84, 0xce, 0x00, 0x13, 0x94, 0xf7, 0x74, 0x45, 0x93, 0x48, 0x91, 0xfc, 0x26, - 0x5c, 0x33, 0xa3, 0xef, 0x40, 0xe2, 0xcc, 0x1f, 0x4b, 0x8b, 0xe2, 0x97, 0x0e, 0x1b, 0x7d, 0x07, - 0x47, 0xa2, 0x5b, 0x46, 0x5a, 0x3b, 0x8d, 0xee, 0x6d, 0xc9, 0x53, 0x9d, 0x78, 0x30, 0x13, 0xa9, - 0x71, 0x81, 0x33, 0x4a, 0x49, 0x38, 0x2d, 0x48, 0x50, 0x83, 0xa3, 0x37, 0x06, 0x5b, 0x1a, 0x8a, - 0xde, 0x0f, 0x07, 0x03, 0xa9, 0x53, 0x9f, 0x27, 0x3e, 0xed, 0x26, 0xb0, 0x4b, 0x26, 0x11, 0x5f, - 0xb3, 0x27, 0x9b, 0x9a, 0x4c, 0x25, 0x27, 0xa5, 0xf6, 0x74, 0x52, 0x0f, 0x40, 0x0a, 0x29, 0x48, - 0x8e, 0xd3, 0x7f, 0x32, 0x39, 0xb8, 0x3d, 0x3e, 0xb8, 0x2b, 0x39, 0xd8, 0x49, 0x75, 0xdc, 0x7c, - 0x66, 0xa9, 0x15, 0x36, 0x77, 0x3d, 0x30, 0x55, 0xc1, 0x94, 0x19, 0xef, 0xae, 0x37, 0x27, 0x83, - 0x89, 0xb9, 0xcd, 0x45, 0xaf, 0x1a, 0xe5, 0x69, 0x01, 0xfc, 0x1c, 0x14, 0x50, 0x69, 0xdb, 0x22, - 0x89, 0x14, 0xc9, 0xf3, 0xc1, 0xa3, 0x33, 0xd9, 0xde, 0x46, 0xac, 0xe5, 0xc9, 0x73, 0x7b, 0x88, - 0xb8, 0x2e, 0x75, 0xf5, 0xa7, 0x4e, 0x6d, 0x56, 0x49, 0x6b, 0xf1, 0x77, 0x2c, 0x75, 0x1b, 0x76, - 0xbd, 0x98, 0xea, 0xad, 0x2b, 0xc0, 0x38, 0xb3, 0xc6, 0x6a, 0x47, 0xdc, 0x18, 0xb9, 0x9e, 0xf2, - 0xa3, 0xde, 0xd8, 0x07, 0x5b, 0x25, 0xf3, 0x87, 0xa1, 0xf2, 0xbd, 0xc4, 0xf7, 0x51, 0xbe, 0xb9, - 0xe9, 0x78, 0x6e, 0x11, 0xcf, 0xfd, 0xa0, 0xe7, 0xdc, 0x10, 0xc4, 0xc4, 0x0a, 0x99, 0xcf, 0x7a, - 0xc9, 0x73, 0x1d, 0xf3, 0xc6, 0x63, 0x7b, 0x6c, 0xd3, 0xb1, 0x96, 0xe6, 0xbd, 0x9b, 0xd8, 0xdc, - 0xe8, 0x8b, 0xbc, 0x1b, 0x0c, 0x35, 0xe1, 0x09, 0xa7, 0x8d, 0xf9, 0x99, 0xa8, 0xe5, 0xba, 0xc1, - 0x33, 0x81, 0xb7, 0xdc, 0x36, 0x9c, 0x3c, 0x97, 0xa6, 0xcc, 0x24, 0x69, 0x90, 0x1c, 0x50, 0xa8, - 0xda, 0x5a, 0xcf, 0x7e, 0x03, 0x4d, 0x71, 0xbc, 0x8c, 0x37, 0x2f, 0x0d, 0xd0, 0x5b, 0x68, 0xaa, - 0xeb, 0x61, 0xbb, 0x79, 0xa3, 0xbf, 0x88, 0xa6, 0xba, 0xf6, 0xe3, 0xba, 0x8c, 0x0c, 0x48, 0x34, - 0x48, 0x0f, 0x5a, 0x4c, 0x9e, 0x0a, 0x88, 0x86, 0xdc, 0x29, 0x12, 0xe9, 0x8e, 0xd0, 0x51, 0x97, - 0x05, 0x4c, 0x0f, 0x5d, 0x16, 0x6c, 0x38, 0xde, 0xac, 0x07, 0x44, 0x54, 0xfc, 0xad, 0x80, 0xa6, - 0xd9, 0xc6, 0xbc, 0x2b, 0x54, 0x80, 0xc5, 0xff, 0x6a, 0x1a, 0x0d, 0xdc, 0x6a, 0x23, 0x4b, 0x5f, - 0x75, 0x92, 0xa5, 0x8f, 0xe1, 0x08, 0xf2, 0xa4, 0x6c, 0x14, 0xa2, 0x94, 0xe5, 0x42, 0x23, 0x24, - 0xe8, 0x73, 0x36, 0x12, 0x74, 0xc1, 0xe8, 0x24, 0x28, 0x19, 0xe0, 0xee, 0xa3, 0x40, 0xdd, 0x3b, - 0x79, 0x07, 0x51, 0xa0, 0x1e, 0x8b, 0xbb, 0x47, 0x81, 0xde, 0xa3, 0x40, 0x7f, 0xda, 0x14, 0xe8, - 0xb3, 0x56, 0xd8, 0xec, 0x09, 0x54, 0x01, 0x99, 0x26, 0x6c, 0xf6, 0xb8, 0x50, 0x6e, 0x41, 0x96, - 0x2d, 0x0f, 0xfb, 0x3d, 0xe2, 0xf3, 0x56, 0x13, 0x9f, 0x6f, 0x3b, 0x88, 0xcf, 0x2a, 0x5d, 0x29, - 0x67, 0xc4, 0xe7, 0xd2, 0xb1, 0x10, 0x9f, 0x0b, 0xc0, 0xc4, 0x27, 0x12, 0x6a, 0xd1, 0x12, 0x6d, - 0xfb, 0xb1, 0xd3, 0x77, 0xc9, 0x3d, 0x82, 0x34, 0x3d, 0x41, 0xea, 0xf1, 0x6a, 0xdc, 0x23, 0x48, - 0x6f, 0x26, 0x41, 0x4a, 0x32, 0x12, 0x4e, 0x87, 0x8d, 0x26, 0x8f, 0x0d, 0x25, 0x49, 0x49, 0xae, - 0x59, 0x70, 0xca, 0x76, 0xd3, 0xa4, 0x14, 0x13, 0x15, 0xef, 0xc8, 0x42, 0xd3, 0x6c, 0x27, 0x75, - 0x77, 0x18, 0xa0, 0xbd, 0x66, 0xb3, 0xc0, 0x99, 0xe1, 0x09, 0xec, 0x36, 0xab, 0x1b, 0x96, 0x58, - 0x12, 0x32, 0xcc, 0xf1, 0x21, 0x0e, 0x41, 0x7d, 0x50, 0xfc, 0x17, 0x02, 0x12, 0xa9, 0x26, 0x91, - 0x23, 0x68, 0xdf, 0x76, 0x12, 0xb4, 0x15, 0xd7, 0x41, 0xd0, 0x8e, 0x2e, 0x65, 0x2d, 0x44, 0xe3, - 0xfc, 0xe1, 0x65, 0xc1, 0x50, 0x3d, 0xec, 0x5b, 0xbe, 0x4a, 0x7f, 0x96, 0x95, 0xe9, 0xca, 0xd3, - 0xe8, 0x49, 0xc9, 0x63, 0x4d, 0xf2, 0x0c, 0x12, 0xfb, 0x93, 0x7e, 0x87, 0xf3, 0x7c, 0xf1, 0xa9, - 0xda, 0xfa, 0xfd, 0x48, 0x4f, 0xd5, 0xb8, 0xf0, 0x07, 0xd8, 0x8a, 0xb4, 0xa7, 0xda, 0x2b, 0xe0, - 0x38, 0xe3, 0xb6, 0x23, 0x5d, 0xe9, 0x3c, 0xd2, 0xc7, 0xcd, 0xa5, 0xb1, 0x23, 0x9d, 0xc0, 0x05, - 0x97, 0x1a, 0xc3, 0x11, 0xd2, 0x83, 0x72, 0x4e, 0x63, 0x05, 0x86, 0xbc, 0x10, 0x1f, 0xfe, 0xd8, - 0xfb, 0x22, 0x16, 0xff, 0x79, 0x16, 0x2a, 0xb0, 0xfa, 0xdd, 0x1d, 0xa7, 0xf4, 0xea, 0x58, 0x4e, - 0x69, 0x8c, 0xb9, 0x07, 0xcb, 0x96, 0xe9, 0x4a, 0x05, 0x52, 0x24, 0xd7, 0x26, 0xc8, 0x33, 0x60, - 0xf7, 0x2c, 0x18, 0xcf, 0xac, 0x25, 0x49, 0xe6, 0xa0, 0x02, 0x50, 0xfc, 0x71, 0x07, 0xfd, 0x8a, - 0xf3, 0xa0, 0x97, 0x5c, 0xc7, 0xdd, 0xcd, 0x09, 0x81, 0xbc, 0x90, 0x5c, 0xd4, 0x27, 0x6c, 0xbc, - 0x68, 0xd1, 0x68, 0xbc, 0xe8, 0x1d, 0xc5, 0x83, 0x3e, 0x66, 0x49, 0x4b, 0x41, 0xb5, 0x8e, 0xb3, - 0x03, 0x31, 0x69, 0xe9, 0x78, 0x26, 0x27, 0xb5, 0xc4, 0xa3, 0x8f, 0x39, 0xb3, 0xc2, 0xcc, 0x4a, - 0x43, 0xde, 0x66, 0x20, 0x6a, 0xf3, 0xbe, 0x07, 0x51, 0x5b, 0xb6, 0x5f, 0xd0, 0x15, 0x5d, 0x40, - 0x5d, 0x82, 0xe4, 0x3a, 0x57, 0xf9, 0x37, 0x4e, 0xd8, 0xa0, 0x86, 0xdb, 0x24, 0x36, 0x3a, 0x8e, - 0x1e, 0x10, 0x8f, 0x6d, 0x4f, 0x7e, 0x72, 0xc6, 0xe4, 0x8e, 0x31, 0xe5, 0x0b, 0xfc, 0x59, 0x72, - 0x70, 0x9b, 0xd1, 0xdd, 0x06, 0xe5, 0x64, 0x97, 0xf1, 0x50, 0x56, 0xdf, 0xd6, 0xd3, 0xc0, 0xe1, - 0x19, 0x6d, 0x87, 0xe2, 0x03, 0x31, 0x7a, 0x85, 0x4f, 0x8f, 0xec, 0xe8, 0x22, 0x6e, 0x18, 0xdf, - 0x65, 0xa1, 0xa9, 0xdc, 0x8a, 0xee, 0x8e, 0x3b, 0xfb, 0xb2, 0x4d, 0x01, 0x9f, 0xe6, 0xce, 0xf2, - 0xa6, 0xda, 0x70, 0x67, 0x8d, 0xb6, 0x6f, 0x4c, 0xcc, 0xca, 0x5f, 0xd8, 0x97, 0x74, 0xe5, 0x79, - 0xf4, 0xac, 0xe4, 0xde, 0x82, 0xb1, 0xde, 0xd8, 0xe2, 0xaf, 0xa7, 0xa1, 0x99, 0x20, 0xf0, 0x62, - 0x2c, 0x1a, 0xbd, 0xb0, 0x4b, 0xc9, 0x25, 0x13, 0x68, 0xf0, 0xba, 0x59, 0xe4, 0x92, 0x11, 0xf7, - 0x31, 0x7c, 0x7c, 0x20, 0xea, 0x01, 0x53, 0xc9, 0xff, 0x57, 0x20, 0x17, 0xed, 0x4f, 0xdd, 0x9a, - 0x6e, 0x9f, 0xae, 0xbc, 0xc0, 0x6b, 0xba, 0x1f, 0x63, 0x63, 0x24, 0xda, 0xa3, 0x2c, 0xe4, 0x31, - 0x0b, 0xaf, 0x86, 0x03, 0x9b, 0xc5, 0x07, 0x62, 0xe6, 0x25, 0xb3, 0x65, 0xba, 0xcd, 0x1a, 0x53, - 0xa6, 0xdb, 0xb7, 0x99, 0x83, 0x6b, 0xb6, 0xa5, 0x8e, 0xa5, 0x0e, 0xae, 0x73, 0xdd, 0x53, 0x83, - 0x27, 0x1b, 0x35, 0xf7, 0x32, 0x5f, 0x19, 0xa1, 0xb0, 0xc8, 0xfd, 0xca, 0x50, 0x17, 0xd7, 0x77, - 0xd1, 0x14, 0x60, 0x35, 0x94, 0x96, 0x48, 0x30, 0x8c, 0x63, 0xb2, 0xe4, 0xe0, 0xc3, 0x7f, 0x4e, - 0x57, 0x9e, 0x91, 0x9c, 0x75, 0xf2, 0x23, 0x04, 0x79, 0x0c, 0x45, 0x8d, 0xee, 0x7e, 0x9e, 0xb1, - 0x65, 0x4e, 0x95, 0x24, 0x6a, 0x95, 0xa3, 0xa3, 0xb8, 0x11, 0x4d, 0xa0, 0x81, 0x56, 0xfc, 0x81, - 0xf5, 0xe9, 0xac, 0xf0, 0x15, 0xab, 0x09, 0x44, 0xbb, 0xc6, 0x46, 0xa4, 0x7c, 0x4f, 0xb9, 0xd0, - 0xe6, 0x85, 0x0d, 0x6f, 0x20, 0x26, 0xe3, 0xaf, 0x95, 0xe7, 0xee, 0x14, 0xb2, 0x0a, 0x04, 0x95, - 0x6f, 0x2e, 0xee, 0x15, 0xd0, 0xe4, 0x46, 0x5f, 0x4b, 0xa0, 0xfe, 0x3d, 0x16, 0xd3, 0x3a, 0xcf, - 0x3b, 0xdb, 0xd9, 0x0a, 0xdc, 0x0a, 0x38, 0x99, 0x16, 0xb0, 0x2b, 0x28, 0x5f, 0xae, 0x2b, 0xcf, - 0x49, 0x8e, 0xfe, 0xb2, 0x04, 0x73, 0x27, 0x0e, 0x9c, 0x07, 0xfc, 0x06, 0x8b, 0x00, 0x6f, 0x60, - 0xc6, 0x54, 0x00, 0xa8, 0xb2, 0x35, 0x39, 0xc6, 0x10, 0x37, 0x32, 0x3f, 0xdb, 0x71, 0x99, 0x54, - 0xc7, 0x4e, 0x40, 0xb6, 0xb9, 0xdc, 0x62, 0xbf, 0x40, 0xea, 0x72, 0xfb, 0x80, 0x49, 0x85, 0xda, - 0x1d, 0x92, 0x71, 0x8d, 0xc3, 0xfb, 0x76, 0x8b, 0xc0, 0xdc, 0x6f, 0xf3, 0xaf, 0x6b, 0x62, 0xec, - 0x95, 0x4b, 0x26, 0x06, 0x37, 0x68, 0xe2, 0x9b, 0x5b, 0xe2, 0x9e, 0x38, 0xd9, 0xb3, 0x2d, 0x71, - 0xf6, 0x18, 0x73, 0x8f, 0x5b, 0x60, 0xc4, 0x8e, 0x18, 0x43, 0x5b, 0x4b, 0x98, 0xe3, 0xee, 0xbb, - 0x10, 0xea, 0x60, 0x55, 0x1d, 0x31, 0x9b, 0xc5, 0x41, 0xd9, 0x48, 0x91, 0xac, 0xb0, 0xf1, 0x46, - 0xa2, 0xed, 0xc0, 0x7c, 0x43, 0x00, 0xef, 0x55, 0x75, 0x58, 0x56, 0xb6, 0x25, 0xd9, 0x7a, 0xca, - 0x64, 0x28, 0xc9, 0xbb, 0xd4, 0x07, 0xdb, 0x6d, 0xee, 0x3b, 0xf5, 0xe9, 0x55, 0xc9, 0x50, 0xbc, - 0x32, 0x0f, 0xdd, 0x98, 0x32, 0xef, 0xa4, 0xc0, 0xc5, 0x10, 0xb5, 0x45, 0x6a, 0xb4, 0xa2, 0x88, - 0x6e, 0x62, 0x7b, 0x45, 0x02, 0x85, 0x7e, 0x77, 0x38, 0xf5, 0xc7, 0xfd, 0x40, 0x38, 0x92, 0x87, - 0x68, 0xff, 0xc5, 0xc4, 0xb1, 0x36, 0x26, 0xa2, 0x84, 0x9f, 0xf0, 0x62, 0xc4, 0x07, 0x76, 0x83, - 0x18, 0xe5, 0x4a, 0x74, 0x0b, 0x8b, 0xc3, 0xc8, 0xcb, 0x01, 0x53, 0x27, 0x37, 0x83, 0x78, 0xcf, - 0x2c, 0xb9, 0xd4, 0x3a, 0x72, 0x6c, 0x30, 0x71, 0xb0, 0x9f, 0x78, 0xa8, 0x72, 0x61, 0x47, 0xdf, - 0x43, 0xa8, 0x3e, 0x18, 0x08, 0xb7, 0x34, 0x71, 0xb1, 0xee, 0xb0, 0xd0, 0x8c, 0x2b, 0x96, 0x9f, - 0xb6, 0xfe, 0x86, 0x40, 0xe9, 0x21, 0x2d, 0x1c, 0x6c, 0x09, 0xd5, 0x6b, 0x20, 0x7e, 0x0a, 0x81, - 0x25, 0x7a, 0x72, 0xef, 0xb9, 0x54, 0xff, 0x85, 0xd4, 0x1f, 0xb7, 0x25, 0x62, 0xdd, 0x20, 0xff, - 0x50, 0xb9, 0x41, 0xc4, 0xf7, 0x1d, 0x11, 0xe2, 0xa7, 0x8d, 0x21, 0x42, 0x3c, 0xb6, 0x36, 0xb2, - 0x47, 0x88, 0x9f, 0x61, 0x21, 0x5e, 0x7c, 0xd8, 0xf0, 0x91, 0xf6, 0x38, 0xf0, 0xe2, 0x87, 0x28, - 0x27, 0xe2, 0x5b, 0x1f, 0x2e, 0x9c, 0x8e, 0x41, 0x75, 0xc9, 0x98, 0x41, 0x75, 0x3d, 0x01, 0x54, - 0x59, 0x57, 0x16, 0x4b, 0x78, 0x08, 0xf9, 0x51, 0x4f, 0x30, 0x85, 0xaf, 0xb4, 0xf9, 0xa9, 0xe3, - 0xe6, 0xe2, 0x1f, 0x05, 0xce, 0x05, 0x19, 0x0b, 0x8a, 0xc0, 0xa7, 0x7a, 0xb7, 0xa0, 0x2b, 0x3b, - 0x05, 0xc9, 0x5e, 0x27, 0x6f, 0x62, 0x4e, 0xc8, 0x24, 0x02, 0x56, 0x20, 0x18, 0x6a, 0xf2, 0x35, - 0x2e, 0xd6, 0x3e, 0x8c, 0x68, 0xa1, 0x80, 0xaf, 0xb1, 0xe4, 0x4a, 0x74, 0x4b, 0xe2, 0xd0, 0x99, - 0x91, 0x68, 0x0f, 0x8f, 0xbc, 0x2c, 0xcf, 0x65, 0xbd, 0x23, 0xf9, 0xf5, 0xd7, 0xf1, 0x81, 0xf6, - 0xc4, 0xfe, 0x8b, 0x9e, 0x0d, 0x4a, 0x8b, 0x8c, 0xce, 0x73, 0x15, 0x6b, 0x57, 0x92, 0x82, 0xb6, - 0xfd, 0x2c, 0xab, 0x87, 0x6a, 0x5f, 0x89, 0xdd, 0xdd, 0x79, 0xe6, 0x75, 0xb9, 0x3b, 0x57, 0x13, - 0x32, 0x4b, 0x09, 0x69, 0x3e, 0xec, 0x7d, 0x3c, 0x8b, 0x73, 0xba, 0xb6, 0xd5, 0xc8, 0x53, 0xd8, - 0x10, 0xd4, 0xe9, 0xda, 0x56, 0x6f, 0x62, 0x19, 0x92, 0xf9, 0xbb, 0xd0, 0x3b, 0x0a, 0x1c, 0x5e, - 0x30, 0x0b, 0x82, 0x56, 0xbe, 0x42, 0x57, 0xaa, 0x69, 0xde, 0xef, 0x97, 0xac, 0x6d, 0xc1, 0x17, - 0x13, 0x97, 0x52, 0xe1, 0xa1, 0xc3, 0x3d, 0x19, 0xa4, 0x38, 0xf1, 0x81, 0x2f, 0x4d, 0x9a, 0xaf, - 0x63, 0xbf, 0xd1, 0xb5, 0x25, 0xb1, 0xef, 0x1b, 0x9a, 0x16, 0xfc, 0x7d, 0x34, 0x39, 0x18, 0x68, - 0x24, 0xd9, 0xed, 0xb1, 0x40, 0xe9, 0x3e, 0xfc, 0xb0, 0xe1, 0x74, 0x05, 0x8e, 0x2a, 0x79, 0xa1, - 0xfd, 0x77, 0x7c, 0xb0, 0x15, 0x52, 0x69, 0x81, 0xcb, 0x43, 0x69, 0x7c, 0xa0, 0x33, 0xd1, 0x7e, - 0x2a, 0x75, 0xac, 0x03, 0x24, 0xca, 0xaa, 0xa3, 0xfb, 0xf7, 0xf1, 0x51, 0x7e, 0x06, 0x4d, 0xe0, - 0x70, 0xeb, 0x75, 0x75, 0x7d, 0x1a, 0x8d, 0x67, 0xb0, 0x7e, 0x5d, 0x12, 0x9e, 0x2d, 0x82, 0xae, - 0xfc, 0x29, 0xfa, 0x9d, 0x94, 0x86, 0x5c, 0x92, 0x67, 0x10, 0x9c, 0x48, 0xaf, 0x28, 0x65, 0x2f, - 0x89, 0xc6, 0xd1, 0x96, 0x7b, 0x0e, 0xe8, 0x88, 0xcb, 0x02, 0xff, 0xea, 0x5e, 0x16, 0x1c, 0xef, - 0x9d, 0xa5, 0x96, 0xbc, 0x2c, 0x10, 0xec, 0x5c, 0xdc, 0x80, 0x26, 0xdb, 0xc1, 0x40, 0x9c, 0xcd, - 0x21, 0x5b, 0xf8, 0x0e, 0x0b, 0xc1, 0xcd, 0x44, 0x79, 0xcd, 0xc1, 0x60, 0x23, 0x25, 0xc2, 0x54, - 0xf2, 0x4b, 0x9c, 0x8b, 0x10, 0x88, 0x76, 0xad, 0xf8, 0x35, 0x2a, 0x57, 0x52, 0xdc, 0x99, 0x8d, - 0x66, 0xb9, 0xbe, 0xf2, 0xee, 0xa0, 0xad, 0x5f, 0xb7, 0xf1, 0xc3, 0x3f, 0x1b, 0x15, 0xfb, 0xc1, - 0x57, 0x55, 0xfa, 0x22, 0xbe, 0x51, 0xb2, 0xb4, 0x8a, 0x9b, 0x6e, 0xdc, 0x2d, 0x12, 0x27, 0x04, - 0x75, 0xb9, 0x45, 0x16, 0xda, 0x02, 0x36, 0x66, 0xf0, 0x89, 0x2c, 0xfe, 0x0b, 0x01, 0xcd, 0xc9, - 0xb0, 0x72, 0xf1, 0x75, 0x34, 0x9e, 0x61, 0x34, 0x12, 0xcc, 0x2e, 0x43, 0x32, 0x14, 0x1c, 0x75, - 0xc4, 0xea, 0xc0, 0x45, 0x83, 0xa0, 0x09, 0x21, 0x59, 0x9d, 0x58, 0x6b, 0x3e, 0x26, 0xe1, 0x0d, - 0x44, 0x9a, 0x3a, 0xdd, 0x1d, 0x76, 0x24, 0xbc, 0x81, 0xc8, 0x80, 0xcc, 0x66, 0xf2, 0x1c, 0xfe, - 0x0e, 0xe0, 0xf0, 0x12, 0xbb, 0x8d, 0xae, 0x6f, 0x20, 0xfc, 0x81, 0x8a, 0x9b, 0x14, 0xff, 0x0f, - 0x11, 0xcd, 0xb4, 0x12, 0x6a, 0xda, 0x18, 0x8e, 0x65, 0xf6, 0x78, 0x3c, 0x82, 0x15, 0x34, 0xdb, - 0x16, 0x8f, 0x67, 0x02, 0xbb, 0x62, 0xd4, 0x5c, 0x7e, 0xba, 0x3d, 0xb2, 0xce, 0x6d, 0x67, 0x3f, - 0x16, 0x11, 0xce, 0x09, 0x98, 0x8f, 0xd9, 0xe9, 0x39, 0x27, 0xc2, 0x2f, 0x55, 0x38, 0xe2, 0x9f, - 0xff, 0xec, 0x3a, 0xd8, 0x15, 0xc6, 0x94, 0x6c, 0x11, 0xdc, 0x5c, 0x49, 0x2e, 0x51, 0x12, 0x3a, - 0x03, 0x1b, 0x96, 0x07, 0x83, 0x8d, 0x6b, 0x4d, 0xcc, 0x76, 0xb3, 0x39, 0x96, 0x80, 0x9d, 0x63, - 0xc9, 0x1b, 0x23, 0xc7, 0x22, 0x8d, 0x9d, 0x63, 0xb1, 0x73, 0x2a, 0x1d, 0x6e, 0x4e, 0x65, 0xdc, - 0xd8, 0x39, 0x95, 0x17, 0xbf, 0x27, 0xa7, 0xe2, 0xe2, 0x50, 0x9c, 0x74, 0x5e, 0xfe, 0x0f, 0x48, - 0xe7, 0x59, 0xdc, 0xd0, 0xf8, 0x4c, 0x66, 0x0c, 0x37, 0x9d, 0x1b, 0xfa, 0x88, 0x31, 0x43, 0xe8, - 0xba, 0xe6, 0xe5, 0x99, 0x21, 0x8c, 0x10, 0x29, 0x33, 0x34, 0x6f, 0x54, 0x66, 0x88, 0x31, 0x41, - 0x94, 0xb6, 0x9d, 0xe0, 0x4d, 0xdb, 0xa6, 0x9d, 0xf9, 0xfb, 0xd3, 0xb6, 0x16, 0xfb, 0x35, 0xf1, - 0x87, 0x66, 0xbf, 0xa8, 0xa8, 0x6f, 0x12, 0xc7, 0x7e, 0x51, 0x51, 0x1f, 0x61, 0xbf, 0x38, 0x7d, - 0x36, 0x63, 0xbf, 0xa8, 0xe4, 0xcf, 0xc6, 0x7e, 0x4d, 0xbe, 0x6b, 0xd8, 0xaf, 0x29, 0x3f, 0x20, - 0xfb, 0x55, 0x86, 0x72, 0x1a, 0xb4, 0x70, 0x3d, 0xd1, 0x36, 0x13, 0x9d, 0x85, 0x16, 0xae, 0xa7, - 0x9a, 0x28, 0x0b, 0xc3, 0x62, 0x8d, 0x38, 0x13, 0xb1, 0x69, 0xe1, 0x7a, 0xf3, 0x6d, 0xb5, 0x98, - 0x83, 0xa9, 0xe4, 0x3e, 0x3b, 0xf1, 0xe9, 0x9a, 0xea, 0x40, 0xe4, 0x71, 0x19, 0x30, 0x2a, 0x8e, - 0xc3, 0xc7, 0xb1, 0x0e, 0x13, 0x19, 0xdd, 0x5f, 0x64, 0xe7, 0x1d, 0xd6, 0x3b, 0x79, 0x07, 0x31, - 0xcd, 0xe8, 0x75, 0x91, 0x90, 0x3f, 0xb0, 0x1e, 0x46, 0xbf, 0x11, 0xce, 0x82, 0x10, 0xf5, 0x70, - 0x3b, 0x88, 0x96, 0xd8, 0x4e, 0xd4, 0x5b, 0x55, 0x40, 0xd4, 0x5b, 0xbf, 0xe3, 0x83, 0xad, 0x24, - 0x53, 0x76, 0x06, 0xa2, 0xde, 0x6a, 0x2e, 0x7e, 0x80, 0xc6, 0x6b, 0x2c, 0x0a, 0xf7, 0x74, 0xef, - 0x28, 0xdc, 0x69, 0xae, 0xa9, 0x23, 0x0a, 0x37, 0x0e, 0x07, 0x63, 0x0d, 0xc6, 0x82, 0x40, 0x9d, - 0x3d, 0x4a, 0x6c, 0x98, 0x4c, 0x4a, 0x85, 0x55, 0xdf, 0x65, 0xdc, 0xc4, 0xec, 0xe7, 0xd0, 0xe4, - 0x51, 0x63, 0x6e, 0xa7, 0xe7, 0x45, 0x9e, 0xd0, 0x95, 0xc7, 0xd0, 0x62, 0x29, 0x0d, 0x21, 0x25, - 0xcf, 0x80, 0x23, 0x63, 0xe5, 0xc0, 0x8a, 0x14, 0xef, 0xc8, 0x46, 0xb3, 0x5c, 0x3d, 0xee, 0x0e, - 0xb2, 0x5e, 0xb5, 0x91, 0xf5, 0x19, 0x88, 0x5b, 0x3e, 0xc5, 0x35, 0x53, 0x33, 0xb3, 0xd4, 0xfd, - 0xbc, 0xf0, 0xfc, 0x76, 0x12, 0xf4, 0xdb, 0xf2, 0xd1, 0x4c, 0x50, 0x09, 0xbb, 0x88, 0xe0, 0x5f, - 0x78, 0x11, 0xc1, 0x4f, 0x8f, 0x42, 0x04, 0xa7, 0xd5, 0x8b, 0xda, 0xe8, 0xe2, 0x7f, 0x2d, 0x38, - 0xf4, 0xdb, 0xe5, 0x5f, 0x0a, 0xba, 0x72, 0x52, 0x90, 0x68, 0xa9, 0xdc, 0x23, 0x18, 0x43, 0x31, - 0xa3, 0xed, 0x3c, 0xe8, 0x71, 0x21, 0x3b, 0x63, 0x62, 0xd7, 0xd7, 0x89, 0x81, 0xd6, 0x64, 0xf7, - 0x76, 0x4b, 0x5e, 0x83, 0xed, 0xb1, 0xcc, 0x37, 0xba, 0x37, 0x66, 0x1c, 0x3a, 0x7d, 0x25, 0xba, - 0x05, 0x72, 0x06, 0x02, 0xfe, 0x85, 0xbe, 0xa9, 0xe1, 0xaf, 0x8d, 0xd6, 0x13, 0x40, 0xff, 0x13, - 0xaf, 0xdf, 0x7d, 0x97, 0x80, 0x11, 0x30, 0xfa, 0x2f, 0x1a, 0x6d, 0x07, 0xac, 0x1c, 0x2a, 0x43, - 0x3d, 0x70, 0xe4, 0x26, 0x33, 0x41, 0x9e, 0xb7, 0xfd, 0x17, 0xe3, 0xdf, 0x5d, 0x4a, 0x1e, 0x3b, - 0x93, 0x3a, 0x73, 0x3c, 0x75, 0xe9, 0x13, 0x23, 0x76, 0xf2, 0x4a, 0x74, 0x0b, 0x53, 0xc6, 0x8b, - 0x7f, 0x21, 0xa0, 0x19, 0x21, 0x0d, 0xfb, 0xd7, 0xda, 0xe3, 0xcb, 0x12, 0x78, 0xd2, 0x05, 0x5d, - 0xd9, 0x2d, 0x48, 0xde, 0x6d, 0xe4, 0x96, 0xf8, 0xa5, 0xc3, 0xc9, 0x7d, 0x87, 0x48, 0xbc, 0x98, - 0xde, 0xd3, 0x34, 0xd5, 0x4a, 0xdf, 0xd5, 0xa1, 0x8e, 0xf8, 0x60, 0x2b, 0x59, 0x3e, 0xfd, 0x56, - 0x93, 0x19, 0x38, 0xf5, 0x39, 0x2b, 0x89, 0x0f, 0xec, 0xb6, 0x98, 0x1b, 0x4c, 0x8b, 0x9b, 0x5f, - 0x3f, 0xfc, 0x71, 0x7c, 0x60, 0x2f, 0x16, 0x7f, 0x7c, 0xcc, 0xef, 0x5f, 0xe2, 0xc0, 0xf9, 0xe4, - 0xde, 0x23, 0x89, 0x7d, 0x6d, 0xe6, 0xea, 0xbd, 0x57, 0x23, 0x0e, 0x0b, 0x68, 0xea, 0x06, 0x4d, - 0x6b, 0x26, 0xc5, 0x10, 0x66, 0x92, 0x68, 0x13, 0x88, 0xdc, 0xcc, 0x5d, 0x2f, 0xb7, 0x90, 0xd5, - 0x0c, 0xee, 0xa6, 0xf1, 0xbb, 0x07, 0xe1, 0xbc, 0xc8, 0x49, 0xe1, 0x83, 0x30, 0xbf, 0x67, 0x78, - 0x7b, 0x7c, 0xa0, 0x73, 0x64, 0x6f, 0x34, 0xd1, 0xbf, 0x19, 0x0e, 0xcb, 0x2c, 0xc4, 0xdf, 0x0f, - 0x3f, 0x21, 0x99, 0xe9, 0x58, 0xbf, 0xc1, 0xbd, 0x12, 0xf1, 0x79, 0x2e, 0x15, 0x4a, 0xae, 0x15, - 0xfb, 0xc3, 0x95, 0xd3, 0x9f, 0xa3, 0x55, 0x1a, 0xb8, 0xcc, 0x25, 0xe4, 0x69, 0x82, 0xbb, 0x40, - 0x32, 0x37, 0xd8, 0x9f, 0x26, 0xab, 0x0a, 0x9e, 0x26, 0xeb, 0x37, 0x3b, 0xac, 0x4c, 0x4f, 0x93, - 0xd5, 0xbc, 0xac, 0x4b, 0xd0, 0x95, 0x5d, 0x02, 0x6a, 0x13, 0xa4, 0x34, 0x77, 0x4f, 0x5e, 0x03, - 0xe3, 0xb1, 0xf2, 0xe4, 0x27, 0x03, 0x46, 0xeb, 0x39, 0xcb, 0xe6, 0x74, 0xf8, 0x63, 0x0b, 0xa5, - 0x5e, 0x3a, 0x98, 0xe8, 0x6d, 0x37, 0xba, 0xfa, 0xd9, 0x65, 0x30, 0xab, 0x12, 0x07, 0xce, 0x63, - 0xd5, 0xa6, 0x39, 0x0a, 0x44, 0xe7, 0xbb, 0x12, 0xdd, 0x72, 0x59, 0xe0, 0x6f, 0xe1, 0x65, 0x81, - 0x7d, 0x3d, 0x96, 0xb3, 0xb8, 0x96, 0xf2, 0xa3, 0x90, 0xb3, 0xa4, 0xf9, 0xaa, 0x3b, 0x5c, 0xce, - 0xf2, 0x29, 0x0b, 0xc1, 0xe0, 0x2d, 0x67, 0x69, 0xb8, 0x2e, 0x39, 0x0b, 0xe6, 0xe2, 0x39, 0x39, - 0x8b, 0xcd, 0x40, 0x86, 0x35, 0x73, 0xcb, 0x5c, 0x0e, 0x0a, 0x63, 0x10, 0xba, 0x04, 0x74, 0x65, - 0x03, 0x11, 0xba, 0xd4, 0x3b, 0xa1, 0xb6, 0x67, 0x1b, 0x2f, 0x77, 0x81, 0x09, 0xae, 0x44, 0xb7, - 0x90, 0x10, 0xbe, 0x8e, 0xfb, 0xdd, 0x1e, 0x4d, 0xf4, 0xb6, 0xb3, 0x74, 0x17, 0xf1, 0xa1, 0x9e, - 0x78, 0xec, 0x54, 0x72, 0xef, 0x11, 0x47, 0x5f, 0x22, 0xbc, 0xf9, 0x73, 0x81, 0xe5, 0x8c, 0xb7, - 0x3d, 0x5a, 0x1b, 0xbd, 0x1e, 0xad, 0xd5, 0xba, 0xf2, 0xb4, 0xfd, 0xd1, 0x5a, 0xc0, 0x87, 0x4e, - 0x36, 0x31, 0xeb, 0x8e, 0x2f, 0x8d, 0xc1, 0x58, 0x75, 0x25, 0x18, 0xc5, 0xb3, 0x64, 0x71, 0x63, - 0x7e, 0xd1, 0xca, 0x9e, 0xd6, 0x95, 0x27, 0x90, 0x2c, 0x79, 0xad, 0x49, 0x9e, 0x03, 0x1a, 0x70, - 0xc7, 0x46, 0x13, 0x52, 0xe8, 0x3f, 0x66, 0xa3, 0xe9, 0xf6, 0x4e, 0x3f, 0x62, 0x3a, 0x88, 0x99, - 0xfc, 0x38, 0x81, 0xee, 0x76, 0x5f, 0xb8, 0xb2, 0x57, 0x74, 0x65, 0x39, 0xaa, 0x92, 0x3c, 0x8f, - 0xe2, 0x7a, 0x8d, 0x8e, 0x3e, 0xcf, 0x86, 0x20, 0x87, 0x5c, 0xbc, 0x3b, 0x1b, 0x8c, 0xfe, 0xa9, - 0x3b, 0xc8, 0xe1, 0xad, 0x95, 0x0a, 0x1e, 0x12, 0xd0, 0x44, 0x90, 0x97, 0x2d, 0xf3, 0x37, 0x9a, - 0xd4, 0x0a, 0xd0, 0x60, 0x2d, 0xba, 0x12, 0x92, 0x6c, 0x15, 0xf2, 0x3a, 0xfe, 0x17, 0x35, 0x73, - 0x3e, 0x70, 0xbe, 0xb4, 0x28, 0xf5, 0xdd, 0xc7, 0xc6, 0x8e, 0x18, 0xc0, 0x44, 0xa2, 0xa3, 0x3d, - 0xd9, 0x7a, 0x2a, 0x9d, 0xa0, 0x2e, 0xb1, 0x5b, 0x37, 0x62, 0x5d, 0x0b, 0xa0, 0xc2, 0x24, 0xd5, - 0xf0, 0x6f, 0xa3, 0xf7, 0xb4, 0xd1, 0xbd, 0x7b, 0xe4, 0xf0, 0x67, 0x25, 0xaa, 0x6d, 0xc6, 0xb2, - 0xf5, 0xba, 0xd2, 0x80, 0xd6, 0x49, 0x99, 0x36, 0x50, 0xae, 0x20, 0x21, 0x16, 0xb9, 0x63, 0x4d, - 0xf6, 0x6c, 0x63, 0xb4, 0x75, 0x69, 0x11, 0xd0, 0x73, 0x60, 0xab, 0xce, 0xdd, 0x52, 0xa3, 0x73, - 0x87, 0x11, 0xeb, 0x82, 0xd3, 0x2b, 0xfe, 0x7b, 0x12, 0x6c, 0xd1, 0x3d, 0xc9, 0xdd, 0x71, 0x01, - 0x57, 0xd8, 0x6c, 0x77, 0x32, 0x5c, 0xc0, 0xb1, 0xd8, 0xef, 0xdc, 0xce, 0xab, 0xf7, 0x9a, 0xae, - 0xd4, 0xa0, 0x15, 0x52, 0xc6, 0xc3, 0xa0, 0x38, 0x14, 0x06, 0xb2, 0x64, 0x46, 0xde, 0x71, 0x39, - 0x8a, 0xff, 0x3a, 0x1b, 0xd2, 0x84, 0xbb, 0xae, 0xde, 0x22, 0x9b, 0x25, 0xd1, 0xe8, 0xf2, 0xf0, - 0x77, 0xdc, 0x02, 0x7c, 0xe5, 0x7b, 0x5f, 0x55, 0xfe, 0x2a, 0x56, 0x38, 0xec, 0x83, 0x6e, 0x48, - 0xe0, 0xbe, 0x82, 0xcf, 0x10, 0x0a, 0x82, 0x7b, 0x7c, 0x28, 0x5c, 0x86, 0x50, 0x8f, 0xa1, 0x48, - 0xc2, 0x57, 0xf2, 0xea, 0xb3, 0xa6, 0x65, 0x7b, 0x05, 0x5d, 0xe9, 0x16, 0x50, 0xa7, 0x20, 0x79, - 0xee, 0xa1, 0xdc, 0x02, 0x47, 0xc1, 0xae, 0xdb, 0x2d, 0x32, 0xb0, 0xfb, 0xcb, 0x2c, 0x48, 0xac, - 0xfd, 0xd3, 0xbe, 0xa8, 0x65, 0x95, 0xba, 0xa2, 0xa0, 0x17, 0x25, 0xef, 0xad, 0xa0, 0x2f, 0x15, - 0xc7, 0x1c, 0x78, 0x1b, 0xdb, 0x25, 0xc7, 0xa3, 0x29, 0x4a, 0x43, 0x03, 0xe6, 0xa0, 0xac, 0xd0, - 0x21, 0xae, 0x67, 0x49, 0xd1, 0x95, 0xb9, 0x3c, 0xac, 0x4f, 0x85, 0x48, 0xe3, 0x0c, 0xbe, 0xe9, - 0xb3, 0x23, 0x8c, 0xe9, 0xd9, 0xa9, 0x46, 0xb9, 0x26, 0xd0, 0x84, 0x0b, 0xb3, 0x70, 0xa8, 0xec, - 0xc7, 0x75, 0xe5, 0x11, 0x09, 0x4a, 0xe4, 0x07, 0x1c, 0x03, 0x03, 0xb4, 0x56, 0xd7, 0xb2, 0x08, - 0x88, 0xba, 0x90, 0x93, 0x2f, 0x14, 0x0a, 0x2a, 0xb4, 0x17, 0xfd, 0x68, 0xaa, 0x3f, 0xe0, 0x8f, - 0xac, 0x08, 0xae, 0xf7, 0x07, 0x6a, 0x7d, 0xe1, 0xf0, 0x07, 0xc1, 0x50, 0x03, 0xb9, 0x41, 0xd8, - 0xa7, 0xcb, 0x5d, 0x2b, 0x3f, 0x34, 0xb2, 0xa3, 0x33, 0xf5, 0x79, 0xab, 0xc9, 0x46, 0xf6, 0x6c, - 0x23, 0x92, 0x76, 0x92, 0xf3, 0xc1, 0xe8, 0xea, 0x27, 0x09, 0x39, 0xdc, 0xfd, 0xc4, 0x90, 0x57, - 0x7e, 0xa9, 0x5a, 0x5d, 0x59, 0x69, 0xa7, 0x28, 0x5f, 0x80, 0x2f, 0x20, 0xcc, 0x3c, 0x86, 0x69, - 0x48, 0x25, 0x01, 0x21, 0x5e, 0xd8, 0x89, 0x5c, 0x1d, 0xea, 0x20, 0xe5, 0xf8, 0xb6, 0xc0, 0x55, - 0xac, 0xae, 0xb4, 0xcb, 0x47, 0x2e, 0x0b, 0x2e, 0xeb, 0x87, 0x5c, 0x0c, 0x6e, 0x5f, 0x08, 0xba, - 0x72, 0x42, 0x70, 0xd9, 0x3f, 0xe8, 0x82, 0xc9, 0x82, 0x9a, 0xa3, 0x9d, 0x70, 0x44, 0x36, 0x27, - 0x86, 0xc1, 0x07, 0xfb, 0xb1, 0x9a, 0xcc, 0xa4, 0xbd, 0xbd, 0x1a, 0x02, 0xb7, 0x18, 0x1f, 0xea, - 0x81, 0x27, 0x93, 0x1c, 0x19, 0xe0, 0x6e, 0x2c, 0xc1, 0xa5, 0xa2, 0x72, 0x00, 0x2f, 0xc7, 0x1c, - 0xc6, 0xc5, 0xf3, 0x20, 0x65, 0x8f, 0x0f, 0xc4, 0x48, 0x26, 0x15, 0x93, 0x50, 0x77, 0x2c, 0xd2, - 0xc6, 0xa0, 0xe7, 0x8d, 0x8d, 0x41, 0x9f, 0xce, 0x31, 0xe8, 0xab, 0xd1, 0x64, 0x5e, 0xeb, 0xc4, - 0x72, 0x19, 0x63, 0xe7, 0x2f, 0x47, 0x95, 0x3c, 0x8b, 0x21, 0x62, 0xc2, 0x50, 0x10, 0xc3, 0x7d, - 0xd5, 0xd1, 0x50, 0xec, 0x16, 0xd0, 0x64, 0x7f, 0xb8, 0x8a, 0x58, 0xfa, 0x98, 0xa7, 0x84, 0x55, - 0x65, 0xf9, 0xe0, 0x2c, 0xf7, 0x10, 0xc9, 0x61, 0x77, 0xb0, 0x9f, 0x59, 0xf8, 0xc0, 0x78, 0x0b, - 0x98, 0x09, 0x4f, 0x89, 0xfc, 0x42, 0x7c, 0x60, 0x67, 0xe2, 0xd3, 0xf3, 0x8e, 0x16, 0x23, 0xbd, - 0x51, 0xd8, 0x11, 0x93, 0x64, 0x2a, 0x2d, 0x8a, 0x0f, 0xec, 0x05, 0x05, 0x04, 0x2c, 0x8c, 0x3b, - 0x6c, 0xd5, 0x31, 0xbf, 0xd8, 0x2e, 0xa0, 0xdc, 0x46, 0x13, 0x04, 0xb1, 0x7d, 0xdd, 0x04, 0xf9, - 0x01, 0x2f, 0x8c, 0x81, 0x61, 0x14, 0x5b, 0xdf, 0xac, 0xd6, 0x95, 0xd7, 0x24, 0xe8, 0x20, 0xbf, - 0x0c, 0x4b, 0x21, 0x2b, 0xc0, 0xf0, 0x0e, 0xea, 0x9f, 0xc4, 0x01, 0x72, 0x44, 0x7c, 0xde, 0x2d, - 0xf3, 0xc8, 0xa9, 0x3b, 0x95, 0xd1, 0xd5, 0x6f, 0xb4, 0x0e, 0x19, 0x67, 0x2e, 0x1a, 0xc7, 0xb7, - 0x25, 0xbb, 0xb7, 0xab, 0x30, 0x60, 0xd9, 0x25, 0x41, 0x57, 0x06, 0x05, 0x34, 0x20, 0x48, 0x4e, - 0x74, 0x21, 0x77, 0x0b, 0xc9, 0xc1, 0x43, 0x89, 0x8e, 0x1d, 0xc6, 0x99, 0x1e, 0xeb, 0xda, 0xe2, - 0xb4, 0x29, 0x70, 0x13, 0xae, 0x0e, 0x75, 0x5c, 0x1d, 0xda, 0x9c, 0x38, 0x77, 0x3a, 0xb1, 0xad, - 0xcb, 0xfc, 0x83, 0x5e, 0x70, 0x10, 0xf7, 0x10, 0x37, 0xd9, 0x83, 0xfd, 0xa9, 0xd6, 0xef, 0x52, - 0x67, 0xfa, 0xe3, 0xb1, 0x3d, 0xf5, 0x1b, 0x9b, 0x98, 0x18, 0x8e, 0x5f, 0x3a, 0xac, 0x32, 0xb5, - 0x75, 0x98, 0x78, 0xf3, 0x7d, 0xf5, 0x69, 0x7c, 0xf0, 0x42, 0xea, 0xcc, 0xb1, 0xd4, 0xb7, 0x17, - 0xc1, 0x5c, 0x8b, 0x8d, 0x69, 0x37, 0x6d, 0x01, 0x4c, 0x51, 0xbc, 0x33, 0x07, 0x15, 0x58, 0x4b, - 0xbf, 0x3b, 0x5e, 0x8c, 0x95, 0x36, 0xde, 0xca, 0x9b, 0xed, 0xb6, 0xb1, 0x55, 0x00, 0xe3, 0x17, - 0x06, 0x8d, 0x9d, 0x47, 0x79, 0x76, 0xf9, 0xf6, 0xd3, 0x76, 0x1d, 0x82, 0xae, 0xb4, 0x09, 0xa8, - 0x55, 0x90, 0x5c, 0x87, 0x20, 0xd7, 0x1b, 0x9f, 0x7d, 0x6a, 0xec, 0x3c, 0xca, 0x23, 0x7c, 0xd8, - 0x0d, 0x7c, 0xe2, 0xc4, 0x52, 0xcc, 0xe8, 0xea, 0x1c, 0x39, 0xd9, 0x06, 0xe2, 0x2f, 0x93, 0x49, - 0xdf, 0x79, 0xda, 0xe8, 0xd8, 0x0f, 0x79, 0x27, 0xcc, 0x97, 0x91, 0xfb, 0x58, 0x9c, 0x1a, 0xe8, - 0x52, 0x3c, 0xb6, 0x3b, 0x71, 0xe4, 0xc4, 0xc8, 0xc1, 0x56, 0x48, 0xb8, 0xc2, 0x5e, 0x3e, 0xe0, - 0xcc, 0xfe, 0x3a, 0x17, 0xcd, 0x2d, 0xf7, 0x45, 0xea, 0xdf, 0xb3, 0xc5, 0x86, 0xb4, 0xbd, 0x82, - 0x6f, 0xb9, 0x5f, 0xc1, 0x17, 0x9c, 0xb1, 0xd1, 0x70, 0x02, 0xa9, 0x8b, 0x37, 0xf2, 0x04, 0xae, - 0x42, 0xe3, 0x70, 0xda, 0xaf, 0xda, 0x30, 0x01, 0x24, 0x9c, 0x30, 0x86, 0x96, 0xc9, 0x8f, 0xc2, - 0xd3, 0x00, 0xe3, 0x27, 0x7b, 0xb6, 0x55, 0xd7, 0x02, 0x85, 0x5b, 0x0a, 0x0e, 0x28, 0x8f, 0x96, - 0x3e, 0x3a, 0xd2, 0xb3, 0xd7, 0x18, 0x8a, 0xaa, 0xb4, 0x87, 0x18, 0x40, 0x93, 0x37, 0xfa, 0x43, - 0x91, 0x16, 0xc0, 0x1d, 0xd5, 0x95, 0x61, 0xf2, 0x0a, 0x2e, 0xd3, 0x95, 0x0a, 0xc9, 0x51, 0x25, - 0x3f, 0xe6, 0x18, 0xde, 0x96, 0x1f, 0xc4, 0x7b, 0x22, 0xc7, 0x10, 0x36, 0x24, 0x9e, 0x73, 0xfd, - 0x48, 0xbc, 0x5f, 0x40, 0xa8, 0x01, 0xef, 0x3d, 0x8e, 0xe8, 0x98, 0xcb, 0x5b, 0x65, 0x72, 0x15, - 0xf2, 0x6f, 0x89, 0x4c, 0x88, 0x86, 0x74, 0x0c, 0x69, 0x11, 0x9f, 0x3f, 0xb0, 0x00, 0xa4, 0xcb, - 0x3c, 0xc4, 0x80, 0x68, 0x39, 0x71, 0xb0, 0x1f, 0x64, 0xc9, 0xf1, 0x81, 0xc1, 0x44, 0x6f, 0xac, - 0xe4, 0xea, 0x50, 0x87, 0x09, 0xd5, 0xfe, 0x80, 0x2f, 0xa2, 0x2d, 0x30, 0xba, 0xbe, 0x84, 0xc4, - 0xa1, 0x89, 0x8e, 0xf6, 0x91, 0x1d, 0x5d, 0x04, 0x75, 0x50, 0xa4, 0x51, 0xc2, 0x3f, 0x92, 0x6a, - 0xd5, 0x6a, 0xa5, 0xba, 0x46, 0xe5, 0x56, 0x52, 0xf6, 0xa9, 0xa0, 0x2b, 0x3d, 0x02, 0x3a, 0x20, - 0x48, 0xa3, 0x40, 0x8e, 0xec, 0x4b, 0xb4, 0x5f, 0x34, 0xc9, 0x55, 0x9c, 0x20, 0x85, 0xdc, 0x0a, - 0x8c, 0x1e, 0xc9, 0x93, 0x01, 0x1a, 0x0c, 0x9a, 0x24, 0x73, 0x97, 0xb1, 0xf3, 0xb4, 0x23, 0x9d, - 0xca, 0x95, 0xe8, 0x66, 0x9a, 0xb3, 0xeb, 0x4a, 0x74, 0xb3, 0xe3, 0x3d, 0x49, 0xf6, 0xb5, 0x97, - 0x78, 0x22, 0xb8, 0x0b, 0x39, 0xe8, 0xc1, 0xb4, 0x2b, 0xbb, 0x3b, 0xf0, 0xdd, 0x2f, 0x6c, 0x14, - 0xb2, 0x0b, 0x2b, 0xe1, 0xaf, 0xc3, 0x1f, 0x54, 0x87, 0x33, 0xae, 0xd9, 0x71, 0x1f, 0x1e, 0x90, - 0xea, 0x44, 0xcc, 0xcd, 0x24, 0x83, 0xdf, 0x76, 0xdc, 0x67, 0x41, 0xce, 0x68, 0xe7, 0x23, 0xbf, - 0xcb, 0x83, 0x4e, 0x3a, 0x54, 0x48, 0xb6, 0xee, 0x93, 0x01, 0x23, 0xb6, 0x97, 0x6f, 0xc9, 0xf0, - 0xe0, 0xd5, 0xa1, 0x0e, 0xa2, 0xa9, 0xe2, 0x76, 0x83, 0x50, 0x30, 0x6d, 0xdd, 0xc6, 0xce, 0x23, - 0x0e, 0x6c, 0xf8, 0x2f, 0x04, 0x54, 0xe0, 0xdc, 0x5b, 0xb1, 0xd0, 0xc2, 0x50, 0x38, 0xa3, 0x8d, - 0x85, 0x6a, 0x0a, 0xd1, 0xb8, 0x70, 0x4b, 0x7d, 0xbd, 0x16, 0x0e, 0x53, 0x9f, 0x54, 0xf2, 0xd3, - 0xac, 0xa1, 0xe0, 0x02, 0x26, 0x9c, 0x0c, 0x18, 0x66, 0xb2, 0x34, 0x46, 0x39, 0x60, 0xf7, 0x49, - 0x52, 0x0e, 0x15, 0xd9, 0x89, 0x6a, 0x8c, 0x07, 0xec, 0x24, 0xf0, 0x7c, 0xa7, 0x05, 0x37, 0x26, - 0x19, 0x1d, 0x06, 0xd3, 0xc5, 0xc7, 0xc6, 0x53, 0xef, 0xdc, 0x5b, 0x88, 0xc4, 0x6b, 0x2d, 0x3e, - 0x86, 0x05, 0xa4, 0x25, 0x7c, 0xcc, 0x58, 0x11, 0x38, 0xb6, 0x16, 0x2c, 0x60, 0xec, 0xcc, 0x17, - 0x76, 0xb4, 0x08, 0x28, 0xbc, 0x4d, 0xd0, 0x95, 0x6d, 0x76, 0xb4, 0xb8, 0xd1, 0x81, 0x16, 0x01, - 0x5f, 0xd9, 0xd0, 0x62, 0x5a, 0x84, 0xb8, 0xba, 0x4a, 0x5d, 0x59, 0x5d, 0xa3, 0xac, 0xae, 0xfa, - 0x7e, 0x08, 0x51, 0xfc, 0xbd, 0xa5, 0xba, 0x05, 0xe5, 0x60, 0x83, 0xae, 0xf8, 0x2c, 0xc5, 0xed, - 0xda, 0xf8, 0x40, 0x67, 0xf2, 0xcc, 0x31, 0xf2, 0xa8, 0x1c, 0xdf, 0x16, 0x8f, 0xed, 0x8e, 0x0f, - 0x0e, 0xc6, 0x87, 0xf7, 0xc1, 0x83, 0x3c, 0xb2, 0x75, 0xd8, 0xa1, 0xd8, 0x25, 0xca, 0x00, 0x9c, - 0x2b, 0xcf, 0x68, 0xeb, 0x61, 0x36, 0x50, 0x57, 0x87, 0x3a, 0x6a, 0x82, 0x11, 0x55, 0xf3, 0x35, - 0x6c, 0x4a, 0xf6, 0xb5, 0x5b, 0x3a, 0xd7, 0x1b, 0xd0, 0xf3, 0xf1, 0x2f, 0xd0, 0x1f, 0x84, 0x34, - 0x8a, 0x3e, 0x62, 0x9a, 0xe4, 0x54, 0xf5, 0x85, 0x99, 0x61, 0x11, 0xe5, 0xa0, 0x18, 0xaf, 0x43, - 0x84, 0xa1, 0xbc, 0xb6, 0x96, 0x00, 0xc9, 0x42, 0x82, 0x54, 0x12, 0xed, 0x51, 0xc8, 0x37, 0xc5, - 0xb8, 0x78, 0xa0, 0x66, 0xe3, 0x43, 0x3d, 0xa9, 0x53, 0x27, 0x8d, 0xae, 0x3d, 0xb0, 0x35, 0x8c, - 0xb0, 0x01, 0x7d, 0xe1, 0x22, 0xa7, 0xc2, 0xf0, 0x07, 0xe2, 0x7d, 0xde, 0xb6, 0x5f, 0xc2, 0x7c, - 0x8b, 0x7d, 0xb6, 0x71, 0xb6, 0x25, 0x04, 0xad, 0xba, 0xf8, 0x1b, 0x98, 0x87, 0x69, 0xa1, 0x9d, - 0x4c, 0xac, 0x07, 0x6b, 0x35, 0xfe, 0xfa, 0x59, 0xab, 0x5d, 0x37, 0x91, 0xb5, 0x2a, 0x0b, 0xeb, - 0x4a, 0x33, 0x0a, 0x48, 0x1e, 0x28, 0x43, 0xae, 0x24, 0x72, 0x64, 0x7c, 0x73, 0x01, 0x82, 0xf0, - 0xc1, 0xee, 0x86, 0x37, 0x9c, 0xe9, 0xe6, 0x09, 0x56, 0xc5, 0x85, 0x54, 0x3e, 0xc1, 0xb6, 0xda, - 0xf3, 0x81, 0xde, 0x9e, 0x43, 0xbd, 0xee, 0x7f, 0x02, 0x4c, 0x08, 0x6c, 0xcf, 0x9d, 0xc5, 0x84, - 0xb4, 0x0a, 0xba, 0xb2, 0x59, 0x40, 0x7f, 0x2a, 0x79, 0x1d, 0x83, 0xfc, 0xc6, 0x58, 0x5e, 0xdd, - 0x9b, 0xf2, 0xde, 0xee, 0xcc, 0x46, 0xb3, 0x56, 0x06, 0x89, 0xe1, 0xc5, 0xea, 0xa0, 0x4d, 0x30, - 0xbd, 0xd6, 0xfd, 0x62, 0x2d, 0x4d, 0x1f, 0x99, 0xdd, 0x7c, 0xab, 0x72, 0xc7, 0xf4, 0x56, 0xd5, - 0xd9, 0x65, 0x6e, 0xcf, 0xeb, 0xca, 0x22, 0xfa, 0x56, 0x3d, 0x6c, 0xfe, 0x57, 0x44, 0x5f, 0xa8, - 0xab, 0x43, 0x1d, 0x89, 0xde, 0xa8, 0x71, 0xfc, 0x14, 0x30, 0xdb, 0xa9, 0xf3, 0xad, 0xa9, 0x4b, - 0x3b, 0x1e, 0x5b, 0xb2, 0xe4, 0x5a, 0xf9, 0x78, 0x5d, 0xc8, 0xcb, 0x17, 0x0a, 0x1a, 0x2c, 0xe9, - 0xdb, 0x3a, 0x3b, 0xe2, 0x80, 0xe7, 0xea, 0x25, 0x5d, 0x79, 0xc8, 0x8e, 0x38, 0xa6, 0x33, 0x44, - 0x64, 0xcb, 0xba, 0x3e, 0x36, 0x85, 0x2a, 0x89, 0xe2, 0x9f, 0x6e, 0xc3, 0xb8, 0x18, 0xca, 0xf1, - 0x81, 0x3e, 0x72, 0x30, 0xa7, 0x06, 0x99, 0x5c, 0x2b, 0x71, 0xf6, 0x28, 0x17, 0x6c, 0xda, 0xe3, - 0x56, 0xfe, 0xb7, 0x6c, 0x54, 0xe8, 0x1e, 0xfb, 0xee, 0xb8, 0x9a, 0x6f, 0x8d, 0xe1, 0x6a, 0x82, - 0x81, 0x31, 0xbe, 0x9a, 0x8f, 0x1a, 0xdf, 0x6c, 0x4f, 0xb7, 0x43, 0x76, 0xbf, 0x88, 0xdb, 0x7d, - 0x53, 0x49, 0xc2, 0xee, 0xb4, 0x07, 0x93, 0xf1, 0x53, 0xf8, 0xad, 0x72, 0x4b, 0xbc, 0xff, 0x47, - 0x16, 0x9a, 0xa3, 0x6a, 0x4d, 0x74, 0xe0, 0x65, 0xa1, 0x60, 0xd3, 0x2d, 0xb9, 0x80, 0x55, 0xf6, - 0x0b, 0xb8, 0xd8, 0xc4, 0x98, 0xe4, 0x02, 0xce, 0x22, 0xc4, 0x22, 0xa6, 0xde, 0x38, 0x62, 0xf1, - 0x76, 0x5d, 0x39, 0x12, 0xca, 0x32, 0xd3, 0x36, 0xc9, 0x73, 0xd9, 0x8b, 0x68, 0x6d, 0x3d, 0x5e, - 0x7f, 0x86, 0x07, 0xf0, 0xbf, 0x67, 0xa3, 0xfb, 0xbd, 0xc7, 0xbc, 0x3b, 0xae, 0xdb, 0xda, 0x31, - 0x5c, 0x37, 0x3e, 0x33, 0x41, 0x7c, 0x70, 0xb7, 0x63, 0x73, 0xee, 0xb8, 0x8b, 0x46, 0x73, 0xdb, - 0x65, 0x3a, 0x16, 0x9a, 0xd4, 0x3a, 0x39, 0xb8, 0x8d, 0x3f, 0x62, 0xf6, 0x44, 0xf2, 0x6f, 0x1f, - 0x34, 0xe0, 0xdf, 0xbe, 0xe2, 0x7f, 0xc8, 0x46, 0x85, 0x15, 0x8d, 0x9a, 0x2f, 0x40, 0xcc, 0xf4, - 0x6e, 0xc9, 0x6d, 0x7b, 0xd5, 0x7e, 0xdb, 0x9e, 0xe4, 0x55, 0x4c, 0x70, 0xdb, 0xc0, 0x2e, 0xd1, - 0xf8, 0xe4, 0xd3, 0xc4, 0xde, 0xf3, 0xb7, 0xff, 0xce, 0x7d, 0x4f, 0x79, 0x5a, 0xd9, 0x07, 0xba, - 0x12, 0x41, 0x21, 0x29, 0xed, 0x46, 0xcb, 0x25, 0x3c, 0x30, 0xc6, 0x07, 0xfa, 0xf8, 0xcf, 0xa7, - 0x44, 0xac, 0xd7, 0xd5, 0xb5, 0x1b, 0x0a, 0xc2, 0x86, 0xf0, 0x06, 0x83, 0x7b, 0x72, 0xd0, 0x7d, - 0x1e, 0x93, 0xde, 0x1d, 0x17, 0xfa, 0x95, 0x31, 0x5c, 0x68, 0x5b, 0xa4, 0x22, 0x18, 0xa4, 0x67, - 0x1b, 0xec, 0xde, 0x9d, 0x72, 0x89, 0x3b, 0x05, 0x5d, 0x69, 0x17, 0xd0, 0x76, 0x41, 0x4a, 0x7f, - 0x14, 0xb2, 0x9f, 0x37, 0x99, 0xb6, 0xee, 0xee, 0xde, 0xb3, 0xf1, 0xd8, 0xee, 0x54, 0xff, 0x09, - 0xa0, 0x90, 0xe2, 0x03, 0x31, 0x63, 0x68, 0x4b, 0xa2, 0xef, 0x04, 0x0b, 0x99, 0x63, 0x56, 0x01, - 0xe5, 0x3b, 0xd8, 0x9a, 0xda, 0x3a, 0x0c, 0x77, 0x9d, 0xff, 0x7c, 0x72, 0xd7, 0xfb, 0x3e, 0x37, - 0x06, 0x06, 0xc0, 0x3d, 0xad, 0xf8, 0xbf, 0x66, 0xa3, 0xd9, 0xae, 0x85, 0xac, 0x95, 0x7f, 0xe8, - 0x3b, 0xff, 0xba, 0x5d, 0x1c, 0x53, 0x6e, 0x32, 0xb0, 0xe4, 0xce, 0x2f, 0xce, 0x78, 0xe7, 0xb1, - 0xa8, 0xe4, 0x52, 0x72, 0xef, 0xe9, 0x47, 0x4b, 0x1f, 0x35, 0xda, 0xb6, 0x1b, 0xed, 0x7f, 0x70, - 0x88, 0x65, 0xee, 0x02, 0x04, 0xb0, 0x49, 0x57, 0x36, 0xa2, 0x88, 0x94, 0x61, 0xdf, 0x7f, 0x30, - 0x14, 0xb0, 0x2f, 0x07, 0xcd, 0xf1, 0x9c, 0xf6, 0x1e, 0x12, 0xb8, 0x85, 0x48, 0xc0, 0xb2, 0x25, - 0xcf, 0x74, 0x18, 0xb7, 0x12, 0x0d, 0xfc, 0x55, 0x16, 0xa4, 0xa4, 0xf2, 0xc6, 0x02, 0xb7, 0xc9, - 0x40, 0x57, 0xfc, 0x08, 0xe5, 0x05, 0x5b, 0x22, 0xcd, 0x2d, 0x11, 0x02, 0x5c, 0xeb, 0x74, 0xe5, - 0x1d, 0x89, 0x14, 0xc9, 0x6b, 0xc0, 0x9c, 0xd1, 0xb2, 0x58, 0xea, 0xea, 0x1f, 0x89, 0xb6, 0x1b, - 0xd1, 0xa1, 0xa2, 0x0f, 0xfc, 0x0d, 0xda, 0x02, 0xa3, 0xf5, 0xf4, 0xc8, 0xd6, 0xd3, 0x50, 0x5b, - 0x52, 0x5a, 0xb4, 0xce, 0x17, 0xf6, 0xd7, 0x2f, 0x30, 0x8e, 0xc4, 0x12, 0xbd, 0x5f, 0x93, 0x42, - 0x26, 0x33, 0xe5, 0x4b, 0x55, 0x32, 0x7c, 0xd9, 0xb3, 0xba, 0xb2, 0x14, 0x3d, 0x25, 0xcd, 0x72, - 0xee, 0x4a, 0x3a, 0x03, 0x61, 0x5e, 0x23, 0x57, 0xfc, 0xbf, 0x64, 0xa3, 0xd9, 0x5e, 0xdb, 0x79, - 0x77, 0xdc, 0xb2, 0x55, 0x36, 0xd5, 0xce, 0x03, 0x69, 0x8d, 0x9f, 0x70, 0x52, 0x68, 0xec, 0xb0, - 0x08, 0xd7, 0x6d, 0x2a, 0x46, 0x37, 0x1e, 0x69, 0xdd, 0x6f, 0xe3, 0x55, 0x23, 0xfc, 0x51, 0x86, - 0xd3, 0x90, 0x1f, 0x26, 0xea, 0xa8, 0xcf, 0xbe, 0xb2, 0x68, 0x67, 0xea, 0x96, 0x61, 0x7e, 0x91, - 0xc3, 0x60, 0x11, 0xe4, 0x42, 0x7f, 0x35, 0x01, 0x4d, 0xb2, 0x6d, 0x84, 0xb8, 0x14, 0x7c, 0x7c, - 0xd9, 0xfd, 0xc0, 0x67, 0x44, 0x8a, 0xe4, 0x69, 0x44, 0xdc, 0x14, 0xdb, 0xe3, 0x27, 0xbe, 0x2f, - 0xd5, 0x95, 0x2a, 0xa9, 0x14, 0x9f, 0x41, 0xe3, 0xfc, 0x81, 0x80, 0x16, 0xaa, 0xae, 0xb5, 0xf2, - 0xfb, 0xdd, 0x2f, 0xd1, 0x32, 0x79, 0x2a, 0x01, 0xad, 0xed, 0xad, 0xc9, 0xe1, 0x3d, 0xf1, 0x81, - 0xc1, 0xea, 0x5a, 0x95, 0xd6, 0x89, 0x6f, 0xa2, 0x89, 0x74, 0x40, 0x2b, 0x1a, 0x47, 0xf9, 0xd3, - 0xba, 0xf2, 0x84, 0x64, 0xab, 0x90, 0xe7, 0x27, 0x7a, 0x63, 0xc6, 0xa7, 0xbb, 0xc8, 0xe1, 0xd0, - 0xd0, 0x88, 0x70, 0x6d, 0x52, 0x5b, 0x87, 0x89, 0x29, 0x95, 0xad, 0x8f, 0xf8, 0x33, 0x94, 0x5d, - 0x51, 0xbb, 0x06, 0x23, 0xdb, 0x49, 0x00, 0x37, 0xe6, 0x6f, 0x6a, 0x76, 0x59, 0x51, 0xbb, 0x86, - 0xc0, 0x9a, 0x59, 0x2a, 0x2e, 0x42, 0xd9, 0x4d, 0x5a, 0x13, 0x49, 0xcb, 0x87, 0x81, 0xc2, 0xfc, - 0x4d, 0xfd, 0x2e, 0x8d, 0xed, 0xad, 0x46, 0xdf, 0x41, 0xda, 0xbe, 0x49, 0x6b, 0x12, 0x97, 0xa2, - 0xec, 0xe5, 0xb5, 0x6b, 0xac, 0x54, 0x7c, 0x0f, 0x49, 0xe6, 0x6f, 0xf9, 0x7e, 0x68, 0xbf, 0x9c, - 0x0e, 0xce, 0xaf, 0x70, 0x89, 0x6a, 0x36, 0x11, 0xbb, 0x04, 0x94, 0x17, 0xc6, 0x8a, 0x2f, 0x22, - 0x51, 0x37, 0x09, 0x6a, 0x89, 0x14, 0xc9, 0xef, 0x93, 0x43, 0xc4, 0x9a, 0x0b, 0x3a, 0x46, 0x5b, - 0xe2, 0xe8, 0xc5, 0x44, 0xe7, 0x19, 0x5b, 0x54, 0x00, 0x1a, 0x41, 0xfd, 0xea, 0x50, 0xfb, 0xd5, - 0xa1, 0x0e, 0x62, 0x03, 0x55, 0x5a, 0x54, 0x59, 0xb5, 0xa2, 0x6a, 0x75, 0x15, 0xfe, 0xb3, 0x42, - 0xad, 0x52, 0x56, 0xe3, 0xbf, 0x96, 0x29, 0xd5, 0x2b, 0xaa, 0x2a, 0x4b, 0x8b, 0xaa, 0x6b, 0xaa, - 0x57, 0x57, 0x2b, 0x2b, 0xaa, 0xdf, 0x50, 0x56, 0x57, 0xaf, 0xaa, 0x51, 0xc9, 0x9c, 0xa2, 0x82, - 0xf2, 0x3e, 0x0a, 0x06, 0x34, 0x26, 0x8f, 0x2f, 0x31, 0x59, 0x98, 0x1c, 0xb3, 0x88, 0xda, 0x70, - 0x1a, 0x5d, 0xfd, 0xc9, 0xbd, 0xa7, 0x8d, 0x8e, 0x98, 0x73, 0xc7, 0x49, 0x47, 0xf1, 0xb7, 0x76, - 0x14, 0x0b, 0x51, 0xba, 0xde, 0xd0, 0x95, 0x9f, 0xdb, 0x51, 0xec, 0xcb, 0x84, 0x28, 0xa0, 0xc9, - 0xd0, 0x79, 0x8c, 0x8b, 0x6d, 0xe2, 0xd8, 0xc8, 0x0b, 0xe2, 0x83, 0xad, 0x54, 0x33, 0x6d, 0x0c, - 0xeb, 0xc6, 0xd9, 0x4f, 0xe3, 0xb1, 0xdd, 0x6c, 0xa8, 0x12, 0x3b, 0xa2, 0x5d, 0xc6, 0x93, 0x79, - 0xc8, 0x4a, 0x57, 0xc7, 0x91, 0x79, 0x85, 0x8e, 0x99, 0x59, 0x02, 0x38, 0x9e, 0xac, 0x7b, 0x0c, - 0x65, 0xaf, 0xad, 0xad, 0x20, 0x61, 0xbb, 0x30, 0x14, 0x9b, 0xbf, 0x69, 0x44, 0x02, 0xd6, 0x77, - 0x6d, 0x6d, 0x45, 0x51, 0x75, 0xa5, 0x6a, 0xd6, 0x89, 0x6f, 0x32, 0x63, 0xda, 0x89, 0x34, 0x26, - 0xef, 0x4b, 0xcc, 0x98, 0xf6, 0x29, 0xbe, 0x23, 0x98, 0xd1, 0x5a, 0xda, 0xa7, 0x8b, 0x97, 0x8c, - 0x0b, 0xe6, 0x83, 0x98, 0xb8, 0x70, 0xd6, 0xe8, 0x3d, 0x67, 0x6e, 0xec, 0xce, 0xa3, 0xc6, 0x85, - 0x4f, 0x93, 0x7d, 0xed, 0xcc, 0xc8, 0xb6, 0x06, 0xe5, 0x35, 0xfb, 0xc2, 0xe1, 0x0f, 0x1a, 0x88, - 0x3b, 0x3c, 0x84, 0x51, 0x83, 0x22, 0xb9, 0xc4, 0xe1, 0xc0, 0x4f, 0x2d, 0x0b, 0x81, 0xfe, 0x04, - 0xb3, 0xa8, 0xd4, 0xa9, 0xcf, 0x8d, 0xfe, 0xed, 0x2a, 0xe9, 0x22, 0xbe, 0x8d, 0xf0, 0xa9, 0x62, - 0xc7, 0xf8, 0x49, 0xe5, 0xd5, 0xba, 0xb2, 0x4c, 0x22, 0x07, 0x48, 0x19, 0x6f, 0x76, 0xd0, 0x90, - 0xfb, 0x93, 0x3b, 0x90, 0x67, 0x8b, 0x58, 0x38, 0x50, 0x10, 0x54, 0x03, 0x1d, 0x1b, 0x8f, 0xed, - 0xae, 0x50, 0x54, 0x3c, 0xac, 0xa8, 0xa0, 0xfc, 0x06, 0x6d, 0xa3, 0xdf, 0x44, 0x0e, 0xc4, 0xa3, - 0xfd, 0x61, 0x5d, 0x29, 0x96, 0x58, 0xa1, 0x3c, 0xb3, 0x42, 0x29, 0xa2, 0x57, 0x34, 0x75, 0xe6, - 0x3b, 0xe3, 0xf8, 0x8e, 0xea, 0x4a, 0xa3, 0xeb, 0x82, 0xca, 0x5a, 0x88, 0xbf, 0xb5, 0x10, 0x82, - 0x1a, 0x64, 0x21, 0xd2, 0x5f, 0xd7, 0x95, 0x35, 0x92, 0xad, 0x42, 0xae, 0x22, 0x64, 0xc5, 0x29, - 0x3d, 0xd5, 0x6e, 0xe2, 0x81, 0x95, 0x4a, 0xdd, 0xea, 0x2a, 0xb5, 0xb4, 0xe8, 0xe7, 0xab, 0xd4, - 0x57, 0xcd, 0xff, 0xab, 0x56, 0x57, 0x54, 0x96, 0x16, 0x41, 0xe9, 0x3b, 0xf8, 0x87, 0xb2, 0x62, - 0x05, 0xb5, 0xd2, 0x8f, 0x0f, 0xc4, 0xa0, 0x9d, 0x6a, 0x1b, 0x54, 0xfc, 0x3d, 0x9a, 0xd4, 0x12, - 0xa8, 0xab, 0x7f, 0x4f, 0x6b, 0x68, 0x69, 0xc4, 0x71, 0x52, 0xa7, 0xe2, 0x8d, 0xc2, 0xd3, 0xdb, - 0x6b, 0xe4, 0xca, 0xd4, 0x37, 0x5b, 0x8d, 0xd8, 0x49, 0xb8, 0xa7, 0xd6, 0x53, 0x1c, 0x1d, 0x5a, - 0x92, 0x3a, 0x76, 0x3a, 0x79, 0x3c, 0x66, 0x74, 0x6d, 0x89, 0x0f, 0xec, 0x86, 0x46, 0x57, 0x87, - 0x3a, 0x1e, 0x83, 0x52, 0x1c, 0x15, 0xd5, 0xaa, 0x50, 0xed, 0x83, 0x8a, 0x4f, 0xa3, 0x7c, 0x13, - 0xac, 0x99, 0x3f, 0xfc, 0x78, 0x08, 0xc5, 0xc5, 0x0a, 0xe5, 0x89, 0xe4, 0x94, 0xc0, 0x5e, 0x9c, - 0x95, 0x17, 0x5f, 0xce, 0x86, 0xfc, 0xb0, 0x77, 0x23, 0x67, 0xbc, 0xcc, 0xf6, 0x5c, 0x4f, 0xf7, - 0x7a, 0xae, 0xef, 0xf4, 0x57, 0x7a, 0xb5, 0xae, 0xbc, 0x86, 0x56, 0x49, 0x69, 0x8f, 0xe0, 0xc6, - 0xde, 0xe8, 0x7f, 0x9f, 0x8d, 0xee, 0x07, 0x8f, 0x75, 0xc8, 0xf8, 0xe0, 0x0f, 0xac, 0xf4, 0x7d, - 0x58, 0xe7, 0xff, 0x48, 0xbb, 0x5e, 0x6f, 0x69, 0x17, 0x8b, 0xe8, 0xc5, 0xe4, 0xda, 0x31, 0xea, - 0xeb, 0x68, 0x5c, 0x93, 0x3f, 0x60, 0x4e, 0x86, 0x61, 0x60, 0x52, 0xf9, 0x0b, 0xe6, 0x9b, 0x4c, - 0xcb, 0xe4, 0x92, 0xf8, 0xa5, 0x33, 0x89, 0xbd, 0x17, 0x03, 0x9c, 0xd7, 0x9d, 0x8f, 0x84, 0xc1, - 0xf1, 0x07, 0xd6, 0x83, 0xdd, 0x65, 0x7c, 0x60, 0xd7, 0xc8, 0xa1, 0x6e, 0x9a, 0xc4, 0x96, 0x76, - 0xc5, 0x23, 0xc3, 0x67, 0x60, 0x10, 0x61, 0x23, 0x43, 0xd9, 0x18, 0x47, 0xde, 0x69, 0x1b, 0x19, - 0xba, 0x8a, 0x2f, 0xb9, 0xd8, 0xda, 0xf9, 0xf8, 0xf6, 0x30, 0xb6, 0x76, 0x22, 0xb0, 0xb5, 0xf1, - 0x58, 0xcc, 0xd8, 0x73, 0xd0, 0x4a, 0x9c, 0x6f, 0x71, 0xb6, 0x6f, 0xeb, 0xca, 0x1b, 0xe8, 0x75, - 0x29, 0xe3, 0xae, 0xcb, 0x12, 0xac, 0x90, 0x6d, 0x6a, 0xa2, 0x37, 0x6a, 0x7c, 0xd3, 0x05, 0x8a, - 0x2c, 0x92, 0xef, 0xe6, 0xcc, 0xc5, 0x91, 0x43, 0xdd, 0x23, 0x9f, 0x1d, 0xb6, 0x33, 0xb4, 0xc5, - 0x3d, 0xd9, 0xe8, 0x81, 0x34, 0x43, 0xdf, 0x1d, 0x57, 0xd5, 0xe3, 0x8a, 0xe5, 0xdc, 0xa2, 0x2b, - 0xf6, 0x8e, 0xae, 0xbc, 0x85, 0xde, 0x90, 0x32, 0xef, 0x9f, 0xfc, 0xcc, 0xd8, 0xcf, 0x86, 0xa9, - 0xea, 0xe0, 0x1b, 0x8b, 0xbb, 0xec, 0x87, 0xa3, 0x84, 0x57, 0xfb, 0x9b, 0x34, 0xd5, 0x17, 0x58, - 0x7f, 0x2b, 0xae, 0xdb, 0x46, 0x84, 0x22, 0x74, 0x3a, 0x10, 0x24, 0x7b, 0x78, 0x6d, 0xb0, 0x05, - 0x81, 0xc1, 0x04, 0xd7, 0x43, 0x96, 0x8c, 0x33, 0x3d, 0x89, 0x03, 0xe7, 0xc1, 0xa8, 0x83, 0x7c, - 0x25, 0x67, 0xb1, 0x68, 0xcb, 0x5a, 0xc1, 0xf5, 0x33, 0x1f, 0x1c, 0x76, 0x65, 0xb2, 0xb9, 0x07, - 0xc7, 0xfb, 0xca, 0x70, 0x37, 0x85, 0xa4, 0x9b, 0xcd, 0xbc, 0x63, 0xf2, 0x3c, 0x47, 0x28, 0x0e, - 0x58, 0x65, 0xa2, 0xfd, 0x8b, 0xe4, 0xd0, 0x17, 0xc9, 0xbe, 0xfd, 0xc9, 0x7d, 0x27, 0x9c, 0x22, - 0x1f, 0x6e, 0x71, 0xc5, 0x07, 0xb2, 0xd1, 0xdc, 0x74, 0xe3, 0xdf, 0xbb, 0x2f, 0xa3, 0xdc, 0x97, - 0x37, 0x75, 0xe5, 0x75, 0xb4, 0x56, 0x1a, 0x65, 0x03, 0xe5, 0x27, 0xd6, 0x67, 0x38, 0x22, 0x6a, - 0x05, 0x6a, 0x1e, 0x94, 0xed, 0xae, 0xfc, 0x17, 0x01, 0x3d, 0xb4, 0x3a, 0xe4, 0x0b, 0x84, 0x59, - 0xb7, 0xd5, 0x41, 0x3e, 0xac, 0x17, 0xbd, 0x31, 0x0d, 0x5e, 0x37, 0xa6, 0xdc, 0xa4, 0xcc, 0x6d, - 0x37, 0x66, 0x26, 0xf7, 0x83, 0x33, 0xed, 0xa1, 0xb1, 0xa8, 0x47, 0xb9, 0x3c, 0xd4, 0x99, 0x6f, - 0x2c, 0x2b, 0x92, 0x67, 0xb1, 0xf1, 0x53, 0xc3, 0x5f, 0x27, 0x3a, 0x3f, 0x83, 0xcf, 0x72, 0x8a, - 0x1e, 0x8b, 0xb7, 0x67, 0xa3, 0xf9, 0x99, 0x87, 0xbb, 0x3b, 0x00, 0xb0, 0x11, 0xe5, 0x47, 0x68, - 0x38, 0xb6, 0x9c, 0x31, 0x84, 0x63, 0xc3, 0x1a, 0x7c, 0xd6, 0x45, 0x7e, 0x88, 0xfe, 0x05, 0x9b, - 0xe5, 0x30, 0xef, 0x4a, 0xf5, 0x9f, 0x4c, 0x6c, 0x6d, 0x55, 0x59, 0x73, 0x7a, 0x10, 0x63, 0xda, - 0x39, 0x79, 0xbe, 0xe3, 0x24, 0xe2, 0x03, 0x31, 0x7e, 0x70, 0x02, 0x69, 0xdb, 0xec, 0x58, 0xb9, - 0x52, 0x0b, 0xfb, 0x43, 0x5a, 0xc3, 0x2d, 0x22, 0x82, 0x2a, 0x70, 0x2a, 0x29, 0x3a, 0x21, 0x21, - 0x84, 0xe6, 0xe9, 0xca, 0x5c, 0x89, 0x2f, 0x97, 0xa7, 0x38, 0x48, 0x16, 0x95, 0xaf, 0x15, 0x5f, - 0x70, 0xa1, 0xd8, 0xe2, 0x8c, 0x54, 0x49, 0x4e, 0xc8, 0x16, 0x24, 0x84, 0x45, 0x5e, 0xcd, 0xbc, - 0x0d, 0xf2, 0x4b, 0xae, 0x97, 0xef, 0x48, 0xa2, 0xf7, 0x13, 0xeb, 0xc4, 0xf6, 0x7d, 0x53, 0x0a, - 0xef, 0x82, 0xd1, 0xde, 0x19, 0xbf, 0x74, 0x38, 0xd5, 0xbf, 0x19, 0xe2, 0x4e, 0xc4, 0x07, 0xa2, - 0xa9, 0x1d, 0xdf, 0x26, 0xa2, 0xa7, 0x9c, 0x98, 0x98, 0xff, 0x88, 0xe2, 0x6e, 0x3b, 0x2a, 0xb6, - 0xcd, 0x7f, 0x0f, 0x15, 0x8f, 0x8d, 0x3b, 0xf0, 0xd8, 0x40, 0xf3, 0xb4, 0xd8, 0x85, 0x58, 0xe8, - 0xc0, 0xc4, 0x70, 0x82, 0xec, 0xf8, 0x9c, 0xf4, 0xca, 0xfe, 0x1c, 0xaf, 0x9b, 0x01, 0x23, 0xfe, - 0xe0, 0x37, 0x63, 0x05, 0xbb, 0x19, 0xd8, 0xc6, 0x12, 0x6e, 0x06, 0xc4, 0xb1, 0xe4, 0xca, 0xe5, - 0x42, 0xf8, 0x06, 0x87, 0x90, 0x39, 0xb1, 0xef, 0x1b, 0x95, 0x6f, 0x26, 0x56, 0xba, 0xae, 0xc8, - 0x02, 0xf3, 0x92, 0x59, 0x57, 0x44, 0x04, 0xd0, 0xcd, 0x78, 0x51, 0xc4, 0x7d, 0x02, 0xca, 0x6b, - 0xf2, 0x05, 0x5a, 0x7c, 0x8d, 0xc4, 0x48, 0xf8, 0x77, 0xba, 0xf2, 0x91, 0x44, 0x8a, 0xe4, 0x66, - 0x70, 0x7f, 0xe0, 0x07, 0x2a, 0xa5, 0x27, 0xe8, 0xac, 0x30, 0xb9, 0xf4, 0xcd, 0x3d, 0x70, 0x3f, - 0x4c, 0x18, 0x8c, 0x46, 0x41, 0xfd, 0x70, 0x75, 0xa8, 0xc3, 0x38, 0xbb, 0xcf, 0x64, 0xee, 0x71, - 0xdc, 0x40, 0x93, 0xa0, 0xec, 0x3b, 0x31, 0xf2, 0x25, 0x0e, 0x3d, 0x84, 0x8d, 0x9b, 0x61, 0xc0, - 0x91, 0x1d, 0x9d, 0xa9, 0xfe, 0x7d, 0x2a, 0x99, 0xb9, 0x2c, 0xa0, 0x2b, 0x1b, 0x90, 0x5f, 0xca, - 0x7c, 0x58, 0x2e, 0x52, 0xc9, 0x7d, 0x7f, 0xd3, 0x5d, 0xd0, 0x1a, 0xcc, 0x32, 0x5a, 0x3a, 0xb2, - 0x7f, 0xf6, 0xbc, 0xab, 0x3c, 0xa8, 0xdd, 0xe9, 0x77, 0xb5, 0x76, 0x0c, 0x6a, 0x32, 0x3e, 0xf7, - 0x92, 0xa5, 0x26, 0xe3, 0xfc, 0x61, 0xef, 0x14, 0x65, 0xd9, 0x0f, 0x73, 0xfb, 0x2f, 0x0b, 0xe8, - 0xc1, 0x2a, 0x1c, 0xc3, 0x82, 0xf5, 0xa0, 0x71, 0x65, 0x6f, 0xc1, 0xfd, 0xa7, 0x1f, 0x35, 0xda, - 0x12, 0xe4, 0xb9, 0x10, 0x82, 0xc3, 0x42, 0x00, 0x94, 0x41, 0x01, 0x9b, 0x67, 0x07, 0xd5, 0xb5, - 0x27, 0x1b, 0x15, 0xa5, 0x1f, 0xf1, 0xde, 0x3b, 0x33, 0x0a, 0xa4, 0xd5, 0xe9, 0x4a, 0x2d, 0xaa, - 0x91, 0x46, 0xdd, 0x42, 0x59, 0xca, 0x7c, 0x2a, 0xfc, 0x77, 0x15, 0xff, 0x8d, 0x80, 0x8a, 0x2a, - 0xfd, 0xe1, 0xdb, 0x06, 0x69, 0x6b, 0x74, 0x45, 0x45, 0xb5, 0xd2, 0xa8, 0x6b, 0x90, 0xe7, 0x1a, - 0xad, 0xe7, 0x46, 0x0e, 0xf4, 0x8d, 0x11, 0xd4, 0x3e, 0xce, 0x46, 0xf3, 0x32, 0x0c, 0x79, 0x0f, - 0xd6, 0xc6, 0x86, 0xd5, 0x46, 0xdf, 0x43, 0x59, 0xca, 0x7c, 0x2e, 0x36, 0x60, 0xfb, 0x67, 0x84, - 0xa6, 0x82, 0xf7, 0xbe, 0x89, 0xe3, 0x29, 0x74, 0xfd, 0x0e, 0xe5, 0x47, 0x7c, 0xe1, 0x0d, 0x58, - 0x41, 0xc8, 0x42, 0x17, 0xfd, 0x52, 0x62, 0x85, 0xb2, 0x0a, 0xb8, 0x9e, 0x25, 0x50, 0x03, 0x05, - 0x0b, 0xcd, 0x64, 0x8e, 0x37, 0xe2, 0xea, 0x50, 0x07, 0x75, 0x06, 0x5e, 0x1d, 0xb4, 0xca, 0x38, - 0xe3, 0xfc, 0x65, 0xa1, 0x60, 0x13, 0xa9, 0x48, 0xf6, 0xb5, 0xab, 0x6c, 0x74, 0x71, 0x3d, 0x53, - 0xd7, 0xc1, 0x99, 0xae, 0xc2, 0x07, 0x43, 0xd4, 0x75, 0x13, 0xc9, 0xd4, 0x58, 0x0d, 0x70, 0xad, - 0xfc, 0xf1, 0xd0, 0x63, 0xea, 0x44, 0xa6, 0x65, 0xab, 0xae, 0x59, 0xae, 0x8e, 0x23, 0x9a, 0x39, - 0x75, 0x5c, 0xdd, 0x9a, 0x8a, 0x8a, 0xaa, 0xba, 0x3a, 0x35, 0x0f, 0xb4, 0x71, 0xea, 0xb8, 0xd5, - 0xd5, 0x2b, 0xab, 0x56, 0xad, 0x59, 0xcd, 0xd4, 0x70, 0xbf, 0x74, 0xb8, 0xb4, 0x41, 0x9e, 0x6d, - 0x06, 0x3d, 0x4f, 0x11, 0xeb, 0x07, 0x1c, 0xe5, 0x8f, 0x69, 0x17, 0x13, 0x3b, 0x4f, 0x8c, 0xec, - 0x3d, 0x94, 0x38, 0x70, 0x3e, 0x3e, 0x10, 0x03, 0xc0, 0x4a, 0x74, 0x75, 0x27, 0x8f, 0xc7, 0xac, - 0xe0, 0x65, 0x0c, 0xc2, 0x9e, 0x40, 0xb9, 0xe1, 0x88, 0x2f, 0x14, 0x21, 0xc2, 0xd1, 0xb9, 0xba, - 0x32, 0x47, 0x82, 0x12, 0x59, 0x24, 0xc1, 0x29, 0xbb, 0xfb, 0xcd, 0xb3, 0x39, 0x70, 0x7e, 0xe4, - 0xc0, 0xb7, 0x2a, 0x54, 0x89, 0x8b, 0x50, 0xb6, 0x16, 0x68, 0x20, 0x6e, 0x4f, 0xa0, 0x18, 0xd5, - 0x02, 0x0d, 0xb4, 0x87, 0x79, 0x70, 0x87, 0x8f, 0x90, 0x1e, 0x66, 0x85, 0xb8, 0x02, 0x4d, 0xd2, - 0x3e, 0xd4, 0xea, 0x5b, 0x4c, 0x38, 0x59, 0xed, 0x6f, 0xd2, 0x78, 0x15, 0xa9, 0xbd, 0x86, 0x8e, - 0x41, 0xe2, 0x16, 0xc2, 0x18, 0xf6, 0x26, 0xe2, 0x1a, 0x34, 0xa1, 0xbe, 0x25, 0x14, 0xd2, 0x02, - 0x91, 0xba, 0x88, 0xd6, 0x4c, 0x14, 0xa6, 0x8f, 0xeb, 0xca, 0x12, 0x89, 0x2f, 0x97, 0xe7, 0x91, - 0x91, 0xfa, 0x3e, 0x37, 0x7a, 0x4f, 0xc3, 0x78, 0x8c, 0x3a, 0x23, 0xca, 0x12, 0xbe, 0xbd, 0xf8, - 0x1a, 0x9a, 0x18, 0x8e, 0x68, 0xcd, 0x75, 0x26, 0x84, 0x05, 0xea, 0x35, 0x9c, 0xd9, 0x68, 0x7c, - 0xf9, 0x42, 0x5d, 0x29, 0x96, 0x6c, 0x15, 0x8e, 0x25, 0xe2, 0xf1, 0xae, 0x95, 0xe7, 0xea, 0x42, - 0x56, 0xbe, 0xa0, 0xda, 0x5a, 0x8a, 0x87, 0x04, 0x73, 0x7b, 0xb5, 0x66, 0x1a, 0x91, 0xbc, 0xd4, - 0x3b, 0xfb, 0x02, 0x07, 0xd8, 0x8b, 0xcc, 0xa5, 0x90, 0xd8, 0xdc, 0x6b, 0x74, 0xe5, 0x65, 0x09, - 0xfa, 0xcb, 0x2f, 0xc2, 0x9c, 0x90, 0x95, 0x18, 0xe6, 0xe4, 0x1c, 0xb9, 0x06, 0x53, 0x27, 0x37, - 0x83, 0xde, 0x0d, 0x0a, 0xc1, 0x3e, 0xc6, 0x24, 0x4d, 0x87, 0xb6, 0x18, 0x03, 0x03, 0x89, 0x03, - 0xe7, 0xaf, 0x95, 0x8f, 0xeb, 0x11, 0x72, 0xf2, 0x85, 0x82, 0xe9, 0x2a, 0x8c, 0x28, 0xfe, 0xca, - 0xad, 0x1f, 0x2d, 0xc7, 0x01, 0x86, 0x2d, 0xfd, 0x28, 0xfb, 0x50, 0xeb, 0xea, 0x5f, 0x4f, 0x78, - 0xaf, 0x37, 0xf8, 0x70, 0x40, 0xa0, 0x3f, 0x7d, 0x0e, 0xcf, 0x60, 0x85, 0x03, 0xb2, 0xcf, 0x80, - 0x03, 0x01, 0x51, 0x43, 0x1a, 0x8f, 0x6c, 0x63, 0x56, 0x47, 0x3e, 0x29, 0xd3, 0x44, 0xcf, 0xa4, - 0x4c, 0x00, 0xbb, 0xd8, 0x12, 0x28, 0x1e, 0x8b, 0x79, 0x24, 0x65, 0xaa, 0x46, 0xa8, 0xd1, 0x17, - 0x8e, 0x00, 0x09, 0x46, 0x74, 0xa9, 0x58, 0xc9, 0xcd, 0x15, 0xcb, 0x85, 0xc4, 0x83, 0x68, 0x60, - 0x67, 0xe2, 0xeb, 0x63, 0x24, 0xec, 0x33, 0xc0, 0x24, 0xd7, 0x6a, 0x76, 0x0d, 0x42, 0xd6, 0xb1, - 0x79, 0x84, 0x2d, 0x96, 0xec, 0x29, 0x78, 0x5d, 0xc4, 0xab, 0xd9, 0x99, 0x0f, 0x66, 0xdc, 0xac, - 0x2b, 0x4d, 0x68, 0x83, 0xe4, 0x46, 0x7b, 0x34, 0x6f, 0x2e, 0x05, 0x06, 0xf0, 0x2a, 0x61, 0x68, - 0xe9, 0xb2, 0x60, 0x03, 0xbf, 0xcb, 0x02, 0x1c, 0xb5, 0xdd, 0x9c, 0xce, 0xda, 0x44, 0x2b, 0x9d, - 0x4a, 0xf1, 0x3f, 0x0a, 0x48, 0xe4, 0x67, 0xbb, 0x3b, 0xde, 0xba, 0x05, 0xa3, 0xf3, 0x04, 0x24, - 0xcf, 0xea, 0x15, 0x01, 0x15, 0xa8, 0x5a, 0x24, 0xb4, 0x89, 0x7f, 0x43, 0x5e, 0x66, 0x4e, 0xc1, - 0x2c, 0xfd, 0xa6, 0x28, 0x91, 0x22, 0x39, 0x1f, 0xf6, 0xd8, 0x24, 0x4a, 0x0a, 0x43, 0x33, 0x71, - 0x82, 0x74, 0x8f, 0xf4, 0x77, 0xc4, 0x8d, 0x78, 0xb9, 0x15, 0xa3, 0x1e, 0xbe, 0x7b, 0xa1, 0xae, - 0x14, 0x59, 0x31, 0xea, 0x67, 0xc0, 0x58, 0xc0, 0x03, 0x1a, 0x5d, 0x7b, 0x52, 0xff, 0x1f, 0x7b, - 0xff, 0x02, 0x1d, 0xc5, 0xb1, 0x24, 0x08, 0xc3, 0xb7, 0x5a, 0x12, 0x48, 0x89, 0x78, 0x95, 0x0d, - 0x96, 0xc5, 0xab, 0xdd, 0xc6, 0xb6, 0x68, 0x4b, 0x08, 0x0a, 0xfc, 0x92, 0x8d, 0xed, 0x92, 0x04, - 0x5c, 0xd9, 0x3c, 0xe4, 0xe6, 0x71, 0x1f, 0xbe, 0xbe, 0xb8, 0xe9, 0x2e, 0x44, 0x5f, 0xa4, 0xee, - 0xbe, 0xdd, 0x2d, 0xd9, 0xe0, 0xb9, 0xf3, 0x0b, 0x2c, 0x81, 0x64, 0x04, 0x82, 0x32, 0x0f, 0x23, - 0x8b, 0x97, 0x0d, 0x06, 0xdb, 0x48, 0x02, 0x63, 0x63, 0x21, 0x09, 0x33, 0x73, 0x76, 0x66, 0xff, - 0xfd, 0x66, 0x67, 0x76, 0x66, 0x3d, 0x33, 0x3b, 0x73, 0x66, 0xbe, 0x9d, 0x3b, 0x7b, 0xdc, 0xd5, - 0xdd, 0xda, 0xef, 0x9b, 0xc3, 0xce, 0x77, 0xf6, 0x7c, 0x67, 0x3f, 0xef, 0xce, 0x7c, 0xdf, 0xc9, - 0x8c, 0xcc, 0xaa, 0xac, 0xae, 0xaa, 0x96, 0xe4, 0x37, 0xbe, 0x3e, 0xc7, 0xc7, 0xa8, 0x33, 0x23, - 0xb3, 0x32, 0x23, 0x33, 0x22, 0x23, 0x23, 0x22, 0x23, 0x3e, 0xfa, 0x98, 0xec, 0x49, 0x4b, 0xe6, - 0xf5, 0xaa, 0x27, 0x54, 0xf9, 0x31, 0xf4, 0x88, 0xd7, 0x32, 0x56, 0x69, 0x06, 0x34, 0xc6, 0x45, - 0x6c, 0xd9, 0xe9, 0xc7, 0xb9, 0x6c, 0xc9, 0xff, 0x4b, 0x40, 0x33, 0xb9, 0x96, 0xb7, 0x5b, 0xee, - 0x47, 0xe7, 0x8b, 0x1d, 0x39, 0x96, 0xe0, 0x62, 0x77, 0x87, 0x1e, 0xc3, 0xda, 0x88, 0x8e, 0x4c, - 0x17, 0x39, 0x29, 0xa0, 0xe9, 0x1b, 0x76, 0x84, 0xa2, 0x5f, 0xcf, 0x1a, 0x3f, 0x93, 0xbd, 0xc6, - 0x4b, 0xf0, 0xe9, 0xa5, 0xaf, 0x31, 0xe5, 0x14, 0x99, 0x8f, 0xaf, 0x66, 0x6e, 0xee, 0x4b, 0xf7, - 0xb4, 0xe5, 0x5c, 0x66, 0xea, 0x88, 0x97, 0x3d, 0x5a, 0x69, 0x06, 0x34, 0xcf, 0xbd, 0xca, 0xff, - 0x53, 0x40, 0x33, 0x8c, 0x86, 0xbf, 0x6b, 0x8b, 0x9c, 0x99, 0x84, 0x66, 0x02, 0xdb, 0xe5, 0x97, - 0x79, 0x75, 0xd6, 0x32, 0x57, 0x3a, 0x2c, 0x33, 0x1c, 0x2d, 0x0b, 0x9d, 0x57, 0x79, 0x7b, 0x96, - 0x60, 0x57, 0x9f, 0x43, 0xb0, 0x5b, 0x1e, 0x93, 0xc6, 0x14, 0xec, 0x26, 0x63, 0xc1, 0x6e, 0x93, - 0x6f, 0xe5, 0x37, 0x2f, 0xd9, 0x51, 0x19, 0x2d, 0xff, 0x0b, 0xcb, 0x68, 0x05, 0x5f, 0xa1, 0x8c, - 0x36, 0xe9, 0x2b, 0x92, 0xd1, 0x0c, 0x81, 0x6a, 0xb2, 0xbd, 0x40, 0x65, 0xd9, 0x1a, 0xdf, 0x9c, - 0x40, 0xc5, 0x25, 0x2a, 0x29, 0xb4, 0x4d, 0x54, 0x02, 0x53, 0x25, 0x3b, 0xdb, 0x2c, 0x92, 0x50, - 0x90, 0xaf, 0x5c, 0x8e, 0x58, 0xa1, 0xca, 0x55, 0xe8, 0x51, 0xaf, 0x95, 0x5e, 0xa4, 0x19, 0x30, - 0x8c, 0xdc, 0x8c, 0xe6, 0x5f, 0x04, 0x24, 0xf2, 0x4d, 0x7f, 0xd7, 0x58, 0xcd, 0xab, 0x2e, 0x34, - 0x13, 0x2e, 0x83, 0x5f, 0x0b, 0xab, 0x49, 0x64, 0xe7, 0x1e, 0x20, 0xae, 0x91, 0x7a, 0x00, 0x8b, - 0x35, 0x7c, 0x7c, 0x0a, 0x63, 0x6c, 0x78, 0x0f, 0x1e, 0xb8, 0x9a, 0xbc, 0x71, 0x33, 0xd5, 0xfb, - 0x1e, 0xb8, 0xbb, 0x03, 0xd9, 0x68, 0xfd, 0x5d, 0xa9, 0x0e, 0x12, 0xe1, 0xfe, 0xfa, 0x69, 0x92, - 0x40, 0xe0, 0x4d, 0xad, 0xfd, 0x7c, 0x7a, 0xb8, 0x23, 0xd5, 0xf7, 0x16, 0x9f, 0x2a, 0xa0, 0xaa, - 0x52, 0x95, 0xcb, 0x91, 0xd7, 0x6b, 0x9d, 0x98, 0x54, 0x4c, 0xd3, 0xf6, 0x93, 0x19, 0xe8, 0xfb, - 0xc1, 0xd3, 0xea, 0x62, 0xa1, 0x4d, 0x6e, 0xa7, 0x5d, 0xf0, 0xec, 0x38, 0x76, 0x01, 0xb1, 0xda, - 0xc1, 0x2e, 0x98, 0xcd, 0x47, 0x22, 0xb7, 0x6c, 0x84, 0x7d, 0x02, 0x9a, 0xb6, 0x5a, 0x49, 0xf0, - 0xbb, 0x60, 0x55, 0xd6, 0x2e, 0x58, 0xac, 0xca, 0x33, 0xf5, 0x5d, 0x30, 0x19, 0x43, 0xba, 0xc7, - 0xb3, 0x09, 0xaa, 0x2a, 0x54, 0xd9, 0x8b, 0xca, 0xbc, 0x59, 0xdd, 0x4b, 0xb3, 0xc1, 0x13, 0xdf, - 0x18, 0x09, 0x8d, 0xd2, 0xfd, 0x87, 0x2e, 0x34, 0x5d, 0x07, 0xfd, 0x7e, 0xd2, 0xa3, 0x1e, 0x9b, - 0x3b, 0x7b, 0x19, 0xaa, 0x56, 0xaa, 0x72, 0x35, 0x7a, 0xda, 0x9b, 0x8d, 0x80, 0x89, 0x86, 0xc5, - 0xfe, 0x1f, 0x93, 0xd0, 0xf4, 0x35, 0xa1, 0xb8, 0x69, 0x39, 0x03, 0xd6, 0x37, 0x61, 0x2b, 0x55, - 0xf9, 0x71, 0xfe, 0x32, 0xbc, 0xd8, 0xb8, 0xaa, 0x8e, 0x2f, 0x0e, 0x36, 0xd8, 0xa2, 0x4c, 0xf1, - 0x7a, 0xb8, 0xfb, 0x30, 0xa0, 0x5e, 0x22, 0x11, 0xf1, 0x8d, 0xfb, 0xf0, 0x9c, 0xac, 0x8f, 0xf0, - 0xb1, 0x71, 0xa1, 0x47, 0x37, 0x7f, 0x0b, 0x7e, 0xd2, 0xb8, 0x05, 0xe7, 0x19, 0xb9, 0x01, 0xed, - 0x6f, 0xc1, 0xe4, 0xe1, 0x16, 0xe4, 0x06, 0xd4, 0xef, 0xc0, 0x4f, 0x1a, 0x47, 0x56, 0x3e, 0xd7, - 0xde, 0xf6, 0xc8, 0xe2, 0xdb, 0xb3, 0xcc, 0x5a, 0xbc, 0x16, 0xae, 0xe0, 0x9b, 0xd7, 0xc2, 0xc5, - 0x74, 0x61, 0x6d, 0x92, 0xe1, 0x5b, 0xce, 0x84, 0xb5, 0xb5, 0xbc, 0xb0, 0x56, 0xc6, 0x8b, 0x69, - 0xe5, 0x6e, 0xdd, 0x33, 0x9e, 0x8a, 0x69, 0x86, 0x37, 0x3c, 0x95, 0xd2, 0xca, 0xdd, 0xab, 0xd6, - 0xfb, 0x6a, 0x56, 0xea, 0xb1, 0x8a, 0x16, 0xe9, 0x62, 0xdb, 0x26, 0xfa, 0x24, 0xa2, 0x9e, 0xea, - 0x9d, 0xf0, 0x19, 0x4b, 0x9f, 0x44, 0xd4, 0x4b, 0x4b, 0x52, 0xa7, 0x0f, 0x25, 0x87, 0xde, 0xd4, - 0x7a, 0x87, 0x52, 0x27, 0x06, 0x92, 0x83, 0xfb, 0x8d, 0xc8, 0xdf, 0x75, 0xf5, 0x34, 0x94, 0xf0, - 0xc0, 0x75, 0x6d, 0xe8, 0x88, 0x1e, 0xba, 0x83, 0xbe, 0x97, 0xa8, 0x17, 0x7f, 0x62, 0x17, 0x03, - 0x87, 0x04, 0xe5, 0x33, 0x69, 0xcb, 0xef, 0x85, 0x1e, 0x39, 0x87, 0x98, 0xcc, 0xcd, 0x7d, 0xa9, - 0xe1, 0x73, 0x6c, 0xa1, 0x89, 0xeb, 0xab, 0x49, 0x57, 0xfe, 0x9a, 0xa0, 0xca, 0x7b, 0x05, 0xf4, - 0xaa, 0xe0, 0xcd, 0xde, 0xf4, 0x52, 0x14, 0x86, 0x84, 0xd1, 0xf9, 0x0d, 0xc5, 0x4e, 0x7e, 0x3f, - 0x0f, 0xcd, 0x30, 0x46, 0x71, 0x7b, 0xf0, 0xaf, 0x0d, 0xb9, 0x5d, 0x91, 0x09, 0xff, 0x82, 0xc7, - 0x11, 0x84, 0x7f, 0xcd, 0x37, 0x45, 0x4c, 0xe6, 0x96, 0xc5, 0x14, 0x85, 0x46, 0x41, 0xa8, 0xd1, - 0x9f, 0x50, 0x00, 0x13, 0xd4, 0xec, 0x68, 0xdf, 0x35, 0x3e, 0xaf, 0x69, 0xd7, 0x0b, 0xf5, 0xae, - 0xb5, 0x1b, 0xaf, 0x6b, 0x9d, 0x07, 0x52, 0xbd, 0xad, 0xa9, 0x63, 0x97, 0xb3, 0xc2, 0x4f, 0xfa, - 0xb8, 0x8e, 0x75, 0x75, 0x42, 0x36, 0xce, 0x25, 0x91, 0xb2, 0x4c, 0x90, 0x81, 0x1d, 0x82, 0x33, - 0x0f, 0x2f, 0x44, 0xf3, 0x81, 0x54, 0xb9, 0xf4, 0x94, 0xeb, 0xa3, 0x58, 0xc6, 0x67, 0x7c, 0xf3, - 0xd7, 0x68, 0x66, 0x28, 0x4e, 0x74, 0xfb, 0xb5, 0x91, 0x97, 0xc2, 0x60, 0x64, 0x22, 0x0b, 0x59, - 0x08, 0x8f, 0x1e, 0xac, 0xb5, 0xd2, 0x83, 0x24, 0x2f, 0x66, 0x45, 0x30, 0xf2, 0x52, 0xb8, 0x02, - 0x22, 0xee, 0x07, 0xcb, 0x69, 0xcc, 0xfe, 0xf6, 0xdd, 0x99, 0xfe, 0x41, 0x6a, 0x02, 0x80, 0xbc, - 0xd4, 0xd6, 0xf6, 0xe2, 0x4b, 0xa8, 0x50, 0x79, 0x39, 0xea, 0x0f, 0x07, 0xf5, 0x8b, 0xf8, 0xf3, - 0xaa, 0xfc, 0x53, 0xaf, 0x5e, 0x28, 0xad, 0x61, 0x7f, 0x51, 0xe7, 0x96, 0x74, 0xff, 0xf1, 0xd4, - 0xd5, 0xa3, 0x24, 0x0c, 0x6c, 0x07, 0x78, 0xe4, 0xdf, 0x1a, 0xe9, 0x8c, 0xf9, 0xc3, 0xc1, 0x48, - 0x53, 0xb9, 0xbb, 0x51, 0xf1, 0xc7, 0x13, 0x15, 0x2f, 0xf9, 0xe3, 0x09, 0xa5, 0xdc, 0xdd, 0x14, - 0x89, 0x27, 0x2a, 0xa2, 0x91, 0x60, 0xbc, 0xdc, 0x1d, 0x8d, 0x85, 0x22, 0xb1, 0x50, 0x62, 0xa7, - 0x4f, 0xef, 0x57, 0xdc, 0x85, 0xc4, 0x26, 0xff, 0xcb, 0x2b, 0x9b, 0xa2, 0x89, 0x9d, 0xd5, 0xcd, - 0x8d, 0x3b, 0x80, 0x41, 0x51, 0x7f, 0xe5, 0x67, 0x54, 0x79, 0xb5, 0xd7, 0xa6, 0x5a, 0x5a, 0xda, - 0xe4, 0x7f, 0xb9, 0x42, 0xc1, 0x85, 0x15, 0x5b, 0x9b, 0x1b, 0x77, 0x54, 0x40, 0x00, 0xb3, 0x72, - 0xed, 0xc0, 0xd1, 0xd4, 0xa5, 0xb3, 0x34, 0xc8, 0x13, 0xf1, 0x44, 0x35, 0xdc, 0x20, 0x6c, 0xba, - 0x11, 0x5f, 0x41, 0xd3, 0xe2, 0x0c, 0x0f, 0xb5, 0x4a, 0xa3, 0x7f, 0x27, 0x7d, 0xc1, 0xb4, 0x41, - 0x95, 0xeb, 0xbd, 0x59, 0x55, 0xd2, 0x93, 0x2c, 0xb6, 0x23, 0x71, 0xed, 0x39, 0x74, 0x50, 0x3b, - 0xd7, 0x33, 0x7a, 0xf4, 0x26, 0xdc, 0xd3, 0xb4, 0x91, 0x56, 0xed, 0xc2, 0x7e, 0xad, 0xe3, 0x9c, - 0xd6, 0xdf, 0x03, 0x9f, 0xd7, 0xdf, 0x29, 0x2c, 0x5d, 0xa2, 0x75, 0xec, 0x1d, 0x55, 0x4f, 0xfb, - 0xb2, 0xfa, 0x13, 0xff, 0x8d, 0x80, 0x66, 0xe9, 0x45, 0x9b, 0xc2, 0x61, 0x45, 0x09, 0x2a, 0x41, - 0xee, 0x8a, 0x08, 0xc1, 0x55, 0xbd, 0xf6, 0x30, 0x52, 0x84, 0x5b, 0xef, 0x66, 0x5a, 0x51, 0x91, - 0x08, 0x35, 0x29, 0xe5, 0xf4, 0xbe, 0x07, 0x31, 0xea, 0xfa, 0x3a, 0xb5, 0x4f, 0xda, 0x61, 0x8c, - 0xf8, 0x40, 0xa5, 0xef, 0x43, 0x4f, 0xa5, 0x87, 0xfb, 0xd2, 0xef, 0x0e, 0x8d, 0x1e, 0xff, 0x40, - 0x3b, 0xd7, 0xa3, 0x5d, 0x3e, 0x0c, 0x23, 0xd4, 0x0e, 0x1d, 0xcc, 0xbc, 0xf5, 0xbe, 0xd3, 0xf0, - 0xed, 0xc7, 0x21, 0xfe, 0x37, 0x01, 0xcd, 0x33, 0x6a, 0x12, 0xa1, 0xc6, 0xd0, 0x2e, 0x62, 0xb7, - 0xda, 0xb8, 0x3d, 0xa6, 0xf8, 0xb7, 0x47, 0x1a, 0x83, 0xd4, 0x28, 0x41, 0x43, 0x5b, 0xe7, 0x86, - 0x95, 0x5e, 0x15, 0xf8, 0x69, 0x19, 0x10, 0x15, 0x89, 0xed, 0x31, 0x25, 0x8e, 0x41, 0xca, 0x21, - 0xb2, 0x1a, 0xdd, 0xce, 0x24, 0xff, 0xd4, 0xe8, 0x1b, 0x1d, 0x5a, 0xeb, 0x88, 0x31, 0x3d, 0x2e, - 0x3b, 0x23, 0xe6, 0x91, 0x37, 0x0e, 0x26, 0x87, 0x0e, 0xc2, 0x3c, 0xd3, 0x27, 0x3e, 0xd1, 0x3a, - 0xf6, 0xa6, 0x06, 0x8e, 0xc0, 0x4a, 0x01, 0x5b, 0x1d, 0x3d, 0xfe, 0x81, 0x91, 0x23, 0x6c, 0x70, - 0xe8, 0xa1, 0x25, 0xbe, 0xdc, 0x83, 0x14, 0x0f, 0x08, 0xe8, 0xee, 0xf8, 0x8e, 0x10, 0x24, 0xa8, - 0xfa, 0x49, 0x28, 0xb1, 0x7d, 0x4d, 0x24, 0xe0, 0x6f, 0xdc, 0x90, 0x88, 0xc4, 0x30, 0xf3, 0x9c, - 0x4c, 0xc8, 0x74, 0xbd, 0x2a, 0xaf, 0xf1, 0x3a, 0x43, 0x49, 0x95, 0xda, 0xcd, 0x1b, 0xe9, 0xa3, - 0xe7, 0x53, 0xbd, 0x9d, 0xa9, 0xde, 0x4b, 0x5a, 0xef, 0x65, 0xad, 0xef, 0x0d, 0x6d, 0xcf, 0x45, - 0xdd, 0x07, 0x85, 0x1f, 0x10, 0x64, 0xc0, 0x75, 0xee, 0x4b, 0x3c, 0x25, 0xa0, 0xbb, 0x4c, 0xb5, - 0x1b, 0x76, 0xc6, 0x13, 0x4a, 0x53, 0x7d, 0x24, 0x18, 0xa7, 0xd1, 0xae, 0x49, 0x0c, 0x3f, 0x27, - 0x18, 0x69, 0x15, 0x8c, 0x65, 0x47, 0xf3, 0x56, 0xa5, 0x22, 0x4e, 0x8a, 0xdd, 0xeb, 0x36, 0xe0, - 0x63, 0xf6, 0xe4, 0xa9, 0x5a, 0xbf, 0xd2, 0x14, 0x09, 0x6f, 0x50, 0x12, 0xfa, 0x13, 0x8a, 0xfa, - 0x48, 0xd0, 0x3a, 0x4a, 0x18, 0xa2, 0xd3, 0x07, 0xc4, 0x43, 0x02, 0x9a, 0x13, 0x6a, 0x08, 0x47, - 0x62, 0x8a, 0xde, 0x5f, 0x9c, 0xc3, 0x2c, 0x8d, 0x1b, 0x47, 0x32, 0x9d, 0xe6, 0x82, 0x93, 0xca, - 0x61, 0xa0, 0xc6, 0xa0, 0x58, 0x1e, 0xd5, 0x4c, 0xff, 0xd9, 0x74, 0xff, 0xf1, 0xac, 0xe1, 0xe4, - 0xea, 0x4a, 0xdc, 0x2d, 0xa0, 0x3b, 0x22, 0x3b, 0x36, 0x46, 0x12, 0xfe, 0xc6, 0x4d, 0xe1, 0x98, - 0xe2, 0x0f, 0xee, 0xac, 0x89, 0x34, 0x87, 0x13, 0xc4, 0x62, 0x33, 0x15, 0x56, 0xcf, 0xae, 0x5e, - 0x7a, 0x28, 0xb2, 0xa3, 0x22, 0x81, 0x4b, 0x2b, 0x9a, 0xa1, 0xb8, 0x22, 0x80, 0xcb, 0xcb, 0x81, - 0xc9, 0xba, 0x69, 0xa1, 0x5b, 0x0f, 0x25, 0x96, 0x3a, 0x7a, 0x79, 0x74, 0x5f, 0xb7, 0xcf, 0xae, - 0x2f, 0xf1, 0x53, 0x01, 0xdd, 0xdd, 0xe4, 0x7f, 0x99, 0xaf, 0xa8, 0x57, 0x62, 0x01, 0x25, 0x9c, - 0xc0, 0xfb, 0x68, 0x0a, 0x19, 0xc9, 0xeb, 0x82, 0x2a, 0x77, 0x0b, 0x5e, 0x67, 0x38, 0x29, 0x86, - 0x59, 0xa1, 0x79, 0x48, 0x51, 0xbd, 0xb6, 0x9c, 0x16, 0x51, 0xca, 0x20, 0x51, 0xbf, 0x28, 0x1b, - 0x6b, 0x1d, 0xd6, 0x07, 0xa9, 0x93, 0x05, 0xa6, 0x21, 0x02, 0x93, 0xea, 0x3b, 0x07, 0x54, 0xa5, - 0x75, 0x9c, 0xd0, 0x76, 0xf7, 0xa6, 0xfa, 0xde, 0xe2, 0xfd, 0xdd, 0x7d, 0xce, 0xc3, 0x11, 0x55, - 0x01, 0xdd, 0xc9, 0x71, 0x0a, 0x52, 0x4d, 0x98, 0x5a, 0x31, 0x99, 0xcf, 0x2f, 0x55, 0xf9, 0x79, - 0xaf, 0x2d, 0x80, 0x54, 0x63, 0xe2, 0x68, 0x30, 0x13, 0xc2, 0xd0, 0x4c, 0x73, 0xb0, 0xe5, 0x6b, - 0xda, 0x81, 0xa3, 0xc9, 0x1b, 0x07, 0xd2, 0x17, 0x54, 0x9f, 0x6d, 0xd7, 0xe2, 0x1f, 0x0b, 0x68, - 0x0e, 0xee, 0xa5, 0x21, 0x84, 0x05, 0x01, 0xe6, 0x0e, 0xd4, 0x14, 0x69, 0xf1, 0x37, 0x92, 0xb1, - 0x4d, 0x25, 0x63, 0x23, 0xee, 0x9f, 0xde, 0x5c, 0x80, 0xd2, 0x8b, 0x2c, 0x02, 0x24, 0x7b, 0x28, - 0x43, 0x64, 0x67, 0xed, 0x93, 0x76, 0xd3, 0x61, 0x70, 0x79, 0x2f, 0x0d, 0xe4, 0xd9, 0xfb, 0x9e, - 0xd6, 0x7b, 0x11, 0xd3, 0x55, 0x2c, 0xac, 0x24, 0x94, 0x78, 0x72, 0xb0, 0x2f, 0x75, 0xf5, 0xa2, - 0xb6, 0xb7, 0xcb, 0x4a, 0x41, 0xcb, 0x18, 0x9b, 0xcd, 0xf5, 0x79, 0xb1, 0x89, 0xbf, 0x4f, 0x4d, - 0x63, 0x26, 0xf2, 0x72, 0xfe, 0x3e, 0xb5, 0x80, 0xbb, 0x2c, 0x61, 0xcc, 0x98, 0x2f, 0x55, 0x13, - 0x4b, 0x24, 0x54, 0x65, 0xdc, 0x83, 0xa6, 0x33, 0x91, 0xf0, 0x4e, 0xe3, 0x1e, 0x54, 0xc4, 0xdd, - 0x80, 0x2c, 0x76, 0xc0, 0x15, 0x5c, 0x72, 0xe0, 0x19, 0x2c, 0xf0, 0xc5, 0x7c, 0x2e, 0x35, 0xb0, - 0x98, 0xee, 0xbc, 0x9e, 0x6a, 0xbd, 0x40, 0xb3, 0x00, 0x93, 0x90, 0xa7, 0x5c, 0xce, 0xde, 0x8b, - 0x36, 0x49, 0xc6, 0x67, 0x12, 0x36, 0xf1, 0xfb, 0xaa, 0xfc, 0x8a, 0x35, 0x91, 0xf8, 0x76, 0x3e, - 0x3f, 0x51, 0x96, 0xdf, 0x03, 0xd1, 0x2f, 0x92, 0xbc, 0x45, 0x87, 0x0e, 0x26, 0x47, 0x7a, 0xb4, - 0xde, 0x8b, 0x99, 0x81, 0xf3, 0x80, 0x8f, 0xd1, 0x57, 0x2f, 0xa6, 0x6f, 0x7c, 0xe0, 0xa6, 0xd7, - 0x20, 0x4e, 0x1e, 0x73, 0xa7, 0x87, 0xdb, 0x92, 0xc3, 0xd7, 0x78, 0x3e, 0xec, 0x76, 0x48, 0x45, - 0xfe, 0xef, 0x04, 0x74, 0xc7, 0xd6, 0xe6, 0x6d, 0xdb, 0x94, 0x98, 0x8f, 0xa6, 0x0c, 0xf6, 0x61, - 0x1e, 0x43, 0x5e, 0x15, 0x4e, 0xad, 0x3e, 0x2a, 0xa8, 0xf2, 0x61, 0xc1, 0x6b, 0x07, 0x21, 0xed, - 0x82, 0xc2, 0x0a, 0x96, 0x6a, 0xb8, 0x82, 0xa4, 0x0b, 0xa7, 0x27, 0x1c, 0x75, 0xb0, 0xe3, 0x4e, - 0x38, 0x9e, 0x4c, 0xe9, 0x93, 0x13, 0xee, 0xa8, 0x4b, 0x1f, 0xdc, 0x07, 0xb4, 0x9b, 0x19, 0x38, - 0x0f, 0xc7, 0xa1, 0xd6, 0x71, 0x82, 0xef, 0x4a, 0x9f, 0x8b, 0x7b, 0xe9, 0x92, 0x25, 0x3e, 0xbb, - 0x01, 0x89, 0xe7, 0x80, 0x23, 0xad, 0x8e, 0xf9, 0x03, 0xca, 0xb6, 0xe6, 0xc6, 0x8d, 0x34, 0xc8, - 0x76, 0x08, 0xf3, 0xcf, 0x00, 0x49, 0xe6, 0x3b, 0xb5, 0x7a, 0x9b, 0x2a, 0x07, 0xbc, 0xce, 0x50, - 0xd2, 0x2a, 0xcc, 0x8f, 0x1a, 0x68, 0x5d, 0x45, 0xc2, 0xa8, 0xac, 0x88, 0x2b, 0x81, 0x72, 0x2a, - 0x9b, 0x91, 0xb0, 0xaa, 0x40, 0x39, 0xee, 0xfa, 0x48, 0xd0, 0x3d, 0xda, 0xda, 0xaa, 0xed, 0x1b, - 0x4a, 0xf5, 0xb6, 0xea, 0x44, 0xe4, 0x73, 0xfe, 0x84, 0xd8, 0x26, 0xa0, 0xe2, 0x78, 0xc0, 0x1f, - 0xae, 0x0b, 0x27, 0x94, 0x58, 0x8b, 0xbf, 0xb1, 0xe4, 0x4e, 0x32, 0xb2, 0x17, 0x55, 0xf9, 0x05, - 0xaf, 0xa9, 0x42, 0x5a, 0x8b, 0x7f, 0x55, 0x84, 0xe8, 0xcf, 0xf2, 0xac, 0x8d, 0x91, 0x7a, 0xbb, - 0x35, 0xf5, 0xd1, 0x7e, 0xf8, 0x1e, 0xfe, 0xaf, 0xe7, 0x88, 0xce, 0x4b, 0xb0, 0x68, 0x70, 0x41, - 0x35, 0x2d, 0xff, 0xd2, 0x25, 0x3e, 0x53, 0xe7, 0xf8, 0xdc, 0xbd, 0xb3, 0xc9, 0xff, 0x32, 0x26, - 0xd2, 0x7a, 0xbc, 0x6f, 0xe3, 0x4c, 0xc5, 0x3f, 0x8b, 0x0c, 0xe7, 0x57, 0xaa, 0xdc, 0xe0, 0xb5, - 0x05, 0x90, 0xd6, 0x63, 0x1c, 0xe1, 0xeb, 0x64, 0x45, 0x94, 0x95, 0x03, 0xab, 0x03, 0x94, 0x50, - 0xa1, 0xb5, 0xfb, 0x50, 0xf2, 0x93, 0x37, 0x79, 0x9c, 0xf0, 0x9c, 0xce, 0x58, 0xcd, 0xc7, 0x96, - 0x2c, 0xf1, 0xd9, 0x7e, 0x46, 0x3c, 0x29, 0xa0, 0xe9, 0x64, 0x8f, 0x6e, 0x8a, 0xe2, 0xcb, 0xfe, - 0xcf, 0x95, 0x58, 0xa4, 0x64, 0xf6, 0x98, 0x99, 0xfa, 0x7f, 0xa2, 0xca, 0x1b, 0xbd, 0xd9, 0xed, - 0x24, 0x19, 0xb8, 0x73, 0x73, 0xb4, 0x62, 0x5b, 0x2c, 0xd2, 0x54, 0xb1, 0x4b, 0x89, 0x45, 0xe8, - 0xa1, 0xc7, 0x9f, 0x0c, 0xb7, 0x46, 0x3a, 0x52, 0x1f, 0x9c, 0x4d, 0xf5, 0x76, 0xba, 0xf9, 0x73, - 0x90, 0x2c, 0x77, 0xa7, 0x2f, 0xbb, 0x4f, 0x3c, 0xbe, 0xd9, 0x66, 0xa1, 0x58, 0xde, 0x86, 0xc9, - 0x30, 0x18, 0x2c, 0xb9, 0x8b, 0xa0, 0x50, 0x51, 0xe5, 0xad, 0x5e, 0x07, 0x10, 0xe9, 0xc7, 0xdc, - 0x79, 0x11, 0xc4, 0x35, 0x15, 0xfe, 0x6d, 0x84, 0x35, 0x07, 0x83, 0xe5, 0x86, 0x90, 0xde, 0x71, - 0x2e, 0x75, 0xac, 0x4f, 0xdf, 0x75, 0xd6, 0x85, 0xc6, 0x87, 0x86, 0xc3, 0x17, 0xc4, 0x77, 0xb0, - 0xa0, 0x67, 0xad, 0xa2, 0x57, 0x94, 0x12, 0x32, 0x44, 0x12, 0xed, 0xd6, 0x19, 0xca, 0x71, 0x94, - 0xf4, 0xc6, 0x02, 0xb2, 0x78, 0x72, 0xf0, 0x9c, 0x71, 0x6f, 0x71, 0x1a, 0xa5, 0xf3, 0x47, 0xc4, - 0x7f, 0x2f, 0xa0, 0x52, 0x9b, 0xda, 0x55, 0xfe, 0x50, 0x63, 0x73, 0x4c, 0x29, 0xb9, 0x7b, 0x1c, - 0xd9, 0xc4, 0x9b, 0x54, 0xf9, 0x57, 0xde, 0x1c, 0x9d, 0x48, 0x6b, 0x1c, 0x26, 0xb2, 0x0d, 0xea, - 0x29, 0x65, 0x43, 0x32, 0x52, 0xed, 0xd0, 0x41, 0x30, 0xac, 0x3b, 0x4e, 0x26, 0xc7, 0x97, 0xc4, - 0x3d, 0x2e, 0xe4, 0xd6, 0xab, 0x57, 0x47, 0x9b, 0xb3, 0x84, 0x70, 0x72, 0x0d, 0x28, 0x29, 0x25, - 0xd8, 0xff, 0x48, 0x50, 0xe5, 0x2b, 0x82, 0x77, 0x4c, 0x70, 0xa9, 0x8b, 0xbf, 0x58, 0x34, 0x44, - 0x9b, 0x27, 0x78, 0xb9, 0x28, 0x5b, 0x5d, 0xbf, 0x69, 0xd1, 0x57, 0x78, 0xc3, 0x18, 0x73, 0xc0, - 0xe2, 0x5f, 0x0b, 0x68, 0xb6, 0x99, 0x45, 0xd7, 0x44, 0x9b, 0xe1, 0x60, 0x99, 0x43, 0xa6, 0xde, - 0x2b, 0xa8, 0xf2, 0x1b, 0x82, 0xd7, 0x01, 0x48, 0xfa, 0x7d, 0xfb, 0xf2, 0x09, 0x1c, 0x2e, 0x81, - 0x68, 0xf3, 0x97, 0x38, 0x5f, 0x1c, 0xc6, 0x65, 0x33, 0xaf, 0xb5, 0x4a, 0x13, 0xcc, 0x6b, 0x6e, - 0x8e, 0x79, 0x31, 0xa0, 0xec, 0x79, 0xb1, 0xf2, 0x09, 0xcc, 0xab, 0x49, 0x69, 0xfa, 0xea, 0xe6, - 0xc5, 0xbe, 0x5f, 0x85, 0x8f, 0x45, 0xe4, 0xf7, 0x8e, 0xa1, 0xd9, 0x91, 0xe6, 0x81, 0xcc, 0x64, - 0xa9, 0xb7, 0x0b, 0x65, 0x6b, 0xeb, 0x52, 0xf4, 0xaf, 0x02, 0x5a, 0xe0, 0xf8, 0x8d, 0xdb, 0x43, - 0xf5, 0xf7, 0x84, 0xc9, 0x74, 0x51, 0x66, 0x71, 0xde, 0xb3, 0x08, 0x63, 0x74, 0x7a, 0x60, 0x67, - 0x48, 0x3f, 0xc8, 0xde, 0x5c, 0x7c, 0x97, 0xd4, 0x67, 0x17, 0x04, 0x8b, 0xfe, 0xec, 0x35, 0xe1, - 0x6b, 0x54, 0xa0, 0x7d, 0x5e, 0x5d, 0x1e, 0xf3, 0xfa, 0x26, 0x01, 0xb8, 0x6f, 0x0a, 0x07, 0xee, - 0x2b, 0xd2, 0xc1, 0xb1, 0x3c, 0x6d, 0xd1, 0xb7, 0xbd, 0x2a, 0xe4, 0x50, 0xb8, 0x6d, 0xf8, 0xea, - 0x14, 0x6e, 0x9f, 0x57, 0x4f, 0xf2, 0xe6, 0x97, 0x04, 0xcb, 0x04, 0x5b, 0xcd, 0xdb, 0x5e, 0xc1, - 0x41, 0xf5, 0xf6, 0xcb, 0xaf, 0x41, 0xf5, 0xf6, 0x79, 0x75, 0xa1, 0x77, 0x52, 0x49, 0xeb, 0xdb, - 0x05, 0x65, 0x4f, 0x58, 0xb4, 0x70, 0xff, 0x61, 0x0c, 0x2d, 0xdc, 0xf1, 0xef, 0x94, 0x16, 0x8e, - 0x9f, 0x89, 0x83, 0x42, 0xee, 0xff, 0x19, 0xa7, 0x42, 0xee, 0x83, 0xdb, 0x47, 0x21, 0x07, 0x5b, - 0xa9, 0xbe, 0xec, 0x47, 0x63, 0x69, 0xe6, 0xde, 0x1d, 0x53, 0x33, 0x97, 0x5b, 0xf4, 0xfd, 0x26, - 0xb5, 0x76, 0x43, 0x63, 0x68, 0xed, 0x72, 0x8f, 0xf4, 0x5b, 0xd6, 0xe8, 0x9d, 0x1a, 0x87, 0x46, - 0x2f, 0xf7, 0x04, 0x9e, 0x56, 0xe5, 0x15, 0xb9, 0xb5, 0x7d, 0xf3, 0x73, 0x6b, 0xfb, 0x72, 0xeb, - 0xf7, 0xba, 0x72, 0xea, 0xf7, 0x7e, 0xfe, 0x15, 0xeb, 0xf7, 0x28, 0x59, 0xfe, 0xd1, 0x1d, 0x65, - 0x3f, 0xb2, 0x57, 0xf5, 0xfd, 0xfd, 0x38, 0x54, 0x7d, 0xbd, 0xdf, 0x45, 0x55, 0x1f, 0xe3, 0xe2, - 0x3f, 0xca, 0xa5, 0xf3, 0x3b, 0x95, 0x5b, 0xe7, 0xf7, 0xab, 0xaf, 0x57, 0xe7, 0xf7, 0x79, 0x75, - 0x91, 0x77, 0x32, 0xe1, 0x89, 0x97, 0x8b, 0xbe, 0xe7, 0xfa, 0xbf, 0x4d, 0xbc, 0xab, 0xc3, 0x34, - 0xf6, 0xf4, 0xab, 0x82, 0x77, 0x75, 0x70, 0x83, 0x6f, 0x43, 0x96, 0xf2, 0x2f, 0xb7, 0xbf, 0xc3, - 0x46, 0x5e, 0xad, 0x38, 0x9d, 0x85, 0x3f, 0x9b, 0xa0, 0x5a, 0xd1, 0xe2, 0x97, 0x51, 0x65, 0x78, - 0x41, 0xcc, 0xe0, 0xb4, 0x87, 0xcc, 0x0b, 0xa2, 0x28, 0x87, 0xcb, 0x9e, 0x49, 0x7b, 0x38, 0x73, - 0xe2, 0xda, 0xc3, 0x71, 0xdd, 0x20, 0xc5, 0xef, 0xf9, 0x0d, 0xf2, 0x96, 0x83, 0x5e, 0xf2, 0x8e, - 0x71, 0x68, 0x03, 0x4e, 0x7d, 0x37, 0xb5, 0x96, 0x06, 0x37, 0xb2, 0x55, 0x5f, 0x0e, 0xe4, 0x54, - 0x5f, 0x82, 0x92, 0xf0, 0xd7, 0xdf, 0x8c, 0xfa, 0x92, 0x17, 0xd4, 0x72, 0x68, 0x32, 0xbb, 0xb3, - 0x35, 0x99, 0xa0, 0x3a, 0xdc, 0xf1, 0x75, 0x6b, 0x32, 0x8d, 0xe1, 0x15, 0x64, 0x29, 0x35, 0xdf, - 0x73, 0x52, 0x6a, 0xce, 0x26, 0x23, 0x6b, 0xf9, 0xe6, 0x94, 0x9a, 0x06, 0x5f, 0x6f, 0x9b, 0x3c, - 0x01, 0x05, 0xe7, 0x5d, 0xdf, 0x21, 0x05, 0xe7, 0xbb, 0xce, 0x0a, 0xce, 0x12, 0xb6, 0x1b, 0xbf, - 0x01, 0x05, 0xa7, 0xe9, 0x84, 0x74, 0x52, 0x76, 0x5e, 0xc9, 0xa9, 0xec, 0xbc, 0x9b, 0x0c, 0x37, - 0xfe, 0x4d, 0x29, 0x3b, 0x8d, 0xfd, 0xf9, 0xa3, 0x5c, 0x7a, 0xcf, 0xff, 0x94, 0x5b, 0xef, 0x59, - 0x3a, 0x0e, 0x4e, 0xf7, 0xf2, 0x37, 0xaa, 0xf7, 0xe4, 0xd9, 0x42, 0x2e, 0x15, 0xe8, 0x3f, 0x8c, - 0xa5, 0xfd, 0x3b, 0xff, 0x9d, 0xd6, 0xfe, 0x19, 0x7c, 0xda, 0x49, 0x0d, 0xf8, 0x0f, 0x63, 0xa9, - 0x01, 0xcf, 0x7f, 0xa7, 0xd5, 0x80, 0x8e, 0x13, 0x64, 0x03, 0x11, 0xfd, 0x68, 0x52, 0x53, 0x24, - 0xd8, 0xdc, 0xa8, 0x94, 0xcc, 0xa3, 0x0c, 0x29, 0x4b, 0xcd, 0xb5, 0x96, 0xd4, 0x92, 0x1c, 0xdf, - 0x15, 0xaa, 0xec, 0xf5, 0x52, 0x70, 0xc9, 0x0d, 0xc3, 0x63, 0x01, 0x79, 0x33, 0x37, 0x2e, 0xa5, - 0x2f, 0x0c, 0x63, 0x09, 0xe7, 0xe4, 0x71, 0xaa, 0x7b, 0xa3, 0x90, 0x62, 0x03, 0x9a, 0xfc, 0x92, - 0xb2, 0x75, 0x7b, 0x24, 0xb2, 0xa3, 0x64, 0x3e, 0xf9, 0xc6, 0x1c, 0x9b, 0xb7, 0xe8, 0xb8, 0x7a, - 0x6d, 0x24, 0xa8, 0x54, 0x2f, 0xc1, 0x82, 0x22, 0x6b, 0x20, 0x79, 0xd8, 0x57, 0xdc, 0xb4, 0x04, - 0x64, 0x28, 0x53, 0xf4, 0x3a, 0x06, 0x2c, 0x46, 0x21, 0xa7, 0x22, 0x68, 0xdd, 0x48, 0x4e, 0xc5, - 0x05, 0x44, 0x99, 0xf6, 0x63, 0x55, 0x5e, 0xe9, 0xcd, 0xaa, 0x92, 0x96, 0x25, 0x87, 0xdb, 0x41, - 0xb4, 0xab, 0x91, 0xc1, 0x88, 0x0a, 0x9d, 0x6a, 0xdd, 0x7b, 0x52, 0x47, 0x2f, 0x43, 0xd7, 0xe5, - 0xc9, 0xc1, 0x03, 0x14, 0xb7, 0x24, 0x25, 0xa2, 0x2f, 0xab, 0x13, 0x31, 0x2d, 0xa0, 0xb9, 0xca, - 0xcb, 0x51, 0x25, 0x1c, 0xf4, 0x6f, 0x6d, 0x54, 0xf0, 0x95, 0xb3, 0x9e, 0x6a, 0xb2, 0x6a, 0x9a, - 0x13, 0x91, 0x6d, 0xdb, 0x4a, 0xee, 0xa3, 0x13, 0xce, 0x26, 0x6d, 0x8e, 0xb2, 0x21, 0x2f, 0x9c, - 0x37, 0x67, 0x3f, 0x92, 0x3f, 0x39, 0xf2, 0x86, 0xd6, 0xde, 0x91, 0x1e, 0xba, 0x00, 0x32, 0x58, - 0xaa, 0xef, 0x1c, 0xde, 0x2d, 0x3d, 0x6d, 0xee, 0x68, 0x24, 0x78, 0x6b, 0xa4, 0x0b, 0x37, 0x0d, - 0x85, 0x1b, 0xdc, 0x7c, 0x56, 0x47, 0x7d, 0x3f, 0xe8, 0x3c, 0x2c, 0x39, 0xd2, 0x93, 0x7e, 0xf3, - 0xc3, 0xd4, 0xc1, 0xf3, 0xee, 0x1d, 0xa1, 0xc6, 0x46, 0x16, 0xfa, 0x56, 0x6b, 0x1d, 0xa9, 0x58, - 0xba, 0xc4, 0x97, 0x73, 0x00, 0xe2, 0x65, 0x01, 0x89, 0x61, 0xe5, 0xa5, 0xfa, 0x48, 0x70, 0x03, - 0x1c, 0x1e, 0xa0, 0x0c, 0xbb, 0x7f, 0x1c, 0xac, 0x6b, 0xab, 0x2a, 0xff, 0xd4, 0x6b, 0xd3, 0x58, - 0xaa, 0xb6, 0x96, 0xdd, 0x1a, 0xe9, 0x4a, 0x1d, 0xbb, 0x1c, 0x8d, 0x04, 0xb5, 0xe1, 0xa1, 0xf4, - 0xfb, 0xfb, 0xb5, 0x73, 0x3d, 0xc9, 0xeb, 0xed, 0xc9, 0xeb, 0xfb, 0xb5, 0x43, 0x07, 0x53, 0x9d, - 0x74, 0x2d, 0x6a, 0x64, 0x36, 0x72, 0xf7, 0x12, 0x16, 0xf1, 0xd3, 0xa6, 0x7b, 0x5d, 0xd5, 0x9d, - 0x5b, 0x0b, 0x2b, 0xcd, 0x83, 0x5d, 0x30, 0x71, 0x55, 0x37, 0x7b, 0x28, 0xf3, 0x4e, 0x1e, 0x5a, - 0xe0, 0xf8, 0x8d, 0xdb, 0x43, 0xd5, 0x1d, 0xfa, 0x62, 0xaa, 0xee, 0xea, 0x07, 0x55, 0xb9, 0x8c, - 0xba, 0xa7, 0xba, 0xf5, 0x97, 0x34, 0x16, 0xb0, 0xef, 0x48, 0x06, 0x46, 0xcf, 0xf1, 0x3c, 0x74, - 0x2f, 0x5d, 0xa8, 0x38, 0x8c, 0xac, 0x96, 0x04, 0x99, 0xae, 0xa7, 0xf7, 0x31, 0xa6, 0x97, 0xdf, - 0x68, 0x7d, 0x0e, 0xf0, 0x15, 0xdc, 0x33, 0x4f, 0x0b, 0xdc, 0x65, 0x11, 0x16, 0x15, 0x6e, 0xf2, - 0xc6, 0x6d, 0x31, 0x0e, 0xcd, 0xa9, 0xbf, 0x8a, 0x9e, 0x2c, 0x05, 0x18, 0x3f, 0x53, 0x2b, 0xa5, - 0xae, 0x9c, 0x01, 0x87, 0xfa, 0xb2, 0xf4, 0x9b, 0xfd, 0x5a, 0xe7, 0x01, 0xcc, 0xc7, 0x48, 0xa8, - 0xa9, 0x9d, 0xcd, 0xe1, 0x44, 0xe8, 0xb3, 0xd6, 0xdd, 0x71, 0xa5, 0x71, 0x5b, 0x16, 0x28, 0x2f, - 0x56, 0x13, 0x30, 0xbd, 0x7e, 0x91, 0x71, 0x1d, 0xad, 0x7a, 0x59, 0x95, 0x9b, 0x51, 0xdc, 0x3b, - 0x1e, 0x1c, 0x49, 0x0f, 0x39, 0x50, 0x4d, 0xaa, 0xf7, 0x52, 0xea, 0xd2, 0x59, 0xeb, 0x90, 0x61, - 0x0f, 0x98, 0xa9, 0x49, 0xff, 0xb2, 0xe7, 0x8f, 0x05, 0xb4, 0x30, 0xf7, 0x57, 0x6f, 0x0b, 0x3a, - 0xf2, 0xfc, 0xe5, 0x22, 0x34, 0x77, 0xc3, 0xce, 0x70, 0xe0, 0x07, 0x93, 0xcf, 0x17, 0x31, 0xf9, - 0x9c, 0xc8, 0x65, 0xf2, 0x09, 0xe1, 0xbb, 0xa6, 0x9d, 0xc9, 0x67, 0xf5, 0x84, 0x4d, 0x3e, 0x8f, - 0xbb, 0x6b, 0x64, 0xed, 0xfa, 0x35, 0x43, 0xff, 0x41, 0x2a, 0x72, 0x1b, 0x82, 0x8e, 0x3a, 0x19, - 0x82, 0x9a, 0x54, 0x79, 0x8b, 0xc5, 0x10, 0xb4, 0xf6, 0xcb, 0x19, 0x82, 0x6e, 0x8d, 0xbc, 0x99, - 0x3a, 0x7e, 0x26, 0x75, 0xb4, 0x03, 0x84, 0x91, 0x1f, 0xec, 0x42, 0xbf, 0x23, 0x76, 0xa1, 0xae, - 0x71, 0x78, 0x6c, 0x13, 0xf7, 0xe3, 0x1c, 0xb6, 0x9f, 0xc5, 0xe3, 0xb7, 0xfd, 0x24, 0x62, 0xcd, - 0x39, 0x4d, 0x3f, 0x27, 0xc7, 0x74, 0xd8, 0x0e, 0xa8, 0xf2, 0x8b, 0xce, 0xe6, 0x9d, 0x95, 0x5f, - 0xda, 0xbc, 0x43, 0x46, 0xe8, 0x68, 0xdd, 0x39, 0x3c, 0x2e, 0x7f, 0x6d, 0x62, 0x2c, 0xcb, 0x69, - 0xc1, 0xa9, 0xc8, 0x6d, 0xc1, 0xe1, 0x52, 0x44, 0x90, 0xf1, 0xfc, 0x60, 0xd0, 0xf9, 0xc1, 0xa0, - 0x33, 0x4e, 0x83, 0x8e, 0x49, 0x92, 0x9c, 0xfa, 0x35, 0x58, 0x2c, 0xa6, 0x4d, 0xd4, 0x62, 0x31, - 0x2e, 0x93, 0xc3, 0xf4, 0xef, 0xb9, 0xc9, 0xe1, 0x3f, 0x3a, 0x98, 0x1c, 0x66, 0x90, 0x79, 0xdf, - 0x9e, 0x46, 0x85, 0x4b, 0x39, 0x8d, 0x0a, 0x90, 0xb5, 0x26, 0x8c, 0xd9, 0x75, 0x0e, 0xa3, 0x42, - 0xcd, 0xf8, 0x8c, 0x0a, 0x5f, 0x8b, 0x45, 0x41, 0xfc, 0xce, 0x5a, 0x14, 0xee, 0xf8, 0x0e, 0x5a, - 0x14, 0xce, 0x81, 0xa8, 0x8c, 0x2b, 0x36, 0x24, 0xfc, 0xb1, 0x44, 0x73, 0x94, 0x0c, 0x15, 0x6c, - 0x47, 0x09, 0x55, 0x56, 0xbc, 0x36, 0xd5, 0xdc, 0x40, 0xe3, 0x50, 0xca, 0x0f, 0x53, 0xeb, 0x7e, - 0x23, 0x39, 0x38, 0x44, 0x78, 0x17, 0x3e, 0x5f, 0x26, 0x3c, 0x50, 0x9b, 0x0f, 0x8a, 0xff, 0x4e, - 0x40, 0x25, 0x7c, 0x31, 0xcd, 0x6c, 0xa4, 0x70, 0xee, 0xe7, 0xfb, 0x05, 0x55, 0xfe, 0x3d, 0xaf, - 0x23, 0x94, 0xf4, 0xa2, 0x79, 0xcc, 0x15, 0x71, 0x5a, 0x69, 0xc5, 0x30, 0x4c, 0x40, 0xeb, 0x1e, - 0xa0, 0x79, 0x98, 0xbe, 0xc8, 0x24, 0x1c, 0xc7, 0xf1, 0x9d, 0x77, 0x52, 0x7f, 0x77, 0x2c, 0x27, - 0xf5, 0xdb, 0xc6, 0x86, 0x53, 0x72, 0x3b, 0xda, 0x70, 0xee, 0xfe, 0x3e, 0xda, 0x70, 0x4a, 0xbf, - 0xef, 0x36, 0x9c, 0x39, 0xdf, 0x0b, 0x1b, 0x0e, 0x67, 0x60, 0x99, 0xfb, 0xb5, 0x1a, 0x58, 0xc6, - 0x34, 0x77, 0xcc, 0xfb, 0x9e, 0x9b, 0x3b, 0xe6, 0x7f, 0x87, 0xcd, 0x1d, 0x3f, 0x55, 0xe5, 0x4d, - 0x68, 0x83, 0x37, 0xa7, 0xfe, 0x51, 0x9a, 0xa7, 0x1d, 0xea, 0x4a, 0xf5, 0x9d, 0xb7, 0xd4, 0x83, - 0xa2, 0xc9, 0xac, 0x9e, 0xd5, 0x0d, 0x1c, 0xe7, 0xf2, 0xd0, 0x3c, 0x87, 0x5e, 0x7f, 0x77, 0xcc, - 0x1b, 0x80, 0xb8, 0x74, 0x4f, 0xdb, 0x77, 0xd6, 0xbc, 0xf1, 0x5e, 0x1e, 0x9a, 0x0f, 0x87, 0x95, - 0xa3, 0xfa, 0xf9, 0x67, 0x56, 0xcb, 0xc6, 0xe3, 0xaa, 0x5c, 0xc2, 0xdf, 0x47, 0xa7, 0x98, 0xa2, - 0x18, 0x8d, 0xff, 0x11, 0xee, 0x3f, 0x0a, 0xd9, 0x01, 0xcd, 0xfe, 0x58, 0x50, 0xe5, 0x3f, 0x14, - 0x8c, 0x90, 0x66, 0x1f, 0x09, 0x7c, 0x4c, 0x33, 0x07, 0x34, 0x7e, 0xb1, 0x00, 0x67, 0xda, 0xc0, - 0xf5, 0xe4, 0xd0, 0x41, 0x2c, 0x3c, 0x91, 0x1c, 0xb8, 0x56, 0xef, 0x47, 0xad, 0xbf, 0x33, 0xf3, - 0x76, 0x7b, 0xba, 0xa7, 0x4d, 0x0f, 0xce, 0x83, 0x49, 0xef, 0x8d, 0x01, 0x53, 0x66, 0xfe, 0x8f, - 0x3f, 0x80, 0x77, 0xb6, 0xe9, 0x9e, 0xb6, 0x1a, 0x19, 0x4c, 0xd9, 0xa6, 0xe0, 0x69, 0xcf, 0xa8, - 0xf2, 0x6a, 0xb4, 0xd2, 0x3b, 0x06, 0x92, 0xa5, 0xbb, 0x1c, 0x26, 0xc8, 0x53, 0x97, 0xe7, 0xdd, - 0x3c, 0xb4, 0xc0, 0xb1, 0x9f, 0xdb, 0x25, 0x93, 0xd4, 0x17, 0xa3, 0x2a, 0xb2, 0xcf, 0x81, 0xaa, - 0xee, 0xe5, 0x03, 0xaf, 0x7d, 0x67, 0x09, 0xeb, 0xba, 0x0b, 0xcd, 0x59, 0xad, 0x24, 0xbe, 0x0d, - 0xaa, 0x6a, 0xb1, 0xd8, 0x0c, 0x49, 0x94, 0x2b, 0xc3, 0x64, 0xf8, 0x6c, 0x8d, 0x0c, 0x33, 0x48, - 0x0e, 0x1d, 0x66, 0x85, 0x24, 0x6d, 0x72, 0x72, 0xf8, 0x3c, 0xcb, 0xd2, 0x0b, 0xff, 0xa6, 0x8e, - 0x5f, 0x2b, 0x77, 0x6b, 0xe7, 0x0e, 0xa4, 0x8f, 0x5c, 0x64, 0xd6, 0x89, 0xac, 0x76, 0x9c, 0x29, - 0x70, 0xb5, 0x2a, 0xd7, 0xa2, 0x6a, 0x6f, 0xae, 0x69, 0x4b, 0xf7, 0x42, 0x14, 0x21, 0x87, 0x65, - 0xa3, 0x21, 0xeb, 0xfe, 0x47, 0x1e, 0x9a, 0x6b, 0xdf, 0xc9, 0xef, 0xce, 0xd1, 0xa1, 0xc7, 0xb4, - 0xfb, 0xae, 0xee, 0x70, 0x96, 0x27, 0x24, 0xe7, 0x4a, 0x49, 0xf3, 0x1c, 0xd6, 0xdb, 0x29, 0x80, - 0xd4, 0xc5, 0x7c, 0x34, 0x77, 0x4d, 0x28, 0xee, 0x4c, 0x37, 0x61, 0x2b, 0xdd, 0xd4, 0xab, 0xf2, - 0x2a, 0x9e, 0x6e, 0x1e, 0xb3, 0x1a, 0x98, 0xbf, 0x78, 0x04, 0xbe, 0xe7, 0xad, 0x11, 0xf8, 0x56, - 0xa8, 0xf2, 0x32, 0xde, 0x2d, 0xfd, 0x7e, 0xe7, 0xef, 0x8d, 0xe1, 0x9c, 0x5e, 0x97, 0x1d, 0x8c, - 0xaf, 0x52, 0x95, 0xef, 0x33, 0x82, 0x50, 0x94, 0x5a, 0x45, 0x2e, 0xc7, 0xb8, 0x7c, 0x75, 0xd9, - 0x71, 0xf9, 0xa0, 0x2b, 0xa6, 0xdf, 0xb5, 0x76, 0xe5, 0x18, 0xa2, 0xaf, 0xea, 0x9c, 0xa0, 0xca, - 0x67, 0x04, 0x74, 0x52, 0xf0, 0xe6, 0x5c, 0x0a, 0xe9, 0x37, 0x0e, 0x6b, 0xfb, 0x0d, 0x45, 0x86, - 0xfb, 0x67, 0x17, 0x9a, 0xe7, 0x30, 0xbe, 0xdb, 0x83, 0x4d, 0x3c, 0x6f, 0x0a, 0x13, 0x37, 0x7e, - 0x36, 0x31, 0x4f, 0x95, 0x4b, 0x29, 0x9b, 0x10, 0x4d, 0xa1, 0xe3, 0xf8, 0xc8, 0x97, 0x34, 0xb3, - 0x4a, 0x6e, 0x0c, 0x4d, 0x98, 0x3c, 0x3f, 0x70, 0xd9, 0x3c, 0x50, 0xdd, 0x40, 0xc2, 0x1c, 0x32, - 0x02, 0x7d, 0x1a, 0x4d, 0x52, 0x78, 0x17, 0x05, 0x92, 0x41, 0x9f, 0x16, 0x49, 0x73, 0xf8, 0x50, - 0x26, 0xba, 0xbd, 0x1b, 0x2e, 0x5f, 0x3e, 0x0a, 0x64, 0x36, 0x80, 0xb8, 0xbe, 0x06, 0x03, 0x48, - 0xde, 0x44, 0x0d, 0x20, 0x4f, 0x70, 0x27, 0x6a, 0xbe, 0xb1, 0x33, 0x8c, 0x13, 0x75, 0x66, 0x8e, - 0x73, 0xd1, 0xde, 0xd7, 0x8b, 0x21, 0xed, 0x87, 0x13, 0xed, 0xbb, 0x23, 0xb3, 0x5d, 0x74, 0xa1, - 0xe9, 0x1b, 0x94, 0x58, 0x4b, 0x08, 0xf2, 0xf8, 0x13, 0x6f, 0xcd, 0x15, 0xa8, 0x30, 0x16, 0x69, - 0x84, 0x5c, 0xfa, 0x02, 0xf7, 0x5a, 0x87, 0x15, 0x4a, 0x62, 0x1c, 0x5a, 0xb8, 0x71, 0x09, 0xcb, - 0xa8, 0xcf, 0x6a, 0xc5, 0xe5, 0x68, 0x12, 0xfe, 0x5b, 0xdf, 0xc8, 0x24, 0xaa, 0x3a, 0x2d, 0x92, - 0xa6, 0xf3, 0x4d, 0xdd, 0x75, 0xb5, 0x3e, 0x5a, 0x21, 0x96, 0xa3, 0x3c, 0x7f, 0x2c, 0x4c, 0xf7, - 0x29, 0xd9, 0x0c, 0xf8, 0xb7, 0x34, 0xc3, 0x04, 0xef, 0x8f, 0x85, 0x7d, 0xb8, 0x58, 0x5c, 0x45, - 0xb2, 0x28, 0x06, 0x62, 0x21, 0x82, 0x4c, 0x23, 0x2c, 0xeb, 0x3d, 0x5e, 0xbe, 0xdc, 0x3c, 0xd0, - 0x54, 0x77, 0x77, 0xe6, 0x26, 0xe4, 0x4f, 0x64, 0x00, 0x55, 0x5e, 0x55, 0x7e, 0x00, 0xdd, 0xe7, - 0xcd, 0x46, 0x81, 0xb9, 0x21, 0x65, 0xbe, 0x19, 0x17, 0x9a, 0xbd, 0x5a, 0x49, 0x70, 0xa0, 0x3a, - 0x03, 0x78, 0x14, 0x4d, 0x0e, 0x34, 0x46, 0x9a, 0x83, 0xfa, 0xf9, 0x3c, 0x1f, 0x22, 0x2b, 0x41, - 0x99, 0x54, 0x94, 0x1c, 0x3a, 0xcc, 0x1d, 0x88, 0x33, 0x5c, 0x3e, 0x56, 0x25, 0x3e, 0x86, 0x8a, - 0xfc, 0x01, 0x62, 0xc2, 0xd6, 0xf1, 0x45, 0xf2, 0x48, 0x1b, 0xa5, 0xd2, 0x94, 0xe4, 0xd0, 0x61, - 0x6d, 0x5f, 0x5f, 0x66, 0x60, 0x77, 0x5d, 0xad, 0xcf, 0x28, 0x17, 0x77, 0xc2, 0x32, 0x91, 0xb0, - 0xb2, 0x80, 0xb6, 0x17, 0x54, 0x59, 0xf6, 0xea, 0x85, 0xd2, 0x43, 0xfe, 0x97, 0xe2, 0x6e, 0x7e, - 0x22, 0xe0, 0xe4, 0x46, 0xc4, 0xde, 0xd1, 0xd6, 0x4e, 0xad, 0x75, 0x24, 0x39, 0x38, 0x44, 0x37, - 0x58, 0xb9, 0x1e, 0x0d, 0xf5, 0xf3, 0xea, 0xd9, 0x31, 0x7c, 0xc8, 0x42, 0xb9, 0xaf, 0xc8, 0x48, - 0xce, 0xaa, 0xf7, 0x5c, 0xf5, 0x4b, 0x55, 0x7e, 0x1e, 0xfd, 0xcc, 0xeb, 0x80, 0x0e, 0x16, 0xdd, - 0xd3, 0xb4, 0x4b, 0x48, 0x74, 0x4f, 0xe6, 0x2b, 0xca, 0xa6, 0xff, 0xa9, 0x60, 0xcc, 0xe7, 0x53, - 0x41, 0xef, 0xdf, 0xf3, 0x6f, 0x5d, 0xe8, 0x2e, 0x4b, 0xdf, 0xb7, 0x07, 0xdb, 0xf0, 0x99, 0x4e, - 0xb8, 0x05, 0x96, 0xe0, 0xf3, 0xe6, 0x8d, 0x36, 0xbe, 0x83, 0xed, 0x51, 0x55, 0x7e, 0x08, 0x2d, - 0xf3, 0x3a, 0xa1, 0x44, 0x2a, 0x71, 0xc2, 0xb7, 0x67, 0x9f, 0x0b, 0xcd, 0x64, 0x7a, 0x50, 0x88, - 0x75, 0x8b, 0x09, 0x7c, 0x19, 0xca, 0x0f, 0x1b, 0xc4, 0xbd, 0x40, 0x95, 0xe7, 0x7a, 0x49, 0x81, - 0x74, 0x27, 0xb3, 0xd7, 0xba, 0x1b, 0x48, 0x46, 0x6b, 0x20, 0x6d, 0x52, 0x07, 0xb8, 0x68, 0xc0, - 0xd4, 0x06, 0x68, 0x64, 0xb8, 0xc0, 0x45, 0x52, 0xb1, 0xd6, 0x7b, 0x59, 0x3b, 0x7d, 0x9a, 0x79, - 0xb4, 0x43, 0xa9, 0xf8, 0x73, 0x34, 0x53, 0xb7, 0xf4, 0x51, 0xfe, 0xcf, 0xb6, 0x6a, 0xb9, 0x2a, - 0x2f, 0xf2, 0x5a, 0x6b, 0xb3, 0x47, 0x00, 0x71, 0x89, 0x7d, 0x56, 0xc0, 0x2a, 0xcc, 0xf8, 0xd0, - 0x22, 0xaf, 0x75, 0x76, 0xd9, 0x5d, 0x50, 0xea, 0xfd, 0x4b, 0x01, 0x95, 0xac, 0x56, 0x12, 0x26, - 0xf0, 0x6f, 0x95, 0x7e, 0xab, 0xaa, 0x55, 0xf9, 0x29, 0xb4, 0xc2, 0xeb, 0x38, 0x2a, 0xe9, 0x1e, - 0x58, 0x56, 0xf3, 0x74, 0xe2, 0x3c, 0x25, 0x79, 0xfe, 0xdc, 0x85, 0xee, 0xb6, 0x69, 0x7f, 0x7b, - 0x90, 0xca, 0x46, 0x13, 0xa9, 0xdc, 0x93, 0x4d, 0x2a, 0x96, 0x95, 0x1d, 0x1f, 0xb1, 0xd0, 0x74, - 0x0e, 0xce, 0x68, 0x91, 0xe6, 0xe4, 0xc0, 0xab, 0x27, 0x2d, 0x20, 0xe4, 0x23, 0xdb, 0x97, 0x90, - 0x8a, 0xb1, 0xeb, 0x85, 0xf1, 0xee, 0xfa, 0x1a, 0x84, 0xe0, 0x2f, 0x72, 0x80, 0x02, 0x22, 0xef, - 0x55, 0x65, 0xb7, 0x97, 0x2b, 0x96, 0x44, 0xbe, 0x29, 0xa5, 0x33, 0xae, 0x5e, 0x7c, 0x1a, 0x4d, - 0x81, 0x5f, 0x3c, 0xd1, 0x90, 0x00, 0xf0, 0x7c, 0x39, 0x1b, 0x01, 0x25, 0x13, 0xbe, 0xaa, 0x0a, - 0x93, 0x35, 0x2a, 0xf5, 0x72, 0x93, 0x31, 0x8f, 0xd7, 0xf3, 0xa7, 0x02, 0x39, 0xcf, 0x6a, 0xf0, - 0x4e, 0x06, 0xa0, 0x6f, 0x97, 0x1e, 0xe8, 0xc2, 0x39, 0x8c, 0x89, 0x1d, 0x2a, 0xe4, 0x43, 0x6e, - 0x98, 0x88, 0x89, 0x14, 0xfe, 0x10, 0xce, 0x0c, 0x73, 0xd3, 0xdb, 0x83, 0x10, 0xd6, 0x9a, 0x08, - 0xa1, 0xd4, 0x4a, 0x08, 0x6c, 0x05, 0x27, 0x7c, 0x5c, 0xd8, 0x61, 0x83, 0x1d, 0x17, 0x56, 0x4c, - 0x7a, 0x7e, 0xeb, 0x42, 0x85, 0x3f, 0x8f, 0x84, 0x41, 0x0c, 0x5c, 0x82, 0x26, 0xed, 0xc2, 0x7f, - 0xb3, 0x3d, 0x50, 0xa2, 0xca, 0xb3, 0xbc, 0xb4, 0x48, 0x9a, 0xa2, 0x75, 0x0f, 0xa4, 0x8f, 0x5c, - 0xd4, 0xba, 0x86, 0xb0, 0x0c, 0x07, 0x85, 0xe2, 0x72, 0x94, 0x8f, 0xff, 0xe2, 0x71, 0xc6, 0xef, - 0xf9, 0xe9, 0x7a, 0x1b, 0x76, 0xb0, 0x60, 0x68, 0xb1, 0x0a, 0x15, 0xe2, 0x7f, 0x09, 0xb5, 0x8c, - 0x6f, 0x9f, 0xeb, 0xf0, 0xe2, 0x13, 0xa8, 0x08, 0xff, 0x0d, 0x44, 0x92, 0x3f, 0xae, 0xc6, 0x46, - 0x03, 0x71, 0x3d, 0x2a, 0x8a, 0x37, 0x6f, 0x0d, 0x2b, 0x89, 0x75, 0xcd, 0x4d, 0xd4, 0x0f, 0x78, - 0xa9, 0x2a, 0x2f, 0xf6, 0x1a, 0xa5, 0xd2, 0x3d, 0x99, 0x81, 0xf3, 0xc6, 0xb0, 0xc9, 0x1f, 0xe9, - 0x9e, 0x36, 0xad, 0xef, 0x50, 0xfa, 0xc6, 0x61, 0x1a, 0x0c, 0xd6, 0x80, 0xae, 0xc2, 0x53, 0x46, - 0x73, 0xbc, 0x3a, 0x0e, 0xb9, 0x29, 0x53, 0xa2, 0x1b, 0x9a, 0x84, 0x66, 0x90, 0x45, 0xa1, 0xf7, - 0x07, 0x82, 0xe9, 0xc7, 0xac, 0x0a, 0x9e, 0x39, 0xd9, 0x8a, 0xd1, 0xe4, 0xd0, 0x61, 0x76, 0xd3, - 0xe3, 0xaf, 0x78, 0x4f, 0xa3, 0x29, 0xf4, 0x07, 0xc7, 0x6d, 0x00, 0x05, 0x5c, 0xb9, 0x54, 0x4c, - 0x5f, 0x4c, 0xb0, 0x64, 0x41, 0x46, 0x95, 0xf8, 0x3c, 0x12, 0xe9, 0xcf, 0x5a, 0x4e, 0xa2, 0x86, - 0x85, 0x20, 0x77, 0x19, 0x9b, 0x6a, 0x49, 0xa4, 0x97, 0x0a, 0x22, 0x52, 0xd3, 0xcd, 0x67, 0x03, - 0x27, 0xd6, 0xa1, 0x69, 0xb4, 0x74, 0xb3, 0x12, 0x8b, 0x1b, 0xa2, 0x3a, 0xb9, 0x50, 0x64, 0x55, - 0xb1, 0x41, 0xa6, 0x3b, 0x3b, 0x52, 0xbd, 0x97, 0x7c, 0x59, 0xb5, 0xe2, 0xd3, 0x3a, 0x92, 0xd6, - 0x6f, 0xa0, 0x69, 0x14, 0x3c, 0x7c, 0x26, 0xc6, 0xf5, 0x1b, 0xf4, 0x51, 0x91, 0x54, 0xe4, 0xe9, - 0xab, 0xc3, 0xe9, 0xe1, 0xd3, 0x3e, 0xa3, 0x9a, 0xc3, 0x15, 0x91, 0x99, 0x27, 0x59, 0x71, 0x45, - 0xc4, 0x66, 0x36, 0x0c, 0x22, 0x2c, 0xfb, 0xf8, 0x2a, 0xf1, 0x80, 0x80, 0xa6, 0xd2, 0xdf, 0x70, - 0x99, 0xa5, 0xe9, 0x0d, 0x1a, 0x54, 0x39, 0xe8, 0x35, 0xd7, 0x48, 0xf4, 0xb2, 0x4e, 0x33, 0x2b, - 0xf8, 0x9a, 0xc3, 0x58, 0x76, 0x71, 0x67, 0x6e, 0x1e, 0xca, 0x9c, 0xed, 0x4a, 0x0e, 0xf6, 0xb9, - 0x49, 0xd4, 0x2f, 0x5c, 0x44, 0x93, 0x15, 0x0e, 0xf6, 0xb9, 0xeb, 0x82, 0x24, 0x56, 0xe9, 0xe8, - 0xf1, 0x0f, 0xd2, 0x37, 0xfa, 0x71, 0x81, 0xbc, 0x35, 0x1c, 0x89, 0x35, 0xf9, 0x1b, 0xdd, 0x90, - 0x50, 0x69, 0x91, 0xcf, 0xfc, 0x0d, 0x31, 0x84, 0x0a, 0x1b, 0x23, 0x01, 0xf0, 0xe2, 0x85, 0x64, - 0x08, 0x6b, 0x55, 0xf9, 0x19, 0xaf, 0x5e, 0x28, 0x3d, 0x89, 0x79, 0x2d, 0xc7, 0xf4, 0xcb, 0x1a, - 0x76, 0x28, 0xf0, 0x0a, 0x06, 0x6f, 0xe7, 0xd3, 0xa7, 0xd3, 0x43, 0x17, 0xb4, 0x8e, 0xf7, 0x35, - 0xb5, 0x4b, 0xdf, 0xa7, 0x50, 0x02, 0x63, 0x5f, 0xe4, 0xd3, 0x7b, 0x12, 0x7f, 0x8a, 0x8a, 0xe9, - 0xb7, 0xd7, 0x28, 0x2d, 0x4a, 0x23, 0x71, 0x1a, 0x2e, 0xaa, 0x5e, 0xae, 0xca, 0x4b, 0xbd, 0xa6, - 0x0a, 0xe9, 0x1e, 0x3a, 0x6f, 0xd2, 0x4f, 0x19, 0xd0, 0xe1, 0x67, 0xad, 0xbb, 0x31, 0xd5, 0x41, - 0xd9, 0x22, 0x9f, 0xa9, 0x41, 0x55, 0x99, 0x2a, 0xdf, 0x87, 0xee, 0xf5, 0x5a, 0xc8, 0x42, 0x9a, - 0xae, 0xef, 0x79, 0x4a, 0x3c, 0x27, 0xf2, 0x40, 0xfd, 0xc5, 0x71, 0x35, 0x0a, 0xff, 0xe5, 0x0f, - 0xae, 0x47, 0xb3, 0xc4, 0x5b, 0xb7, 0xe3, 0x41, 0xcf, 0x9a, 0xb2, 0xf3, 0xfe, 0x69, 0xfe, 0xc8, - 0xcb, 0x63, 0x1b, 0xd3, 0xf1, 0xc8, 0x63, 0xcd, 0xb9, 0x9b, 0xdc, 0x4b, 0x68, 0x66, 0x8c, 0x17, - 0x55, 0x08, 0x29, 0x03, 0xa1, 0xd4, 0xa9, 0xf2, 0x2a, 0xaf, 0xb5, 0x56, 0x5a, 0x2a, 0xef, 0x6a, - 0x8e, 0x29, 0x6e, 0x82, 0x89, 0xe4, 0x60, 0x1f, 0x6f, 0xa9, 0x48, 0xf7, 0xb4, 0xd9, 0x8a, 0xf1, - 0xd6, 0x5e, 0xaa, 0x70, 0xef, 0xa8, 0xd6, 0x9b, 0x1b, 0xa9, 0xd2, 0xbd, 0xdc, 0x79, 0x01, 0x88, - 0x60, 0xef, 0xaf, 0xb8, 0xe3, 0x37, 0xe5, 0x42, 0xf3, 0x9d, 0xba, 0xb9, 0x3d, 0x4e, 0xe1, 0x2d, - 0xa6, 0x53, 0xd8, 0x6d, 0x55, 0xf8, 0x98, 0xb7, 0xa7, 0x63, 0x3a, 0x0b, 0x1e, 0x39, 0xa6, 0x73, - 0xb9, 0x56, 0x95, 0x65, 0xf4, 0x94, 0x77, 0x0c, 0x34, 0x49, 0xf3, 0x72, 0xa2, 0xdb, 0xf3, 0x7f, - 0xe5, 0xa1, 0x52, 0xf3, 0xc9, 0x8e, 0x4f, 0x9b, 0xaf, 0x40, 0x74, 0xfb, 0x02, 0x17, 0xbc, 0xc7, - 0xac, 0x5b, 0x7f, 0xbc, 0xda, 0x8b, 0x38, 0x2a, 0x68, 0x89, 0x06, 0xea, 0x58, 0xea, 0xbd, 0x17, - 0x54, 0xf9, 0xe7, 0x5e, 0x28, 0x91, 0x9e, 0x83, 0x6c, 0x2d, 0xa9, 0xd3, 0x87, 0x92, 0x83, 0xef, - 0xb5, 0x44, 0x03, 0x59, 0x07, 0xee, 0x62, 0x77, 0x66, 0x3f, 0xb5, 0xd9, 0x95, 0x13, 0x4d, 0x39, - 0xf1, 0x6d, 0x21, 0x2b, 0x6a, 0x70, 0xb1, 0xac, 0x33, 0x1a, 0x7a, 0x16, 0x77, 0x90, 0x3c, 0xce, - 0x09, 0x96, 0x86, 0x67, 0x93, 0x2a, 0xfb, 0xbc, 0x50, 0x22, 0xd5, 0x19, 0x6d, 0x81, 0x63, 0xcb, - 0x9b, 0xe5, 0xba, 0x35, 0x72, 0xf5, 0x9a, 0x95, 0x50, 0x51, 0xb9, 0x69, 0x9d, 0x5e, 0x92, 0x1c, - 0x3c, 0x00, 0x85, 0x8b, 0x98, 0xcb, 0x09, 0x7c, 0x3e, 0xd5, 0xd9, 0x9a, 0xea, 0xed, 0xf4, 0x41, - 0x8f, 0xcc, 0x0c, 0x9e, 0x63, 0xb1, 0xa4, 0x07, 0x6c, 0x24, 0x31, 0x5d, 0xd8, 0xe0, 0xa9, 0xeb, - 0x2f, 0xc0, 0xb4, 0x6a, 0xed, 0xe7, 0x76, 0xcb, 0x33, 0x86, 0x49, 0xab, 0x24, 0x9b, 0xb4, 0x98, - 0xb8, 0x34, 0x3e, 0xf1, 0x96, 0x26, 0xb8, 0xca, 0x85, 0x0f, 0x76, 0x75, 0xce, 0x81, 0x58, 0xcf, - 0x7f, 0xcd, 0x47, 0xc5, 0xeb, 0xa3, 0x0a, 0x71, 0x4c, 0x0f, 0xaf, 0x89, 0x34, 0x88, 0x35, 0xa8, - 0x98, 0x71, 0x48, 0x2e, 0x61, 0x3a, 0xd1, 0x8e, 0x98, 0x2a, 0xa4, 0x62, 0x70, 0x52, 0xa3, 0x02, - 0x82, 0xa9, 0x4e, 0x7c, 0x0c, 0x5f, 0xfe, 0xe0, 0xb7, 0x7e, 0x01, 0x22, 0x08, 0xe2, 0x8a, 0xa5, - 0x42, 0xe8, 0xa0, 0xae, 0xd6, 0xc7, 0x95, 0x8a, 0xcb, 0xf4, 0x64, 0x69, 0x1c, 0x25, 0xb1, 0x64, - 0x69, 0xd3, 0x58, 0xca, 0xbc, 0x4c, 0xff, 0x65, 0xed, 0xc6, 0x51, 0x3d, 0x3d, 0x1e, 0xb7, 0x90, - 0xf9, 0x76, 0x0b, 0xa9, 0xf5, 0x9f, 0xcd, 0xf4, 0x9f, 0x4d, 0x1d, 0x3f, 0xaf, 0xdd, 0x3c, 0x9e, - 0xbd, 0x90, 0x8b, 0xd1, 0xa4, 0x48, 0x74, 0x53, 0x5c, 0x89, 0x51, 0x72, 0x98, 0xad, 0xca, 0x77, - 0x78, 0x69, 0x91, 0x54, 0x04, 0x52, 0x54, 0x72, 0x68, 0xc8, 0x47, 0x8b, 0xc4, 0x15, 0x08, 0x05, - 0x20, 0xfb, 0x31, 0x4b, 0x4e, 0x5e, 0x04, 0x2b, 0xc6, 0x15, 0x4b, 0xc5, 0x20, 0xce, 0xb0, 0xfc, - 0xcf, 0x46, 0x8d, 0xb8, 0x92, 0x97, 0x72, 0x41, 0x6e, 0x7a, 0x40, 0x95, 0x17, 0xf2, 0x52, 0xee, - 0x5d, 0xf0, 0x51, 0x8b, 0x6d, 0x83, 0x97, 0x78, 0x57, 0xf2, 0xd6, 0xc9, 0x42, 0xae, 0x1b, 0xc3, - 0x3a, 0x69, 0xe9, 0x86, 0xc6, 0xd0, 0xe2, 0xed, 0x90, 0xdc, 0x6a, 0x93, 0xe3, 0xb6, 0xc8, 0x66, - 0xb5, 0x41, 0x74, 0x86, 0xc5, 0xa2, 0x87, 0xa8, 0xa9, 0xae, 0x0a, 0x7f, 0x18, 0x79, 0xbc, 0xa6, - 0x7d, 0x24, 0x89, 0xf0, 0x75, 0xc0, 0x39, 0xe0, 0xdf, 0xf3, 0x57, 0x2e, 0x34, 0x63, 0xa3, 0x3f, - 0xbe, 0xc3, 0xb4, 0xe1, 0x3c, 0x76, 0x1b, 0x2e, 0x6b, 0x3f, 0xcd, 0xb7, 0xee, 0x27, 0xd3, 0xa6, - 0x99, 0x6d, 0xde, 0x34, 0xfa, 0xbe, 0x28, 0xc9, 0xda, 0x17, 0xc6, 0xaa, 0xcf, 0x36, 0xaf, 0xba, - 0xbe, 0xba, 0xf3, 0xad, 0xab, 0x6b, 0x5a, 0xbe, 0xb9, 0x96, 0xe5, 0xe3, 0x57, 0x65, 0xae, 0x65, - 0x55, 0x78, 0x64, 0xcf, 0xd6, 0x53, 0x90, 0x15, 0xc1, 0x37, 0x69, 0x9a, 0xb0, 0x52, 0x2e, 0x33, - 0x1a, 0x49, 0xae, 0xce, 0xa5, 0x2d, 0xf3, 0x64, 0x2d, 0xd0, 0x14, 0x33, 0x76, 0x70, 0x99, 0xe7, - 0xef, 0x5d, 0x68, 0x0a, 0x46, 0xeb, 0x86, 0x84, 0x12, 0xc5, 0x18, 0x5d, 0x96, 0x95, 0x6f, 0x70, - 0x5c, 0x24, 0xb4, 0x02, 0x15, 0xc6, 0x13, 0x4a, 0x94, 0xbb, 0x3f, 0x81, 0xb9, 0x83, 0x15, 0xea, - 0x89, 0x5c, 0xf9, 0x7c, 0xab, 0x7a, 0xad, 0x58, 0x85, 0x0a, 0x1a, 0x89, 0x44, 0x9c, 0x67, 0x18, - 0x21, 0xa0, 0x44, 0x2a, 0x81, 0x3d, 0x90, 0xee, 0xeb, 0x4c, 0x0f, 0x5d, 0x28, 0xab, 0x5b, 0xb7, - 0x6a, 0x7d, 0xf9, 0x4a, 0x9f, 0x6f, 0xbd, 0x6f, 0x91, 0x0f, 0x00, 0xc4, 0xe5, 0xd9, 0xd4, 0x4b, - 0x38, 0xb7, 0x4e, 0xbd, 0xc5, 0xf6, 0x74, 0xfb, 0xe5, 0xe8, 0x70, 0xfc, 0x9b, 0xf6, 0xec, 0x64, - 0x70, 0x4c, 0x20, 0x5c, 0xb6, 0x2e, 0x1c, 0x4f, 0xf8, 0xc3, 0xb0, 0x2b, 0xbf, 0xbc, 0xac, 0xb1, - 0x3c, 0x4b, 0xd6, 0xa0, 0x36, 0x22, 0x90, 0x35, 0xa6, 0x67, 0x5d, 0x5a, 0xbe, 0x0a, 0x71, 0xa3, - 0x9e, 0xaa, 0x26, 0xf2, 0x59, 0x82, 0x7d, 0xc9, 0x4b, 0x0a, 0x24, 0xaf, 0x7e, 0x2e, 0x80, 0x1d, - 0xde, 0xed, 0x8f, 0x56, 0x34, 0x34, 0xfb, 0xc3, 0x0d, 0xbb, 0xb6, 0x47, 0x9a, 0x2b, 0x96, 0x96, - 0xbb, 0x9b, 0xe3, 0x15, 0x2f, 0x29, 0xf1, 0xc4, 0xd2, 0x0a, 0x3f, 0xf3, 0x66, 0x00, 0xb5, 0x45, - 0x2d, 0x42, 0xe1, 0x48, 0x50, 0x59, 0xe5, 0x6f, 0x0a, 0x35, 0xee, 0xa4, 0x1c, 0x94, 0x24, 0x06, - 0xe4, 0x8a, 0xa5, 0xe2, 0x54, 0xef, 0x90, 0x76, 0x6a, 0x7f, 0xfa, 0xea, 0xb0, 0xd6, 0x71, 0x9c, - 0xb5, 0xe7, 0x00, 0xc4, 0xfb, 0x51, 0x5e, 0x20, 0xda, 0x4c, 0xdf, 0xea, 0xde, 0xa9, 0xca, 0x33, - 0xbd, 0xf8, 0xb7, 0x84, 0x6a, 0xea, 0x37, 0xb9, 0x53, 0x67, 0x06, 0x53, 0x47, 0x2f, 0xfb, 0x70, - 0x81, 0xb8, 0x02, 0x4d, 0x6a, 0x52, 0x9a, 0x22, 0xb1, 0x9d, 0x84, 0xf4, 0xa6, 0x56, 0xdf, 0xa7, - 0xca, 0x1e, 0x2f, 0x2d, 0x92, 0x4a, 0xb4, 0xbd, 0xed, 0x5a, 0xdf, 0x1b, 0xda, 0xb9, 0x0b, 0xda, - 0xe5, 0x6e, 0xdd, 0xb7, 0xdd, 0xbd, 0xba, 0xda, 0x47, 0x21, 0xc4, 0xcd, 0xa8, 0x60, 0x6b, 0x68, - 0x97, 0xce, 0x30, 0x49, 0xb4, 0x4e, 0x28, 0x91, 0x96, 0x27, 0x07, 0x7b, 0x08, 0x59, 0x94, 0xbb, - 0x21, 0xa3, 0x6f, 0xea, 0x8d, 0x01, 0x38, 0x3d, 0xa1, 0x22, 0x7d, 0x61, 0x77, 0xaa, 0xb7, 0x33, - 0xb3, 0xef, 0x3d, 0x6d, 0x78, 0x48, 0x0f, 0x53, 0xe0, 0x83, 0xc6, 0xe2, 0x73, 0x9c, 0x95, 0xb8, - 0xc8, 0xc8, 0xc6, 0x67, 0x58, 0x89, 0xef, 0x67, 0x7f, 0xe9, 0x4d, 0xe9, 0x03, 0x9f, 0x63, 0xd7, - 0xcb, 0x48, 0x84, 0x85, 0xca, 0xb8, 0xd2, 0xb8, 0x8d, 0x8b, 0xae, 0x20, 0x1e, 0x14, 0xb2, 0xd8, - 0x22, 0x61, 0x0c, 0xd5, 0xbf, 0x52, 0xe5, 0xf5, 0x59, 0xe7, 0xf0, 0x53, 0xda, 0x8d, 0xd7, 0x59, - 0xb3, 0xe4, 0xe0, 0x10, 0xee, 0x88, 0x38, 0x6f, 0xf1, 0x40, 0xfc, 0x51, 0x5d, 0x16, 0x09, 0x37, - 0x86, 0xc2, 0x4a, 0x65, 0x64, 0xdb, 0x36, 0xfc, 0xef, 0xa2, 0xcf, 0xab, 0x67, 0xc5, 0xee, 0xf0, - 0xfd, 0xc8, 0x37, 0x09, 0xca, 0x7d, 0x93, 0x69, 0x85, 0x99, 0x05, 0x57, 0xf5, 0x08, 0xaa, 0x7c, - 0x4c, 0x40, 0xaf, 0x0b, 0xde, 0xbb, 0x30, 0x35, 0xd8, 0x10, 0x82, 0xf4, 0x32, 0xf8, 0x14, 0xc0, - 0x62, 0x83, 0x7c, 0xf1, 0x0d, 0x79, 0x84, 0xfc, 0x8d, 0x8b, 0xbb, 0x12, 0x9b, 0x87, 0x76, 0x7b, - 0x88, 0x86, 0xeb, 0x4d, 0xa2, 0xe1, 0xdc, 0x6c, 0xd1, 0x90, 0x9f, 0xd2, 0xf8, 0xc4, 0xc3, 0x55, - 0xaa, 0x5c, 0x83, 0x64, 0xef, 0x9d, 0x18, 0x2b, 0xeb, 0x22, 0x41, 0x13, 0x32, 0xa4, 0x12, 0xeb, - 0x42, 0x39, 0xf9, 0x7d, 0xfc, 0x6b, 0x21, 0x2a, 0xe6, 0xbf, 0x2e, 0x3e, 0x82, 0x0a, 0xc3, 0xb4, - 0x3f, 0xfe, 0x78, 0xd1, 0x0b, 0x81, 0xd8, 0x4f, 0x5c, 0xa4, 0x72, 0xa1, 0x5e, 0x8e, 0x1b, 0x26, - 0x76, 0x46, 0x15, 0xee, 0x80, 0x81, 0x86, 0xac, 0x90, 0x71, 0x09, 0x76, 0xb4, 0xb0, 0x72, 0xcc, - 0xe8, 0x39, 0x16, 0x93, 0xc7, 0x31, 0x7a, 0x27, 0x16, 0x63, 0xe2, 0x2d, 0xf7, 0x01, 0x6f, 0x81, - 0xf8, 0x0b, 0x77, 0xa8, 0xf2, 0x0c, 0xe0, 0x2d, 0x45, 0x81, 0x68, 0xb3, 0x3d, 0x6b, 0x29, 0x70, - 0x66, 0x2d, 0xfd, 0xd7, 0x47, 0xf7, 0xd9, 0xb3, 0x96, 0xfb, 0x50, 0x5e, 0x83, 0xce, 0xc1, 0xe0, - 0x2b, 0x0d, 0xf8, 0x2b, 0x0d, 0xc6, 0x57, 0x1a, 0xa2, 0xcd, 0x62, 0x5c, 0x17, 0x01, 0x26, 0x1b, - 0xe9, 0x08, 0x59, 0x16, 0xd2, 0x75, 0x74, 0x0e, 0xe4, 0xe6, 0x75, 0x6b, 0xa4, 0x6b, 0xc3, 0xca, - 0x35, 0x6b, 0x6e, 0x8d, 0xf4, 0x64, 0xce, 0x5e, 0x4c, 0x9f, 0x1b, 0xd2, 0xfa, 0x4f, 0x25, 0x3f, - 0xd9, 0xaf, 0x75, 0x0f, 0x64, 0x3e, 0xec, 0x4b, 0x5e, 0xbf, 0x8c, 0xab, 0xd7, 0xaf, 0xa9, 0xdd, - 0xb2, 0x7e, 0xd3, 0xc6, 0x6c, 0x90, 0x8f, 0x3f, 0xd0, 0x8e, 0xf4, 0xa7, 0x6f, 0xb4, 0xe9, 0xf2, - 0x45, 0x1d, 0x2a, 0x6a, 0x0e, 0x87, 0x12, 0xf5, 0xb1, 0x50, 0x40, 0x21, 0xac, 0xcf, 0x05, 0x2a, - 0x4d, 0xa3, 0x54, 0x9a, 0x03, 0x6d, 0x93, 0xc3, 0x1f, 0xa7, 0xce, 0x8c, 0xe8, 0x13, 0xbc, 0x35, - 0xd2, 0xa3, 0xb5, 0xbf, 0xea, 0x33, 0xe0, 0xc4, 0xe5, 0xa8, 0x00, 0xb3, 0x7d, 0x2c, 0xc1, 0xe4, - 0x31, 0xb5, 0x21, 0x94, 0x48, 0x22, 0x68, 0xd4, 0xf0, 0x9d, 0x93, 0x9d, 0x25, 0x3e, 0xa8, 0x12, - 0x7f, 0xcd, 0xf1, 0x47, 0x64, 0xdc, 0x39, 0x0d, 0xfe, 0xb8, 0x4a, 0x1b, 0xb8, 0x9e, 0x3a, 0x78, - 0xde, 0xe0, 0x8e, 0xbd, 0x07, 0x30, 0xcf, 0xed, 0x69, 0x33, 0x9c, 0x54, 0xb3, 0xb8, 0x32, 0xf0, - 0x4f, 0xfd, 0x63, 0xd0, 0x92, 0xe3, 0x9f, 0x0d, 0x68, 0x1a, 0x63, 0x5f, 0xf5, 0x91, 0x48, 0x63, - 0x5d, 0x2d, 0x48, 0x4e, 0xd5, 0x4f, 0xa9, 0xf2, 0x13, 0xde, 0xac, 0x2a, 0xc9, 0x0b, 0x7c, 0x5d, - 0x53, 0x2f, 0x62, 0xaa, 0xb8, 0x72, 0xa6, 0xae, 0xb6, 0x9c, 0x4f, 0xeb, 0xae, 0x75, 0x5d, 0x1f, - 0x6d, 0x3f, 0x40, 0x3f, 0x91, 0xd5, 0x56, 0x3c, 0x2d, 0x20, 0x04, 0xe1, 0x0a, 0x6a, 0x43, 0xf1, - 0x1d, 0xe4, 0x2d, 0xb9, 0xcd, 0xdd, 0xae, 0xd6, 0x9f, 0xf0, 0xe3, 0x7a, 0x48, 0xfe, 0xc2, 0x35, - 0x90, 0x36, 0xea, 0x1b, 0x37, 0x3d, 0x7c, 0x3a, 0xfd, 0xe6, 0x1b, 0x6c, 0xa6, 0xf0, 0xe9, 0xac, - 0x03, 0x67, 0xb1, 0x3b, 0x39, 0xdc, 0x9e, 0x1c, 0x6e, 0xb7, 0xe3, 0xf7, 0xe0, 0x9c, 0xae, 0xb5, - 0x5f, 0x4d, 0x5d, 0xbd, 0xe8, 0xe3, 0xbe, 0x20, 0xf6, 0x0a, 0xa8, 0x28, 0x48, 0xbf, 0x1f, 0x2f, - 0x99, 0x6a, 0x7f, 0xf9, 0xd4, 0x07, 0x48, 0x62, 0x70, 0x1b, 0xf0, 0x6c, 0x7c, 0xa9, 0xa3, 0x97, - 0x53, 0x07, 0xfa, 0xbf, 0xb2, 0xf1, 0x19, 0x1f, 0xa8, 0xc2, 0xa4, 0x8c, 0x4a, 0xbc, 0x85, 0xeb, - 0x6c, 0x19, 0x88, 0x47, 0x2b, 0x40, 0xf7, 0xac, 0x56, 0x12, 0x6b, 0xfd, 0x44, 0xe1, 0xdb, 0xdc, - 0xd0, 0xa0, 0xc4, 0x13, 0x4a, 0x70, 0xad, 0x3f, 0xb0, 0x3d, 0xf4, 0x95, 0xe8, 0x7b, 0x1e, 0xcf, - 0x92, 0xc1, 0xee, 0xcd, 0x25, 0x83, 0x65, 0x2b, 0x3d, 0xdf, 0x11, 0xcc, 0x62, 0x6f, 0xb7, 0xa0, - 0xca, 0x4d, 0xde, 0xc2, 0x40, 0x63, 0x1c, 0xb4, 0xc0, 0x7e, 0xaa, 0x05, 0x06, 0xd1, 0x77, 0xcd, - 0xd2, 0x25, 0x4b, 0x80, 0x52, 0x97, 0x54, 0x2c, 0x5d, 0xb2, 0x24, 0x39, 0xf8, 0x9e, 0x1e, 0xc0, - 0x62, 0xcd, 0x43, 0x46, 0xd5, 0x43, 0x59, 0x55, 0x4b, 0x97, 0xb0, 0x3a, 0x0c, 0x44, 0x8a, 0x89, - 0xbb, 0xf6, 0x6b, 0xe9, 0xbe, 0xce, 0x45, 0x9f, 0x57, 0xcf, 0x8d, 0x95, 0xfa, 0xf2, 0x31, 0x90, - 0x2f, 0x1f, 0xf7, 0xe2, 0x2b, 0x20, 0x0d, 0x7c, 0x05, 0x6b, 0x24, 0xf2, 0x0f, 0x88, 0xd8, 0x26, - 0x99, 0x31, 0x7f, 0x42, 0x32, 0xe3, 0x12, 0x50, 0x51, 0xd5, 0x52, 0xe1, 0x8e, 0x1c, 0x9d, 0x50, - 0x22, 0x4d, 0x03, 0xa9, 0x28, 0x7d, 0xe3, 0x70, 0x7a, 0xb8, 0xb7, 0xae, 0x16, 0xf4, 0x4b, 0xb5, - 0xdf, 0x94, 0x34, 0xd7, 0xc2, 0x78, 0x11, 0x48, 0x73, 0x24, 0x51, 0x16, 0xe5, 0x45, 0x1b, 0x53, - 0x07, 0x2f, 0x66, 0x0e, 0x1c, 0xa2, 0x07, 0xca, 0xb9, 0x36, 0xbc, 0x53, 0x39, 0x0b, 0xd6, 0xad, - 0x91, 0x2e, 0xc8, 0x8d, 0x5c, 0x3e, 0xda, 0x73, 0x44, 0x1b, 0x69, 0xfd, 0xac, 0x75, 0x8f, 0xa1, - 0x4c, 0x73, 0x6b, 0x1d, 0x27, 0xb4, 0x81, 0xeb, 0x3a, 0x70, 0xea, 0xf8, 0x19, 0xcc, 0x78, 0xae, - 0xec, 0xa1, 0xdc, 0x8c, 0x39, 0x58, 0x8e, 0xbd, 0x2b, 0x25, 0x6f, 0xea, 0xcc, 0xf5, 0xd4, 0x81, - 0xfe, 0x26, 0x02, 0x05, 0x6a, 0x7f, 0xaa, 0x22, 0xe3, 0x87, 0x07, 0x8a, 0x98, 0xff, 0xee, 0x42, - 0x9e, 0x5c, 0x3d, 0xde, 0x1e, 0x72, 0xcc, 0xcf, 0x4c, 0x72, 0xcc, 0xfd, 0x8e, 0x72, 0x8c, 0xd2, - 0x14, 0x6d, 0xf4, 0x27, 0x94, 0x9a, 0x48, 0x78, 0x5b, 0xa8, 0x61, 0x42, 0x7e, 0xad, 0xe3, 0x40, - 0x92, 0x54, 0x62, 0xc5, 0xaf, 0x93, 0x7c, 0xd3, 0x91, 0x87, 0xee, 0xb6, 0x48, 0x8e, 0xf1, 0x6f, - 0xeb, 0x6a, 0xb7, 0xc5, 0x7a, 0xb5, 0x93, 0x55, 0xf9, 0x49, 0x9e, 0x4c, 0x97, 0x72, 0x64, 0x5a, - 0xee, 0x86, 0x6d, 0x9c, 0xea, 0xda, 0xa7, 0xf5, 0xf7, 0x60, 0x84, 0x0d, 0x1d, 0xce, 0x7c, 0xf8, - 0x8e, 0xd6, 0xfd, 0x31, 0x7d, 0x55, 0x41, 0x70, 0xc9, 0x13, 0xf3, 0xf3, 0x68, 0x52, 0x28, 0x8a, - 0xe7, 0x4b, 0x99, 0x40, 0x8d, 0x2a, 0x3f, 0xe6, 0xa5, 0x45, 0x52, 0x25, 0x6e, 0xae, 0x87, 0x60, - 0xe1, 0x49, 0xbb, 0x1e, 0x8f, 0xf6, 0x64, 0x2b, 0xfb, 0x1e, 0x25, 0x1b, 0x98, 0xb4, 0xe0, 0xa3, - 0xed, 0x75, 0x9f, 0x13, 0x47, 0x7c, 0x4a, 0x73, 0xa8, 0xec, 0x7e, 0xa8, 0x2d, 0x39, 0xf8, 0x9e, - 0xfe, 0x35, 0x4a, 0x01, 0xff, 0xe8, 0x42, 0xa5, 0x76, 0x4d, 0x6f, 0x47, 0x8f, 0xb7, 0xbb, 0x6d, - 0xed, 0x26, 0xf8, 0x88, 0x03, 0x27, 0x18, 0xd8, 0xec, 0xd4, 0x05, 0x81, 0xc7, 0x82, 0x69, 0xcb, - 0xaf, 0x57, 0xe5, 0x35, 0xe8, 0x19, 0x6f, 0x0e, 0xac, 0x30, 0x8c, 0x66, 0xe1, 0xd2, 0x69, 0xb7, - 0x7f, 0x34, 0x19, 0x15, 0xe9, 0x23, 0x11, 0x1f, 0xa5, 0xe9, 0xe9, 0xd9, 0xe6, 0x26, 0x08, 0xa2, - 0x45, 0xd2, 0x1d, 0xf4, 0xa4, 0x19, 0x3a, 0x1c, 0xa2, 0x1f, 0xad, 0xab, 0xa5, 0x19, 0xe8, 0x6b, - 0xc5, 0xc7, 0xd0, 0xe4, 0x50, 0x38, 0xac, 0xc4, 0xea, 0xea, 0x29, 0x6e, 0x89, 0xc6, 0x90, 0x95, - 0x49, 0x33, 0xe9, 0x58, 0xf6, 0xb6, 0xa7, 0x6f, 0x1c, 0x4e, 0x0e, 0x0e, 0xd7, 0xd5, 0xfb, 0x58, - 0x9d, 0xf8, 0x3c, 0x2a, 0x0e, 0x71, 0xf7, 0x09, 0xba, 0xcb, 0x1f, 0x51, 0xe5, 0xe5, 0x5e, 0x53, - 0x85, 0xb4, 0x10, 0xc8, 0x97, 0xfa, 0x06, 0xf5, 0x1d, 0x4f, 0x5f, 0x7a, 0x27, 0x39, 0xf8, 0x01, - 0x3e, 0x09, 0xba, 0x07, 0x32, 0xaf, 0xde, 0x00, 0x6e, 0xed, 0x33, 0xb5, 0x11, 0x1f, 0xe4, 0x65, - 0x7d, 0xb2, 0x68, 0xe4, 0xe4, 0x99, 0x0e, 0xe3, 0x09, 0x44, 0x9b, 0x29, 0x7a, 0xc9, 0xf1, 0xb3, - 0x18, 0xe5, 0x35, 0x29, 0xcc, 0xe3, 0x81, 0xd0, 0x27, 0xfe, 0x2d, 0x89, 0xfa, 0xe0, 0xb5, 0xbe, - 0x37, 0x18, 0x7c, 0x93, 0xd2, 0x24, 0x3e, 0xca, 0x8b, 0xf8, 0xf7, 0xab, 0xf2, 0xbd, 0x20, 0xe2, - 0xcf, 0x05, 0xf8, 0x06, 0xd6, 0x39, 0x3f, 0xc2, 0x25, 0x20, 0xf5, 0x2f, 0x45, 0x79, 0x2d, 0xd1, - 0x00, 0x15, 0xf9, 0x09, 0xaa, 0xf0, 0x6f, 0x69, 0x16, 0x8d, 0xd1, 0xc0, 0xec, 0x95, 0x9b, 0xeb, - 0x6b, 0xdc, 0x75, 0xb5, 0x3e, 0x5c, 0x87, 0x09, 0x95, 0xf2, 0x8f, 0x42, 0x46, 0xa8, 0x4f, 0xeb, - 0xfc, 0xe3, 0x61, 0xbe, 0x21, 0x98, 0xb0, 0x6f, 0x8d, 0x74, 0x61, 0xd9, 0xff, 0x9d, 0x3d, 0xda, - 0xf5, 0x9b, 0xda, 0xc7, 0xa7, 0x6e, 0x8d, 0x74, 0xa5, 0x3e, 0xbe, 0xa2, 0xf5, 0x5e, 0xc5, 0xa3, - 0x79, 0xed, 0x8c, 0xf6, 0xf1, 0xa9, 0x74, 0x5f, 0xa7, 0xce, 0x66, 0x9e, 0x44, 0x45, 0x74, 0x39, - 0x5a, 0x1e, 0xa6, 0x0a, 0x0b, 0xb2, 0xf6, 0x46, 0xa9, 0x34, 0x03, 0x3e, 0x11, 0x8a, 0xb6, 0x3c, - 0x0c, 0xb4, 0xef, 0x33, 0x2a, 0xc5, 0x95, 0xba, 0x4f, 0x0c, 0x48, 0xf3, 0x10, 0xea, 0x97, 0xfa, - 0xc4, 0xb8, 0x59, 0x7c, 0x0d, 0xdd, 0x33, 0x26, 0x7b, 0xcd, 0x98, 0xa3, 0xcc, 0x0a, 0xaa, 0x8d, - 0x02, 0xc9, 0x1c, 0x0c, 0x89, 0x44, 0x1b, 0x35, 0x3f, 0xab, 0x8b, 0xec, 0x0e, 0x40, 0xf5, 0xf4, - 0x34, 0xe7, 0x31, 0x53, 0x6c, 0x68, 0x1d, 0xf5, 0x42, 0x86, 0xdf, 0x6c, 0x7f, 0x1b, 0xc3, 0x6f, - 0x26, 0x88, 0xa6, 0x07, 0x0c, 0xdb, 0x09, 0xa6, 0x09, 0x12, 0x76, 0xa9, 0xb0, 0xba, 0x4a, 0x95, - 0x1f, 0xf1, 0x66, 0xd7, 0x49, 0x0b, 0xe1, 0x0d, 0x03, 0xbe, 0x83, 0x0c, 0x9c, 0x4f, 0x0e, 0x1d, - 0x4e, 0xf7, 0xb4, 0x81, 0x75, 0x0e, 0x78, 0x39, 0x0d, 0xaa, 0x98, 0xdd, 0xac, 0x0a, 0x73, 0x70, - 0xf4, 0x84, 0x77, 0x0a, 0xb5, 0x70, 0x92, 0xae, 0x2a, 0x40, 0xfb, 0x4a, 0x69, 0x8c, 0xed, 0x1b, - 0x2a, 0x53, 0x73, 0x84, 0xac, 0x5d, 0x39, 0x9a, 0x3e, 0x37, 0xe4, 0xb9, 0xe0, 0x32, 0xac, 0x9d, - 0x32, 0x30, 0xf3, 0x6f, 0x53, 0x03, 0xf9, 0x75, 0x1f, 0x53, 0xcc, 0x77, 0x2b, 0xc7, 0x9c, 0xa5, - 0x59, 0x06, 0xe3, 0x23, 0x5d, 0xd1, 0xeb, 0xc2, 0x28, 0x67, 0x22, 0x34, 0xb5, 0xba, 0xdd, 0xe4, - 0x27, 0xc1, 0xd1, 0xfa, 0xce, 0x4d, 0x6b, 0x22, 0x87, 0x49, 0xbd, 0x2a, 0xaf, 0x45, 0xcf, 0x7a, - 0x73, 0x61, 0x87, 0x3f, 0x4d, 0x38, 0xa4, 0x3a, 0x9d, 0x26, 0x87, 0x05, 0xea, 0xc5, 0xc5, 0x75, - 0x25, 0xfe, 0x06, 0xe5, 0x27, 0x0c, 0xdd, 0x50, 0x48, 0x95, 0xb7, 0x79, 0x49, 0x81, 0xf4, 0xcb, - 0xac, 0x5e, 0xcb, 0xe0, 0x75, 0x06, 0x2d, 0xea, 0x69, 0x03, 0x51, 0x43, 0x8f, 0x40, 0xbb, 0x61, - 0xa3, 0xbc, 0xae, 0x56, 0xf6, 0xd5, 0x26, 0x07, 0x87, 0x52, 0x67, 0xf6, 0x69, 0xfb, 0xf6, 0x02, - 0x38, 0xbe, 0x10, 0xad, 0x5c, 0x2d, 0xd7, 0xfc, 0x2c, 0x39, 0x38, 0x94, 0x1c, 0x39, 0x83, 0xef, - 0xcc, 0xa4, 0x7c, 0x91, 0x8f, 0x7c, 0xc5, 0x73, 0xc3, 0x85, 0xdc, 0x6c, 0x86, 0xd5, 0xfe, 0x70, - 0xf0, 0xa5, 0x50, 0x30, 0xb1, 0xbd, 0xde, 0x1f, 0xd8, 0xe1, 0x6f, 0xf8, 0xc2, 0x62, 0x9d, 0xf0, - 0xa5, 0x6e, 0x8b, 0xc2, 0x37, 0x47, 0x36, 0x94, 0xd3, 0x8c, 0x89, 0x00, 0xa6, 0x00, 0xc4, 0x1f, - 0x6b, 0xbf, 0x92, 0x1c, 0x7a, 0x5f, 0x1b, 0x7c, 0x47, 0xeb, 0xbf, 0xa1, 0x75, 0xb5, 0x7b, 0xfe, - 0x97, 0x8b, 0x5c, 0xb7, 0x9d, 0x9a, 0xdf, 0x1e, 0x54, 0x14, 0x30, 0xc9, 0x62, 0x0b, 0xb3, 0xa9, - 0x28, 0x7b, 0x5e, 0x0e, 0x7e, 0x2c, 0x56, 0xec, 0x00, 0x55, 0x51, 0x7a, 0xa2, 0xaf, 0x60, 0xc7, - 0xc6, 0x96, 0x33, 0xb6, 0xad, 0x24, 0xa5, 0x0a, 0xe8, 0x4e, 0xbb, 0xe1, 0x89, 0xd3, 0x90, 0x2b, - 0x14, 0xa4, 0xb6, 0x51, 0x57, 0x28, 0x28, 0x8a, 0xf4, 0xf1, 0x02, 0xd8, 0x42, 0xe1, 0x6d, 0x82, - 0x1b, 0x4d, 0x09, 0x2b, 0x89, 0x97, 0x22, 0xb1, 0x1d, 0x86, 0x64, 0xe5, 0xe3, 0x8b, 0x38, 0x0b, - 0x64, 0xbe, 0xc9, 0x02, 0x39, 0x17, 0x15, 0x6d, 0x65, 0x5f, 0x25, 0x02, 0x51, 0x81, 0xcf, 0x28, - 0xf0, 0x7c, 0x94, 0x8f, 0xee, 0xd2, 0x45, 0xd0, 0xf5, 0xf1, 0xba, 0x26, 0x7f, 0xc3, 0xed, 0x68, - 0xfc, 0xfa, 0xff, 0x0b, 0x96, 0xc7, 0x7c, 0xef, 0x09, 0xaa, 0xfc, 0x8e, 0xc0, 0x29, 0x22, 0x4f, - 0x08, 0xa3, 0x47, 0x7b, 0xb5, 0x57, 0xbb, 0x75, 0xf3, 0x0c, 0x88, 0x1e, 0xf0, 0x4e, 0xa8, 0xaa, - 0x7e, 0x53, 0xf5, 0x9a, 0xba, 0x9a, 0x2d, 0x75, 0x6b, 0xe5, 0xd5, 0x2b, 0xcb, 0xb4, 0xf6, 0x4b, - 0x5a, 0xfb, 0x15, 0x00, 0x5f, 0x54, 0x5e, 0xef, 0xab, 0xdb, 0x2c, 0x6f, 0x5c, 0x49, 0xeb, 0xe0, - 0xf2, 0xc4, 0xea, 0x36, 0xfc, 0x58, 0xf6, 0xad, 0xac, 0xd5, 0x9b, 0xe1, 0x2d, 0xc0, 0xaa, 0xd6, - 0xca, 0xbe, 0x67, 0x57, 0x6e, 0x64, 0x55, 0x83, 0x7b, 0xb4, 0xde, 0x21, 0x56, 0xe5, 0x96, 0xd7, - 0xac, 0x01, 0x57, 0x1a, 0x28, 0xe1, 0x94, 0x9b, 0x3b, 0x78, 0x33, 0x73, 0x81, 0xe1, 0xf1, 0xc8, - 0x19, 0xff, 0x57, 0x68, 0xfd, 0xd7, 0xb5, 0x13, 0x17, 0xb5, 0xeb, 0x57, 0xb5, 0xee, 0xcb, 0xcc, - 0xf2, 0x5f, 0xee, 0x86, 0x90, 0x42, 0x20, 0xb5, 0x40, 0xb7, 0xba, 0x7f, 0x01, 0x15, 0xb4, 0x61, - 0x8b, 0x1b, 0x3d, 0xe9, 0x7e, 0xd4, 0x0e, 0x3b, 0x40, 0x37, 0x26, 0x70, 0xee, 0xa6, 0xf4, 0x42, - 0xf7, 0x9f, 0x5d, 0xa8, 0xc4, 0xda, 0xea, 0xf6, 0x60, 0x21, 0xcf, 0x98, 0x58, 0xc8, 0x5d, 0xd9, - 0x2c, 0x84, 0xce, 0x66, 0x7c, 0x9a, 0x8b, 0xcd, 0xaa, 0xbc, 0x01, 0x3d, 0xe7, 0x75, 0xc4, 0x85, - 0xb4, 0xd0, 0x8a, 0x42, 0x58, 0x9c, 0xdc, 0xb7, 0xb9, 0xcf, 0x0b, 0xd0, 0x64, 0xda, 0x95, 0xb8, - 0x14, 0x4d, 0x0e, 0xe1, 0x3f, 0x74, 0x3a, 0xbc, 0x8b, 0xd0, 0x21, 0x2d, 0x93, 0x8a, 0xa0, 0x3f, - 0x7c, 0xbd, 0x60, 0x65, 0xe2, 0x62, 0x54, 0xe0, 0x6f, 0x0c, 0xf9, 0xe3, 0x14, 0x9f, 0xc4, 0xb1, - 0x1d, 0x4a, 0xa4, 0x62, 0xf6, 0xf9, 0xf7, 0xb5, 0x43, 0x07, 0x7c, 0x50, 0x88, 0x57, 0xcc, 0x1f, - 0x0b, 0x6c, 0xe7, 0x1f, 0x27, 0x92, 0x02, 0x69, 0x3a, 0x40, 0xd7, 0xd4, 0x6f, 0x4a, 0x9d, 0xba, - 0x96, 0x3a, 0xd5, 0xe6, 0x23, 0xc5, 0xa2, 0x0f, 0x4d, 0x8f, 0xc4, 0x6b, 0x9a, 0xe3, 0x89, 0x48, - 0x53, 0x68, 0x17, 0x5c, 0xf6, 0x80, 0xea, 0xc8, 0xc3, 0xe0, 0xec, 0x3a, 0x49, 0xd4, 0xfa, 0x7b, - 0xb4, 0x8e, 0x6b, 0x54, 0x11, 0x0e, 0xd6, 0xa3, 0x6c, 0x20, 0xf1, 0x11, 0x34, 0x29, 0x12, 0x27, - 0x12, 0x7f, 0x81, 0x71, 0x99, 0xa2, 0x45, 0xcc, 0x7a, 0x4f, 0xf7, 0x20, 0x08, 0xfb, 0xb4, 0x4e, - 0xac, 0x43, 0x28, 0xae, 0xc4, 0x42, 0x0a, 0x34, 0x9e, 0x64, 0xdc, 0x38, 0xb8, 0x62, 0xa9, 0x84, - 0xef, 0x00, 0x4c, 0x49, 0xec, 0x51, 0x8a, 0x01, 0x25, 0xca, 0x59, 0x36, 0x1c, 0xd2, 0x0d, 0xb3, - 0xe1, 0xcc, 0xa5, 0x54, 0x45, 0x6c, 0x38, 0x55, 0xee, 0x75, 0xeb, 0x7d, 0x6b, 0xe5, 0x35, 0x65, - 0x10, 0x9b, 0x66, 0x91, 0xce, 0x6f, 0x3f, 0xe6, 0x59, 0x11, 0x5c, 0xf0, 0xc0, 0xbe, 0xca, 0xb1, - 0xa2, 0xce, 0x9c, 0xac, 0xc8, 0xfd, 0x4d, 0xf2, 0x22, 0x8e, 0xf5, 0x04, 0x50, 0x21, 0x25, 0x05, - 0xb0, 0x01, 0xd9, 0x84, 0x0f, 0xe3, 0xbd, 0x43, 0xbd, 0xaa, 0xfc, 0x80, 0x57, 0x6f, 0x21, 0xcd, - 0xa1, 0xfb, 0xca, 0xec, 0xd9, 0x44, 0x89, 0x45, 0x07, 0xab, 0xf2, 0xa8, 0xf2, 0x02, 0x34, 0xcf, - 0xcb, 0x36, 0xb7, 0x79, 0x61, 0xa1, 0x0b, 0xcf, 0x5a, 0x34, 0x85, 0x7f, 0x3c, 0xe0, 0x36, 0xbf, - 0x00, 0x80, 0x83, 0xd2, 0xe4, 0xe1, 0x3f, 0xd7, 0xf2, 0xb8, 0x9c, 0xf3, 0xdc, 0xf1, 0xfc, 0x85, - 0x80, 0xe6, 0x18, 0x1e, 0xa9, 0xcd, 0xe1, 0x44, 0xa8, 0x89, 0x1c, 0xbc, 0xec, 0x9c, 0x7b, 0xd8, - 0xfa, 0x38, 0x81, 0x10, 0x0c, 0xe7, 0xb6, 0x55, 0x68, 0xe7, 0xa7, 0xc5, 0x9d, 0x8f, 0xae, 0x09, - 0x9d, 0x8f, 0x55, 0x4f, 0xa9, 0xf2, 0x13, 0xa8, 0xca, 0x9b, 0x6b, 0x54, 0x4c, 0x5e, 0x07, 0x77, - 0xfa, 0xd4, 0xf1, 0x6b, 0x3c, 0x0f, 0xf7, 0xfc, 0x5d, 0x1e, 0xe7, 0xb8, 0x62, 0x6a, 0x7c, 0xbb, - 0x3d, 0x3d, 0xc7, 0xdb, 0xec, 0xe1, 0xec, 0x6d, 0x96, 0x6b, 0x6a, 0xc4, 0x9c, 0xb5, 0x32, 0x9c, - 0x88, 0xed, 0x1c, 0x17, 0x87, 0x2e, 0xfd, 0x09, 0x2a, 0xd2, 0x5b, 0x88, 0x33, 0x50, 0xde, 0x0e, - 0x65, 0x27, 0xdd, 0x42, 0xf8, 0x4f, 0x71, 0x39, 0x2a, 0x68, 0xf1, 0x37, 0x36, 0xc3, 0xb4, 0xa7, - 0x48, 0xf3, 0x2d, 0x4f, 0x93, 0x9a, 0x49, 0x9c, 0x55, 0xfa, 0x46, 0xc3, 0x07, 0xc0, 0x55, 0xae, - 0x47, 0x85, 0xaa, 0x9f, 0xa8, 0xf2, 0x46, 0xe4, 0xf3, 0xe6, 0x5c, 0x07, 0xe9, 0x9e, 0x1c, 0xab, - 0xe8, 0xc4, 0xfb, 0xbd, 0x68, 0x9a, 0xf9, 0xab, 0x62, 0x09, 0x9a, 0xdc, 0x42, 0x5f, 0x97, 0x08, - 0xee, 0xbc, 0xb2, 0x22, 0x1f, 0xfb, 0xe9, 0xf9, 0x17, 0x81, 0x3b, 0x87, 0xeb, 0xe1, 0x60, 0x8f, - 0xdf, 0x7e, 0x02, 0x5c, 0xd5, 0xc3, 0xaa, 0xbc, 0x0c, 0x2d, 0xf5, 0x3a, 0xce, 0x85, 0xd3, 0x09, - 0x80, 0xc4, 0x43, 0x09, 0xe1, 0xef, 0x5d, 0x9c, 0x8e, 0xdf, 0x68, 0xf3, 0xbd, 0xf0, 0x0c, 0xe1, - 0xe7, 0x34, 0x3e, 0x69, 0x64, 0x9d, 0x2a, 0x3f, 0x8b, 0xea, 0xbc, 0xce, 0x18, 0xe1, 0xb4, 0x00, - 0x3c, 0x1a, 0x9d, 0x76, 0xe2, 0x3a, 0x54, 0xcc, 0x77, 0x63, 0xf6, 0x81, 0xc4, 0x48, 0xcd, 0xe7, - 0x7d, 0x20, 0xdd, 0x68, 0x0a, 0xfd, 0x61, 0x38, 0x82, 0xf8, 0xf8, 0x22, 0xcf, 0xf5, 0x3c, 0x74, - 0xa7, 0x3e, 0xb6, 0xcd, 0xd1, 0xc0, 0x6d, 0xb8, 0x53, 0xc5, 0xa7, 0x99, 0xcd, 0x14, 0x04, 0x1e, - 0x72, 0x0a, 0x52, 0x9b, 0xe9, 0x7c, 0xe6, 0xd6, 0x4f, 0x24, 0x3e, 0x72, 0xb5, 0x07, 0xe7, 0x7e, - 0xfa, 0x75, 0x6a, 0x43, 0x4d, 0xd8, 0x3d, 0x86, 0x01, 0x99, 0x67, 0x95, 0x2a, 0xd7, 0xd8, 0x3d, - 0x86, 0x59, 0x6c, 0x7e, 0x0c, 0xb3, 0x39, 0x1a, 0x98, 0xf0, 0x4b, 0x98, 0x27, 0x55, 0xf9, 0x71, - 0xf4, 0x98, 0xd7, 0x16, 0xff, 0x8c, 0x4d, 0x25, 0x87, 0x0e, 0xd3, 0x88, 0x1a, 0x64, 0x73, 0xa4, - 0x7b, 0xda, 0x5a, 0xa2, 0x01, 0x4a, 0x69, 0x7f, 0xed, 0x42, 0xb3, 0xb2, 0xda, 0x7e, 0x2f, 0x5c, - 0xf3, 0xd9, 0x7c, 0xc6, 0x47, 0x61, 0x54, 0xd3, 0x66, 0x8f, 0x09, 0x0b, 0x1a, 0xe9, 0xb3, 0x4c, - 0x0e, 0x8d, 0x56, 0x1a, 0xc3, 0x57, 0x57, 0xd6, 0x93, 0x7e, 0xf5, 0x17, 0xb8, 0xab, 0xff, 0x9d, - 0xec, 0x1d, 0x09, 0x10, 0x14, 0x7d, 0xe8, 0x51, 0x8a, 0x0a, 0x43, 0xd1, 0x96, 0xe5, 0x35, 0xa1, - 0x20, 0x0d, 0x7d, 0xe3, 0xd3, 0x7f, 0xd3, 0xba, 0x87, 0x49, 0x5d, 0xbe, 0x5e, 0x47, 0x7e, 0x8b, - 0xcb, 0x50, 0x41, 0x20, 0x14, 0x8c, 0xc5, 0x4b, 0x0a, 0x08, 0x3a, 0xe6, 0x65, 0xa3, 0x43, 0x8e, - 0xc7, 0x43, 0xf1, 0x84, 0x3f, 0x9c, 0xc0, 0xd0, 0x3e, 0x80, 0x15, 0x17, 0xa2, 0xa9, 0xfe, 0x46, - 0xf2, 0x50, 0x4e, 0xa9, 0x8b, 0xae, 0x6b, 0x6e, 0x02, 0x43, 0x89, 0xcf, 0x5c, 0xe8, 0x79, 0x0a, - 0x4d, 0x35, 0xb5, 0xc6, 0xb3, 0xc1, 0xed, 0xd9, 0x6c, 0x02, 0x74, 0x6c, 0xf8, 0x5f, 0x72, 0x65, - 0x70, 0x11, 0x6d, 0x84, 0xfe, 0xdb, 0xb3, 0x77, 0x12, 0xa7, 0x8c, 0xd8, 0x40, 0xde, 0x9c, 0xde, - 0x8e, 0x1c, 0x62, 0x95, 0x99, 0x43, 0x90, 0x30, 0xbb, 0x94, 0x43, 0x2c, 0x74, 0xe2, 0x10, 0xf0, - 0x96, 0x87, 0xde, 0xd0, 0x29, 0x9f, 0x58, 0x43, 0x6d, 0x28, 0xc0, 0x1a, 0xf0, 0x5d, 0x9d, 0xda, - 0x50, 0x2a, 0x1c, 0x7b, 0xd1, 0xcd, 0x21, 0x7c, 0x77, 0x60, 0x52, 0x59, 0x85, 0x0a, 0xe1, 0x19, - 0x6f, 0x5d, 0x2d, 0xbd, 0x23, 0x81, 0x00, 0xcf, 0x0a, 0xd9, 0xd1, 0x00, 0xfd, 0x41, 0xa9, 0x3e, - 0x30, 0x9f, 0x0e, 0x26, 0xfe, 0x12, 0x4d, 0x0d, 0x85, 0x31, 0x47, 0xa7, 0x22, 0x3a, 0xcd, 0x46, - 0x43, 0x86, 0x67, 0xae, 0xd1, 0x8d, 0x2a, 0x57, 0x2f, 0x6a, 0xed, 0xe7, 0xe9, 0x6b, 0x25, 0x2e, - 0x60, 0x0f, 0xc5, 0xb8, 0xb9, 0x91, 0x3d, 0x77, 0x2c, 0x9c, 0x08, 0x77, 0x84, 0xa1, 0xc2, 0x97, - 0xc6, 0xc9, 0x1d, 0xc5, 0x67, 0x28, 0xe1, 0x15, 0xb1, 0xc8, 0x54, 0xcb, 0x68, 0xc0, 0x90, 0x07, - 0x79, 0x5c, 0x53, 0xb4, 0x92, 0x5e, 0xb4, 0xae, 0x76, 0xed, 0xd0, 0xfb, 0x18, 0xc6, 0xc0, 0x12, - 0x69, 0x52, 0xf5, 0xb4, 0x2a, 0xaf, 0x40, 0x8f, 0x7b, 0x45, 0xbc, 0x95, 0xcd, 0xbb, 0x58, 0xba, - 0xcf, 0x50, 0x17, 0x72, 0x2b, 0x54, 0x3e, 0xda, 0xba, 0x67, 0xb4, 0xfd, 0x40, 0x72, 0xf0, 0x80, - 0x76, 0xa8, 0x2b, 0x39, 0x74, 0xd8, 0xf3, 0x37, 0xbc, 0x76, 0x45, 0xef, 0xe2, 0xf6, 0x60, 0xb7, - 0x9b, 0x4c, 0xec, 0x76, 0xb6, 0x25, 0x3c, 0x0c, 0x99, 0x8d, 0xe3, 0xd3, 0x42, 0x1e, 0x2d, 0x76, - 0x6f, 0xa2, 0xee, 0x30, 0x21, 0xd5, 0xac, 0x84, 0xe5, 0xdb, 0x3a, 0x49, 0x34, 0xdd, 0x05, 0x68, - 0x12, 0x34, 0x17, 0x1f, 0x60, 0x64, 0x0a, 0xfc, 0x64, 0xa6, 0x2a, 0x4f, 0x63, 0x64, 0x0a, 0xff, - 0x30, 0x3a, 0x5c, 0xc6, 0x51, 0x8e, 0xcb, 0x50, 0xc0, 0x18, 0x94, 0x53, 0x08, 0x5f, 0xae, 0xab, - 0xe5, 0xc8, 0x64, 0x05, 0x42, 0xf4, 0xd5, 0xbc, 0xf1, 0xea, 0x1f, 0x3c, 0x5b, 0x8d, 0x62, 0xa9, - 0x98, 0xdf, 0x50, 0x3e, 0xae, 0x46, 0x7c, 0x12, 0x15, 0x61, 0xb6, 0xe8, 0xf3, 0x87, 0xcd, 0xef, - 0x9e, 0x8c, 0x52, 0x69, 0x06, 0x34, 0x76, 0xd7, 0xd5, 0xb7, 0x2c, 0x77, 0xd7, 0xd4, 0xd5, 0xfa, - 0x7c, 0x46, 0xa5, 0xf8, 0x0c, 0x9a, 0xca, 0x58, 0x3e, 0xf4, 0x51, 0x60, 0x58, 0x51, 0xcd, 0x35, - 0x7c, 0x3f, 0x0f, 0x43, 0x3f, 0x66, 0x00, 0x3d, 0xe8, 0xc1, 0x24, 0x63, 0x18, 0xc0, 0x87, 0x66, - 0x19, 0x34, 0xdd, 0x7b, 0xd1, 0xf0, 0x0c, 0x05, 0x7e, 0xa3, 0xa0, 0xbb, 0xfc, 0x2d, 0xfe, 0x50, - 0xa3, 0x7f, 0x6b, 0xa3, 0x52, 0x57, 0x2f, 0x07, 0x83, 0x31, 0x25, 0x1e, 0x87, 0x14, 0x48, 0x98, - 0x63, 0xe4, 0x83, 0x9f, 0xaa, 0x13, 0x8c, 0x34, 0x55, 0xeb, 0x7c, 0x37, 0x79, 0xe3, 0x84, 0xbb, - 0xae, 0xde, 0x9d, 0x3a, 0x7a, 0xd9, 0xe7, 0x04, 0x67, 0xb2, 0x14, 0x17, 0xda, 0x5a, 0x8a, 0xed, - 0x07, 0x69, 0x58, 0x8a, 0x5f, 0x44, 0x2c, 0x14, 0x14, 0xa1, 0xfe, 0x31, 0xb4, 0x1e, 0x64, 0xe3, - 0xb2, 0x06, 0xd2, 0x1c, 0xda, 0x39, 0xe1, 0x73, 0x99, 0xb7, 0xe8, 0xab, 0x72, 0xd0, 0xc4, 0xea, - 0x11, 0xa6, 0xaa, 0xf0, 0xc1, 0x81, 0x66, 0x7b, 0xe9, 0xc6, 0x63, 0xab, 0x6e, 0x44, 0x3c, 0x5c, - 0x50, 0xb3, 0x5d, 0x09, 0xec, 0xc0, 0x08, 0xaf, 0x89, 0x84, 0xb7, 0x35, 0x86, 0x02, 0x89, 0x55, - 0xb1, 0x48, 0xd3, 0xe6, 0x68, 0xe0, 0xcb, 0x1f, 0x7e, 0x65, 0x26, 0xe1, 0xa1, 0x5a, 0x54, 0xe5, - 0xe9, 0xec, 0x11, 0xea, 0xa4, 0xe4, 0xd0, 0xe1, 0x96, 0x68, 0x80, 0x09, 0x14, 0x12, 0x3d, 0xac, - 0xb9, 0x00, 0x15, 0xa4, 0x40, 0xba, 0x03, 0x32, 0xab, 0xa4, 0x7b, 0xda, 0xf0, 0x4f, 0xc6, 0xe9, - 0xc8, 0x61, 0x6e, 0x98, 0xcc, 0xf2, 0x27, 0xee, 0x60, 0x69, 0x3a, 0x61, 0x0b, 0x26, 0x74, 0x5b, - 0xa4, 0xb2, 0xec, 0x58, 0x78, 0x93, 0x66, 0xc3, 0xb1, 0x48, 0xc6, 0xbd, 0xf7, 0x83, 0xf4, 0x7b, - 0xbb, 0x61, 0x2a, 0x9e, 0x94, 0x0b, 0xb9, 0x9d, 0xdb, 0xde, 0x1e, 0x7c, 0xb6, 0xce, 0x64, 0x4e, - 0xb6, 0x5e, 0x1e, 0xe9, 0xac, 0xc8, 0xa6, 0x25, 0xfc, 0x0a, 0xb8, 0x6d, 0x31, 0x20, 0x82, 0x76, - 0x06, 0xbc, 0x95, 0x06, 0x8c, 0x1f, 0x13, 0x25, 0xd2, 0x7c, 0xd8, 0x32, 0x3c, 0x2e, 0xf9, 0xb1, - 0x59, 0xd9, 0xed, 0x42, 0x54, 0xcc, 0x0f, 0x04, 0xcb, 0xb2, 0x20, 0x7d, 0x82, 0x1a, 0x03, 0x7e, - 0x78, 0xd4, 0x3c, 0xee, 0x65, 0xfd, 0x06, 0x25, 0xd0, 0x1c, 0x0b, 0x25, 0x76, 0x7e, 0x55, 0xf1, - 0xab, 0xbe, 0x98, 0xf8, 0xf7, 0xa2, 0x55, 0xfc, 0xab, 0x56, 0xe5, 0xa7, 0xf8, 0xcd, 0x29, 0x71, - 0x9b, 0xb3, 0x6c, 0xf4, 0xe4, 0x29, 0xed, 0x66, 0x7b, 0x72, 0xe4, 0x4c, 0xb9, 0xd6, 0x3e, 0xa2, - 0xf5, 0x5f, 0x4f, 0x9f, 0xfb, 0x44, 0xeb, 0x1a, 0x4a, 0x77, 0x76, 0x68, 0x6a, 0x97, 0xb6, 0xb7, - 0x7d, 0xf4, 0xd5, 0x8b, 0xe9, 0xce, 0x8e, 0x45, 0xbc, 0x94, 0xa8, 0x38, 0x87, 0x44, 0x20, 0x1e, - 0x53, 0x36, 0x72, 0xce, 0x02, 0x22, 0xe7, 0x24, 0x07, 0xfb, 0x26, 0x70, 0xed, 0xc3, 0x7d, 0x21, - 0x09, 0x54, 0x02, 0xb6, 0xa8, 0x65, 0x9a, 0x15, 0xad, 0xbf, 0x53, 0x6b, 0xbf, 0x98, 0x1e, 0x6e, - 0xa3, 0xf7, 0xbd, 0xcf, 0x5c, 0x68, 0x81, 0xe3, 0xa2, 0xdc, 0x1e, 0x24, 0x52, 0x6f, 0x12, 0x45, - 0xe6, 0x59, 0x23, 0xd5, 0x71, 0x93, 0x1a, 0xdf, 0xf5, 0x8f, 0xf7, 0xda, 0xb3, 0xc7, 0x89, 0xee, - 0x07, 0x69, 0x46, 0xa7, 0x93, 0x3c, 0xb2, 0x3b, 0x0f, 0x11, 0x91, 0xe6, 0x59, 0x65, 0x67, 0xbd, - 0x3f, 0x14, 0xfb, 0x61, 0xbf, 0x7f, 0xd9, 0xfd, 0xbe, 0x54, 0x95, 0x17, 0xa3, 0x72, 0xaf, 0x1d, - 0x52, 0xf5, 0x9d, 0x3e, 0xb0, 0x77, 0x54, 0x3d, 0xaf, 0x0d, 0x30, 0xe7, 0xd4, 0xff, 0xcd, 0x05, - 0x5a, 0x29, 0x03, 0xfc, 0x7b, 0x61, 0xc7, 0xa4, 0xd3, 0x99, 0xf8, 0x9b, 0xb2, 0x6c, 0x3c, 0xe8, - 0xf2, 0x35, 0xe0, 0x2d, 0xe7, 0x7e, 0xfe, 0x2b, 0x01, 0x4d, 0xa6, 0xed, 0x45, 0x2f, 0x2a, 0x78, - 0x56, 0xd9, 0xa9, 0xef, 0x60, 0xf2, 0x5a, 0x00, 0x4a, 0xa4, 0x42, 0xe8, 0x0b, 0xcb, 0xd8, 0xa4, - 0x40, 0x5c, 0x4e, 0x9a, 0x71, 0x0f, 0xc8, 0xe0, 0x9d, 0x30, 0x2d, 0x93, 0x8a, 0xe9, 0xb7, 0x61, - 0xd9, 0x59, 0x71, 0x76, 0x90, 0xd4, 0x3c, 0xa7, 0x20, 0xa9, 0xd0, 0xda, 0x14, 0xcb, 0xc9, 0x14, - 0x24, 0x95, 0x46, 0x92, 0x63, 0x23, 0x97, 0xa6, 0xeb, 0x5b, 0x84, 0x0a, 0x69, 0xda, 0x14, 0xb8, - 0x90, 0xf1, 0x2f, 0x8a, 0x75, 0x5a, 0xdd, 0x2f, 0xd8, 0xc6, 0x55, 0x20, 0x21, 0x93, 0xcc, 0xef, - 0x39, 0x37, 0xf2, 0x8f, 0x35, 0xcb, 0x39, 0x8b, 0x1f, 0x8b, 0x51, 0xea, 0x66, 0x89, 0x2a, 0x42, - 0xe1, 0x86, 0x08, 0x19, 0x5b, 0xb9, 0x9b, 0x10, 0x36, 0xfd, 0xa7, 0x25, 0x1a, 0x28, 0x77, 0x87, - 0x23, 0x41, 0x85, 0x50, 0x41, 0xb9, 0x3b, 0xe1, 0x8f, 0xef, 0xf8, 0xea, 0xe2, 0x33, 0xd4, 0xa3, - 0x22, 0x92, 0x5a, 0x8d, 0xbc, 0xba, 0xce, 0x23, 0x42, 0xba, 0xa4, 0xca, 0x95, 0x5e, 0xa3, 0x54, - 0xf2, 0x40, 0xd2, 0x62, 0x3d, 0x93, 0xda, 0xea, 0xb5, 0x1b, 0xdd, 0xf0, 0x23, 0xd5, 0x71, 0xf5, - 0xd6, 0x48, 0x57, 0xfa, 0x82, 0xea, 0x33, 0xc0, 0xc5, 0x67, 0xd0, 0x64, 0x25, 0x0c, 0x59, 0x88, - 0xf3, 0x49, 0x7f, 0x90, 0x73, 0x88, 0x96, 0x49, 0x1e, 0xbc, 0xa3, 0x4f, 0x9e, 0xce, 0xd9, 0x1b, - 0x03, 0x16, 0x1f, 0x42, 0x05, 0x8d, 0xa1, 0xa6, 0x50, 0x82, 0x7a, 0xf5, 0x2e, 0x20, 0x36, 0x6d, - 0x52, 0x22, 0x15, 0xa7, 0x06, 0xba, 0x47, 0xcf, 0x7e, 0xc4, 0x52, 0xa1, 0xe6, 0x7b, 0x5d, 0xee, - 0x1f, 0xf9, 0xa0, 0x4e, 0x2c, 0x47, 0xf9, 0x51, 0x4c, 0x91, 0xe0, 0xdb, 0x5b, 0x82, 0x6f, 0x79, - 0xa4, 0x40, 0x9a, 0x34, 0x7a, 0xf6, 0xa3, 0xf4, 0x99, 0xdd, 0x0c, 0x9c, 0x14, 0x8a, 0x35, 0x68, - 0x52, 0x3c, 0xd4, 0x14, 0x6d, 0x64, 0x49, 0x76, 0xc9, 0x25, 0x85, 0x16, 0x49, 0xf3, 0xb5, 0xee, - 0xf7, 0xc0, 0x6b, 0xd3, 0x1d, 0xe1, 0x37, 0x82, 0x9b, 0x31, 0x53, 0x80, 0x13, 0x5b, 0x05, 0x84, - 0xe0, 0xe9, 0xfd, 0xba, 0xe6, 0xc6, 0x46, 0x9a, 0x21, 0x97, 0xbc, 0x61, 0xe1, 0x8a, 0xa5, 0xf5, - 0x10, 0x58, 0x65, 0x9b, 0xbf, 0x31, 0xae, 0x94, 0x83, 0x96, 0x01, 0x6a, 0xc1, 0x13, 0x56, 0x4f, - 0x51, 0xf2, 0xb8, 0x5b, 0xbb, 0xf1, 0x3a, 0x4d, 0x39, 0x9b, 0x3a, 0x7e, 0xad, 0x3c, 0x39, 0x78, - 0xc0, 0x16, 0xda, 0xc7, 0x75, 0x2e, 0xbe, 0xc0, 0xdb, 0x34, 0x8b, 0x8c, 0xe7, 0x71, 0x9c, 0x4d, - 0xb3, 0x52, 0xcf, 0x86, 0x48, 0x9e, 0xc6, 0x40, 0x9f, 0xf4, 0x51, 0xd3, 0xf0, 0x87, 0x34, 0x6f, - 0x1e, 0x84, 0x99, 0x20, 0xaf, 0xe5, 0x79, 0xd3, 0xe7, 0x0b, 0xbc, 0x21, 0x00, 0x71, 0xdd, 0x1b, - 0x5e, 0x2a, 0xf6, 0xdd, 0x83, 0x5e, 0xd9, 0xbe, 0x7b, 0xc3, 0x92, 0xb0, 0x52, 0x37, 0xc3, 0x4f, - 0xe1, 0x9c, 0x90, 0xa9, 0x19, 0xde, 0x6d, 0xee, 0x18, 0x42, 0x17, 0x80, 0x51, 0x3e, 0xdd, 0xf7, - 0xe6, 0x68, 0x6b, 0xa7, 0x6e, 0x8a, 0x7f, 0x96, 0x0b, 0xbe, 0x50, 0xcc, 0xe2, 0xe7, 0x97, 0x7b, - 0xf5, 0x42, 0x87, 0xae, 0x08, 0x75, 0xd2, 0xae, 0x8c, 0x68, 0x0d, 0x0f, 0x23, 0x57, 0x8b, 0x44, - 0x7d, 0x88, 0x89, 0x87, 0xb8, 0xab, 0x45, 0x92, 0xe6, 0xc1, 0xcd, 0x0f, 0x2e, 0x7c, 0x2d, 0x12, - 0xf1, 0x1a, 0xc6, 0xac, 0x92, 0x46, 0x78, 0x73, 0xb5, 0x48, 0x62, 0xad, 0xfe, 0x2c, 0x63, 0x9a, - 0x11, 0x17, 0x96, 0x3d, 0xcb, 0x58, 0x60, 0x7a, 0x74, 0x01, 0x85, 0x80, 0x29, 0x18, 0x0b, 0x7b, - 0x7f, 0x21, 0x6e, 0xd4, 0xe3, 0x3e, 0x4c, 0x67, 0xef, 0xfb, 0x1f, 0xd3, 0xe3, 0x3e, 0xd8, 0xa2, - 0x9a, 0x4e, 0xc6, 0x16, 0xd5, 0x2c, 0x30, 0xc4, 0x8b, 0x80, 0x20, 0xc2, 0x76, 0x67, 0x90, 0x7e, - 0x6b, 0x49, 0x80, 0x65, 0x56, 0x28, 0x3d, 0xe4, 0xdc, 0x33, 0xf0, 0x62, 0xfb, 0xfe, 0xf5, 0x0e, - 0xc4, 0xc6, 0xac, 0x18, 0x17, 0x33, 0xc9, 0x57, 0x7e, 0xac, 0xca, 0x2b, 0xb3, 0x82, 0x90, 0xd8, - 0x7e, 0x89, 0x0f, 0x4c, 0x62, 0xff, 0x25, 0x73, 0xb4, 0x12, 0x6a, 0x57, 0x77, 0x64, 0xd5, 0x4c, - 0xd7, 0xc4, 0x87, 0x82, 0x80, 0xf8, 0x43, 0x90, 0xf6, 0xca, 0x33, 0xea, 0x02, 0x0d, 0x34, 0x17, - 0x72, 0x43, 0x67, 0xf3, 0xab, 0xb2, 0x42, 0x6f, 0x90, 0xc0, 0xe4, 0x6c, 0x09, 0xee, 0x19, 0x3f, - 0xd2, 0x7d, 0x96, 0x68, 0x1c, 0x44, 0xdd, 0x68, 0x44, 0xe3, 0x78, 0x80, 0xef, 0x0b, 0x62, 0x72, - 0x38, 0xa0, 0x59, 0x0f, 0xd1, 0xc1, 0x98, 0x5c, 0xde, 0xb8, 0x98, 0x9c, 0xce, 0x49, 0xf3, 0x27, - 0xc2, 0x49, 0xab, 0xd6, 0xaa, 0xf2, 0x33, 0xe8, 0xc7, 0x5e, 0x27, 0x04, 0x49, 0x0b, 0xa9, 0x6f, - 0x25, 0x37, 0x6e, 0x2b, 0x8a, 0x3f, 0x15, 0x28, 0x1e, 0x3c, 0xc7, 0xa8, 0xe9, 0x36, 0x6b, 0xa1, - 0x6e, 0x0f, 0xd9, 0xeb, 0xe7, 0xa6, 0xdb, 0x77, 0x85, 0x9d, 0x03, 0x83, 0xed, 0xbc, 0x6a, 0xfd, - 0x09, 0xbf, 0xe9, 0x3a, 0x4e, 0x1f, 0x0d, 0x92, 0x27, 0xb8, 0x20, 0x8b, 0x79, 0xfa, 0x04, 0x34, - 0x9b, 0xe1, 0xd8, 0xa7, 0x04, 0x22, 0xb1, 0xa0, 0xbe, 0x07, 0x37, 0x66, 0xed, 0xc1, 0xaf, 0x84, - 0x0d, 0xe8, 0x71, 0x69, 0xed, 0x3f, 0xaa, 0xfb, 0xcc, 0x92, 0x9e, 0xe8, 0xe3, 0x06, 0x9e, 0x68, - 0x0e, 0x72, 0x44, 0xa3, 0x37, 0xbd, 0xdd, 0x02, 0x34, 0xe3, 0x65, 0x7c, 0x20, 0x7b, 0x19, 0x6d, - 0x66, 0x34, 0x9e, 0x05, 0xec, 0x75, 0xa1, 0xbb, 0x1c, 0x9a, 0x8a, 0x31, 0xfd, 0x68, 0x13, 0x8c, - 0x2c, 0x4e, 0xec, 0x68, 0x5b, 0x4b, 0x69, 0x07, 0x82, 0xea, 0x40, 0x94, 0xb6, 0x97, 0xfc, 0xa1, - 0x44, 0x28, 0xdc, 0x50, 0xee, 0x6e, 0x8c, 0xf8, 0x83, 0xe4, 0x8f, 0x78, 0x73, 0x20, 0xa0, 0xc4, - 0xe3, 0xe5, 0xee, 0xed, 0xfe, 0xc6, 0x6d, 0x1b, 0xd8, 0x8f, 0x6d, 0xfe, 0x50, 0xa3, 0x12, 0x2c, - 0x77, 0xb3, 0x64, 0xcd, 0x8a, 0xe1, 0x92, 0xd6, 0x25, 0xa0, 0x7c, 0xcc, 0x2a, 0x4a, 0x5c, 0xe4, - 0xa6, 0x30, 0xdf, 0x79, 0x9a, 0x98, 0xa4, 0xab, 0x7f, 0xaa, 0xca, 0x9b, 0xbc, 0xa4, 0xc1, 0x57, - 0x3d, 0x20, 0xd2, 0xa9, 0xe7, 0xb7, 0x2e, 0x34, 0xcd, 0xfc, 0x49, 0xf1, 0x41, 0xde, 0xe5, 0x99, - 0xa2, 0x97, 0x98, 0x5f, 0x8a, 0xf9, 0xc3, 0x86, 0x1a, 0x44, 0x9f, 0xd2, 0x51, 0x98, 0x67, 0x04, - 0xc7, 0x62, 0x28, 0x2c, 0x35, 0xb1, 0x4d, 0x18, 0xb1, 0x76, 0xa8, 0x2b, 0x39, 0xf8, 0x9a, 0x81, - 0x8f, 0x1a, 0x5e, 0xce, 0xc5, 0x4b, 0x9f, 0x07, 0xef, 0x93, 0x39, 0x39, 0x77, 0x16, 0xfd, 0x2e, - 0x27, 0xed, 0xa6, 0x3a, 0xae, 0xf2, 0xa2, 0xed, 0x0a, 0x43, 0xb4, 0x2d, 0x20, 0x5d, 0x90, 0xf7, - 0x1a, 0xba, 0x68, 0x3b, 0x8b, 0x11, 0x9e, 0x21, 0xe0, 0xe2, 0x0e, 0x74, 0x69, 0x96, 0xe5, 0x89, - 0x99, 0x44, 0x96, 0xc4, 0x93, 0x7b, 0x49, 0xc8, 0xa6, 0x1b, 0x57, 0xff, 0xb0, 0x01, 0x6f, 0x08, - 0x48, 0xb4, 0xf6, 0x20, 0x3e, 0x88, 0xf2, 0x1a, 0x23, 0x0d, 0x7c, 0x9c, 0x6f, 0xfc, 0x5b, 0x9a, - 0xae, 0xdd, 0x78, 0x5d, 0xeb, 0x3c, 0x90, 0x39, 0x8b, 0x6f, 0xee, 0x5a, 0xff, 0x75, 0x1f, 0x2e, - 0x15, 0x1f, 0x41, 0x45, 0x89, 0x50, 0x93, 0x12, 0x4f, 0xf8, 0x9b, 0xa2, 0x64, 0x5d, 0xf2, 0xa0, - 0x89, 0x51, 0x2a, 0x15, 0x71, 0x88, 0xd1, 0x4b, 0x45, 0xd9, 0xfc, 0x6e, 0x9e, 0x48, 0xd0, 0x34, - 0x5c, 0xd4, 0x02, 0x6b, 0xb8, 0x28, 0xf7, 0x4f, 0x64, 0xdf, 0xba, 0x72, 0xb7, 0x29, 0x6a, 0x94, - 0x67, 0x40, 0x80, 0x98, 0x2f, 0x8e, 0x2c, 0x54, 0x5c, 0x8e, 0x0a, 0x88, 0x62, 0x81, 0x32, 0x16, - 0x08, 0x56, 0x41, 0x4a, 0xcc, 0x81, 0x9e, 0x58, 0x74, 0x44, 0x52, 0x25, 0xfe, 0x14, 0x4d, 0x06, - 0xc2, 0x8f, 0x53, 0x52, 0xb0, 0xe0, 0x9d, 0xff, 0x62, 0xad, 0x92, 0xf0, 0x87, 0x1a, 0xe9, 0x4d, - 0x94, 0xb6, 0xcb, 0xa2, 0x77, 0x56, 0xec, 0xd9, 0x53, 0x80, 0x44, 0x6b, 0xdb, 0xaf, 0x26, 0xe2, - 0x5e, 0x95, 0xcd, 0x8d, 0x8e, 0x0c, 0x8a, 0xbf, 0xd1, 0x15, 0x41, 0x07, 0xee, 0xac, 0x2b, 0xdd, - 0x8a, 0xac, 0x90, 0x7b, 0xf0, 0x0e, 0x9f, 0x1e, 0x18, 0x25, 0xb0, 0x87, 0xdc, 0x36, 0xcf, 0xf8, - 0xa8, 0xac, 0xf2, 0xc5, 0xc2, 0x77, 0x8d, 0x27, 0xec, 0x5e, 0xa6, 0xb5, 0x7d, 0xa2, 0x61, 0xf7, - 0xba, 0x0f, 0xa7, 0x8f, 0x9c, 0xb6, 0x09, 0xbb, 0xb7, 0x19, 0xe5, 0xe3, 0xe1, 0x92, 0x1b, 0xdb, - 0x14, 0xe9, 0x4e, 0x3b, 0x52, 0x02, 0xa9, 0x9b, 0x80, 0x49, 0xf7, 0xd0, 0x83, 0x6c, 0xe0, 0x9d, - 0xf4, 0xf0, 0x5e, 0xeb, 0xbb, 0x4e, 0xf2, 0x08, 0x11, 0x03, 0x92, 0xa8, 0x36, 0xec, 0xfa, 0x50, - 0xc8, 0x47, 0xb5, 0x61, 0xd7, 0x87, 0x62, 0xfe, 0xc2, 0xc0, 0x5d, 0x15, 0x96, 0x9a, 0x83, 0xc1, - 0xd1, 0x83, 0x88, 0x32, 0xa8, 0x62, 0xfe, 0xc2, 0xc2, 0xb1, 0x24, 0xb3, 0x9c, 0x8c, 0xbe, 0x40, - 0xb0, 0x3e, 0xcf, 0x11, 0x6a, 0x36, 0x36, 0x0b, 0x67, 0xb7, 0xe3, 0xeb, 0xb8, 0x72, 0x3b, 0x81, - 0xca, 0x6e, 0x5a, 0xe3, 0x94, 0xa7, 0xe6, 0xe6, 0x6a, 0xff, 0x05, 0x99, 0xc9, 0x4f, 0xb2, 0x99, - 0xc9, 0x3d, 0x76, 0x3b, 0x8f, 0x7e, 0x70, 0x22, 0xbc, 0xe4, 0xaa, 0x0b, 0xcd, 0xb4, 0x34, 0x15, - 0x2b, 0xb2, 0x44, 0xbf, 0x59, 0xaa, 0x2c, 0xea, 0x94, 0x5c, 0xc8, 0x22, 0xff, 0xe9, 0x94, 0xfb, - 0x88, 0xe5, 0x96, 0x01, 0x9b, 0x57, 0xbf, 0x65, 0x14, 0x3b, 0x44, 0xfb, 0xfb, 0xf2, 0xec, 0xfb, - 0xeb, 0x0d, 0xfa, 0xe7, 0xc0, 0x05, 0x3c, 0x7f, 0x9d, 0x87, 0xee, 0xae, 0x69, 0x54, 0xfc, 0xe1, - 0xda, 0xad, 0x3f, 0x0e, 0xc5, 0x13, 0x91, 0xd8, 0x4e, 0xbc, 0xb6, 0x4c, 0x70, 0x6e, 0x13, 0x50, - 0x21, 0xde, 0x0c, 0x1c, 0x17, 0xde, 0xae, 0xca, 0x6b, 0xbc, 0x7a, 0xa1, 0xf4, 0x34, 0x0d, 0x83, - 0x43, 0x33, 0x08, 0xa5, 0xdf, 0xec, 0xd7, 0x3a, 0x0f, 0x24, 0x87, 0xdb, 0x21, 0xf4, 0x11, 0xc6, - 0x6a, 0x39, 0xaf, 0xf4, 0x49, 0xf7, 0x75, 0x66, 0xce, 0x5e, 0xe4, 0xdb, 0x40, 0x5a, 0xa1, 0x7c, - 0x50, 0xc9, 0xe9, 0xa0, 0x8d, 0x91, 0x06, 0x9f, 0xfe, 0x11, 0x71, 0x05, 0x2f, 0x79, 0xb8, 0x88, - 0x46, 0x8c, 0xd0, 0x38, 0x27, 0x79, 0x4c, 0xcf, 0x21, 0x73, 0x3c, 0x62, 0xc8, 0x1c, 0xa0, 0x9e, - 0x23, 0xf8, 0xd1, 0x65, 0x82, 0xe9, 0x4e, 0xd2, 0x46, 0xd5, 0xa0, 0xa0, 0xca, 0x1f, 0x0a, 0xe8, - 0x8a, 0xe0, 0x75, 0xc6, 0x91, 0xf4, 0xba, 0x00, 0x31, 0x4d, 0x52, 0x27, 0xcf, 0x26, 0x87, 0xaf, - 0x41, 0x2a, 0x5c, 0x98, 0xa0, 0x36, 0xf4, 0x3a, 0xfc, 0x51, 0xee, 0xa6, 0xb1, 0xd5, 0x49, 0xaa, - 0x56, 0x78, 0x6b, 0x44, 0x3f, 0xd7, 0xff, 0x51, 0xba, 0xa7, 0x0d, 0x6e, 0x07, 0xe5, 0x6e, 0x68, - 0x9c, 0xe9, 0x7a, 0x55, 0x7b, 0xf3, 0xc3, 0xe4, 0xe0, 0x01, 0xad, 0x7d, 0x77, 0xa6, 0x7f, 0x10, - 0x52, 0x9d, 0x2f, 0xd5, 0xae, 0x7f, 0xf8, 0x59, 0xeb, 0x9e, 0xe4, 0xe0, 0x11, 0xbd, 0x82, 0x7e, - 0xaa, 0xb7, 0x35, 0x73, 0xf3, 0xf0, 0x32, 0xdc, 0x63, 0x6f, 0x07, 0xbe, 0xaa, 0x90, 0x2f, 0x7a, - 0x86, 0x05, 0x54, 0x6a, 0x37, 0xe6, 0xdb, 0x82, 0xad, 0x79, 0x4e, 0xbb, 0xd0, 0x54, 0x93, 0xa1, - 0x48, 0x7c, 0x16, 0x4d, 0x8f, 0xf3, 0x05, 0x3a, 0x41, 0x93, 0x98, 0x9c, 0xd9, 0x75, 0xd2, 0x14, - 0xdd, 0x90, 0x54, 0x57, 0xeb, 0xcb, 0xae, 0x15, 0x37, 0xa1, 0x99, 0xa6, 0x22, 0x8e, 0xdc, 0x89, - 0x54, 0x6c, 0xad, 0x95, 0xa6, 0x1b, 0x96, 0x29, 0x6a, 0x44, 0xb1, 0xc0, 0x88, 0x35, 0x76, 0x7a, - 0x75, 0x32, 0x3e, 0x93, 0x5e, 0xdd, 0xe8, 0xca, 0x2e, 0xf3, 0x18, 0x16, 0x35, 0x90, 0xdb, 0x6b, - 0x9e, 0x3e, 0xd7, 0x86, 0xaa, 0xd6, 0x8f, 0x0a, 0xe8, 0x8e, 0x75, 0x91, 0xa0, 0xa2, 0x4b, 0x4f, - 0x34, 0xf2, 0xff, 0xe3, 0x28, 0x1f, 0xdf, 0x20, 0x88, 0xa5, 0xd8, 0xe6, 0x6a, 0x66, 0xd3, 0x84, - 0x38, 0xde, 0x93, 0x46, 0xa2, 0x8c, 0x26, 0xd3, 0x4b, 0x09, 0xe5, 0xcd, 0xe3, 0x6e, 0xcf, 0xda, - 0x79, 0xd6, 0xa3, 0xbb, 0x1c, 0x60, 0xc4, 0x52, 0x88, 0x93, 0xc7, 0xbd, 0x46, 0xd1, 0x7f, 0xf3, - 0x61, 0x69, 0x5d, 0xa6, 0xb0, 0xb4, 0x9e, 0xff, 0x52, 0x80, 0x66, 0xd4, 0xc6, 0xfc, 0x21, 0x12, - 0x39, 0x80, 0xf1, 0xa5, 0x57, 0x50, 0x21, 0x8d, 0xbd, 0x40, 0x6d, 0xe2, 0xd5, 0x5b, 0x54, 0xf9, - 0x17, 0x5e, 0xbd, 0x50, 0xaa, 0xe7, 0xe3, 0x6d, 0xd4, 0xd5, 0x1b, 0xa1, 0x17, 0xd5, 0x2e, 0x5a, - 0x03, 0xde, 0x68, 0xe0, 0x31, 0x35, 0xd4, 0x35, 0xda, 0xda, 0x99, 0x1c, 0x6c, 0xbd, 0x35, 0xd2, - 0x05, 0x89, 0xf3, 0xad, 0x30, 0x3e, 0xbd, 0x6f, 0x71, 0xb3, 0x35, 0x27, 0xe3, 0xa3, 0x24, 0x3b, - 0x88, 0xa1, 0x24, 0xbe, 0x27, 0x1a, 0x09, 0x66, 0x6e, 0xee, 0x4e, 0x5f, 0x18, 0xce, 0x0a, 0x68, - 0xa1, 0x83, 0x10, 0x03, 0xa4, 0x5b, 0xe0, 0xb5, 0xc3, 0x31, 0x54, 0x80, 0xf1, 0x81, 0xef, 0x67, - 0x78, 0x46, 0xbf, 0x50, 0xe5, 0x9f, 0x79, 0xa1, 0x44, 0x9f, 0x0e, 0x37, 0x20, 0xd3, 0x64, 0x4c, - 0xd3, 0x1c, 0xd7, 0x74, 0xa0, 0x63, 0xf1, 0x4e, 0x54, 0xb0, 0x8d, 0xa4, 0x1c, 0xc7, 0x27, 0x4e, - 0xa1, 0x0f, 0x7e, 0x88, 0x8b, 0x91, 0xd8, 0x10, 0xf3, 0x07, 0x94, 0x7a, 0x25, 0x16, 0x8a, 0x04, - 0x37, 0x28, 0x81, 0x48, 0x38, 0x18, 0xa7, 0xaf, 0x60, 0x6d, 0x6a, 0xc4, 0x25, 0xe8, 0x8e, 0x50, - 0x43, 0x38, 0x12, 0x53, 0xe4, 0xc6, 0xc6, 0x5a, 0xbf, 0xd2, 0x14, 0x09, 0x6f, 0x50, 0x12, 0x71, - 0x72, 0x18, 0x15, 0xfa, 0xec, 0xaa, 0xf0, 0x7a, 0xe3, 0xab, 0x4f, 0xa4, 0x19, 0xdc, 0x9a, 0xa6, - 0xfa, 0xd8, 0x4f, 0xb1, 0x0c, 0x4d, 0x0f, 0x92, 0xbc, 0xde, 0x6b, 0x22, 0x01, 0x7f, 0x23, 0x66, - 0x5a, 0x60, 0x09, 0xf0, 0x65, 0x17, 0xe3, 0xfd, 0x14, 0x57, 0x1a, 0x95, 0x40, 0x22, 0x42, 0x63, - 0x8c, 0xfa, 0xf4, 0xdf, 0xc4, 0xa9, 0x1e, 0x8f, 0x8f, 0x56, 0x23, 0xea, 0x54, 0x6f, 0x14, 0x91, - 0xef, 0x84, 0xe2, 0xfe, 0xad, 0x8d, 0xca, 0xca, 0x96, 0x50, 0x80, 0x10, 0xec, 0x14, 0xfa, 0x1d, - 0x73, 0xb1, 0xf8, 0x63, 0xb4, 0x20, 0xbe, 0x23, 0x14, 0xfd, 0x89, 0x3f, 0x94, 0x58, 0x15, 0x89, - 0x41, 0xd2, 0xf1, 0x8d, 0x30, 0x5a, 0x86, 0x9a, 0x62, 0x32, 0x87, 0xb1, 0xc0, 0xc4, 0xd9, 0x68, - 0x52, 0x30, 0xb6, 0xd3, 0xd7, 0x1c, 0x06, 0x85, 0xb8, 0x8f, 0xfe, 0xf2, 0xb4, 0xb9, 0xd0, 0x4c, - 0x6e, 0x8f, 0xdf, 0x6e, 0x6e, 0x02, 0x58, 0xf4, 0xbc, 0x77, 0x1c, 0x9c, 0x62, 0x2c, 0x89, 0xb3, - 0xd3, 0x85, 0xa6, 0xe1, 0x66, 0x46, 0x1e, 0x4a, 0xf1, 0xc9, 0x6c, 0x9e, 0x01, 0x29, 0x34, 0xf4, - 0x42, 0xa9, 0x98, 0xdf, 0xdb, 0x8c, 0xa8, 0x0c, 0xbe, 0xf2, 0x12, 0x9a, 0xc2, 0x67, 0xcf, 0x04, - 0xae, 0x56, 0x69, 0x37, 0x56, 0xe3, 0xa3, 0x8b, 0xb9, 0x3c, 0x98, 0xf0, 0x62, 0x0a, 0x6c, 0xa3, - 0x7c, 0x22, 0x4d, 0x1a, 0x12, 0x27, 0x75, 0xf5, 0x62, 0xe6, 0xc2, 0xdb, 0xcc, 0x36, 0xca, 0x01, - 0x94, 0x3e, 0x89, 0x66, 0x64, 0x77, 0x63, 0xf3, 0x8c, 0xea, 0x4e, 0xfe, 0x19, 0x55, 0x11, 0xf7, - 0x4c, 0xca, 0xf3, 0x6f, 0x04, 0x34, 0x17, 0x12, 0xa5, 0x9a, 0x07, 0xa7, 0xeb, 0x34, 0x37, 0x58, - 0x9f, 0xdf, 0x3d, 0xa4, 0xca, 0x0f, 0xf2, 0x5c, 0x68, 0x3e, 0xcd, 0x6b, 0x3c, 0x7e, 0x16, 0xb4, - 0x8e, 0xb1, 0x20, 0x07, 0x95, 0x97, 0x79, 0x2c, 0xf4, 0x81, 0x2c, 0xb0, 0xa8, 0x62, 0x3e, 0xcc, - 0x06, 0x65, 0x2f, 0x9e, 0xdf, 0xba, 0xd0, 0x3c, 0x87, 0x59, 0xfc, 0x8e, 0x6e, 0x72, 0x66, 0x0e, - 0xc8, 0x8d, 0x16, 0x69, 0x36, 0xbf, 0x74, 0xc6, 0xbe, 0xb2, 0x7a, 0x0e, 0xa4, 0x04, 0x54, 0x84, - 0x3b, 0x59, 0xe3, 0xdf, 0xaa, 0x34, 0x7e, 0x69, 0x72, 0xf9, 0x25, 0x9a, 0xd4, 0x88, 0x3b, 0x62, - 0x1b, 0xe0, 0x3e, 0xbb, 0x09, 0x93, 0x4f, 0x2d, 0x26, 0xff, 0xa7, 0xf4, 0x01, 0x6f, 0x8e, 0xa1, - 0xa5, 0x4e, 0x1a, 0x67, 0xf6, 0xa5, 0xfb, 0x3e, 0x61, 0x26, 0x5e, 0xa8, 0x2b, 0x7d, 0x0c, 0x4d, - 0xe1, 0xda, 0x4d, 0x88, 0x20, 0xae, 0x0b, 0xe8, 0x2e, 0x03, 0x67, 0xd0, 0x0b, 0xa3, 0x85, 0x3a, - 0xb6, 0x6d, 0x05, 0xfb, 0x50, 0x63, 0x7a, 0x8b, 0x31, 0x77, 0xac, 0x99, 0xac, 0x5c, 0x5f, 0x0d, - 0x59, 0x79, 0xfe, 0xc2, 0x85, 0x4a, 0xac, 0x63, 0xff, 0x5d, 0xa5, 0x80, 0x1a, 0x55, 0x7e, 0x1a, - 0x3d, 0xe9, 0x75, 0xc4, 0x88, 0x34, 0x93, 0x47, 0x30, 0xd9, 0x39, 0xd6, 0x7d, 0xff, 0x26, 0xdd, - 0xf7, 0x1b, 0xfd, 0xa1, 0x70, 0xe2, 0x4b, 0xef, 0xfb, 0x75, 0x68, 0x52, 0x02, 0x77, 0xc4, 0xf6, - 0xfd, 0x2c, 0xab, 0x4e, 0x22, 0x14, 0x4e, 0xd0, 0x7d, 0x0e, 0x90, 0xfa, 0x3e, 0xbf, 0x72, 0x56, - 0x0f, 0x58, 0xe5, 0xa3, 0x75, 0x59, 0x9b, 0x95, 0x34, 0x9e, 0xd0, 0x66, 0x85, 0xcf, 0x7d, 0x3b, - 0x9b, 0xf5, 0x3f, 0x9a, 0x36, 0x2b, 0x1b, 0xfb, 0xef, 0xea, 0x66, 0xa5, 0xb9, 0x99, 0x1c, 0x31, - 0x22, 0x89, 0x3c, 0x82, 0x61, 0xf9, 0xad, 0xbb, 0xf5, 0x29, 0x34, 0xf5, 0xc7, 0x8a, 0xbf, 0x31, - 0xb1, 0x9d, 0x6e, 0x02, 0x96, 0xa5, 0xd6, 0x5c, 0x2a, 0x95, 0x68, 0xbb, 0xcf, 0x6b, 0x43, 0x1f, - 0xa7, 0xde, 0x6e, 0x4d, 0x9d, 0x3e, 0x9f, 0x3a, 0x78, 0x5e, 0xeb, 0x7e, 0x9b, 0xe6, 0xf9, 0xd9, - 0xeb, 0x42, 0xd3, 0x18, 0xec, 0xb7, 0xb0, 0x14, 0xab, 0x50, 0x91, 0xfe, 0x92, 0x80, 0xde, 0x6b, + 0x7c, 0x2f, 0x87, 0x8a, 0x8c, 0x0f, 0xb8, 0x14, 0x90, 0x87, 0xe7, 0xd5, 0xfa, 0x3b, 0x9c, 0x14, + 0x07, 0x2e, 0x7e, 0x58, 0x59, 0xc4, 0x9f, 0x2e, 0x54, 0x50, 0x79, 0x66, 0x64, 0x88, 0x5e, 0xc4, + 0x1d, 0x22, 0x97, 0xd5, 0x49, 0xc3, 0xd2, 0x91, 0xa8, 0x36, 0x74, 0x5a, 0x8b, 0x9e, 0xac, 0x90, + 0x2d, 0x42, 0xfc, 0x2e, 0xb4, 0x9c, 0xc6, 0x8a, 0x82, 0xba, 0x2c, 0x22, 0xcd, 0x12, 0x55, 0x69, + 0xbd, 0x60, 0x4b, 0x10, 0x9f, 0xa6, 0x5f, 0x60, 0xe7, 0xcd, 0xd3, 0x3a, 0x1b, 0x3a, 0x2f, 0xa3, + 0x92, 0x36, 0x25, 0x88, 0xe7, 0x59, 0x7d, 0xc0, 0x5b, 0xd7, 0xde, 0x4a, 0xf4, 0xd3, 0x12, 0x10, + 0x37, 0xec, 0x29, 0x62, 0xa9, 0x36, 0x70, 0x02, 0x46, 0xb9, 0x2d, 0xe0, 0x05, 0xf2, 0xc6, 0xc2, + 0xb7, 0x21, 0xf2, 0x41, 0x54, 0x62, 0xd8, 0x65, 0xa1, 0xb2, 0x4b, 0x08, 0x4d, 0xd2, 0x37, 0xf6, + 0x14, 0xf1, 0x55, 0xe3, 0x33, 0xe7, 0xd5, 0x7a, 0xb8, 0x0e, 0x70, 0x54, 0x3b, 0x82, 0x75, 0x45, + 0x2c, 0xb1, 0x91, 0xb7, 0x1d, 0xb1, 0x16, 0x41, 0x1a, 0x23, 0xdb, 0x09, 0xf1, 0x07, 0xd0, 0x43, + 0x06, 0x40, 0x6a, 0x0f, 0x07, 0xa0, 0xdc, 0xa5, 0xa4, 0x5c, 0xf2, 0x3a, 0x44, 0x6e, 0xaa, 0x28, + 0xce, 0x53, 0x36, 0x0d, 0x48, 0x99, 0xb7, 0xd4, 0x5c, 0x32, 0x7c, 0x9b, 0xd5, 0x5a, 0xd9, 0x1d, + 0xf6, 0x05, 0xc8, 0xea, 0xfc, 0x7e, 0x4b, 0xb5, 0x17, 0xc0, 0x77, 0xa0, 0xe2, 0x8e, 0x36, 0x8f, + 0xd3, 0xef, 0xdb, 0x4e, 0x22, 0xa1, 0x16, 0xe6, 0x9f, 0x96, 0x74, 0x41, 0x60, 0x1c, 0x60, 0x44, + 0x6c, 0x26, 0xf1, 0xc7, 0xf4, 0xa9, 0x79, 0xe3, 0x81, 0x8d, 0xa3, 0x66, 0x50, 0x2e, 0xb6, 0x5e, + 0x32, 0x9b, 0xc7, 0x78, 0xc8, 0x28, 0x67, 0xbd, 0x91, 0xdb, 0x1b, 0xe6, 0x3a, 0x85, 0x45, 0x9a, + 0x2b, 0xb7, 0x95, 0xbd, 0x88, 0x8a, 0x99, 0xa5, 0x82, 0xb7, 0x7f, 0xc5, 0xdf, 0x61, 0x6c, 0xff, + 0x8a, 0xbf, 0x83, 0x04, 0x52, 0xc6, 0x4b, 0x16, 0x6c, 0xe3, 0xe4, 0x77, 0xd9, 0x0e, 0x54, 0xcc, + 0x34, 0x04, 0xa3, 0xb4, 0x1a, 0x16, 0xbf, 0x22, 0x99, 0xfc, 0xe6, 0x4b, 0xd1, 0x32, 0x1a, 0x24, + 0x91, 0x7a, 0x15, 0x1b, 0x9f, 0xe6, 0x63, 0x49, 0x8b, 0xac, 0xc7, 0x92, 0xca, 0x3e, 0x7e, 0x14, + 0x15, 0x59, 0x6c, 0xf5, 0xe7, 0xa8, 0xd8, 0xd4, 0xfa, 0x4c, 0x1b, 0x15, 0xd1, 0x98, 0x58, 0xb8, + 0x58, 0x6c, 0x86, 0xd9, 0x74, 0xd5, 0xc8, 0x6c, 0x0a, 0xbf, 0xce, 0x66, 0x99, 0x02, 0x13, 0x24, + 0xb1, 0x4c, 0xad, 0xb4, 0x22, 0x79, 0xb2, 0x36, 0xa9, 0xdd, 0x39, 0xcf, 0xf3, 0x40, 0x20, 0x74, + 0x0b, 0x2a, 0x6e, 0x64, 0x62, 0x7d, 0x46, 0xe0, 0x46, 0xb5, 0xf9, 0x26, 0x14, 0x18, 0x50, 0x5c, + 0x35, 0xc9, 0x58, 0x1c, 0xcb, 0x32, 0xf0, 0xc6, 0x75, 0x0d, 0xfb, 0xc2, 0x8f, 0xd3, 0xb4, 0xe8, + 0x2e, 0x66, 0x9e, 0x35, 0xa5, 0x07, 0x8b, 0x6b, 0x73, 0x49, 0xe7, 0x3d, 0x61, 0xdc, 0x8b, 0x56, + 0x82, 0x78, 0x8f, 0xe7, 0x6d, 0xc8, 0xe3, 0xa6, 0x31, 0x50, 0x0a, 0xab, 0x7f, 0xaa, 0x4a, 0xaf, + 0x09, 0xd9, 0x69, 0xe2, 0x73, 0x36, 0x31, 0x86, 0xd1, 0xaf, 0xcd, 0x70, 0x27, 0xe0, 0x17, 0x96, + 0x9d, 0x91, 0xf7, 0xa3, 0x62, 0x37, 0x5e, 0x19, 0x1e, 0x77, 0x8b, 0xcf, 0xdf, 0x44, 0xad, 0x3b, + 0x39, 0xca, 0x83, 0x64, 0xa1, 0x90, 0x6e, 0xa7, 0xcf, 0xff, 0x31, 0x39, 0xc5, 0x52, 0x5b, 0xcc, + 0x56, 0xa2, 0x91, 0x1a, 0xd2, 0x0e, 0x83, 0xc6, 0x47, 0x39, 0xb4, 0xa2, 0xc5, 0xdd, 0xee, 0xf7, + 0xec, 0x6b, 0x54, 0x5a, 0xb1, 0x6c, 0xad, 0x50, 0x83, 0x4b, 0x4e, 0xf4, 0xcc, 0x6d, 0x04, 0x0b, + 0xf6, 0xa2, 0x76, 0x78, 0x63, 0x09, 0xac, 0x2f, 0x59, 0xf9, 0x45, 0x01, 0xca, 0xd4, 0x4f, 0xdd, + 0xa2, 0xcf, 0xde, 0x1b, 0xea, 0x70, 0xf2, 0xeb, 0xa3, 0xa6, 0x38, 0x0f, 0x61, 0x66, 0xe5, 0xac, + 0xbc, 0xcc, 0xcb, 0x99, 0x85, 0xf3, 0x3c, 0xa4, 0x65, 0xcc, 0x34, 0xdb, 0xbb, 0x99, 0xa4, 0xf9, + 0xc6, 0xbb, 0x99, 0x4f, 0xe5, 0xbe, 0xe9, 0x48, 0x52, 0x8c, 0x11, 0xa5, 0x8f, 0x6e, 0xb5, 0x9a, + 0xcf, 0x45, 0x16, 0xdd, 0xab, 0x28, 0xf2, 0x70, 0x24, 0x2d, 0x0a, 0xde, 0xe7, 0xa1, 0xcf, 0x47, + 0x3e, 0x93, 0x5b, 0x14, 0xe6, 0x51, 0x37, 0xc6, 0x52, 0x5d, 0x77, 0xb2, 0x5e, 0x90, 0xdc, 0x8b, + 0x96, 0xe2, 0x55, 0xb2, 0xa3, 0x81, 0xde, 0x73, 0x21, 0x8f, 0xdf, 0x51, 0x90, 0x28, 0x99, 0x74, + 0x32, 0x91, 0x7e, 0xd0, 0x5e, 0x21, 0x9a, 0xe7, 0x8e, 0x06, 0x62, 0x7f, 0xeb, 0x4a, 0xf5, 0x5c, + 0x35, 0xe5, 0xfb, 0x64, 0x6c, 0x02, 0xfa, 0x10, 0x77, 0xa6, 0xf1, 0xa2, 0xa9, 0x4c, 0x49, 0x91, + 0x93, 0x0f, 0xd6, 0x3c, 0x63, 0xd9, 0x5f, 0x4a, 0xb3, 0xec, 0x2f, 0x96, 0x81, 0xc5, 0xfe, 0x8a, + 0x55, 0xc9, 0x3d, 0x5e, 0xb1, 0x5a, 0x91, 0xf3, 0x8a, 0x55, 0x3f, 0xc7, 0x5e, 0x09, 0x06, 0x0b, + 0x09, 0x79, 0x69, 0x87, 0xb9, 0x12, 0xfc, 0xbe, 0xd9, 0x9d, 0x0f, 0x14, 0x8e, 0x10, 0xaf, 0x17, + 0x78, 0x56, 0x37, 0x36, 0x48, 0xc7, 0x07, 0xf2, 0x27, 0x67, 0xcf, 0xe9, 0xd1, 0xce, 0x64, 0x2c, + 0x92, 0xee, 0xbd, 0xc9, 0xde, 0x12, 0xfe, 0x37, 0x1c, 0x2a, 0x34, 0x8c, 0x23, 0xd4, 0x04, 0x72, + 0x8b, 0x53, 0xa5, 0x2f, 0x38, 0xc1, 0x04, 0x8b, 0x97, 0x39, 0xb3, 0x32, 0x59, 0xb6, 0x1a, 0xca, + 0xb6, 0xe1, 0x79, 0x21, 0x52, 0x0e, 0x2d, 0x34, 0x19, 0x9b, 0x30, 0xad, 0x88, 0x06, 0x1d, 0x7a, + 0xae, 0x70, 0xfd, 0x90, 0x7e, 0xc2, 0xb2, 0x39, 0xa7, 0xa6, 0x0f, 0xa7, 0x8f, 0x74, 0xdd, 0x8d, + 0x74, 0x41, 0x73, 0xb4, 0xd1, 0x71, 0xac, 0x41, 0xc7, 0x3e, 0xc3, 0xfa, 0x18, 0x91, 0x6c, 0x92, + 0xb1, 0x09, 0xb0, 0xc2, 0x98, 0x96, 0x60, 0x3c, 0x65, 0xc8, 0x72, 0xc0, 0x9d, 0x40, 0xac, 0x17, + 0xa0, 0xfe, 0xca, 0x66, 0x8d, 0xf9, 0x7f, 0xc6, 0x99, 0x07, 0x0b, 0x60, 0x4f, 0x99, 0xe2, 0x54, + 0xc9, 0x27, 0x50, 0x98, 0xb8, 0xdb, 0x8a, 0x2c, 0x7e, 0xe4, 0x96, 0x1e, 0xe9, 0x04, 0xa3, 0x6d, + 0xfa, 0xd0, 0x0c, 0x7c, 0x3a, 0xe5, 0x5a, 0xa9, 0xd1, 0x55, 0xb7, 0x65, 0x2e, 0x11, 0x95, 0x77, + 0xd6, 0xd5, 0xc1, 0xaf, 0x9a, 0xda, 0x6d, 0xb5, 0x14, 0xb8, 0x59, 0xda, 0xb6, 0x53, 0xae, 0x9d, + 0x4b, 0x44, 0x5d, 0x75, 0xae, 0x46, 0x97, 0xb4, 0xcd, 0xf5, 0x9e, 0xd4, 0xe8, 0xda, 0x51, 0x67, + 0x20, 0xd5, 0xd6, 0x7c, 0x53, 0xfd, 0x66, 0xf0, 0x67, 0x72, 0xa1, 0x41, 0x47, 0x5e, 0x46, 0xc9, + 0xc8, 0x85, 0x06, 0x15, 0x79, 0x29, 0x10, 0x91, 0x57, 0xd8, 0x69, 0xc8, 0xcb, 0x28, 0x09, 0xf3, + 0x69, 0xb3, 0x7d, 0x08, 0x79, 0x02, 0xfe, 0x50, 0x7b, 0x2b, 0x61, 0xf8, 0x60, 0xcb, 0x21, 0xe6, + 0x53, 0x06, 0x2c, 0xbe, 0x62, 0xfd, 0x86, 0xa7, 0x69, 0x8c, 0x08, 0xaa, 0x60, 0x88, 0x0c, 0xc2, + 0x93, 0x36, 0xa9, 0xe3, 0x5f, 0xa6, 0xa7, 0x6e, 0x83, 0x78, 0x0d, 0x1d, 0x27, 0x33, 0x44, 0xf8, + 0x20, 0x5a, 0x8e, 0x17, 0x85, 0xc9, 0xd8, 0x1e, 0x9e, 0xdf, 0x5e, 0x6a, 0xe0, 0x54, 0x6f, 0x20, + 0x31, 0x45, 0xd9, 0x6c, 0xe2, 0x6a, 0x6b, 0xdf, 0x22, 0x4b, 0x14, 0xa4, 0xc6, 0x6f, 0xaa, 0x97, + 0x1c, 0xe1, 0x0a, 0x56, 0x71, 0xb2, 0x0d, 0x99, 0xdf, 0x83, 0x20, 0x4c, 0x4f, 0x1d, 0xb3, 0x87, + 0x3e, 0x42, 0xda, 0x48, 0x02, 0x62, 0xe5, 0x24, 0x8a, 0x4f, 0x9b, 0x1f, 0x0e, 0x6d, 0x74, 0x5c, + 0x1b, 0xee, 0x86, 0xb9, 0x92, 0x8c, 0x1d, 0x49, 0x8d, 0x74, 0x3b, 0x5c, 0x35, 0x72, 0x4e, 0x16, + 0xbe, 0x19, 0x2d, 0x0e, 0xbb, 0x9b, 0x42, 0xa5, 0xab, 0xf3, 0x87, 0x39, 0x66, 0xf9, 0x96, 0xf1, + 0xcc, 0x2f, 0x11, 0x8b, 0x49, 0x2e, 0xf1, 0xf9, 0xbc, 0x3c, 0x0b, 0x3a, 0x51, 0xbf, 0xd8, 0x9b, + 0x9a, 0xf8, 0xda, 0x38, 0x66, 0xc3, 0xe8, 0xfc, 0x57, 0x1c, 0x2a, 0x31, 0xb7, 0x77, 0x62, 0x7e, + 0x7b, 0x94, 0x34, 0x67, 0x90, 0x53, 0xa5, 0x23, 0x9c, 0x60, 0x4f, 0x13, 0x0f, 0x5a, 0x7a, 0x1b, + 0x38, 0xc5, 0xf8, 0x03, 0xc1, 0x56, 0x77, 0xcb, 0x7a, 0x85, 0x46, 0x2d, 0xaf, 0xb8, 0x1b, 0xe9, + 0xd2, 0xcf, 0x4c, 0x66, 0x22, 0x23, 0xec, 0xf6, 0x64, 0x66, 0xd2, 0xd4, 0xa8, 0x19, 0x11, 0x3d, + 0x2f, 0x42, 0xa5, 0x43, 0x1b, 0xf8, 0xd2, 0xb9, 0x6b, 0x3b, 0x05, 0xf4, 0x9d, 0x74, 0xd5, 0x38, + 0xe1, 0xb7, 0x6c, 0xaf, 0x09, 0x1f, 0xe1, 0xd0, 0x62, 0x77, 0x50, 0x71, 0x97, 0x3e, 0x46, 0x46, + 0xfd, 0xf1, 0xfc, 0x97, 0x7c, 0x83, 0x8a, 0x1b, 0x34, 0x3b, 0x82, 0x2b, 0x6e, 0xa6, 0x74, 0xc9, + 0xf3, 0xe9, 0x58, 0xbd, 0x62, 0x44, 0x81, 0x72, 0x90, 0xc0, 0x93, 0xb1, 0x01, 0x3d, 0xda, 0xab, + 0x4d, 0x8e, 0x54, 0x3a, 0xb4, 0xbe, 0x33, 0x30, 0xeb, 0xcc, 0x80, 0xd6, 0x80, 0x5f, 0x21, 0x13, + 0x6a, 0x84, 0x2d, 0x92, 0xf3, 0x1b, 0x62, 0x1b, 0x2b, 0x25, 0xa3, 0x55, 0x3e, 0xff, 0x68, 0xd5, + 0x1a, 0xa8, 0x30, 0x64, 0x20, 0x04, 0x99, 0xf9, 0x0d, 0x21, 0x48, 0xbf, 0x71, 0x11, 0xd8, 0x47, + 0x72, 0x76, 0xac, 0x12, 0x62, 0x2d, 0xd1, 0xb1, 0x33, 0xfa, 0x3c, 0x35, 0xd1, 0x6f, 0x44, 0x3f, + 0x33, 0x73, 0x7f, 0x97, 0xe7, 0x70, 0x5f, 0x43, 0xc5, 0xcc, 0x06, 0xf8, 0x40, 0x59, 0x5f, 0x41, + 0x45, 0xe6, 0x1c, 0xfc, 0x56, 0x4f, 0xf0, 0x7e, 0x3b, 0xdb, 0x18, 0x1e, 0x51, 0xb4, 0x4d, 0xb0, + 0xa4, 0x5a, 0x26, 0xfa, 0x3e, 0x66, 0x8d, 0x53, 0x77, 0xc0, 0xc8, 0x75, 0x37, 0xd2, 0x69, 0x1a, + 0xb6, 0xee, 0x46, 0x3a, 0xa5, 0x77, 0x1a, 0x6c, 0x93, 0xee, 0xd0, 0x8c, 0x76, 0xe4, 0xac, 0x76, + 0xbd, 0x33, 0xfd, 0x49, 0x4f, 0x59, 0x94, 0x43, 0x45, 0xe6, 0x94, 0xe1, 0x37, 0xa1, 0xa2, 0x3d, + 0xcd, 0x4e, 0xe6, 0x18, 0xb7, 0x84, 0x9e, 0x48, 0x98, 0x50, 0x71, 0xb9, 0x39, 0x1d, 0xf0, 0x22, + 0xb6, 0x12, 0x78, 0x27, 0x2a, 0xa6, 0x1f, 0x4c, 0x6c, 0x50, 0xe2, 0x4c, 0xc5, 0xc2, 0x49, 0x44, + 0x1a, 0x9b, 0xab, 0x1a, 0x9b, 0x5a, 0xd6, 0xc9, 0xa3, 0x55, 0xd9, 0x42, 0x20, 0xd6, 0xcd, 0x4b, + 0x18, 0xd9, 0xce, 0x94, 0xde, 0xdd, 0xaa, 0xf4, 0x6b, 0xc1, 0x9e, 0x22, 0x6e, 0xb7, 0x1d, 0xfa, + 0x60, 0x29, 0x1e, 0x6f, 0x3e, 0xcc, 0xd1, 0x0d, 0x79, 0xab, 0x7e, 0x26, 0x75, 0xe2, 0x32, 0x23, + 0x60, 0xe3, 0x1d, 0x6b, 0x3a, 0xee, 0xaa, 0x81, 0xb3, 0xd4, 0x64, 0xfc, 0x58, 0x7a, 0xf2, 0x6b, + 0xfd, 0xe4, 0x8c, 0xab, 0x46, 0xb6, 0x53, 0xe7, 0x77, 0xa2, 0x95, 0x0c, 0x80, 0x69, 0x27, 0x91, + 0xbd, 0xb3, 0xd3, 0xc4, 0xd5, 0x59, 0x95, 0xa1, 0x2d, 0xce, 0xc6, 0xe3, 0x7f, 0x81, 0x96, 0xb5, + 0xfa, 0xfc, 0x0d, 0xbe, 0xdf, 0x1a, 0x4f, 0xc2, 0x6f, 0x50, 0xa5, 0x67, 0x05, 0x03, 0x26, 0x96, + 0x9a, 0x04, 0xf4, 0xd1, 0x88, 0x76, 0x7d, 0x08, 0xb8, 0x9c, 0x7e, 0xe2, 0xfa, 0x37, 0xd5, 0xcb, + 0x84, 0x25, 0xa5, 0xe9, 0x65, 0xe5, 0x7f, 0x25, 0x1b, 0xc8, 0x7c, 0x3d, 0x5a, 0xd6, 0xea, 0x3e, + 0x40, 0x68, 0x2d, 0x26, 0xb4, 0x5e, 0x26, 0x6e, 0x8b, 0x14, 0x26, 0xae, 0xcd, 0xaa, 0x12, 0xa6, + 0x78, 0xe9, 0x6a, 0x7e, 0x8a, 0x90, 0x85, 0xdf, 0x41, 0xce, 0x3d, 0x7c, 0x41, 0xc5, 0x4b, 0xa8, + 0x2e, 0x21, 0x54, 0x89, 0x69, 0x9d, 0x85, 0x8b, 0x4f, 0xb0, 0x94, 0xf5, 0xd1, 0x0b, 0xfa, 0xe8, + 0x59, 0x93, 0xac, 0xcc, 0x62, 0xf2, 0x6f, 0xd8, 0x6f, 0xb9, 0x90, 0x58, 0x2d, 0xd4, 0xb9, 0xe4, + 0x89, 0xec, 0xea, 0x11, 0x59, 0x65, 0x57, 0xbd, 0x13, 0x4f, 0x36, 0xea, 0x41, 0x78, 0x10, 0xad, + 0xa4, 0x6a, 0x9f, 0x33, 0x10, 0x68, 0xf1, 0x06, 0xf6, 0xfb, 0xa9, 0x22, 0xbe, 0x43, 0x95, 0xb6, + 0x09, 0xd9, 0x69, 0xe2, 0x6b, 0x59, 0x24, 0xe9, 0xd1, 0x7e, 0xff, 0xa7, 0xf0, 0x58, 0x89, 0x76, + 0xf8, 0xb6, 0x36, 0x70, 0x53, 0x3b, 0x36, 0xae, 0x8f, 0x5e, 0x30, 0x95, 0x98, 0x17, 0x37, 0x6c, + 0x48, 0x5d, 0x55, 0xe5, 0x6c, 0x5a, 0xfc, 0x15, 0x0e, 0x15, 0x85, 0xda, 0xf7, 0xf8, 0x15, 0x12, + 0xf4, 0xae, 0x90, 0x84, 0x5c, 0xa2, 0x47, 0x66, 0x16, 0x5c, 0xec, 0xc8, 0x69, 0x04, 0x29, 0x08, + 0xe4, 0xe0, 0x2b, 0x27, 0xb1, 0x28, 0x3c, 0xd2, 0x9d, 0x1a, 0xe9, 0x06, 0xe5, 0x9f, 0xcc, 0x50, + 0xfa, 0x74, 0x3c, 0x05, 0xe8, 0xd1, 0xfe, 0x54, 0xcf, 0x55, 0xad, 0xa7, 0x4f, 0x1b, 0x1e, 0xcc, + 0x8c, 0xc5, 0xb5, 0xf8, 0x50, 0x6a, 0x6c, 0x12, 0x73, 0x62, 0xf2, 0x2a, 0x74, 0x2a, 0x7e, 0x95, + 0x3c, 0xea, 0x7f, 0x51, 0xeb, 0x1f, 0x30, 0x21, 0x99, 0xcf, 0x4f, 0xcb, 0x56, 0x15, 0xf8, 0xb3, + 0x1c, 0x5a, 0xf2, 0xdb, 0x80, 0x5f, 0x31, 0xde, 0x3b, 0x07, 0xab, 0xba, 0x00, 0x30, 0x71, 0xff, + 0xfd, 0x54, 0x90, 0xbe, 0xac, 0x10, 0x8d, 0xb3, 0x15, 0x34, 0x60, 0xdf, 0xb2, 0x86, 0x50, 0x3e, + 0x7f, 0xab, 0x00, 0x15, 0x07, 0x95, 0x70, 0xf0, 0x60, 0x7d, 0xa0, 0xc5, 0xe7, 0x39, 0x48, 0x35, + 0x87, 0x8f, 0x0a, 0x54, 0x69, 0xa8, 0x40, 0x60, 0x53, 0xc4, 0xff, 0x87, 0xa3, 0xba, 0x16, 0x6c, + 0xec, 0xc6, 0x5b, 0x95, 0x58, 0xc8, 0xee, 0x1d, 0x48, 0x4f, 0x9d, 0x80, 0x47, 0x6e, 0xe6, 0x12, + 0x23, 0xae, 0xed, 0xdb, 0x6b, 0x6b, 0x5c, 0x52, 0x63, 0xed, 0x6e, 0xb9, 0xb6, 0x51, 0x7e, 0xb7, + 0x1c, 0xe6, 0xf5, 0x4f, 0xf4, 0x6b, 0x63, 0x15, 0x44, 0xfe, 0x73, 0xca, 0xb5, 0xdb, 0x6b, 0xeb, + 0x1a, 0xa5, 0x6d, 0xbb, 0x5d, 0x75, 0x8d, 0xb5, 0xf2, 0x2e, 0x69, 0x1b, 0xd6, 0x40, 0xea, 0x76, + 0x00, 0xfa, 0xdd, 0x48, 0x97, 0xa9, 0x71, 0x24, 0x63, 0xf1, 0x2c, 0x62, 0x78, 0x6f, 0x07, 0xeb, + 0xda, 0xa9, 0x5b, 0x74, 0x4b, 0x4c, 0x8c, 0x80, 0xf7, 0x36, 0xf4, 0xb8, 0xa6, 0x46, 0x71, 0xc3, + 0x80, 0xcd, 0x64, 0x22, 0xc3, 0xc9, 0x58, 0x44, 0xbb, 0x7e, 0x2e, 0x3d, 0x75, 0xc2, 0x90, 0x47, + 0x70, 0x13, 0x52, 0x67, 0x6f, 0x6a, 0x7d, 0xd7, 0xe9, 0x7a, 0x83, 0x86, 0x5c, 0x1b, 0xd3, 0x4f, + 0x5c, 0xa7, 0x0e, 0x1c, 0x10, 0x0b, 0x90, 0x10, 0xd5, 0x7a, 0xc6, 0x01, 0xe1, 0x6e, 0xa4, 0x4b, + 0x66, 0xbb, 0x83, 0xff, 0x2f, 0x1c, 0x5a, 0xdd, 0xda, 0xde, 0x12, 0xf6, 0xbd, 0x17, 0xf0, 0x2b, + 0x0d, 0xa4, 0x6c, 0xda, 0x85, 0x70, 0x64, 0xfd, 0x25, 0xa7, 0x4a, 0x53, 0x9c, 0x90, 0x1f, 0x47, + 0x3c, 0xc1, 0x69, 0x43, 0x53, 0x99, 0x48, 0xbf, 0x16, 0x49, 0xcc, 0x25, 0x46, 0xea, 0x65, 0xd7, + 0x0e, 0xd9, 0xd5, 0xf8, 0xee, 0x5c, 0x22, 0x5a, 0xfb, 0xf6, 0x4e, 0x69, 0x9b, 0xab, 0x11, 0x37, + 0xd4, 0x82, 0x8e, 0x18, 0xe7, 0x27, 0xe3, 0x99, 0xcf, 0x4f, 0x9b, 0xa3, 0x68, 0x4e, 0xdb, 0x64, + 0x6c, 0xd0, 0x9c, 0x0d, 0xec, 0x18, 0xdd, 0x8d, 0x74, 0x19, 0xe4, 0xe6, 0x12, 0x23, 0xd0, 0x2c, + 0x13, 0xf1, 0x6e, 0xa4, 0x13, 0x72, 0xeb, 0xa3, 0xf1, 0x64, 0x62, 0x44, 0x3b, 0xd7, 0x9b, 0x1e, + 0x1b, 0x93, 0xf3, 0x57, 0x97, 0xbf, 0xca, 0xa1, 0x55, 0x41, 0xa5, 0xad, 0xc5, 0xed, 0x51, 0x76, + 0xfa, 0xf7, 0x29, 0xee, 0x96, 0xf0, 0x3e, 0xf0, 0x29, 0x2d, 0xac, 0xfe, 0x9d, 0x2a, 0x1d, 0x10, + 0x72, 0x12, 0x45, 0x2f, 0xd8, 0x25, 0x52, 0x67, 0x8f, 0xe9, 0x83, 0x57, 0xb1, 0xae, 0xd1, 0x79, + 0x59, 0x8b, 0xdf, 0xa6, 0xf2, 0xc5, 0xd9, 0x59, 0x7d, 0xe0, 0x63, 0x7d, 0x74, 0x40, 0x3b, 0x32, + 0x66, 0x37, 0x56, 0xdc, 0x8d, 0x74, 0xa5, 0x67, 0xcf, 0xa7, 0xa6, 0x27, 0x36, 0x6a, 0x7d, 0x87, + 0x33, 0xea, 0x85, 0x36, 0x9f, 0xbf, 0x29, 0x19, 0x1b, 0xc0, 0xb2, 0x5c, 0xdf, 0x99, 0xf4, 0xd5, + 0xc3, 0xc9, 0x58, 0xdc, 0xa4, 0x35, 0x97, 0xe8, 0x94, 0x73, 0xca, 0xe5, 0xff, 0x86, 0x43, 0xc5, + 0x21, 0xe0, 0xe7, 0xe4, 0x61, 0x72, 0x38, 0xcb, 0xff, 0xef, 0x39, 0x55, 0xfa, 0x27, 0x9c, 0xc0, + 0xa6, 0x88, 0x5f, 0x71, 0x74, 0x26, 0x11, 0xa3, 0xdb, 0x5c, 0x22, 0xea, 0xdc, 0x26, 0x35, 0x34, + 0xb8, 0x9c, 0xbb, 0x1b, 0x9c, 0xd2, 0x36, 0x57, 0xdd, 0x96, 0x72, 0xa8, 0x57, 0x05, 0xe9, 0x3a, + 0x3a, 0xe5, 0xe8, 0xbe, 0x65, 0x48, 0xb7, 0x58, 0x9b, 0x4b, 0x18, 0xb3, 0x91, 0xbc, 0xfa, 0x62, + 0xc0, 0xcf, 0xbe, 0x23, 0x6d, 0xad, 0xdd, 0xbd, 0xb3, 0x7e, 0x77, 0x43, 0xe3, 0x8e, 0xfa, 0xfa, + 0xda, 0x1a, 0x83, 0xe8, 0x5c, 0x62, 0xc4, 0xcc, 0xa1, 0xf5, 0x7c, 0x89, 0xfb, 0x3e, 0x36, 0x00, + 0x59, 0xe7, 0x12, 0x51, 0xb3, 0x1c, 0xfa, 0xe6, 0xfc, 0xf1, 0x4b, 0x99, 0xc3, 0x2a, 0xa0, 0x99, + 0x23, 0x2a, 0xb3, 0x8d, 0xe0, 0x3b, 0x10, 0x0a, 0xfb, 0x5a, 0x15, 0xd9, 0xed, 0x6f, 0x52, 0x42, + 0xa5, 0x2b, 0xf2, 0x3b, 0xc6, 0x36, 0x1a, 0x18, 0xe0, 0xaa, 0xc1, 0xe4, 0x10, 0x05, 0x6d, 0x72, + 0x44, 0x3f, 0x75, 0x8b, 0x35, 0x96, 0xb3, 0xaf, 0xd9, 0xd8, 0xce, 0x45, 0x99, 0x7c, 0x7c, 0x27, + 0x07, 0x46, 0xa4, 0x9d, 0x6d, 0x4d, 0x41, 0xb7, 0x57, 0x21, 0x0a, 0x79, 0x61, 0xf5, 0x6e, 0x55, + 0xfa, 0x95, 0xc0, 0xc2, 0xb1, 0x0c, 0x80, 0xa7, 0x01, 0xb5, 0xb3, 0x0e, 0xf4, 0xa6, 0xe2, 0x57, + 0xb7, 0x6c, 0xad, 0xa5, 0x0f, 0x60, 0x12, 0x4f, 0x86, 0x4a, 0xf0, 0xf5, 0x31, 0xc2, 0x17, 0xc6, + 0xb5, 0xa1, 0x63, 0x5a, 0xec, 0x10, 0x60, 0x54, 0x6a, 0x7d, 0x67, 0xb4, 0x44, 0x5c, 0xeb, 0xbb, + 0x45, 0x23, 0xf7, 0xb2, 0xb4, 0x79, 0x37, 0x2a, 0xa6, 0x56, 0x75, 0x39, 0xd0, 0xa2, 0x50, 0x45, + 0x9c, 0x98, 0x8b, 0x58, 0xb8, 0x58, 0x05, 0x83, 0xa6, 0x34, 0x87, 0x2c, 0xe9, 0xf6, 0xd4, 0x2d, + 0x10, 0xb0, 0x53, 0x23, 0xdd, 0x3e, 0x77, 0x6b, 0xfa, 0xaa, 0x9a, 0xee, 0xff, 0xc2, 0x90, 0x81, + 0x98, 0xbc, 0x65, 0xe9, 0x02, 0x54, 0x64, 0xf6, 0x1e, 0xff, 0x33, 0xf6, 0x19, 0xf8, 0x6a, 0x81, + 0x71, 0x88, 0x83, 0x5e, 0x84, 0x8d, 0xec, 0xc3, 0xc0, 0x1e, 0xe3, 0xb2, 0xbe, 0x19, 0xe4, 0x17, + 0xcc, 0x90, 0xb5, 0xa8, 0x30, 0xe4, 0xd9, 0xa7, 0x90, 0xd7, 0xfd, 0x41, 0x56, 0xa9, 0x50, 0xa5, + 0x27, 0x05, 0x13, 0x28, 0xae, 0x02, 0x3a, 0x9e, 0x60, 0xc0, 0x0f, 0x8e, 0x22, 0x0c, 0x09, 0x13, + 0x8b, 0xf7, 0xa0, 0xc5, 0x98, 0xc5, 0x51, 0x43, 0x26, 0xd9, 0x69, 0x09, 0x40, 0xac, 0xb1, 0x65, + 0xd7, 0xa2, 0x71, 0xda, 0xb7, 0x58, 0x9f, 0x20, 0xcf, 0xd2, 0x02, 0x54, 0xeb, 0x3b, 0x63, 0x3e, + 0x06, 0x00, 0x8b, 0x10, 0x94, 0x11, 0x48, 0x95, 0x09, 0x2d, 0xfe, 0x4d, 0x84, 0xa8, 0x9c, 0x00, + 0xe7, 0x13, 0x78, 0x53, 0x27, 0x2e, 0x80, 0x0c, 0x58, 0x5c, 0x09, 0xb2, 0x05, 0xed, 0xd7, 0x13, + 0xd7, 0x65, 0x26, 0x71, 0x13, 0x16, 0x4b, 0x50, 0xb9, 0x60, 0xf5, 0x9f, 0xf8, 0x84, 0x21, 0x6c, + 0x29, 0x6c, 0x7f, 0xd1, 0x47, 0xab, 0x8f, 0x14, 0xa0, 0xc2, 0x1a, 0x77, 0xd8, 0x5d, 0xe3, 0x0b, + 0x35, 0xf3, 0x27, 0x38, 0x54, 0xe8, 0xf5, 0x85, 0x9a, 0xad, 0x50, 0xa7, 0xd5, 0x07, 0x55, 0xa9, + 0x43, 0x30, 0x81, 0xe2, 0x87, 0x10, 0xf0, 0x2e, 0x75, 0xf6, 0xb4, 0xe9, 0xc8, 0xb8, 0x6d, 0x87, + 0x53, 0xda, 0xb6, 0xbb, 0x5a, 0x6a, 0x70, 0x39, 0xe7, 0x12, 0x7d, 0xd0, 0xc4, 0xb9, 0x44, 0x7f, + 0x25, 0xc0, 0x1b, 0x1a, 0x6a, 0x2a, 0x9d, 0xdb, 0x76, 0xec, 0xac, 0xc1, 0x18, 0xb5, 0xf4, 0xa7, + 0x05, 0xac, 0x97, 0x6b, 0xb7, 0xbb, 0x76, 0x6e, 0x2f, 0xcf, 0x7c, 0x7e, 0x5a, 0x8f, 0x5c, 0x4d, + 0x1f, 0x9a, 0x49, 0xc6, 0x8f, 0xa5, 0xc6, 0xae, 0xa5, 0xce, 0x9e, 0xae, 0x90, 0xcd, 0x52, 0xf9, + 0xbd, 0x50, 0x2d, 0x22, 0x7c, 0x31, 0xaf, 0x60, 0x9b, 0x40, 0xf1, 0x75, 0xb3, 0x5a, 0x78, 0x6b, + 0xb9, 0x8e, 0xd9, 0xca, 0xc6, 0x0d, 0x5b, 0xd2, 0x5f, 0xdd, 0x4e, 0xdf, 0xfe, 0xd2, 0x64, 0x75, + 0xc9, 0x58, 0x7c, 0x03, 0xc4, 0xb5, 0xdd, 0x80, 0xd7, 0x7a, 0x6c, 0x20, 0x7d, 0x73, 0x22, 0x79, + 0xe7, 0xba, 0x6c, 0x92, 0x29, 0x8b, 0x2e, 0x41, 0x25, 0x44, 0x12, 0xff, 0xfb, 0x1e, 0x01, 0x32, + 0xfc, 0x36, 0x84, 0xf6, 0xfa, 0x5a, 0x94, 0x06, 0x78, 0xc7, 0x7c, 0x11, 0xe3, 0x9e, 0x63, 0x81, + 0xc5, 0x27, 0xf4, 0x93, 0xbd, 0xe6, 0x5b, 0xe6, 0xe5, 0xca, 0x81, 0xf0, 0x8b, 0xeb, 0x95, 0x03, + 0xe1, 0x97, 0xd6, 0x1f, 0xd8, 0x1b, 0xaa, 0x90, 0x19, 0x44, 0xfe, 0x43, 0xc4, 0xe3, 0xb9, 0xb8, + 0x39, 0x10, 0x6c, 0x75, 0x87, 0x25, 0xbf, 0x77, 0xbb, 0xf9, 0x82, 0x41, 0x21, 0xc4, 0xca, 0xca, + 0x93, 0x2c, 0x3e, 0x43, 0xbd, 0x75, 0xcc, 0xa7, 0xd3, 0xc8, 0xd3, 0x23, 0xb8, 0x61, 0x77, 0x6e, + 0xe9, 0xd1, 0xae, 0xf4, 0xcc, 0x8c, 0x9c, 0x27, 0x1b, 0xff, 0x26, 0x2a, 0x6e, 0xc5, 0x3f, 0x1a, + 0xdd, 0xc1, 0x26, 0x25, 0x4c, 0xaf, 0xe6, 0xac, 0x55, 0xa5, 0x27, 0x04, 0x16, 0x2e, 0x2e, 0x07, + 0x12, 0xa9, 0xb3, 0x93, 0xda, 0xcc, 0x09, 0x99, 0x4d, 0xe2, 0xff, 0x80, 0x4a, 0x70, 0x3f, 0xd4, + 0xbb, 0x83, 0x61, 0x1f, 0xf1, 0x77, 0x02, 0x61, 0x9d, 0xbc, 0x2b, 0x65, 0x4f, 0x11, 0x6b, 0x81, + 0x4a, 0x7a, 0xf2, 0x6b, 0xed, 0x52, 0xaf, 0x36, 0x3c, 0xa0, 0xf7, 0x9d, 0xd4, 0xfa, 0x0e, 0xe3, + 0x45, 0x3f, 0x3c, 0x00, 0x7e, 0x62, 0xc9, 0xd8, 0xf1, 0xe4, 0x74, 0x8f, 0x36, 0xf3, 0x11, 0xbc, + 0xb9, 0xa9, 0xdd, 0xfe, 0x42, 0x1f, 0xed, 0x37, 0xdf, 0xb7, 0x03, 0x43, 0xa8, 0x6c, 0xa7, 0x5a, + 0x36, 0xb4, 0x04, 0xf1, 0xe0, 0x15, 0xa1, 0x84, 0x25, 0x8f, 0x47, 0x09, 0x85, 0x7c, 0x7b, 0x5a, + 0x14, 0x7e, 0xac, 0x00, 0xf1, 0x3e, 0x0a, 0x76, 0xee, 0xc3, 0x75, 0x65, 0x66, 0xe7, 0x7f, 0xe5, + 0x54, 0xe9, 0x6f, 0x38, 0x21, 0x0f, 0x82, 0xf8, 0x3f, 0x73, 0x70, 0x50, 0x95, 0x9e, 0x1c, 0x4b, + 0xdf, 0xbc, 0x03, 0xb3, 0xf5, 0x6e, 0xa4, 0xab, 0x5a, 0xaa, 0xab, 0x79, 0xc7, 0x55, 0xd3, 0xf8, + 0x16, 0x9e, 0x7a, 0xf5, 0x12, 0x96, 0x75, 0x47, 0x32, 0x1f, 0x77, 0x27, 0xa7, 0x4f, 0xa7, 0x6f, + 0xde, 0xd1, 0xa3, 0xfd, 0x5a, 0xec, 0x8a, 0x36, 0x39, 0x93, 0x9a, 0xfe, 0x28, 0x35, 0x79, 0x6a, + 0x2e, 0x11, 0x6d, 0x94, 0xa5, 0xcd, 0x9b, 0x5d, 0xce, 0xdd, 0xf5, 0x3b, 0x1a, 0x1a, 0x31, 0xf6, + 0xee, 0xea, 0x77, 0x77, 0xbf, 0xb5, 0x63, 0xa7, 0x8c, 0xf7, 0xeb, 0xaf, 0x3a, 0x33, 0xbd, 0x43, + 0x38, 0xcb, 0xf5, 0x21, 0xcc, 0xd5, 0x86, 0x07, 0x81, 0xc8, 0x5c, 0x22, 0xca, 0x14, 0x92, 0x9b, + 0x0f, 0x4a, 0xb8, 0x57, 0x3e, 0xc9, 0xb9, 0x55, 0xda, 0x52, 0x6b, 0xa2, 0x6b, 0xd1, 0x1e, 0x30, + 0xdb, 0xc8, 0x79, 0xda, 0xca, 0x1f, 0xe5, 0xd0, 0x23, 0x06, 0x78, 0xbb, 0xfb, 0x40, 0xb5, 0xdb, + 0xef, 0xdd, 0xef, 0xf3, 0x86, 0xf7, 0xd1, 0xc5, 0xf2, 0x8e, 0x2a, 0x35, 0x0a, 0x79, 0x11, 0xc4, + 0x9f, 0x6a, 0x3d, 0xd7, 0x52, 0x33, 0xc7, 0xb4, 0xde, 0x38, 0x94, 0x93, 0x8c, 0x1d, 0xc9, 0x9c, + 0x19, 0xc6, 0x83, 0x38, 0x70, 0x22, 0x39, 0x33, 0x30, 0x97, 0x18, 0xd9, 0xbe, 0xa7, 0x2d, 0xc4, + 0x8a, 0xcb, 0x73, 0x89, 0x91, 0x0d, 0x14, 0x26, 0xe7, 0xa5, 0xc9, 0x37, 0xa3, 0x55, 0x6d, 0xed, + 0x7b, 0x5a, 0x7c, 0x1e, 0x57, 0xbd, 0x14, 0x0a, 0xf9, 0x9a, 0xfc, 0x8a, 0x97, 0xfa, 0x68, 0x93, + 0x7d, 0x33, 0x27, 0x51, 0x2c, 0xa7, 0x87, 0x4c, 0x70, 0x42, 0x4a, 0x2a, 0xe4, 0xaa, 0x37, 0xcb, + 0x4c, 0xc6, 0xe2, 0x86, 0xd8, 0x26, 0xe7, 0xe4, 0xe5, 0xdf, 0x43, 0xfc, 0x1e, 0xa3, 0xe4, 0x7a, + 0xb7, 0xa7, 0xd9, 0xdd, 0xa4, 0xb8, 0xbc, 0xf4, 0x80, 0x8c, 0x9c, 0xa6, 0xe4, 0x49, 0x16, 0x1f, + 0x02, 0xe7, 0x21, 0xb3, 0x6b, 0x5d, 0x35, 0x72, 0x1e, 0xb4, 0xb2, 0xf8, 0xe3, 0xe8, 0x51, 0x97, + 0xf1, 0x5a, 0x1c, 0x35, 0x8c, 0xd2, 0x97, 0x61, 0x5f, 0x33, 0xcf, 0xe2, 0x38, 0xcb, 0xee, 0x61, + 0x9c, 0xc5, 0x3d, 0x62, 0x3c, 0x31, 0xc7, 0x5e, 0xf8, 0x30, 0x4f, 0xe0, 0x5e, 0xa0, 0x3b, 0x6b, + 0x81, 0x75, 0x1b, 0x0e, 0x76, 0xd6, 0xe5, 0x96, 0x7c, 0x7d, 0xe1, 0x02, 0xdd, 0x21, 0x37, 0xd8, + 0x2f, 0xe1, 0x92, 0x53, 0x48, 0xaa, 0x3a, 0xaf, 0xa0, 0x97, 0x9b, 0xc8, 0x2c, 0xb7, 0xb4, 0xe5, + 0x7a, 0x54, 0x68, 0xa8, 0x85, 0xb4, 0x1b, 0x5e, 0x52, 0xa5, 0x8d, 0x82, 0x09, 0x14, 0x7f, 0x6c, + 0x68, 0x9d, 0xf0, 0xe2, 0x21, 0x53, 0x26, 0x31, 0xf0, 0x47, 0x20, 0x1c, 0x95, 0x6c, 0x66, 0xe0, + 0xdf, 0x40, 0x85, 0xee, 0xb6, 0xb6, 0x96, 0x83, 0x78, 0x8f, 0x06, 0x63, 0x00, 0x69, 0xad, 0x09, + 0x14, 0x79, 0xb0, 0x5f, 0x9b, 0xda, 0x7f, 0xa6, 0x77, 0x48, 0x36, 0x53, 0xf9, 0x26, 0xb4, 0xc8, + 0x59, 0xbf, 0x93, 0xb0, 0x93, 0x92, 0xea, 0x9d, 0xaa, 0x24, 0x0b, 0xf8, 0x5b, 0xdc, 0x8a, 0xe5, + 0xcd, 0xf3, 0x47, 0x9d, 0xf5, 0x3b, 0x99, 0x57, 0xa9, 0x06, 0x01, 0xc8, 0x3e, 0xd1, 0x97, 0x8c, + 0xab, 0xfa, 0xc9, 0xcb, 0x58, 0x6e, 0x9d, 0x3a, 0x6e, 0x83, 0xb3, 0x7a, 0x26, 0xa6, 0x88, 0x0b, + 0xda, 0xae, 0xb4, 0x52, 0xdb, 0x00, 0x14, 0xb4, 0x5d, 0x69, 0x35, 0x0a, 0xda, 0xae, 0xb4, 0x7e, + 0x1f, 0x05, 0x6d, 0x57, 0x5a, 0xf9, 0xfd, 0x68, 0xd1, 0x96, 0xfa, 0x9d, 0xc4, 0x9f, 0xa6, 0xa4, + 0x5a, 0x51, 0xa5, 0x3d, 0x02, 0xfe, 0x16, 0xdf, 0x07, 0x9a, 0x5b, 0xbe, 0x8f, 0x16, 0x59, 0xde, + 0xea, 0x89, 0x11, 0xbc, 0x61, 0xc9, 0xb8, 0x04, 0xfe, 0x93, 0xec, 0xe7, 0x14, 0x21, 0x10, 0xd1, + 0x1f, 0x54, 0xe9, 0xaf, 0xb3, 0x9e, 0x53, 0x6c, 0x81, 0x62, 0xa9, 0x21, 0x8c, 0xb9, 0xa7, 0x9a, + 0x3e, 0x4a, 0x1d, 0xd6, 0x9d, 0xf5, 0x3b, 0xf1, 0xf0, 0x1f, 0xee, 0xd1, 0x26, 0x4e, 0x83, 0x69, + 0x8c, 0xe8, 0xc2, 0x03, 0x20, 0x0a, 0x9b, 0x9b, 0x66, 0xba, 0xf7, 0xb3, 0xf4, 0x58, 0x54, 0x1b, + 0x26, 0x6f, 0x1c, 0x5e, 0xbf, 0x91, 0x9e, 0x3d, 0xa6, 0x45, 0xb1, 0xc4, 0xce, 0xd2, 0xcf, 0x7a, + 0x53, 0xf1, 0xdf, 0x11, 0x8e, 0x0d, 0x00, 0x86, 0x63, 0x83, 0xd2, 0xff, 0x69, 0x81, 0x2a, 0xfd, + 0x37, 0xc2, 0xb1, 0xb3, 0x11, 0xc4, 0x24, 0x07, 0x44, 0x81, 0x63, 0x63, 0x8d, 0x89, 0xc8, 0x17, + 0x61, 0xc5, 0xef, 0x51, 0xfc, 0x70, 0xbb, 0x4a, 0x8b, 0xf6, 0x68, 0xc3, 0x9f, 0x67, 0x33, 0xd5, + 0xbc, 0xbc, 0xb4, 0xa1, 0x7e, 0x07, 0x41, 0x4a, 0x7d, 0x7e, 0x3e, 0x39, 0x7d, 0xdb, 0x04, 0x53, + 0xae, 0x8f, 0x09, 0xdd, 0xb9, 0xa9, 0x45, 0x7b, 0xf4, 0xd1, 0xbe, 0xbb, 0x91, 0x2e, 0xf7, 0xfe, + 0x10, 0x90, 0xde, 0x51, 0xb7, 0xbb, 0xa6, 0x76, 0xbb, 0x54, 0x57, 0xa3, 0x47, 0xfb, 0x33, 0xa3, + 0x11, 0xc8, 0x56, 0x89, 0x69, 0xb1, 0x74, 0xee, 0x46, 0xba, 0xb4, 0x2b, 0x5d, 0x58, 0x82, 0x20, + 0x47, 0x28, 0xe0, 0x7e, 0xa8, 0x8f, 0x74, 0x99, 0xf6, 0x02, 0xf0, 0x40, 0x64, 0x0b, 0x49, 0x8d, + 0x74, 0x1b, 0x71, 0x6c, 0x9f, 0x0f, 0xfe, 0x58, 0x5e, 0x46, 0xeb, 0x21, 0xaf, 0xca, 0x6e, 0x8c, + 0x5c, 0x68, 0xd4, 0x5c, 0xce, 0xd3, 0x49, 0xfc, 0x00, 0x87, 0x50, 0x88, 0xc8, 0x17, 0x58, 0x62, + 0xa3, 0x37, 0x3a, 0x73, 0xe2, 0x11, 0x18, 0x12, 0x5d, 0x75, 0x83, 0x2a, 0xd5, 0x0b, 0x4c, 0x06, + 0xb1, 0x9a, 0xbe, 0xd8, 0x79, 0xf6, 0x74, 0xae, 0xeb, 0x24, 0xb4, 0x26, 0x19, 0x8b, 0xdb, 0xa4, + 0xb1, 0xb3, 0x64, 0x32, 0x12, 0xb1, 0x2a, 0x19, 0x8b, 0xff, 0x64, 0xc3, 0x16, 0x99, 0xa1, 0xc7, + 0x5f, 0xe3, 0x50, 0x91, 0x97, 0x96, 0x16, 0x2a, 0x5d, 0x4e, 0x74, 0xc3, 0xf9, 0xab, 0x13, 0x56, + 0xa5, 0xdf, 0x08, 0x16, 0xbe, 0xe8, 0x35, 0xe5, 0x36, 0xb3, 0x36, 0xfa, 0xa9, 0x8b, 0x6c, 0x6d, + 0xc8, 0x55, 0x78, 0x2a, 0xa9, 0x95, 0x6b, 0xb7, 0xbf, 0xd0, 0xe2, 0x17, 0xb4, 0xc4, 0x21, 0x7d, + 0xb0, 0x1f, 0xab, 0xc5, 0xc4, 0xab, 0x17, 0x9c, 0xba, 0x1d, 0x36, 0x49, 0x16, 0x1c, 0xc3, 0x21, + 0xd4, 0x6e, 0x85, 0x6c, 0x15, 0xc8, 0xb7, 0xa1, 0x22, 0x5f, 0x2b, 0xe6, 0xee, 0xfe, 0xbd, 0x01, + 0x1a, 0x3b, 0x25, 0x47, 0x93, 0x75, 0x19, 0x08, 0xe0, 0x5c, 0x63, 0x65, 0x60, 0x8f, 0x9c, 0x86, + 0xa7, 0xb0, 0x2e, 0x0b, 0x96, 0x29, 0xb2, 0x9e, 0x32, 0x27, 0x46, 0xb5, 0x43, 0x43, 0xc6, 0x81, + 0x85, 0x99, 0x87, 0xef, 0xe1, 0xd0, 0x43, 0x3e, 0xbf, 0x2f, 0xbc, 0x2d, 0xd0, 0xe4, 0xf3, 0xd7, + 0xbb, 0x43, 0xa1, 0xfd, 0x81, 0xa0, 0x97, 0x3a, 0xf0, 0x93, 0x8d, 0x39, 0x37, 0x55, 0xfc, 0x79, + 0xd6, 0xd1, 0x16, 0x74, 0x45, 0x1b, 0x4d, 0xb6, 0x14, 0x2e, 0x80, 0xc3, 0x88, 0x82, 0xc4, 0x08, + 0x8f, 0xd7, 0xc9, 0xb9, 0x34, 0xf9, 0x0b, 0x1c, 0x5a, 0x15, 0x62, 0x9f, 0x1a, 0x75, 0xd5, 0x84, + 0x4a, 0x57, 0x12, 0x63, 0x61, 0x48, 0x95, 0xda, 0x84, 0x9c, 0x44, 0xf1, 0x57, 0x56, 0x2d, 0x8c, + 0xc7, 0x4d, 0x4d, 0x9f, 0x15, 0x57, 0x0d, 0x5c, 0xff, 0x33, 0xaf, 0xd1, 0x60, 0xce, 0x41, 0x42, + 0x1f, 0x98, 0x67, 0xbf, 0x50, 0x2d, 0xfa, 0x04, 0xe9, 0x48, 0xb7, 0x49, 0x83, 0x76, 0x51, 0x4e, + 0x79, 0x58, 0x8a, 0x79, 0xc8, 0x17, 0x32, 0x9e, 0x43, 0xa5, 0x6f, 0x3b, 0x12, 0x8d, 0xbb, 0xb0, + 0xfa, 0x03, 0x55, 0x7a, 0x4f, 0xc8, 0x4d, 0x15, 0x6b, 0xf3, 0x8e, 0x08, 0xeb, 0xb4, 0x92, 0x8c, + 0x1f, 0x83, 0xa2, 0x2b, 0x1d, 0x99, 0x48, 0xbf, 0x36, 0xf6, 0xb9, 0x03, 0xae, 0x2c, 0xd8, 0x1e, + 0xeb, 0xc9, 0xa5, 0x4c, 0xde, 0xcf, 0xf5, 0x85, 0xb6, 0x07, 0xfc, 0xbe, 0x70, 0x20, 0x68, 0x54, + 0xe6, 0x21, 0x52, 0x19, 0x78, 0x3f, 0x37, 0x3b, 0x91, 0x1d, 0xb5, 0xf9, 0xeb, 0x02, 0xb6, 0x2a, + 0xb3, 0x2e, 0xb6, 0x5a, 0xe4, 0x90, 0xe4, 0xff, 0x4f, 0x0e, 0x41, 0x18, 0xec, 0x1a, 0x73, 0x89, + 0xf1, 0xf9, 0x1f, 0xf5, 0xb7, 0x4d, 0xff, 0xea, 0x6b, 0x9c, 0x2a, 0x8d, 0x73, 0x42, 0x56, 0x5e, + 0xf1, 0x04, 0x67, 0x6a, 0xd1, 0xec, 0xaa, 0x2b, 0x07, 0xde, 0x97, 0xfa, 0xa4, 0x33, 0x75, 0xf6, + 0x34, 0xc8, 0xf6, 0xd4, 0x43, 0x63, 0xfa, 0xb2, 0x36, 0x74, 0x84, 0xbe, 0x10, 0x19, 0x3d, 0xc9, + 0x46, 0x3c, 0xd7, 0xfb, 0x6e, 0xa7, 0x8f, 0x5e, 0x4e, 0xc6, 0x06, 0x40, 0x98, 0xd7, 0x86, 0xa6, + 0xe8, 0x4e, 0x41, 0x02, 0x5b, 0x9b, 0x59, 0x80, 0x5a, 0xc5, 0xc2, 0xeb, 0x5a, 0xce, 0xaa, 0x27, + 0xef, 0x61, 0x96, 0xcc, 0xce, 0x90, 0x12, 0x24, 0x06, 0x11, 0xb8, 0xe3, 0x40, 0x2e, 0xdb, 0xe7, + 0xa6, 0xe6, 0x38, 0xcb, 0x40, 0x29, 0xed, 0x34, 0x59, 0xce, 0xcd, 0xc1, 0x77, 0x72, 0x68, 0x59, + 0xb3, 0x72, 0xb0, 0xde, 0xed, 0x0b, 0xd2, 0xbb, 0x0d, 0x39, 0xf7, 0x38, 0xb7, 0x2a, 0x07, 0x09, + 0x1f, 0x20, 0x3e, 0x2e, 0x06, 0xb2, 0xf8, 0xa6, 0xf1, 0xea, 0x7a, 0x67, 0x46, 0xbd, 0x6c, 0x5c, + 0x2d, 0x49, 0xc6, 0x06, 0xb5, 0xa9, 0xc3, 0xa9, 0x8b, 0x9d, 0x62, 0x26, 0xd2, 0x9f, 0x8c, 0x45, + 0xe6, 0x12, 0x51, 0x31, 0x1d, 0xe9, 0xd1, 0xce, 0xf5, 0x52, 0xae, 0x0a, 0xc6, 0xb6, 0xa9, 0xc3, + 0x19, 0xf5, 0xb2, 0x6c, 0x90, 0x82, 0xf7, 0xf9, 0x03, 0x9e, 0x66, 0x25, 0xb8, 0x25, 0xe8, 0x6e, + 0xdb, 0x57, 0xef, 0x0e, 0xef, 0x23, 0x77, 0x1d, 0x8a, 0xe0, 0x36, 0x5e, 0x76, 0x9a, 0x58, 0x4b, + 0x1f, 0x97, 0x9e, 0x1d, 0xa6, 0x86, 0x96, 0xc9, 0x3b, 0xda, 0x99, 0x71, 0x50, 0xe7, 0x72, 0x39, + 0xf9, 0x7a, 0xcc, 0xf7, 0xd6, 0xef, 0xf1, 0x84, 0xd6, 0x53, 0x73, 0xd3, 0x7a, 0xa0, 0x27, 0x67, + 0xd3, 0xe5, 0x3f, 0xe6, 0x50, 0xa1, 0x3f, 0xe0, 0x05, 0x1b, 0x17, 0x9c, 0x8b, 0xf7, 0x70, 0xaa, + 0xd4, 0xc9, 0x09, 0x26, 0x58, 0x6c, 0xa7, 0x65, 0x13, 0x3b, 0x56, 0xa5, 0x43, 0x1b, 0x3a, 0xa9, + 0x45, 0x12, 0x9b, 0xb6, 0x4b, 0x0d, 0x8d, 0xb5, 0xf2, 0xee, 0xda, 0x46, 0x67, 0x4d, 0xa5, 0xe3, + 0x9d, 0x1d, 0xf2, 0xd6, 0x5a, 0xf9, 0x6e, 0xa4, 0x8b, 0x81, 0x6a, 0x43, 0x9f, 0xe9, 0xa3, 0xfd, + 0xda, 0xe8, 0x38, 0x58, 0xc8, 0x1c, 0xae, 0xba, 0x9a, 0xda, 0xfa, 0xda, 0xba, 0x9a, 0xda, 0xba, + 0xc6, 0xdd, 0xce, 0x6d, 0x3b, 0x31, 0x9e, 0x23, 0x75, 0xf4, 0x5a, 0xea, 0x73, 0x7a, 0xb3, 0xcc, + 0xd4, 0x0f, 0xc1, 0x78, 0x26, 0x9b, 0x15, 0xe0, 0x2f, 0x72, 0x68, 0xa9, 0x87, 0xec, 0x84, 0xf4, + 0x2c, 0x3c, 0xc7, 0xd3, 0xc9, 0x65, 0xdb, 0x2f, 0xeb, 0x83, 0x4a, 0x9b, 0xdb, 0xe7, 0x85, 0x63, + 0x43, 0x9a, 0x53, 0x6c, 0x34, 0xfd, 0xb7, 0x2c, 0x31, 0x23, 0x31, 0x84, 0x37, 0xf4, 0x99, 0x8f, + 0x72, 0xb7, 0xdb, 0x64, 0x2c, 0xce, 0x6e, 0xe2, 0xfa, 0x29, 0x2c, 0x18, 0x51, 0xae, 0x3b, 0x3d, + 0x81, 0xf5, 0x4a, 0x72, 0x1e, 0x21, 0x53, 0xea, 0x7c, 0x1f, 0x87, 0x56, 0xf8, 0x6c, 0x3a, 0x6c, + 0x69, 0x29, 0xa9, 0x6a, 0x59, 0x6e, 0x55, 0xb3, 0x35, 0x5d, 0xf0, 0xc0, 0xcb, 0xca, 0x2e, 0x3e, + 0x0f, 0xfa, 0x10, 0x75, 0xd1, 0x31, 0xc4, 0x0d, 0xf3, 0x0e, 0x4f, 0x26, 0x42, 0x2f, 0x25, 0xca, + 0x59, 0x19, 0xcb, 0xfe, 0xcd, 0x62, 0xb4, 0x3a, 0x6f, 0x7f, 0xf0, 0x1f, 0x71, 0x68, 0x69, 0x9b, + 0x12, 0xf4, 0x05, 0xbc, 0xf4, 0xc8, 0x97, 0x58, 0xd7, 0x29, 0x48, 0xf4, 0xc3, 0x9a, 0x34, 0xbb, + 0x09, 0x8f, 0xc7, 0x89, 0x59, 0x56, 0x23, 0x04, 0x91, 0x09, 0xc6, 0x3f, 0x1d, 0x3d, 0xa4, 0x9d, + 0xbd, 0x39, 0x97, 0x18, 0xd9, 0x58, 0xe9, 0x10, 0x2b, 0x1d, 0x2f, 0x56, 0x3a, 0x5e, 0xaa, 0x74, + 0xfc, 0xa4, 0xd2, 0xf1, 0x72, 0xa5, 0xe3, 0x95, 0x4a, 0xc7, 0xab, 0x95, 0x8e, 0xd7, 0x2a, 0x1d, + 0x1b, 0x37, 0x54, 0x3a, 0x36, 0x6e, 0xac, 0x74, 0x6c, 0x14, 0x2b, 0x1d, 0xe2, 0x4b, 0x95, 0x8e, + 0x17, 0x5f, 0xae, 0x74, 0xbc, 0xf4, 0x6a, 0xa5, 0xe3, 0xe5, 0x0d, 0x58, 0xa5, 0xa3, 0xe5, 0xf2, + 0x9f, 0x2c, 0x42, 0x45, 0x41, 0xc5, 0xaf, 0xec, 0xdf, 0xdc, 0xe2, 0x6e, 0xa2, 0xca, 0x51, 0xf7, + 0x22, 0x55, 0x8a, 0x2c, 0x12, 0x2c, 0xb8, 0xf8, 0xb7, 0x05, 0x74, 0x9f, 0x23, 0xbd, 0xaf, 0x5f, + 0xec, 0x4d, 0x4f, 0x1d, 0xce, 0xad, 0x4c, 0xdd, 0x8e, 0x46, 0xd7, 0xe6, 0x77, 0x77, 0x4b, 0x75, + 0x35, 0xbb, 0xa5, 0x9d, 0x8d, 0x3b, 0x76, 0xcb, 0xb5, 0x75, 0xb5, 0xef, 0x60, 0x45, 0x3f, 0x32, + 0x92, 0xba, 0x70, 0x39, 0x3d, 0xdb, 0xab, 0x8f, 0x5e, 0x48, 0xc6, 0x8e, 0xb3, 0xa4, 0x5e, 0x77, + 0x30, 0x99, 0xb6, 0x4b, 0x75, 0x3b, 0xa5, 0x6d, 0xf3, 0x64, 0x1b, 0xb0, 0x65, 0xab, 0x71, 0x35, + 0x48, 0xd5, 0xdb, 0x6a, 0x77, 0xcf, 0x9f, 0x1b, 0x8e, 0x16, 0xe6, 0x23, 0xb0, 0xce, 0xd8, 0x02, + 0x48, 0x0b, 0xec, 0x75, 0x67, 0x09, 0xdd, 0x8d, 0x74, 0xa5, 0x8f, 0x5e, 0xc6, 0x52, 0xfa, 0x50, + 0x17, 0x66, 0xdf, 0x64, 0x71, 0x24, 0x63, 0xf1, 0x79, 0x9a, 0x1a, 0xd5, 0x46, 0xc7, 0xe9, 0xed, + 0xd7, 0x99, 0x33, 0x99, 0x8f, 0xcf, 0x69, 0x3d, 0x3d, 0xe9, 0x5b, 0x5f, 0xe2, 0xe1, 0x3c, 0xd4, + 0xa3, 0x1d, 0xfe, 0x2a, 0x19, 0x3b, 0x0a, 0xd7, 0xf3, 0x08, 0xbf, 0xbc, 0xae, 0x8f, 0x5e, 0xd0, + 0x86, 0x07, 0xb5, 0xeb, 0x87, 0xf5, 0x68, 0xbf, 0x3e, 0xda, 0xc7, 0xd6, 0x0f, 0x0f, 0x91, 0xd5, + 0xff, 0x65, 0x7f, 0xfb, 0x28, 0x7a, 0x38, 0x8f, 0x03, 0x25, 0xff, 0x07, 0xb4, 0xba, 0x25, 0x17, + 0x6c, 0x9e, 0xdc, 0x93, 0x67, 0x7d, 0xf3, 0x63, 0x88, 0x55, 0xec, 0x29, 0x00, 0xf8, 0x8f, 0x91, + 0x13, 0xc8, 0x9c, 0x43, 0xfa, 0x64, 0xec, 0x88, 0xab, 0x46, 0xce, 0x4f, 0x85, 0xff, 0x35, 0x7a, + 0xd8, 0x9e, 0xa0, 0x30, 0xa7, 0xf5, 0xc4, 0x86, 0x97, 0x2f, 0x5d, 0xe4, 0xd9, 0x62, 0xa9, 0x71, + 0x3e, 0x1f, 0x22, 0x16, 0x4e, 0x72, 0x5e, 0x0b, 0x69, 0x55, 0xa5, 0x0f, 0x59, 0xd7, 0xc0, 0x0f, + 0xa8, 0xd7, 0xdd, 0xd8, 0xb8, 0x7e, 0x7a, 0xd0, 0xbc, 0x19, 0xac, 0xdd, 0x38, 0x9f, 0x8c, 0x0f, + 0x6a, 0x1f, 0x7d, 0x96, 0x8c, 0x7d, 0x06, 0x9e, 0x82, 0xa6, 0x8f, 0x20, 0x7c, 0x6a, 0x97, 0x06, + 0x20, 0x66, 0x0d, 0xce, 0x02, 0xae, 0x84, 0xb1, 0x01, 0xfd, 0xf4, 0x14, 0xe6, 0xe6, 0xf3, 0xbc, + 0x01, 0x48, 0x75, 0xea, 0xc5, 0x7f, 0x2e, 0x9d, 0x7a, 0xc9, 0x9f, 0x4b, 0xa7, 0x5e, 0xfa, 0x97, + 0xd7, 0xa9, 0x97, 0xfd, 0x5d, 0xd4, 0xa9, 0xff, 0x86, 0xcb, 0xab, 0x53, 0x43, 0x04, 0xa3, 0x69, + 0x4e, 0x95, 0x6e, 0xe7, 0xd7, 0xa9, 0x2f, 0xe6, 0xd7, 0xa9, 0xbf, 0x7f, 0x0d, 0xfa, 0x5b, 0xeb, + 0xc3, 0xf7, 0xa3, 0xe5, 0x16, 0xfd, 0xa5, 0xb5, 0xdc, 0x76, 0x56, 0xc9, 0x45, 0xf7, 0x50, 0x72, + 0xdf, 0x50, 0xa5, 0x4d, 0xac, 0x92, 0x5b, 0xf5, 0x40, 0x4a, 0x2e, 0xab, 0xad, 0x76, 0xe5, 0x8a, + 0x13, 0xc5, 0xf7, 0x2d, 0x4e, 0x10, 0x3f, 0xcd, 0x6c, 0x71, 0xe2, 0x99, 0xbc, 0xe2, 0x84, 0x36, + 0x1d, 0x4f, 0x4f, 0x4e, 0xe6, 0x17, 0x24, 0x6c, 0xc2, 0xb8, 0xa9, 0xbf, 0x2e, 0xcf, 0x27, 0x8c, + 0x9b, 0xfa, 0xeb, 0x53, 0x0b, 0xea, 0xaf, 0xf9, 0xb4, 0xd3, 0xa9, 0x7c, 0xda, 0x69, 0x09, 0xd1, + 0x4e, 0xbb, 0x38, 0x55, 0xfa, 0x43, 0x1e, 0xf5, 0xb4, 0xf9, 0xdb, 0xaa, 0xa7, 0xe6, 0x4c, 0x00, + 0x3d, 0x55, 0x1b, 0xee, 0x36, 0x5d, 0xd2, 0xe9, 0x51, 0x74, 0x6c, 0x82, 0x86, 0x8f, 0x1a, 0x99, + 0x5f, 0x5b, 0xb5, 0x59, 0x12, 0x56, 0xfc, 0x39, 0x2c, 0x09, 0x47, 0xf2, 0xea, 0xc7, 0x70, 0x28, + 0xfe, 0x2b, 0x55, 0x7a, 0x37, 0x9f, 0x7e, 0x5c, 0xf3, 0x2d, 0xf4, 0xe3, 0x83, 0xed, 0xfe, 0xb0, + 0x8f, 0x4a, 0x25, 0xe4, 0x02, 0xe0, 0x7d, 0xab, 0xc7, 0xab, 0xfe, 0xcc, 0xea, 0x71, 0x08, 0x15, + 0x62, 0x0d, 0x0f, 0xaf, 0x3c, 0xea, 0x4e, 0x4e, 0x2c, 0x2a, 0x26, 0x50, 0x7c, 0x2b, 0x35, 0x3d, + 0x94, 0x9e, 0xed, 0x75, 0x54, 0xbb, 0x43, 0xca, 0xcb, 0x2f, 0x39, 0x52, 0x89, 0x93, 0xa9, 0x8b, + 0x9d, 0x10, 0xa4, 0xd5, 0x8a, 0x5f, 0x42, 0x56, 0x27, 0x5e, 0x94, 0xc4, 0x55, 0x27, 0x73, 0x62, + 0x56, 0x8b, 0x5f, 0xc1, 0xcb, 0xf1, 0x56, 0x4f, 0x7a, 0xb6, 0x77, 0xe3, 0xcb, 0x5b, 0xab, 0xb1, + 0x0c, 0x64, 0xd2, 0xcc, 0xaf, 0x9c, 0xf2, 0xdf, 0xb3, 0x72, 0x7a, 0x85, 0x43, 0x85, 0x21, 0xa5, + 0x45, 0xf1, 0x84, 0x03, 0xc1, 0xd2, 0x87, 0x09, 0xc3, 0xd9, 0x78, 0x1f, 0x17, 0x59, 0xd6, 0x35, + 0xd0, 0x3c, 0xe0, 0x7a, 0x0b, 0xbd, 0x61, 0xd0, 0x11, 0xdf, 0xa2, 0x92, 0x16, 0x31, 0x98, 0x19, + 0xd0, 0xd4, 0x48, 0x37, 0xec, 0x3e, 0xa0, 0xca, 0x54, 0x62, 0x81, 0xa4, 0x7f, 0xc0, 0x7a, 0x83, + 0xde, 0x70, 0x63, 0x86, 0xbc, 0x80, 0x2a, 0x9b, 0x34, 0xff, 0x4e, 0x68, 0xd1, 0x8c, 0x62, 0xb8, + 0xfa, 0xef, 0xa6, 0x62, 0xb8, 0xe6, 0x75, 0x54, 0x62, 0x1b, 0x9a, 0x07, 0x71, 0x03, 0x2e, 0xfb, + 0x8f, 0x1c, 0x5a, 0x46, 0x3b, 0x91, 0x7f, 0x0d, 0x2d, 0x69, 0x56, 0x0e, 0x9a, 0x82, 0x35, 0x09, + 0x0e, 0x09, 0x10, 0xf1, 0x31, 0xe8, 0x17, 0x70, 0xdf, 0x9b, 0xed, 0xc1, 0xfc, 0x8e, 0x98, 0x41, + 0x65, 0x48, 0xe7, 0xb7, 0xa2, 0xa2, 0x66, 0xe5, 0x60, 0x83, 0xe2, 0x09, 0x2a, 0x61, 0x2a, 0x18, + 0x13, 0xaf, 0x4e, 0x0b, 0x2a, 0x3e, 0xd5, 0xac, 0x1c, 0x64, 0x47, 0xa4, 0x7c, 0x0f, 0x59, 0x38, + 0xe0, 0x9e, 0x5d, 0x21, 0x5b, 0x98, 0x94, 0x58, 0x3d, 0x39, 0x8e, 0xa3, 0xe2, 0xb0, 0x49, 0x0c, + 0xa0, 0x84, 0x98, 0xd6, 0x73, 0x6d, 0x21, 0x62, 0x80, 0x59, 0xf6, 0x5f, 0x38, 0x54, 0x64, 0xf2, + 0x4a, 0xfe, 0xe7, 0x68, 0x19, 0x30, 0x3d, 0xa3, 0x91, 0x3f, 0x56, 0xa5, 0x32, 0xc1, 0x80, 0x89, + 0x8f, 0x01, 0x7f, 0xcc, 0x6d, 0xa6, 0x81, 0xc1, 0xbf, 0x42, 0x59, 0x33, 0xa3, 0x01, 0x90, 0x98, + 0x5e, 0x16, 0x54, 0x2c, 0x02, 0x22, 0xda, 0xf0, 0x80, 0x6c, 0x41, 0x79, 0x0f, 0xcd, 0x48, 0x64, + 0xab, 0x45, 0x56, 0x4c, 0x0d, 0x0b, 0x2a, 0xfe, 0x04, 0x32, 0xd2, 0x5b, 0x01, 0xf5, 0x3b, 0xab, + 0xb7, 0xb9, 0x9c, 0xbb, 0x5d, 0xdb, 0xa5, 0x2d, 0xb5, 0xeb, 0xeb, 0x65, 0xd7, 0x2e, 0xa9, 0xb1, + 0x96, 0x7e, 0x6d, 0x97, 0xe4, 0xad, 0xb5, 0x8d, 0xf0, 0x51, 0x21, 0x5b, 0x14, 0xca, 0xfe, 0x53, + 0x15, 0x2a, 0xa5, 0x17, 0xcc, 0x19, 0xcf, 0xe7, 0x1d, 0x10, 0x20, 0xe4, 0x37, 0x84, 0xc5, 0x7b, + 0xdc, 0x2d, 0x4a, 0x4d, 0x60, 0xbf, 0xdf, 0x16, 0x70, 0xc0, 0xa9, 0x4a, 0x6f, 0x0a, 0xb9, 0xa9, + 0xe2, 0x0b, 0xe4, 0xc2, 0x5d, 0x95, 0x37, 0xb0, 0xdf, 0x5f, 0x05, 0xb7, 0xf0, 0xbc, 0x95, 0xc6, + 0xf5, 0x6d, 0x12, 0x87, 0x89, 0xb8, 0x82, 0xd1, 0xcb, 0x05, 0xb9, 0xf9, 0xf9, 0xfd, 0xa8, 0x50, + 0x39, 0xd0, 0xe6, 0xf6, 0x7b, 0x15, 0x1a, 0x1e, 0x0c, 0x6c, 0x4f, 0x26, 0x50, 0xdc, 0x66, 0xfc, + 0xaa, 0x04, 0xdf, 0xad, 0xd4, 0xe4, 0x29, 0xfd, 0xcb, 0x13, 0x73, 0x89, 0x28, 0xeb, 0xee, 0x11, + 0x74, 0xfb, 0xbd, 0x81, 0xd6, 0x4a, 0x47, 0x8b, 0xe2, 0x0e, 0x85, 0xab, 0xf6, 0xbb, 0x43, 0x61, + 0xa5, 0xd2, 0xd1, 0x1a, 0x08, 0x85, 0xab, 0xda, 0x02, 0xde, 0x50, 0xa5, 0xa3, 0x2d, 0xe8, 0x0b, + 0xe0, 0xfd, 0x43, 0x36, 0xe9, 0xf2, 0xbf, 0x45, 0x7c, 0xab, 0xfb, 0x40, 0x6d, 0x6b, 0x5b, 0xf8, + 0x60, 0x75, 0x7b, 0x4b, 0x33, 0x04, 0x86, 0xa6, 0x0e, 0xd1, 0xc4, 0xbf, 0x23, 0x4f, 0xb2, 0xb8, + 0xb1, 0xd5, 0x7d, 0xa0, 0x4a, 0xc1, 0xc0, 0xaa, 0x3d, 0xed, 0x2d, 0xcd, 0x55, 0x5e, 0x02, 0xae, + 0xd4, 0x06, 0x4e, 0xe8, 0xd7, 0xc6, 0xa8, 0xd7, 0x1b, 0xe1, 0xe3, 0x96, 0xbf, 0x50, 0x1e, 0x32, + 0xfc, 0xef, 0xd0, 0x8a, 0x90, 0xd1, 0x0f, 0x35, 0x4a, 0x8b, 0xfb, 0x20, 0xd5, 0xa5, 0x88, 0x24, + 0x99, 0x95, 0x24, 0xfe, 0x8c, 0x5a, 0xa6, 0xc0, 0x6b, 0x76, 0x78, 0x50, 0xbb, 0x34, 0x92, 0x39, + 0x31, 0x0b, 0xce, 0x53, 0x78, 0x6f, 0xba, 0x7a, 0x54, 0xeb, 0xbb, 0xa4, 0x4d, 0x52, 0xa7, 0x3b, + 0x53, 0xcc, 0xdf, 0xb8, 0x01, 0xfc, 0x0b, 0xe5, 0x2c, 0x7a, 0xfc, 0x7f, 0xc7, 0xa1, 0xd5, 0x26, + 0x68, 0xa7, 0xdf, 0xaf, 0x28, 0x5e, 0xc5, 0x4b, 0xae, 0xa4, 0x81, 0x9e, 0x15, 0xe5, 0x54, 0xa9, + 0x8f, 0x13, 0xf2, 0xe3, 0x88, 0x01, 0x66, 0xbc, 0xdb, 0x69, 0x42, 0x55, 0xd8, 0xd7, 0xaa, 0x54, + 0x82, 0xff, 0x15, 0xd4, 0x22, 0x35, 0xd1, 0xaf, 0x7d, 0xdd, 0x03, 0x75, 0xc4, 0xac, 0x89, 0xda, + 0x0d, 0xcf, 0xa7, 0xa6, 0x27, 0x52, 0x9f, 0xc6, 0x33, 0xa7, 0xbe, 0xd0, 0x2e, 0x8d, 0x68, 0xd7, + 0x8f, 0x41, 0x0d, 0xb5, 0xe1, 0xc1, 0xf4, 0xc7, 0x9f, 0xcf, 0x57, 0xfd, 0xfc, 0xf5, 0xe0, 0xff, + 0x2b, 0x87, 0x9e, 0xb2, 0x52, 0xc2, 0xbe, 0x16, 0xdf, 0x6f, 0xc9, 0x1e, 0xd4, 0xb8, 0x2f, 0xa8, + 0xb8, 0xf7, 0x05, 0x5a, 0xbc, 0x54, 0x99, 0xfb, 0x94, 0x53, 0xa5, 0xcb, 0x9c, 0xb0, 0x30, 0xae, + 0x78, 0x88, 0x63, 0x9b, 0x65, 0x61, 0x54, 0x85, 0xf7, 0x05, 0x95, 0x10, 0x46, 0xa9, 0x4c, 0x5f, + 0xbd, 0xa2, 0x0d, 0x1d, 0xa3, 0xd3, 0x99, 0x5c, 0x15, 0xc9, 0x9c, 0xee, 0x23, 0x46, 0x13, 0xa3, + 0x79, 0xcc, 0x05, 0xaa, 0x4c, 0xef, 0x50, 0x72, 0x66, 0x10, 0x2b, 0xde, 0xa4, 0x9d, 0xa9, 0x33, + 0x5f, 0x6b, 0x7d, 0x87, 0xf5, 0xa9, 0xe3, 0x30, 0x52, 0x10, 0x03, 0x2c, 0x73, 0xea, 0x0b, 0xd6, + 0x39, 0xe8, 0x27, 0x1b, 0xe4, 0x85, 0x2b, 0x89, 0xd5, 0x92, 0xc7, 0x43, 0xcd, 0xbe, 0xb6, 0xba, + 0x80, 0x57, 0x09, 0xbd, 0xe3, 0x0b, 0xef, 0xdb, 0x16, 0xf0, 0xb8, 0x5b, 0x1a, 0xc2, 0x81, 0xa0, + 0xbb, 0x09, 0x14, 0xc7, 0x42, 0x70, 0x95, 0x9b, 0x1f, 0x4b, 0x5c, 0x0f, 0xb7, 0x11, 0xf4, 0xd1, + 0x7e, 0x7d, 0xf4, 0x9a, 0x36, 0x7a, 0x1d, 0xd8, 0x21, 0xde, 0x76, 0x48, 0x1b, 0xd8, 0x0a, 0xc1, + 0xd5, 0xda, 0xf9, 0x69, 0xf1, 0xe7, 0x39, 0xf4, 0x98, 0x2d, 0x15, 0x3c, 0x8f, 0xea, 0x03, 0xde, + 0x10, 0x8d, 0xf6, 0xe0, 0x55, 0x25, 0xb7, 0x30, 0x1f, 0x8e, 0xb8, 0x19, 0xea, 0xd2, 0xdc, 0xbe, + 0x47, 0xa9, 0x02, 0x6d, 0xc7, 0x51, 0xd7, 0x90, 0x8c, 0x1d, 0xcd, 0x9c, 0x3b, 0x5f, 0xe3, 0x56, + 0x5a, 0x03, 0xfe, 0x06, 0x25, 0x0c, 0xc1, 0x57, 0x52, 0x23, 0xdd, 0xf5, 0x01, 0x6f, 0x6e, 0x2d, + 0xa1, 0x8a, 0xf3, 0x15, 0x80, 0xa5, 0xc4, 0x27, 0x7c, 0x4d, 0xfe, 0x40, 0x50, 0x31, 0xe9, 0x85, + 0x98, 0x9e, 0x25, 0x8a, 0x5d, 0x61, 0xf5, 0x9b, 0xaa, 0xf4, 0x86, 0xb0, 0x10, 0x9e, 0xb8, 0x16, + 0x2a, 0x6a, 0x55, 0xca, 0xb8, 0xe8, 0x95, 0x9e, 0x1c, 0x4b, 0x4d, 0x9e, 0x92, 0x17, 0xca, 0x8c, + 0x45, 0x94, 0x87, 0x03, 0xcd, 0x8d, 0x81, 0xb0, 0xbb, 0x65, 0xa7, 0x3f, 0xa8, 0xb8, 0xbd, 0x07, + 0x9d, 0xc4, 0x13, 0x0b, 0x59, 0x97, 0x08, 0xf2, 0xa5, 0x8b, 0x3f, 0x09, 0x34, 0x57, 0x85, 0x31, + 0xb4, 0xaa, 0x1d, 0xc0, 0x55, 0xe4, 0x09, 0xc2, 0x4a, 0x60, 0xab, 0x0e, 0x0a, 0x74, 0x50, 0x39, + 0x66, 0xa4, 0x9b, 0x7a, 0x3e, 0xe4, 0xa3, 0xc5, 0xff, 0x91, 0x43, 0x8f, 0xb7, 0xba, 0x0f, 0xb0, + 0x09, 0xf5, 0x4a, 0xd0, 0xa3, 0xf8, 0xc3, 0x78, 0xe6, 0x14, 0x93, 0x9a, 0x7c, 0xc4, 0xa9, 0xd2, + 0x10, 0x27, 0xcc, 0x8f, 0x27, 0x06, 0x31, 0xf3, 0xb3, 0x57, 0xa9, 0xcd, 0x4c, 0xad, 0xa4, 0x20, + 0xba, 0x16, 0x88, 0xf4, 0x4a, 0x19, 0x57, 0x64, 0xda, 0xac, 0xa4, 0xb9, 0x10, 0xf0, 0xaa, 0x21, + 0x38, 0xfa, 0xc4, 0x25, 0x58, 0x47, 0x5a, 0xdf, 0x19, 0xad, 0x73, 0x54, 0x9f, 0xf8, 0x98, 0x75, + 0xd4, 0x95, 0xe7, 0xaf, 0x0e, 0xaf, 0x72, 0xe8, 0x11, 0x86, 0x37, 0x90, 0x64, 0xf3, 0x25, 0xba, + 0x92, 0xea, 0x5f, 0xab, 0xd2, 0xfb, 0x42, 0x5e, 0x04, 0xd1, 0x69, 0xe3, 0x61, 0xd0, 0x12, 0xc2, + 0xc2, 0x6c, 0x6d, 0xc8, 0xcb, 0xc9, 0xc0, 0x0c, 0x9d, 0xba, 0xaa, 0xca, 0x79, 0x49, 0xf3, 0xff, + 0x0b, 0x87, 0x9e, 0xc0, 0x54, 0x9a, 0x7c, 0x78, 0x87, 0x55, 0xc8, 0x85, 0x43, 0x59, 0x69, 0x0d, + 0x74, 0xb8, 0x5b, 0xcc, 0x5b, 0xc1, 0x25, 0xd5, 0x27, 0x38, 0x55, 0x3a, 0xc6, 0x09, 0x0b, 0x61, + 0x8a, 0x41, 0x23, 0x64, 0x99, 0xdb, 0xb8, 0xd5, 0x1e, 0x84, 0xba, 0xd8, 0xf8, 0xff, 0xf5, 0xc3, + 0x10, 0xe4, 0x5f, 0x1f, 0xfd, 0x4c, 0x1b, 0x1d, 0xc7, 0x4b, 0x09, 0xeb, 0xce, 0x4a, 0x28, 0x19, + 0x9b, 0xd0, 0xbf, 0x1c, 0xd7, 0x0e, 0x47, 0x73, 0x17, 0xcd, 0x8b, 0x94, 0xb3, 0x62, 0x9d, 0x83, + 0x18, 0x49, 0xf4, 0x2f, 0xc6, 0xe8, 0xb5, 0xcf, 0x85, 0x2a, 0xc4, 0xd7, 0xb1, 0x26, 0xc8, 0x15, + 0x46, 0x08, 0xe0, 0x2a, 0xd6, 0x04, 0xe9, 0x00, 0x8b, 0x21, 0x08, 0x47, 0x66, 0x80, 0x81, 0x79, + 0xac, 0x88, 0xdb, 0xd9, 0x88, 0x05, 0x2b, 0xad, 0x90, 0x43, 0x4c, 0xc4, 0x82, 0xa7, 0x99, 0x58, + 0x04, 0x36, 0x92, 0x79, 0xe2, 0x13, 0x30, 0x01, 0xf5, 0x56, 0x3d, 0x50, 0x40, 0x3d, 0xa7, 0xed, + 0xda, 0xf6, 0x43, 0x4c, 0xd4, 0x73, 0x0b, 0x2c, 0xf2, 0x59, 0x97, 0xba, 0x48, 0x84, 0x3b, 0xe6, + 0x6e, 0x37, 0x13, 0x95, 0x8f, 0x7f, 0xa0, 0xa8, 0x7c, 0x4e, 0xdb, 0xa5, 0xf0, 0x87, 0x99, 0xd2, + 0x99, 0xc8, 0x7a, 0x3c, 0x9b, 0x3d, 0x4f, 0x7c, 0xbd, 0x7f, 0xcf, 0xde, 0xd6, 0x86, 0x7b, 0xb2, + 0xb3, 0x9c, 0x2a, 0x4d, 0xb3, 0xb7, 0xb5, 0x27, 0xb9, 0x5c, 0xb1, 0xef, 0x07, 0x72, 0x6d, 0x7b, + 0x9c, 0xcb, 0x0d, 0x1b, 0xb1, 0x9a, 0xf0, 0xee, 0xdf, 0xab, 0xd2, 0xef, 0x72, 0xc3, 0x46, 0xec, + 0x63, 0xd5, 0x7a, 0x93, 0x9d, 0x98, 0x02, 0x06, 0x0d, 0x27, 0x31, 0x3c, 0x98, 0x4c, 0x8c, 0x68, + 0xa3, 0x24, 0x88, 0x26, 0x99, 0x4f, 0x99, 0x43, 0xe3, 0xa9, 0x99, 0x2f, 0x1c, 0xb9, 0xdd, 0xe4, + 0x48, 0x4d, 0x77, 0x27, 0xa7, 0x6f, 0xb1, 0x9b, 0xa3, 0x63, 0x9e, 0xc0, 0x13, 0xff, 0x8c, 0x43, + 0x0f, 0xef, 0x69, 0xdf, 0xbb, 0x57, 0x09, 0x1a, 0x41, 0x88, 0x20, 0x76, 0xcb, 0xa3, 0xec, 0xba, + 0xcf, 0x87, 0x21, 0xfe, 0x16, 0x80, 0x55, 0xc6, 0x15, 0xed, 0x2a, 0xa2, 0x53, 0x53, 0xb1, 0x03, + 0xb8, 0x21, 0x2b, 0x76, 0xb0, 0x9c, 0x94, 0x5e, 0x67, 0x60, 0xe4, 0x8f, 0xd4, 0x60, 0x2f, 0xb0, + 0x57, 0x30, 0x02, 0x43, 0x70, 0x51, 0x96, 0x94, 0xd9, 0x16, 0xc7, 0xc6, 0x0d, 0x1b, 0xe4, 0x7c, + 0x15, 0xe2, 0x2f, 0xc1, 0xa6, 0xb1, 0x25, 0xe8, 0xf6, 0x28, 0x7b, 0xdb, 0x5b, 0x1a, 0x95, 0x60, + 0xab, 0xcf, 0x4f, 0xf6, 0xb4, 0x06, 0xc5, 0x43, 0xce, 0x40, 0x4b, 0xaa, 0xf7, 0xaa, 0x92, 0x47, + 0x98, 0x1f, 0x4b, 0xdc, 0x8c, 0xb7, 0x8c, 0x26, 0x9a, 0x56, 0x15, 0xb6, 0x12, 0xab, 0x42, 0x8a, + 0xa7, 0xd2, 0xbc, 0x26, 0x82, 0xe7, 0x1e, 0xe1, 0x6d, 0x8e, 0xfa, 0x80, 0xd7, 0x91, 0x89, 0x44, + 0xb4, 0xde, 0xb8, 0x3e, 0x1a, 0x31, 0xd9, 0x9c, 0x3c, 0x7f, 0x11, 0x7c, 0x37, 0x87, 0x96, 0x87, + 0x3c, 0x6e, 0x3f, 0xb1, 0x41, 0x76, 0xb8, 0x5b, 0xc8, 0x91, 0x67, 0x49, 0xf5, 0x3f, 0x50, 0xa5, + 0x0f, 0x04, 0x5b, 0x82, 0xb8, 0x1d, 0x7f, 0x55, 0xf9, 0xe8, 0x67, 0x65, 0xd6, 0xc4, 0xd0, 0x3f, + 0x89, 0xe8, 0x5f, 0x1d, 0x85, 0xf2, 0xf0, 0xff, 0x91, 0xe3, 0x26, 0xbb, 0xc7, 0xf2, 0xda, 0x55, + 0xd5, 0x36, 0xfc, 0x1b, 0x37, 0xc8, 0x36, 0xe2, 0x58, 0x18, 0x7a, 0xa4, 0xd5, 0x7d, 0x80, 0x44, + 0x2b, 0xc2, 0xf3, 0x36, 0x84, 0x45, 0x37, 0xbc, 0xa4, 0x1f, 0x27, 0xd5, 0xf9, 0x50, 0x95, 0x9a, + 0x84, 0xbc, 0x08, 0xe2, 0x0e, 0xdc, 0x47, 0xfe, 0x80, 0x57, 0xa9, 0x6a, 0x33, 0xe0, 0xb0, 0x1b, + 0x41, 0x97, 0x50, 0x4d, 0x82, 0x98, 0xb0, 0xd9, 0x3e, 0x61, 0x37, 0x23, 0x6b, 0x34, 0x5f, 0xdb, + 0xb0, 0x41, 0xce, 0x5b, 0x0c, 0x96, 0x43, 0x56, 0x92, 0x39, 0xba, 0xb3, 0x6d, 0x73, 0x30, 0xd0, + 0xfa, 0x9e, 0x12, 0x0c, 0x94, 0xae, 0x21, 0x8b, 0x88, 0xd8, 0x69, 0xb2, 0xd3, 0x44, 0x09, 0x36, + 0xc9, 0xf6, 0xb6, 0xaa, 0xbd, 0xc1, 0x40, 0x6b, 0xd5, 0x6f, 0x95, 0x60, 0x80, 0xca, 0x1e, 0xec, + 0x06, 0x3d, 0x97, 0xe8, 0x83, 0xe0, 0xb4, 0x0e, 0x56, 0x1c, 0x21, 0x43, 0xda, 0x2f, 0x67, 0xd3, + 0xe4, 0xcf, 0x71, 0xe8, 0x51, 0xbb, 0x36, 0x22, 0xed, 0xc5, 0x4b, 0xcd, 0xeb, 0x2d, 0x7d, 0xc2, + 0x3a, 0x7a, 0x99, 0x07, 0x45, 0x7c, 0x8b, 0xd9, 0xb6, 0xbd, 0x38, 0xa5, 0xca, 0xbd, 0x97, 0x6c, + 0x90, 0x5e, 0x6f, 0xa5, 0xa5, 0x1d, 0xf5, 0x5d, 0xd2, 0x4f, 0x4e, 0x58, 0x57, 0x96, 0x72, 0x06, + 0x13, 0xef, 0xdd, 0xf3, 0x94, 0xc0, 0x5f, 0xc1, 0x12, 0x76, 0x6e, 0x12, 0xd5, 0x0d, 0x9f, 0x24, + 0x55, 0x24, 0x91, 0x40, 0xe7, 0xc7, 0x9a, 0xb7, 0x96, 0x54, 0x55, 0x04, 0x25, 0x28, 0x19, 0xbb, + 0x64, 0x29, 0x8c, 0xf3, 0xd5, 0x72, 0xfe, 0x42, 0xf8, 0x09, 0x0e, 0xad, 0xc9, 0x93, 0xba, 0xd9, + 0xed, 0x6b, 0x69, 0x0f, 0x2a, 0xa5, 0x4f, 0x91, 0x9a, 0x92, 0x03, 0xc2, 0x05, 0xd0, 0xc4, 0x6d, + 0xf3, 0x54, 0x75, 0x2f, 0xa4, 0xd3, 0xf5, 0x09, 0x97, 0x03, 0xb5, 0xe1, 0x41, 0xb8, 0x03, 0x39, + 0x6f, 0x75, 0x17, 0x28, 0x89, 0xef, 0x2a, 0x40, 0x0e, 0x33, 0x79, 0x4b, 0x5b, 0x7b, 0x96, 0x7e, + 0x43, 0x34, 0xac, 0xd2, 0xb5, 0xa4, 0xd6, 0x5f, 0x71, 0xaa, 0x74, 0x83, 0x13, 0xee, 0x89, 0x2e, + 0x46, 0x59, 0x9d, 0xad, 0xa9, 0xad, 0xfd, 0x01, 0xf5, 0xb6, 0xf2, 0x2d, 0xf5, 0x3b, 0x2b, 0xbe, + 0x47, 0xe5, 0xed, 0x9e, 0x15, 0x26, 0x41, 0x65, 0x69, 0xf4, 0x91, 0xa7, 0x99, 0xa0, 0xb2, 0x34, + 0xf8, 0xc8, 0xfb, 0x10, 0x64, 0xa4, 0xd2, 0x51, 0xb7, 0x43, 0xde, 0x2e, 0x6d, 0xdb, 0xa4, 0x4f, + 0x7c, 0xa2, 0xc5, 0x62, 0x73, 0x89, 0xe8, 0xce, 0xfa, 0x1a, 0x12, 0x2e, 0x64, 0x13, 0x7d, 0x01, + 0x2d, 0x36, 0x61, 0x00, 0x6b, 0xab, 0x36, 0x4b, 0xae, 0x6d, 0xb5, 0x35, 0x34, 0x05, 0x06, 0x6a, + 0x2e, 0x11, 0xa5, 0x17, 0xf2, 0x36, 0x69, 0xb7, 0xbf, 0x00, 0x91, 0xda, 0x8c, 0x1a, 0xe2, 0x44, + 0xcb, 0x95, 0x60, 0x30, 0x10, 0xdc, 0x4e, 0xa3, 0xd5, 0x3b, 0x48, 0x3d, 0x9e, 0x56, 0xa5, 0x27, + 0x05, 0x5b, 0x82, 0xb8, 0xdc, 0x16, 0xac, 0xde, 0x96, 0xc6, 0xff, 0x6b, 0x0e, 0x3d, 0x6a, 0xdf, + 0x30, 0x9c, 0x6d, 0xed, 0xb0, 0xcd, 0x3d, 0x43, 0x86, 0xf0, 0x34, 0xa7, 0x4a, 0xc7, 0x39, 0x61, + 0x1e, 0xa4, 0xbf, 0xe8, 0x4e, 0x37, 0x4f, 0x9d, 0xf2, 0xb4, 0x69, 0xbb, 0xd2, 0x0a, 0x6d, 0x2a, + 0x5b, 0xa0, 0x4d, 0x06, 0xd2, 0xdf, 0xa5, 0x36, 0x19, 0x75, 0xe2, 0x03, 0x68, 0x69, 0x6b, 0x80, + 0xdc, 0xc4, 0x7b, 0x36, 0x7f, 0xe4, 0xed, 0xed, 0x24, 0x95, 0x58, 0xc7, 0xc9, 0xad, 0x49, 0x8a, + 0x2e, 0xae, 0x83, 0xbf, 0x10, 0x1d, 0xc6, 0x30, 0x8e, 0x3b, 0x25, 0xba, 0x52, 0x66, 0xae, 0xa5, + 0xae, 0x4e, 0xb3, 0x69, 0x32, 0xcd, 0xc7, 0xff, 0x01, 0x2d, 0xdb, 0xaf, 0xec, 0xd9, 0x17, 0x08, + 0x34, 0x97, 0xfe, 0x28, 0x7f, 0x18, 0xd7, 0x77, 0x20, 0x99, 0xc4, 0x8e, 0x23, 0xd1, 0x6a, 0x8c, + 0x0c, 0xe2, 0x26, 0xa7, 0xe4, 0xa0, 0xbf, 0xc1, 0xf6, 0x9d, 0x15, 0x3b, 0x99, 0x39, 0x32, 0xcb, + 0x9c, 0x3b, 0x6f, 0xc3, 0x94, 0x0d, 0x22, 0xfc, 0xbf, 0xe0, 0xd0, 0x93, 0xca, 0x81, 0x36, 0xc5, + 0xef, 0xc5, 0x52, 0x59, 0x7d, 0xc0, 0x1b, 0xaa, 0xa7, 0x86, 0x3f, 0x67, 0x7b, 0x38, 0xb0, 0x77, + 0x6f, 0xe9, 0x8f, 0x1d, 0x5c, 0xf9, 0x12, 0xe3, 0x0e, 0xfd, 0x82, 0xa8, 0xa2, 0xc7, 0x3c, 0xbc, + 0x07, 0x66, 0xa0, 0x4f, 0x5c, 0xc2, 0x03, 0x37, 0xd2, 0xed, 0x68, 0x0b, 0x78, 0xe7, 0x12, 0x51, + 0x9c, 0x15, 0xcb, 0x86, 0xc9, 0xd8, 0x40, 0x32, 0x31, 0x92, 0x35, 0x3a, 0x26, 0x67, 0x4f, 0x26, + 0x46, 0x52, 0x67, 0x6f, 0xea, 0x83, 0x97, 0x1d, 0xcd, 0xbe, 0x96, 0x16, 0xdc, 0x8b, 0xe6, 0x55, + 0x96, 0xaa, 0x8d, 0x1b, 0xe4, 0x05, 0xab, 0x80, 0x35, 0x5c, 0xde, 0xaf, 0xec, 0xaf, 0x0f, 0x78, + 0x1b, 0x60, 0x23, 0x05, 0x5b, 0xe1, 0x73, 0x64, 0x42, 0xee, 0x51, 0xa5, 0x5f, 0x0a, 0x79, 0x92, + 0xc5, 0xea, 0x5c, 0x18, 0x56, 0xf5, 0x4e, 0x5e, 0x6f, 0x0b, 0x78, 0xb5, 0xe9, 0x78, 0xea, 0xf3, + 0xa3, 0xda, 0xa5, 0x91, 0xe4, 0x9d, 0x9e, 0xe4, 0x9d, 0xa3, 0xda, 0xf0, 0xa0, 0xde, 0x3f, 0x00, + 0x75, 0x77, 0x4a, 0x46, 0x2f, 0x3b, 0x36, 0x7c, 0x53, 0xbd, 0x58, 0x28, 0x28, 0xff, 0x2b, 0x39, + 0x0f, 0x79, 0x2c, 0xe8, 0xf0, 0x5e, 0xa5, 0xc3, 0xe7, 0x51, 0xea, 0x03, 0x81, 0x16, 0x33, 0xa0, + 0xf7, 0xf3, 0x84, 0x93, 0xf8, 0x55, 0xa9, 0x59, 0xc8, 0x93, 0x2c, 0xee, 0xcc, 0x85, 0x99, 0xf1, + 0x56, 0x68, 0xc0, 0xdc, 0x48, 0x4f, 0xa5, 0x23, 0x19, 0x9b, 0x4e, 0x5f, 0xe9, 0xd4, 0xe2, 0xc7, + 0xcd, 0x28, 0xff, 0xa9, 0x8b, 0xc7, 0x93, 0xf1, 0x63, 0xc9, 0xf8, 0x55, 0xed, 0xa3, 0x4e, 0x2d, + 0x7a, 0xd2, 0xac, 0x23, 0x39, 0x26, 0x94, 0xf3, 0x14, 0x55, 0x76, 0x97, 0x43, 0xc5, 0xcc, 0x3c, + 0xe3, 0x65, 0x36, 0xb4, 0x1f, 0x84, 0x6a, 0x25, 0x00, 0xf1, 0xc5, 0xec, 0x29, 0x57, 0x4e, 0x4f, + 0x9f, 0x8c, 0xc2, 0x92, 0xd3, 0x3d, 0x10, 0xbd, 0xf0, 0x1d, 0x65, 0x0f, 0x60, 0x54, 0xd0, 0xd0, + 0x80, 0x5b, 0xd0, 0x52, 0xf2, 0xbe, 0x4e, 0x90, 0x8d, 0x95, 0x4b, 0x41, 0x62, 0x59, 0x36, 0x5d, + 0x80, 0xdb, 0x2e, 0x1a, 0x53, 0x5c, 0xfe, 0x15, 0xb4, 0x24, 0x1c, 0x68, 0x56, 0x8c, 0xf0, 0xb8, + 0xf0, 0x1a, 0x14, 0x81, 0x88, 0xab, 0xb3, 0xc9, 0x10, 0xb0, 0x0c, 0xa9, 0x65, 0x5f, 0x73, 0x68, + 0x09, 0x89, 0x27, 0xc3, 0x3f, 0xc7, 0x9c, 0xe5, 0x54, 0x3f, 0xa2, 0x4a, 0x0f, 0x09, 0xf8, 0x5b, + 0x44, 0x10, 0x3f, 0xcd, 0xb1, 0x55, 0x39, 0x08, 0x27, 0x3c, 0xeb, 0x6c, 0x27, 0x3c, 0xd5, 0xa5, + 0xaa, 0xb4, 0x5a, 0x00, 0x88, 0xb8, 0x9c, 0xe2, 0x92, 0xb7, 0x47, 0xe9, 0xd9, 0x0f, 0x89, 0xef, + 0xbd, 0x77, 0xaf, 0xe2, 0x09, 0xb3, 0x67, 0x11, 0x14, 0x24, 0xbe, 0x0a, 0x39, 0xf4, 0x13, 0x7d, + 0xfa, 0xf9, 0xd1, 0xb9, 0x44, 0xb4, 0xbc, 0x2e, 0xd0, 0x40, 0x2f, 0xef, 0x56, 0x3a, 0xea, 0x83, + 0xca, 0x5e, 0x25, 0xc8, 0x42, 0xea, 0x02, 0xb5, 0x07, 0x14, 0x4f, 0x7b, 0x98, 0xc4, 0xf7, 0x26, + 0x14, 0xca, 0x22, 0xe5, 0x68, 0x39, 0x1b, 0x33, 0x8a, 0xdf, 0x8a, 0x56, 0xb0, 0x31, 0xa0, 0xec, + 0x87, 0x4c, 0x59, 0x49, 0xe2, 0x0a, 0x2a, 0x68, 0x92, 0x10, 0xe3, 0xae, 0x1a, 0x39, 0x2b, 0x9d, + 0xdf, 0x68, 0x0b, 0x9f, 0x08, 0x2f, 0xa1, 0x90, 0xc3, 0x50, 0x9e, 0xcd, 0x68, 0x8b, 0xa0, 0xf8, + 0x61, 0xae, 0x8b, 0x15, 0x44, 0x5d, 0xb5, 0xec, 0x1b, 0x3f, 0x65, 0x33, 0xdb, 0x82, 0x28, 0x1a, + 0x9e, 0x55, 0x8c, 0x13, 0x55, 0x1c, 0xa2, 0xe3, 0x98, 0xa9, 0xac, 0xed, 0xa3, 0xc5, 0x0c, 0xd0, + 0xb7, 0x78, 0xfe, 0x78, 0x46, 0x46, 0x73, 0xbe, 0x73, 0x8c, 0xbe, 0xf7, 0xcc, 0x18, 0x7d, 0xf0, + 0x28, 0xc7, 0xea, 0x9c, 0xdb, 0xf3, 0x38, 0x95, 0x46, 0x74, 0xa4, 0x31, 0xf9, 0xd6, 0xe6, 0x92, + 0x86, 0x94, 0xac, 0x80, 0x7c, 0xe7, 0xf2, 0xf8, 0x10, 0xc3, 0xdd, 0x4d, 0xe2, 0xd7, 0x9f, 0xe3, + 0x43, 0xfc, 0x41, 0x96, 0x0f, 0x71, 0x32, 0x16, 0x07, 0x14, 0xfd, 0xd4, 0x2d, 0x7a, 0xca, 0x0a, + 0xb6, 0x0e, 0xea, 0xb5, 0xf2, 0x5d, 0x7d, 0x8b, 0xff, 0xaf, 0x02, 0xfb, 0xdd, 0x54, 0xf0, 0xaf, + 0xfa, 0x63, 0x81, 0x2a, 0xfd, 0xcb, 0x02, 0xfb, 0xed, 0xd4, 0xaf, 0x0b, 0xb2, 0xdc, 0xd3, 0xe9, + 0x6d, 0xd5, 0xae, 0x3b, 0xe6, 0xf6, 0x13, 0x1b, 0x00, 0x98, 0x89, 0x72, 0x37, 0xd2, 0xa5, 0xdd, + 0xfe, 0xc2, 0xf4, 0x37, 0xc7, 0xbb, 0x83, 0x72, 0x20, 0xfc, 0xe2, 0x5c, 0x22, 0xaa, 0x1c, 0x08, + 0xbf, 0x34, 0x97, 0x88, 0x1e, 0xd8, 0x1b, 0x72, 0xb0, 0x37, 0x76, 0xc1, 0x50, 0x4b, 0x2f, 0x0b, + 0x5f, 0x3f, 0x0c, 0x7b, 0x03, 0x10, 0xd5, 0x7a, 0x6e, 0x25, 0xa7, 0x4f, 0xb2, 0xc8, 0x7a, 0xdf, + 0x49, 0x7d, 0xf4, 0x33, 0x96, 0x3a, 0x9b, 0x97, 0xaa, 0x61, 0xa6, 0x7b, 0x7c, 0x2c, 0x8e, 0xcb, + 0x74, 0x94, 0x87, 0x5b, 0x7c, 0xfe, 0xf6, 0x03, 0x94, 0x82, 0xe9, 0x09, 0xdf, 0x37, 0x7c, 0x60, + 0x6f, 0xa8, 0xc2, 0xbc, 0xc6, 0x7b, 0x37, 0xd2, 0xa5, 0x9f, 0xba, 0x68, 0x35, 0x15, 0x97, 0xd4, + 0x8f, 0xe5, 0xdd, 0x73, 0xa7, 0xac, 0x3b, 0xd6, 0xe4, 0xe1, 0xd0, 0x64, 0x6c, 0x5a, 0x1f, 0x8d, + 0xeb, 0x13, 0xa6, 0xe7, 0xd2, 0x40, 0xea, 0xf8, 0x05, 0xfd, 0x44, 0xdf, 0xdd, 0x48, 0x97, 0x39, + 0x28, 0x64, 0x38, 0xec, 0x17, 0x7a, 0xaf, 0x2c, 0x42, 0xa8, 0x3d, 0xa4, 0x04, 0x1b, 0xc8, 0xeb, + 0x03, 0xd4, 0x55, 0xac, 0x67, 0x91, 0x2a, 0x75, 0x2e, 0x12, 0x98, 0x04, 0xf1, 0x6f, 0x0b, 0xa8, + 0x74, 0x04, 0x07, 0xfc, 0xc3, 0x83, 0xa9, 0x99, 0xc9, 0x74, 0xf7, 0x88, 0x3e, 0x7a, 0xad, 0xd2, + 0x01, 0x27, 0xb6, 0xe0, 0x36, 0x91, 0x1a, 0xe9, 0xa6, 0x7e, 0xff, 0x24, 0x71, 0x9d, 0xa3, 0xf9, + 0xd5, 0x10, 0x98, 0x65, 0x60, 0x2a, 0x91, 0xad, 0xec, 0x6a, 0x7a, 0x2c, 0x6a, 0x85, 0x3a, 0x9c, + 0x3d, 0x97, 0x9e, 0xea, 0x04, 0x74, 0x08, 0x30, 0x93, 0xe9, 0x1d, 0xd0, 0x7a, 0x2e, 0x6b, 0x6a, + 0x14, 0x34, 0x99, 0x4c, 0x64, 0x3a, 0xfd, 0xf5, 0x31, 0xf0, 0x1e, 0xd3, 0xcf, 0x8f, 0xa6, 0xaf, + 0x74, 0xea, 0x37, 0xba, 0xa8, 0x93, 0x02, 0x5c, 0x2b, 0x18, 0x1d, 0x4f, 0xcf, 0x9e, 0xc5, 0xc4, + 0x8d, 0x25, 0xa0, 0x4d, 0x46, 0xf5, 0xbe, 0x61, 0xd8, 0x36, 0xb5, 0xa1, 0x29, 0xed, 0xc8, 0x45, + 0xad, 0xe7, 0x72, 0xfa, 0xfa, 0x21, 0x2d, 0x7e, 0x05, 0xd3, 0xef, 0x19, 0xd0, 0x86, 0xfb, 0x1c, + 0xed, 0x7e, 0x1a, 0xc7, 0x00, 0x6f, 0xeb, 0x0e, 0xf0, 0x98, 0x05, 0xc9, 0xa5, 0xd2, 0xa1, 0x8d, + 0x8e, 0x3b, 0xac, 0xd6, 0x3b, 0xf4, 0xd1, 0x08, 0xd1, 0x59, 0xff, 0x5f, 0xf6, 0xde, 0x34, 0x3a, + 0x8a, 0x6b, 0x4d, 0x10, 0xac, 0xd0, 0x86, 0xb8, 0x6c, 0x22, 0xd8, 0x64, 0xb0, 0xb1, 0x90, 0xb1, + 0x8d, 0xe2, 0x89, 0xc5, 0xe1, 0x0d, 0xcb, 0x6b, 0x68, 0x01, 0xcb, 0x06, 0x21, 0x87, 0x80, 0xe7, + 0xe7, 0xe5, 0xf9, 0x25, 0x52, 0x18, 0xa7, 0x91, 0x32, 0xf5, 0x32, 0x53, 0x78, 0x79, 0x4b, 0x25, + 0x8b, 0x40, 0x02, 0x09, 0x89, 0x30, 0xab, 0x2c, 0x36, 0x9b, 0xcd, 0x8b, 0x90, 0x79, 0xf8, 0x81, + 0x48, 0x49, 0x66, 0xba, 0x4e, 0x77, 0x75, 0x57, 0x4d, 0xf5, 0x52, 0x4c, 0xd5, 0x74, 0xd5, 0x54, + 0x77, 0xcd, 0x54, 0x91, 0x91, 0x99, 0x9a, 0xd3, 0x3d, 0xcc, 0x9c, 0x9e, 0x39, 0xa7, 0x0f, 0x67, + 0xce, 0x99, 0x39, 0x71, 0xbf, 0x7b, 0x6f, 0xdc, 0x58, 0x32, 0x25, 0x30, 0x66, 0xb1, 0xe1, 0x0f, + 0xca, 0xbb, 0xc7, 0xbd, 0xdf, 0xfd, 0xee, 0xb7, 0x7f, 0xce, 0xe1, 0x4b, 0x8b, 0xc0, 0x75, 0xb9, + 0x68, 0x43, 0xcb, 0x3a, 0xad, 0x3e, 0xd2, 0x58, 0xd4, 0x12, 0xa8, 0x0f, 0x86, 0x1a, 0x82, 0x81, + 0x22, 0x13, 0xcf, 0x99, 0xe8, 0xaa, 0x68, 0xe1, 0x42, 0x5c, 0x87, 0xed, 0x2f, 0x9e, 0x5f, 0x1c, + 0x0a, 0x06, 0x23, 0x8b, 0x17, 0x99, 0x25, 0x8b, 0xa1, 0xa8, 0xc8, 0xd8, 0x3d, 0x1c, 0x1f, 0x34, + 0x29, 0x26, 0xb2, 0xb3, 0xdc, 0x52, 0x55, 0xee, 0x00, 0xc4, 0x4b, 0x02, 0x9a, 0xd4, 0x12, 0xa8, + 0xb3, 0x56, 0x4c, 0xf2, 0x0a, 0x12, 0x82, 0xd7, 0x5e, 0x27, 0x6f, 0x16, 0x88, 0xcd, 0x18, 0x1e, + 0x8e, 0x09, 0x97, 0x69, 0x56, 0xa3, 0xcd, 0xf1, 0x81, 0x5d, 0x30, 0x07, 0x23, 0x51, 0x8d, 0xe8, + 0xd0, 0x92, 0xd4, 0xb1, 0xd3, 0xc9, 0xe3, 0x31, 0x67, 0xf5, 0xa1, 0xc3, 0xa4, 0x02, 0x27, 0x38, + 0xb2, 0xea, 0x16, 0x90, 0xb5, 0x52, 0x51, 0x82, 0xd1, 0xd5, 0x0f, 0x32, 0x49, 0xd8, 0xca, 0x12, + 0xd5, 0xbe, 0x26, 0xf1, 0x5c, 0x96, 0xdb, 0x3e, 0x6e, 0x14, 0x0f, 0x95, 0xff, 0x47, 0xd0, 0x95, + 0xff, 0x4b, 0xe0, 0xcd, 0xe4, 0xae, 0x08, 0xd7, 0x65, 0x27, 0xb7, 0xa8, 0xc8, 0x38, 0xde, 0x63, + 0x5e, 0x1c, 0x3b, 0xb2, 0xa0, 0x5d, 0x7b, 0x4c, 0xec, 0x39, 0x18, 0x63, 0x9f, 0x90, 0xea, 0xbf, + 0x90, 0x3c, 0x76, 0xc6, 0x84, 0x48, 0xdc, 0xbb, 0x62, 0xed, 0x4a, 0x0c, 0x91, 0x18, 0x32, 0x86, + 0x8e, 0x8e, 0x44, 0xf5, 0x78, 0x6c, 0x1b, 0xb1, 0x7c, 0xc7, 0x91, 0x8f, 0x6c, 0x77, 0x10, 0x04, + 0xad, 0xd4, 0xf6, 0x1a, 0x48, 0xa4, 0xc4, 0x81, 0xfe, 0x11, 0xbd, 0xcd, 0xe8, 0xbf, 0xc8, 0x1c, + 0xaf, 0xe2, 0xb1, 0x53, 0x89, 0xde, 0x98, 0x71, 0xf0, 0x74, 0x7c, 0x60, 0x0f, 0x59, 0xef, 0xf1, + 0x1e, 0x0b, 0x5f, 0xf4, 0xc6, 0x12, 0x07, 0xfb, 0x79, 0xeb, 0xbe, 0xf6, 0x2c, 0x12, 0x56, 0x4f, + 0x09, 0xad, 0x0f, 0x17, 0x4e, 0xc0, 0xbb, 0xf6, 0xb3, 0x8c, 0xcf, 0x50, 0x15, 0x6d, 0x0d, 0x2f, + 0xd1, 0xb0, 0xa0, 0x2b, 0x17, 0x05, 0xc9, 0x1a, 0x44, 0xfe, 0x4a, 0x20, 0x36, 0xc7, 0xdd, 0x5b, + 0x81, 0x3f, 0x60, 0x42, 0x5e, 0x58, 0xba, 0x79, 0xe8, 0x34, 0xf1, 0x41, 0xb2, 0x67, 0xeb, 0x06, + 0xed, 0xa3, 0xf8, 0x40, 0xcc, 0x84, 0xd9, 0x46, 0x2d, 0x82, 0x69, 0x8e, 0xf8, 0x40, 0xcc, 0xea, + 0x7b, 0xe9, 0xd3, 0xe4, 0x69, 0x62, 0xac, 0xc5, 0xba, 0xd3, 0xb8, 0x50, 0x78, 0x23, 0x2e, 0xee, + 0x1c, 0xd9, 0xff, 0x2d, 0x5c, 0xac, 0x67, 0x99, 0x3c, 0xc2, 0x7c, 0xb0, 0x4e, 0x6e, 0x7e, 0x15, + 0x06, 0x2d, 0x2b, 0x32, 0xef, 0xc5, 0xc2, 0x06, 0x7f, 0xe8, 0xf9, 0xc5, 0x1b, 0x7d, 0xa1, 0xc5, + 0x8d, 0xfe, 0x75, 0x8b, 0xc9, 0x7c, 0xcf, 0xaa, 0xd6, 0xc2, 0xc5, 0x7f, 0x2f, 0x20, 0xb1, 0x39, + 0xa4, 0xd5, 0x45, 0x7c, 0xa1, 0xc8, 0x1a, 0x0b, 0x69, 0x81, 0x99, 0xe1, 0x61, 0x41, 0x57, 0x7a, + 0x04, 0xc9, 0xa3, 0x81, 0xbc, 0x45, 0xb0, 0x21, 0xaf, 0xf6, 0x4e, 0x17, 0xf2, 0x2a, 0x4a, 0x83, + 0xbd, 0xb0, 0x47, 0x0a, 0xb9, 0xf5, 0xd0, 0xdb, 0x24, 0xc7, 0xdb, 0x3b, 0x19, 0x0e, 0x4b, 0x9c, + 0x3b, 0x9d, 0xd8, 0xda, 0x05, 0x04, 0xa9, 0xd1, 0xf5, 0xa5, 0xd1, 0x7f, 0xd1, 0x1d, 0xcc, 0x00, + 0x10, 0xb1, 0xea, 0xb1, 0x32, 0xf3, 0x74, 0xa7, 0xae, 0xab, 0x07, 0x6b, 0x8b, 0x55, 0x2d, 0x11, + 0xa5, 0xa1, 0x21, 0x18, 0x08, 0x13, 0x97, 0x43, 0x57, 0x12, 0x28, 0xa5, 0x1e, 0x87, 0x21, 0xfe, + 0x33, 0x41, 0x57, 0xbe, 0x13, 0x24, 0x77, 0x3f, 0xf9, 0xb4, 0x10, 0x1f, 0xd8, 0x91, 0x38, 0x7c, + 0xde, 0x82, 0x67, 0x8c, 0x16, 0xcb, 0x2b, 0xea, 0x8c, 0x6d, 0xad, 0xc9, 0xe1, 0x33, 0x10, 0xec, + 0xdb, 0x38, 0xd3, 0x9e, 0xfa, 0xbc, 0x15, 0x88, 0x20, 0xe2, 0xc1, 0x35, 0xd4, 0x93, 0xfc, 0xf6, + 0x33, 0x63, 0x68, 0x2f, 0xd8, 0xcf, 0xc3, 0x65, 0xe2, 0xe9, 0x60, 0x82, 0x5e, 0xfb, 0x2f, 0x26, + 0xfa, 0xf7, 0x98, 0xf7, 0xff, 0xd8, 0x09, 0xa3, 0xd5, 0x1c, 0x01, 0xe6, 0xb5, 0x42, 0x42, 0x81, + 0x22, 0x11, 0x4b, 0x44, 0xd8, 0xb6, 0x01, 0xff, 0x02, 0x23, 0xa4, 0xbe, 0xd9, 0x92, 0xdc, 0x73, + 0xfa, 0x4a, 0x74, 0xb3, 0xea, 0x5e, 0xbd, 0xb8, 0x2d, 0x0b, 0x15, 0xd0, 0xd2, 0xea, 0x00, 0xd9, + 0x8a, 0xc9, 0x19, 0xb7, 0xe2, 0x5f, 0x08, 0xba, 0x32, 0x2c, 0x48, 0xae, 0x6e, 0x78, 0x27, 0x76, + 0xde, 0x1d, 0x3b, 0xe1, 0x5a, 0xbc, 0xb8, 0x3b, 0x0b, 0x4d, 0x0b, 0x93, 0xbd, 0x81, 0xcb, 0x0c, + 0x7b, 0x31, 0x25, 0xe3, 0x5e, 0xfc, 0xb9, 0xa0, 0x2b, 0x7f, 0x26, 0x48, 0x5e, 0x3d, 0xe5, 0x2f, + 0x9d, 0x80, 0x01, 0x50, 0xce, 0x27, 0x6e, 0x03, 0xfc, 0xc6, 0xf0, 0x18, 0x9f, 0xa9, 0x2d, 0x3e, + 0x10, 0x03, 0x4b, 0xd7, 0x78, 0xac, 0x23, 0xb1, 0xef, 0xe2, 0x62, 0x30, 0xf5, 0x5b, 0x0c, 0x01, + 0x7b, 0x8c, 0xbd, 0xdb, 0xc8, 0x00, 0xf8, 0x86, 0xa7, 0xdb, 0x0a, 0x90, 0x9a, 0xc1, 0x86, 0xb8, + 0xf7, 0x21, 0x3e, 0xb0, 0x0b, 0xce, 0xc2, 0xdc, 0x10, 0xaf, 0x2f, 0x10, 0xdb, 0xb2, 0x90, 0x18, + 0x86, 0x5d, 0xe2, 0xb7, 0xa4, 0x20, 0xe3, 0x96, 0x10, 0xe5, 0x9a, 0x47, 0x47, 0xf9, 0xb8, 0x13, + 0x40, 0xee, 0xcc, 0xbd, 0xf0, 0x58, 0xba, 0xf8, 0x38, 0x8b, 0xad, 0x0d, 0x4a, 0xd0, 0x39, 0xba, + 0x52, 0xc8, 0x62, 0x6b, 0xdb, 0x18, 0xae, 0x55, 0x75, 0x5e, 0x81, 0xb2, 0xa7, 0xa5, 0x0d, 0x94, + 0x3d, 0x3d, 0x53, 0xa0, 0xec, 0x19, 0xa3, 0x04, 0xca, 0x9e, 0xe9, 0x0a, 0x94, 0xfd, 0x34, 0xca, + 0x69, 0xd0, 0xc2, 0xa0, 0x83, 0x1a, 0x4f, 0x93, 0xde, 0x6b, 0xe1, 0x7a, 0xb9, 0x90, 0x2d, 0x32, + 0x71, 0xe8, 0x12, 0x24, 0xc6, 0x62, 0xc9, 0x2e, 0xb5, 0x70, 0xbd, 0xd8, 0x82, 0xc6, 0x85, 0x5a, + 0x02, 0x11, 0x73, 0xd4, 0x42, 0x6f, 0x01, 0x95, 0xda, 0x82, 0xb5, 0x25, 0x58, 0x26, 0x86, 0x45, + 0x05, 0xb4, 0x83, 0xbc, 0xc4, 0x4a, 0x44, 0xe2, 0xf0, 0x82, 0xec, 0xea, 0x67, 0x7f, 0x43, 0x4c, + 0x2f, 0x9a, 0xe2, 0x93, 0x74, 0x15, 0xb7, 0x08, 0x4c, 0x12, 0x77, 0xdf, 0xa8, 0x92, 0x38, 0x6c, + 0x11, 0x42, 0x25, 0x71, 0xe5, 0x8e, 0x49, 0xe3, 0x03, 0x3b, 0x00, 0xbc, 0xcc, 0x79, 0x71, 0x42, + 0x34, 0x1a, 0x54, 0xac, 0xc7, 0xd8, 0x71, 0x2c, 0x3e, 0xb0, 0x33, 0x83, 0x74, 0xee, 0x23, 0x54, + 0x40, 0x0e, 0xbd, 0x36, 0xa4, 0x91, 0x17, 0x6e, 0x36, 0xde, 0xc1, 0x95, 0xba, 0xf2, 0x8a, 0xe4, + 0xaa, 0x94, 0x9f, 0xe2, 0x6d, 0xf7, 0xbc, 0x1e, 0x37, 0xef, 0xb7, 0x4d, 0x75, 0x8d, 0x24, 0xfe, + 0x16, 0x4d, 0xa5, 0x65, 0xc1, 0x70, 0x84, 0xcc, 0x3d, 0xc7, 0x0a, 0xe0, 0xee, 0xae, 0x75, 0x4c, + 0x3e, 0x66, 0xb6, 0x40, 0x75, 0x0f, 0x25, 0x7e, 0x84, 0x26, 0xf8, 0x02, 0x81, 0x60, 0x04, 0x8b, + 0xe3, 0xc3, 0x85, 0xf7, 0x63, 0x52, 0x67, 0x61, 0x46, 0x52, 0x47, 0xb1, 0xda, 0x03, 0xb1, 0xb3, + 0x40, 0x57, 0x1e, 0x96, 0xf8, 0x61, 0xe4, 0x99, 0xb0, 0x34, 0xab, 0x88, 0x38, 0x30, 0xf0, 0x8d, + 0xc4, 0x37, 0xd1, 0xe4, 0x26, 0xdf, 0x87, 0x58, 0xb4, 0x07, 0x99, 0x4c, 0x88, 0x6a, 0x06, 0xa7, + 0x41, 0x72, 0x54, 0xc9, 0x73, 0x13, 0xfd, 0x5d, 0xf1, 0x81, 0x2f, 0x2d, 0x8b, 0x1e, 0x6c, 0x49, + 0x58, 0x4b, 0x73, 0xa2, 0xa8, 0x8e, 0xf6, 0x62, 0x23, 0x9a, 0x1c, 0xde, 0xe0, 0x6f, 0x06, 0x83, + 0xa7, 0xea, 0x80, 0x3f, 0x82, 0x35, 0x28, 0xf9, 0x90, 0xdc, 0xd3, 0x51, 0x25, 0x2f, 0x26, 0x91, + 0x9d, 0x2e, 0x9c, 0x4b, 0x5d, 0xda, 0x4e, 0x4c, 0xf5, 0x30, 0x8b, 0xc8, 0x5e, 0x11, 0xca, 0xe5, + 0x42, 0xa5, 0xea, 0x18, 0x40, 0xfc, 0x4c, 0x40, 0x73, 0x7c, 0x8d, 0x8d, 0xc1, 0x0f, 0xea, 0xcc, + 0x72, 0x82, 0x49, 0x7f, 0xfe, 0x9e, 0x16, 0x58, 0xe6, 0xf3, 0x37, 0x6a, 0x0d, 0x58, 0xa5, 0x91, + 0x0f, 0x6a, 0xd7, 0x4c, 0xed, 0xe4, 0x17, 0x88, 0xaa, 0x8e, 0x06, 0xd7, 0xe4, 0x8d, 0x45, 0xc9, + 0xea, 0x70, 0x3a, 0x47, 0x8e, 0xe9, 0xe6, 0x2b, 0xd5, 0x4c, 0x83, 0x8b, 0x9f, 0x08, 0x68, 0xb6, + 0xbd, 0xbe, 0x3a, 0xc0, 0xad, 0xb1, 0x08, 0xaf, 0x91, 0x58, 0x59, 0xda, 0xf7, 0xe7, 0x05, 0x5e, + 0xd9, 0x75, 0x03, 0xcb, 0xca, 0x30, 0xed, 0xf7, 0x89, 0x1a, 0x4d, 0x23, 0x38, 0x33, 0xb2, 0xfb, + 0xba, 0x7a, 0xbf, 0x80, 0x0a, 0x9c, 0x90, 0x7c, 0x5d, 0x11, 0xa0, 0xdf, 0xd6, 0x95, 0x37, 0xd0, + 0xeb, 0x92, 0x4d, 0x4e, 0x47, 0xed, 0xf8, 0xe1, 0x25, 0xa0, 0x22, 0x5b, 0x92, 0x1b, 0xad, 0xff, + 0xa2, 0x65, 0x82, 0xc4, 0x07, 0x59, 0x4c, 0xf6, 0x6c, 0x1d, 0x89, 0xf6, 0x24, 0xf7, 0x9c, 0x86, + 0x3c, 0x54, 0x70, 0x55, 0x8a, 0xbf, 0xca, 0x46, 0x93, 0x68, 0xf6, 0x4f, 0xc0, 0x51, 0xbf, 0x32, + 0xef, 0x8b, 0xf5, 0x9b, 0xc9, 0x00, 0x97, 0xea, 0xca, 0x93, 0x92, 0xa3, 0x4a, 0x7e, 0xa8, 0xa2, + 0x02, 0x10, 0x5d, 0x75, 0x65, 0x29, 0x54, 0xb9, 0x35, 0x14, 0xaa, 0xa3, 0x93, 0xf8, 0x3e, 0x2a, + 0xe0, 0x4b, 0x38, 0x23, 0x6d, 0x8c, 0xee, 0x5d, 0x95, 0xf2, 0xa3, 0x74, 0x16, 0x10, 0x16, 0xa6, + 0x9f, 0xc9, 0xd5, 0xd5, 0xfc, 0x9a, 0x0f, 0x82, 0xa1, 0x0d, 0xdc, 0xd7, 0x64, 0x73, 0x5f, 0x63, + 0xaf, 0xb2, 0x7d, 0x0d, 0x54, 0x79, 0x7d, 0x8d, 0xbd, 0x93, 0xf9, 0x35, 0x7c, 0x09, 0xfe, 0x9a, + 0x1c, 0xee, 0x6b, 0x9c, 0x95, 0xae, 0xaf, 0x49, 0x3b, 0x93, 0xab, 0x6b, 0xf1, 0xb1, 0x5c, 0x84, + 0xac, 0x77, 0x4a, 0x7c, 0x8f, 0x3c, 0x27, 0xab, 0x5a, 0x22, 0x8e, 0xc3, 0xc2, 0x9e, 0xe4, 0xae, + 0x4a, 0xf9, 0x61, 0xee, 0x03, 0x2b, 0x14, 0x9e, 0x71, 0xb2, 0x4f, 0xec, 0xec, 0x28, 0x6a, 0xc4, + 0x70, 0xa1, 0x3a, 0xc0, 0x26, 0x82, 0x13, 0xc3, 0x4a, 0x2b, 0x67, 0x9d, 0x63, 0x1e, 0xfe, 0x19, + 0xb1, 0xcd, 0xe3, 0xec, 0x27, 0x06, 0xd1, 0x24, 0x3a, 0x75, 0xb9, 0xff, 0x63, 0x76, 0x58, 0xd8, + 0x79, 0xd8, 0x5e, 0x23, 0x3f, 0xc9, 0xaf, 0xbe, 0xa2, 0xc2, 0xca, 0xfe, 0xcf, 0x82, 0x4e, 0x52, + 0x9b, 0x6d, 0x9c, 0x63, 0x83, 0x54, 0xab, 0xf6, 0x51, 0xc4, 0x46, 0x6c, 0xb8, 0x62, 0xae, 0x01, + 0xe6, 0xcb, 0xb1, 0x92, 0x38, 0xd8, 0x2a, 0xe4, 0x27, 0xf9, 0x8f, 0x18, 0xfb, 0x74, 0xb6, 0x41, + 0xc4, 0x10, 0xa1, 0x73, 0xd9, 0xce, 0x62, 0x60, 0x81, 0x50, 0x7d, 0xe5, 0xba, 0xf2, 0xa2, 0xe4, + 0x51, 0x2d, 0x97, 0x38, 0xc0, 0x25, 0xc3, 0xb9, 0x79, 0x74, 0x17, 0x83, 0xec, 0xdd, 0xe7, 0xa6, + 0xcc, 0xb3, 0x92, 0x13, 0xb9, 0x6b, 0x3d, 0x66, 0x4c, 0x7b, 0x82, 0xee, 0xde, 0xc5, 0xfd, 0x02, + 0x9a, 0xc0, 0x91, 0x70, 0xa2, 0x8a, 0x0a, 0xea, 0x83, 0x81, 0x88, 0xcf, 0x1f, 0xd0, 0x42, 0x2a, + 0xa1, 0xfc, 0x00, 0x48, 0x1f, 0xd1, 0x95, 0x87, 0x24, 0x57, 0xa5, 0x3c, 0x05, 0x62, 0x5a, 0x30, + 0x82, 0x4e, 0x75, 0x35, 0x11, 0x57, 0xa0, 0xc9, 0x84, 0xb0, 0x5b, 0xab, 0x85, 0xc2, 0xfe, 0x20, + 0xcd, 0x97, 0x38, 0x5f, 0x57, 0xe6, 0x49, 0x8e, 0x2a, 0x79, 0x8a, 0x83, 0x34, 0x54, 0x1d, 0x0d, + 0x8a, 0x2f, 0xce, 0x45, 0xf7, 0x41, 0xaa, 0x41, 0x1e, 0xc9, 0xd2, 0xc4, 0xf8, 0xef, 0xf2, 0x3a, + 0x09, 0x81, 0xc2, 0x87, 0xc4, 0xeb, 0x24, 0x1e, 0xb0, 0xd1, 0xbc, 0xf6, 0xa4, 0x30, 0xd5, 0x95, + 0xd7, 0xca, 0x0b, 0x43, 0x33, 0x0b, 0x84, 0xc2, 0x68, 0x81, 0x3c, 0xe5, 0x97, 0x6f, 0x2e, 0x59, + 0xf8, 0x8c, 0x6f, 0xe1, 0xc7, 0xca, 0xc2, 0x37, 0x16, 0xbe, 0xfd, 0xb3, 0xf9, 0xbc, 0x3e, 0x62, + 0xa9, 0x4d, 0x5d, 0x32, 0xdf, 0x4b, 0x5d, 0xc2, 0x3c, 0xd4, 0xaf, 0x95, 0xe7, 0x84, 0xb2, 0x0a, + 0x04, 0xa2, 0x35, 0xa1, 0xb4, 0x78, 0xf6, 0xf5, 0xd2, 0xe2, 0x1f, 0x39, 0x54, 0x20, 0x4f, 0x7a, + 0xe4, 0xde, 0xf6, 0xde, 0x95, 0x7b, 0xfa, 0x90, 0x7b, 0xfa, 0x90, 0xbb, 0x4e, 0x1f, 0xf2, 0xff, + 0x0a, 0x1e, 0xfa, 0x90, 0x7f, 0x10, 0x74, 0xe5, 0x3f, 0x0a, 0x36, 0x7d, 0xc8, 0xbf, 0xb1, 0x49, + 0x54, 0xc6, 0xcc, 0xf8, 0x5c, 0x1d, 0xea, 0xb8, 0xd3, 0x14, 0x22, 0xf7, 0xb4, 0x0c, 0xf7, 0xb4, + 0x0c, 0xe2, 0x3e, 0x0f, 0x2d, 0xc3, 0xd2, 0xb1, 0x63, 0xfa, 0x1f, 0xaf, 0xca, 0xe1, 0xaf, 0x33, + 0xa9, 0x1c, 0x8e, 0x0a, 0xba, 0xd2, 0xeb, 0xad, 0x72, 0x68, 0xb5, 0xe3, 0x07, 0x4e, 0x2a, 0x73, + 0x75, 0xa8, 0x23, 0x93, 0xce, 0x01, 0xa2, 0xf2, 0xfc, 0xa0, 0x4a, 0x87, 0x74, 0xf2, 0xe5, 0x49, + 0xf7, 0xe4, 0xcb, 0x4e, 0xf9, 0xf2, 0xe4, 0x9f, 0xb4, 0x7c, 0x79, 0xca, 0xd8, 0xe5, 0xcb, 0xcb, + 0x2c, 0xf9, 0xf2, 0x54, 0x1a, 0x4d, 0xe9, 0x41, 0xcb, 0xad, 0x67, 0x3a, 0x8e, 0xdd, 0x97, 0xfa, + 0xf6, 0xa4, 0xd1, 0x75, 0x81, 0xf9, 0xf6, 0x70, 0x29, 0x05, 0x98, 0x34, 0xfa, 0x4b, 0xc1, 0x92, + 0xfd, 0x8a, 0xa3, 0xcb, 0x7e, 0x31, 0xb1, 0xc6, 0x64, 0xbf, 0xda, 0xf5, 0xca, 0x7e, 0x4b, 0x8b, + 0x20, 0x3c, 0x21, 0x04, 0xca, 0x32, 0x1f, 0x58, 0x10, 0x86, 0xb0, 0x7e, 0x7a, 0x07, 0x6d, 0xce, + 0xe5, 0x5f, 0x64, 0x02, 0xe3, 0x73, 0x96, 0xc0, 0x78, 0xda, 0xa8, 0x02, 0x63, 0x1c, 0x2b, 0x88, + 0x0a, 0x8c, 0x43, 0x1c, 0xf3, 0x5b, 0xf4, 0xfd, 0x85, 0xc7, 0x10, 0x5e, 0x08, 0x4c, 0x9e, 0x59, + 0x4e, 0x05, 0xf3, 0x79, 0xe2, 0xf9, 0x30, 0x2a, 0x60, 0xde, 0x2f, 0xa0, 0x82, 0x3a, 0xa7, 0x84, + 0x79, 0x3a, 0xc9, 0x16, 0xb8, 0x3e, 0x18, 0x5c, 0xdf, 0xa8, 0x2d, 0x6a, 0x0e, 0x05, 0x23, 0xc1, + 0x75, 0x2d, 0xef, 0x2e, 0xaa, 0x8b, 0x84, 0xfc, 0x81, 0xf5, 0xd8, 0xe0, 0x6c, 0x6c, 0xf2, 0xe7, + 0xb1, 0x8b, 0x80, 0x5d, 0x8b, 0x10, 0x7b, 0x04, 0x34, 0xb5, 0xce, 0x25, 0x80, 0x9e, 0x31, 0x86, + 0xa5, 0xdd, 0x74, 0xf1, 0xb4, 0x6b, 0x19, 0x62, 0xa3, 0x5d, 0x3c, 0x3d, 0xd3, 0x3b, 0x98, 0xcb, + 0x4a, 0x5f, 0x73, 0x5d, 0x24, 0xd4, 0x52, 0x1f, 0x21, 0x79, 0xf9, 0x79, 0x51, 0xf4, 0x03, 0x64, + 0x0e, 0xfc, 0x1e, 0x3b, 0xc5, 0xd2, 0x61, 0x9b, 0x44, 0xfa, 0xb6, 0xc9, 0x22, 0x69, 0x36, 0xb9, + 0xf4, 0xcc, 0xae, 0x2c, 0x92, 0x0b, 0xcc, 0xf1, 0x8d, 0x97, 0x05, 0x8b, 0x49, 0xbd, 0x2c, 0x60, + 0x8e, 0xf3, 0xb2, 0x40, 0xef, 0x74, 0xf1, 0xf9, 0x2c, 0x34, 0xdb, 0x6b, 0xb8, 0x70, 0x73, 0x30, + 0x10, 0xd6, 0xc4, 0x45, 0x28, 0xa7, 0x9e, 0x1a, 0x7e, 0x4e, 0x22, 0x29, 0x94, 0xcd, 0x02, 0x93, + 0x29, 0xdf, 0x63, 0x7c, 0x7a, 0x18, 0x4c, 0xdc, 0x93, 0x47, 0x37, 0xa9, 0xb8, 0x58, 0x2c, 0x43, + 0xe3, 0x9a, 0x88, 0x5d, 0x3c, 0xf0, 0xc1, 0x38, 0x19, 0x08, 0x2d, 0x93, 0x45, 0xbe, 0x17, 0x55, + 0xf1, 0x90, 0x4a, 0xf1, 0x31, 0x94, 0x17, 0xd2, 0xc2, 0x2d, 0x8d, 0x11, 0x12, 0x6b, 0x1e, 0x47, + 0x7c, 0x20, 0x45, 0xf2, 0x44, 0xe8, 0x99, 0x1c, 0xfc, 0x24, 0x71, 0xb8, 0x57, 0x25, 0xa5, 0xe2, + 0x47, 0x68, 0xca, 0x07, 0xda, 0xba, 0x77, 0xf8, 0xb3, 0xcf, 0xf1, 0xce, 0x53, 0xfc, 0x73, 0x6d, + 0x1d, 0x27, 0xc6, 0x5d, 0x2b, 0x43, 0xf6, 0x5c, 0x67, 0x6f, 0xb9, 0x90, 0x26, 0x37, 0x8f, 0x1a, + 0x67, 0x0f, 0x83, 0x00, 0x20, 0x71, 0x68, 0xcb, 0xc8, 0xc1, 0x6e, 0x75, 0xf2, 0x07, 0xb6, 0x11, + 0x8a, 0xff, 0xac, 0x08, 0xdd, 0xb7, 0x06, 0xeb, 0xd3, 0xbc, 0x84, 0x0e, 0x4f, 0xb9, 0x85, 0x0e, + 0xd8, 0x58, 0x94, 0x13, 0x3a, 0xe4, 0x53, 0xf9, 0x02, 0x2f, 0x44, 0x58, 0xe7, 0x32, 0xe0, 0x84, + 0x6d, 0xc4, 0xd9, 0x26, 0x9c, 0x06, 0x9c, 0x0f, 0xdb, 0x7f, 0x83, 0x07, 0x83, 0x45, 0xe9, 0x8f, + 0x66, 0xd7, 0x99, 0x9d, 0xde, 0xae, 0xd3, 0x0a, 0xa5, 0x67, 0x97, 0x50, 0xe4, 0xdc, 0xb8, 0x84, + 0x22, 0xd7, 0x5b, 0x42, 0x91, 0x76, 0x0b, 0x6f, 0xa2, 0x84, 0x22, 0xef, 0x96, 0x48, 0x28, 0xc6, + 0xdd, 0xc1, 0x12, 0x8a, 0xfc, 0x7b, 0x12, 0x8a, 0x5b, 0x22, 0xa1, 0xe8, 0xb4, 0x5b, 0x6c, 0x42, + 0x70, 0xff, 0xff, 0x92, 0xa5, 0x2b, 0xa9, 0x2c, 0x9b, 0x84, 0xe2, 0xef, 0xb3, 0xee, 0x2e, 0x39, + 0xc4, 0xdd, 0x6a, 0x98, 0xf9, 0x9f, 0x5d, 0x22, 0x13, 0x94, 0x86, 0x60, 0x59, 0x53, 0x1d, 0x88, + 0x3c, 0x2e, 0x03, 0xc1, 0x72, 0xb7, 0x0a, 0x54, 0x26, 0xdc, 0x13, 0xa8, 0xdc, 0x80, 0x40, 0x65, + 0xa2, 0xb7, 0x40, 0x25, 0xfd, 0xc3, 0xf4, 0xe3, 0x15, 0xa8, 0xfc, 0xd1, 0x5b, 0xa0, 0x02, 0xc9, + 0x11, 0x49, 0x42, 0x52, 0x2f, 0x81, 0xca, 0xfb, 0x77, 0xa8, 0xd0, 0x64, 0xf2, 0x3d, 0xa1, 0x89, + 0x53, 0x68, 0x32, 0xe5, 0x27, 0x2d, 0x34, 0x29, 0x18, 0xbb, 0xd0, 0xe4, 0x59, 0x67, 0x34, 0x92, + 0x79, 0xba, 0x32, 0xdd, 0x8a, 0x46, 0x32, 0x9e, 0xc5, 0x21, 0xe1, 0x25, 0x25, 0xd4, 0x3a, 0x8f, + 0x97, 0x94, 0x4c, 0xbb, 0x8b, 0x24, 0x25, 0xd3, 0xef, 0x72, 0x49, 0xc9, 0x8c, 0x3b, 0x57, 0x52, + 0x32, 0xf3, 0x8e, 0x94, 0x94, 0xcc, 0xfa, 0x91, 0x4a, 0x4a, 0x8e, 0x0b, 0xba, 0x72, 0x54, 0x40, + 0x87, 0x04, 0x89, 0x30, 0xe9, 0x90, 0x31, 0xbf, 0x1e, 0xc7, 0xff, 0xa2, 0xc2, 0x92, 0x5f, 0xc0, + 0x1d, 0xe6, 0xc4, 0x9f, 0xa9, 0xfe, 0x0b, 0x89, 0xb3, 0x9b, 0x71, 0x88, 0x72, 0x62, 0x9a, 0x66, + 0x36, 0xd9, 0x73, 0x11, 0x6a, 0x19, 0x94, 0x8e, 0x1c, 0xf8, 0x43, 0xa2, 0xef, 0x33, 0xa3, 0xff, + 0xa2, 0xd1, 0x77, 0x60, 0x64, 0x7b, 0x17, 0x01, 0xec, 0xd8, 0xa9, 0xe4, 0x9e, 0x23, 0xc6, 0xf0, + 0x59, 0xe3, 0x93, 0x4e, 0xbb, 0xcc, 0xc5, 0xc1, 0x80, 0x5f, 0x16, 0x28, 0x9e, 0xc0, 0xd2, 0x17, + 0x2f, 0x42, 0xe3, 0x9e, 0xf4, 0x65, 0x14, 0xe9, 0xcb, 0xe7, 0x59, 0xe8, 0x3e, 0x88, 0xe3, 0xe1, + 0x25, 0x7d, 0x59, 0xe5, 0x96, 0xbe, 0x3c, 0xa6, 0x2b, 0x8b, 0x78, 0xe9, 0xcb, 0x3c, 0x1e, 0x20, + 0x1c, 0x26, 0x1f, 0xee, 0x38, 0x5b, 0xb7, 0x40, 0x2c, 0xc3, 0x84, 0x7b, 0x69, 0x3f, 0x4b, 0x16, + 0x21, 0x4e, 0x19, 0x3f, 0x4e, 0x46, 0x40, 0xc3, 0xe0, 0xe5, 0x35, 0xdc, 0x3d, 0xf0, 0x1a, 0x05, + 0xbc, 0xfe, 0x9b, 0x80, 0x66, 0x2e, 0xd7, 0x22, 0x37, 0x53, 0xb2, 0xf7, 0x6a, 0x1a, 0x10, 0xba, + 0x11, 0xd7, 0xec, 0xb2, 0xd5, 0xba, 0xf2, 0x1a, 0x5a, 0x25, 0xa5, 0x59, 0xa3, 0x5c, 0x98, 0x38, + 0x72, 0x22, 0xd5, 0xff, 0x19, 0x2f, 0x9b, 0x4b, 0xf5, 0x9f, 0x4c, 0x6c, 0x69, 0xcd, 0x0c, 0x2e, + 0x7f, 0x9b, 0x8d, 0x66, 0xb9, 0x46, 0xbc, 0x3b, 0x60, 0x65, 0x15, 0xca, 0x31, 0xf9, 0x3b, 0x02, + 0x20, 0xf7, 0x67, 0x32, 0x4c, 0x27, 0x12, 0x4f, 0xb3, 0xb9, 0x5d, 0xe2, 0x09, 0x5b, 0xa4, 0xe2, + 0x1a, 0x2f, 0xe0, 0xcb, 0xbd, 0x35, 0xc0, 0x57, 0xb6, 0x4a, 0x57, 0x56, 0xa0, 0x57, 0xa4, 0x74, + 0x47, 0x21, 0xcf, 0x4d, 0x77, 0xba, 0xb0, 0x33, 0x97, 0x05, 0x7c, 0x02, 0x97, 0x05, 0xba, 0x9f, + 0xc5, 0xff, 0x36, 0x0b, 0xcd, 0x5a, 0xe1, 0x0f, 0xdf, 0xb9, 0xe0, 0x0c, 0xc9, 0xce, 0xd0, 0x09, + 0x41, 0x4a, 0xb7, 0x4e, 0xf9, 0xf7, 0x5e, 0x1f, 0x4d, 0x1e, 0x6b, 0x10, 0x71, 0x41, 0x76, 0x80, + 0x78, 0x6c, 0x9b, 0xb9, 0xb3, 0x47, 0xb7, 0x43, 0x48, 0x69, 0x88, 0xfb, 0x92, 0x1c, 0xdc, 0x6a, + 0x74, 0xb7, 0x41, 0x39, 0x11, 0xb4, 0xe2, 0xd1, 0xac, 0xbe, 0xad, 0xa7, 0x19, 0xd9, 0x19, 0x1f, + 0x88, 0x41, 0xad, 0xd1, 0x8a, 0xc3, 0x18, 0xe1, 0xf6, 0xfc, 0xc5, 0x29, 0xfe, 0x9f, 0xb3, 0x50, + 0xa1, 0x7b, 0x9d, 0x77, 0xdb, 0x45, 0xc9, 0xbe, 0xe1, 0x8b, 0x02, 0x99, 0x19, 0xe0, 0xa2, 0x94, + 0xbd, 0xa2, 0x2b, 0xcb, 0x51, 0x95, 0x94, 0x76, 0x43, 0x3c, 0x91, 0x51, 0x1a, 0x40, 0xfd, 0x9b, + 0x02, 0x34, 0xae, 0x16, 0xb6, 0x59, 0x7c, 0xd3, 0x0d, 0x98, 0x90, 0x96, 0xc3, 0x02, 0xcc, 0x85, + 0x14, 0x30, 0x4b, 0x69, 0xc8, 0xff, 0xd8, 0xe3, 0x72, 0x7c, 0xb8, 0x93, 0x65, 0x76, 0x29, 0xb5, + 0xa5, 0x54, 0xe4, 0xa0, 0xb7, 0xc6, 0x66, 0xab, 0x89, 0x5f, 0x71, 0x50, 0x81, 0x2c, 0xa6, 0x91, + 0x27, 0xfa, 0x12, 0xfb, 0xb6, 0x83, 0x0a, 0xc4, 0xa4, 0xf7, 0x58, 0x46, 0x81, 0x2d, 0xc3, 0x10, + 0x55, 0xe8, 0xa9, 0x27, 0x60, 0x12, 0xa2, 0x1f, 0x09, 0xa1, 0x09, 0x5a, 0x60, 0x7d, 0xa3, 0x3f, + 0xfc, 0x5e, 0x8d, 0xa5, 0x59, 0xa9, 0xd5, 0x95, 0x95, 0x12, 0x5f, 0x2e, 0xbf, 0x00, 0xa3, 0xa7, + 0x76, 0x9e, 0x4d, 0xec, 0xdb, 0x6e, 0xd2, 0xf4, 0xdb, 0x0e, 0xb2, 0x39, 0x8c, 0x3d, 0xfd, 0x10, + 0x2e, 0xdf, 0x3d, 0xd9, 0xe3, 0x32, 0x99, 0x8c, 0x1f, 0x8c, 0x0f, 0xd6, 0x99, 0xe3, 0x15, 0xac, + 0x93, 0xa4, 0x26, 0x72, 0x07, 0xeb, 0x7c, 0xde, 0xe2, 0x6c, 0x73, 0xad, 0x3b, 0xcb, 0x38, 0xdb, + 0x19, 0x3c, 0x11, 0xe4, 0x11, 0x6d, 0xf3, 0x17, 0x68, 0x02, 0xd9, 0x48, 0x1c, 0x64, 0x1d, 0x42, + 0x44, 0xe3, 0xec, 0x18, 0x39, 0x91, 0x8f, 0x9a, 0x35, 0xb9, 0x14, 0xfa, 0xb3, 0xec, 0xf2, 0x90, + 0xe3, 0xec, 0xb1, 0x32, 0x13, 0x2a, 0xde, 0x0d, 0x86, 0x9a, 0xae, 0x0e, 0x75, 0xc8, 0x65, 0xeb, + 0x5a, 0xc2, 0xfe, 0x80, 0x16, 0x0e, 0xab, 0xfc, 0x58, 0xe2, 0x87, 0x38, 0x1b, 0x44, 0xf9, 0xab, + 0xaa, 0x16, 0x26, 0xb1, 0x98, 0x71, 0x56, 0x0c, 0x56, 0x28, 0xaf, 0x04, 0x69, 0x2b, 0x48, 0x0b, + 0x20, 0x36, 0x08, 0x44, 0xbe, 0x61, 0xe1, 0x84, 0x13, 0x67, 0x8f, 0x62, 0xf2, 0xdd, 0x72, 0xa8, + 0x60, 0x61, 0x86, 0x21, 0xf9, 0x0d, 0x1f, 0xf5, 0x98, 0x0d, 0x2c, 0x2e, 0x43, 0x13, 0x1a, 0xb4, + 0x30, 0x66, 0x91, 0xfc, 0xc1, 0x00, 0xd1, 0x97, 0x60, 0x6b, 0x64, 0xbe, 0x5c, 0x16, 0xc9, 0xb7, + 0x9d, 0xc1, 0xe9, 0xed, 0xb0, 0xba, 0x4b, 0xe5, 0x1b, 0x88, 0xab, 0xd1, 0x78, 0x7f, 0x78, 0xd5, + 0xbb, 0xef, 0x36, 0xfa, 0x03, 0x1a, 0x89, 0x8d, 0x8c, 0xb3, 0xb8, 0x58, 0xa5, 0xf2, 0x23, 0x04, + 0xf9, 0x83, 0xdc, 0xf8, 0xc2, 0x1f, 0x92, 0x83, 0x5d, 0xc9, 0x93, 0x83, 0xc9, 0xd8, 0x25, 0xc7, + 0xe2, 0xac, 0x2e, 0x62, 0x03, 0xca, 0xd9, 0xe0, 0x0f, 0x34, 0x90, 0x04, 0xbc, 0x18, 0xae, 0x70, + 0x81, 0x5c, 0xc5, 0xc0, 0x95, 0x08, 0x4a, 0xec, 0x9b, 0xbe, 0x61, 0x69, 0x78, 0x71, 0x93, 0x16, + 0x0e, 0x86, 0x71, 0x6e, 0x8c, 0x2f, 0x13, 0x87, 0x70, 0xfa, 0x31, 0xc8, 0xac, 0xda, 0xd5, 0x9f, + 0xda, 0x32, 0x0c, 0xb9, 0x58, 0x55, 0x3c, 0x98, 0xb8, 0x02, 0x21, 0x7a, 0x2c, 0xd5, 0x95, 0x38, + 0xa2, 0x31, 0xcd, 0x9d, 0x6f, 0x15, 0xcb, 0x73, 0x60, 0xd7, 0x2b, 0x56, 0x56, 0x96, 0xc7, 0x07, + 0xfa, 0xa8, 0x9d, 0x3c, 0x41, 0x4c, 0x5c, 0x43, 0x31, 0x2a, 0x20, 0xd4, 0xa0, 0x35, 0x37, 0x06, + 0x3f, 0xc2, 0x60, 0x32, 0xd1, 0x8a, 0x28, 0xc9, 0x15, 0xcb, 0xab, 0x60, 0x04, 0x08, 0x1b, 0x6a, + 0xad, 0xbe, 0x73, 0x6f, 0x72, 0xe7, 0xd7, 0x10, 0xfe, 0x25, 0xf9, 0xe9, 0x77, 0xf1, 0x4b, 0x87, + 0x92, 0x7b, 0x0f, 0x5e, 0x1d, 0xea, 0x78, 0xac, 0x2c, 0xd9, 0xfe, 0x45, 0xb2, 0x7b, 0x5b, 0xa2, + 0x37, 0x06, 0x3d, 0x30, 0x2c, 0x81, 0xb9, 0x39, 0x14, 0xa8, 0xdc, 0xe0, 0xe2, 0x4b, 0x28, 0x67, + 0xdd, 0xfa, 0xea, 0x4a, 0x22, 0xbf, 0xc4, 0x9f, 0x82, 0x0b, 0xe4, 0x79, 0xf1, 0xd8, 0xce, 0xf8, + 0x40, 0x0f, 0x8d, 0x89, 0x9b, 0x38, 0x74, 0x22, 0x11, 0xeb, 0x36, 0x41, 0x85, 0x7d, 0x9b, 0x8a, + 0x1b, 0x8a, 0xaf, 0xa0, 0xbc, 0x75, 0xeb, 0xf1, 0x95, 0x86, 0x60, 0xbd, 0xb2, 0xae, 0x2c, 0x96, + 0x48, 0x91, 0xfc, 0x30, 0x1b, 0x85, 0x5d, 0x62, 0xaf, 0x91, 0x48, 0x73, 0xb1, 0x02, 0xe5, 0x35, + 0x68, 0xcd, 0x11, 0x16, 0xa8, 0x17, 0x14, 0x8f, 0x50, 0x24, 0xcf, 0x1d, 0xd9, 0x72, 0x7a, 0x64, + 0xff, 0xe9, 0xb4, 0xcb, 0x21, 0xed, 0xc4, 0x95, 0x28, 0xdf, 0xfc, 0x0b, 0x2f, 0xa9, 0xc0, 0x62, + 0x6c, 0x58, 0xa1, 0x5c, 0x0c, 0x03, 0x65, 0x5c, 0x11, 0x6b, 0x2d, 0x56, 0xa3, 0xfc, 0x7a, 0x2d, + 0x00, 0xe1, 0x83, 0xa7, 0x5a, 0x29, 0x20, 0x58, 0xa1, 0x3c, 0x37, 0x3e, 0xd0, 0x67, 0x5c, 0xda, + 0x92, 0x76, 0x5d, 0xac, 0xa5, 0x58, 0x87, 0x10, 0xfc, 0x5d, 0x63, 0x65, 0x53, 0xc1, 0x2e, 0x7a, + 0x5c, 0xb1, 0x5c, 0x0c, 0xc3, 0x65, 0x5c, 0x1d, 0xd7, 0x5e, 0x7c, 0x0d, 0xe5, 0xe3, 0xc4, 0x35, + 0x21, 0x2d, 0x82, 0xe5, 0x68, 0xf9, 0x90, 0xa0, 0x85, 0x15, 0xca, 0x8f, 0x10, 0x84, 0x30, 0x10, + 0x8b, 0x5f, 0x3a, 0x64, 0xf4, 0x6f, 0x63, 0x41, 0x84, 0x1c, 0x21, 0xd8, 0x59, 0x0f, 0xf1, 0x4b, + 0x01, 0x4d, 0xa8, 0x0f, 0x69, 0x0d, 0x5a, 0x20, 0xe2, 0xf7, 0x35, 0x86, 0x0b, 0xa7, 0x7b, 0x07, + 0x0f, 0x22, 0xcf, 0xd0, 0xa2, 0x0a, 0xab, 0x29, 0x88, 0xfb, 0x71, 0x4c, 0x6c, 0x7e, 0x04, 0x79, + 0x05, 0xbd, 0x84, 0x3b, 0x93, 0x7b, 0x0f, 0x1a, 0x7d, 0x07, 0x92, 0x3d, 0x5b, 0x21, 0x23, 0x11, + 0x0d, 0xd7, 0xbb, 0x93, 0x84, 0xa4, 0xeb, 0xd9, 0x6a, 0x75, 0x63, 0xb2, 0x04, 0x90, 0xfe, 0x9b, + 0xad, 0x21, 0x99, 0x16, 0x3f, 0xb4, 0x58, 0x86, 0xc6, 0x63, 0xac, 0x6d, 0x39, 0xf9, 0x96, 0xdf, + 0xaf, 0x2b, 0xf7, 0x49, 0x56, 0xa9, 0x3c, 0xd1, 0x16, 0x4f, 0xd9, 0xaa, 0x10, 0x9f, 0x77, 0x7b, + 0x00, 0xc3, 0x13, 0xc1, 0x47, 0x45, 0x9e, 0x98, 0x2e, 0x1e, 0xf2, 0xec, 0x37, 0x50, 0x81, 0xf3, + 0xdb, 0x3d, 0x24, 0x30, 0x4b, 0x78, 0x09, 0x8c, 0x87, 0xe4, 0xd0, 0x1a, 0x82, 0x97, 0xce, 0x34, + 0xe9, 0xca, 0xfb, 0xe8, 0x3d, 0x89, 0xbe, 0xf5, 0xf2, 0xdb, 0xfc, 0x93, 0x63, 0x82, 0xc5, 0xde, + 0x6f, 0xe3, 0xc3, 0x9f, 0x18, 0xfd, 0x17, 0x47, 0x86, 0xbb, 0x1b, 0xb4, 0x8d, 0xc1, 0x66, 0xa2, + 0x7f, 0xbf, 0x12, 0xdd, 0x0c, 0xfe, 0x9d, 0x80, 0x35, 0x20, 0x17, 0x1c, 0xa8, 0x70, 0x59, 0x6a, + 0x3e, 0x90, 0x0c, 0x03, 0x69, 0x3d, 0xd2, 0xb3, 0x27, 0x79, 0x72, 0xb0, 0xd8, 0x98, 0x82, 0x72, + 0x56, 0xfb, 0xc2, 0x1b, 0xc4, 0xd7, 0x50, 0x5e, 0xc4, 0x17, 0xde, 0xc0, 0x08, 0x8a, 0x67, 0x74, + 0xe5, 0x29, 0x89, 0x14, 0xc9, 0xa5, 0xf1, 0xc1, 0x41, 0x8c, 0xcc, 0xac, 0x28, 0xce, 0x97, 0x86, + 0x13, 0xb1, 0xfe, 0xf8, 0xc0, 0xae, 0xe4, 0xb1, 0x33, 0x26, 0x30, 0xe1, 0x7a, 0x90, 0x45, 0xab, + 0xa4, 0x97, 0xf8, 0x3b, 0x94, 0x6f, 0xfe, 0x85, 0x71, 0x1c, 0x50, 0x13, 0x38, 0x27, 0x0d, 0x2b, + 0x94, 0x55, 0xd2, 0x8d, 0xe2, 0x36, 0x50, 0xcc, 0x80, 0xc9, 0x0d, 0x71, 0xdc, 0x03, 0xb1, 0x37, + 0x8e, 0xbe, 0xbf, 0x3a, 0x68, 0x95, 0x59, 0x9c, 0x7b, 0x78, 0x59, 0x28, 0xd8, 0x44, 0x2a, 0x92, + 0x7d, 0xed, 0x2a, 0x1b, 0x5d, 0xfc, 0x90, 0x85, 0xc3, 0x04, 0x9a, 0xe3, 0x57, 0x98, 0x02, 0x24, + 0xe1, 0x30, 0x27, 0xf2, 0x2b, 0xbe, 0x56, 0x5e, 0x19, 0x2a, 0x57, 0x27, 0x56, 0xd7, 0x54, 0xaf, + 0xae, 0x56, 0x56, 0x54, 0xbf, 0x51, 0x5d, 0xb3, 0x5c, 0x1d, 0xa7, 0xae, 0xa9, 0xa9, 0xc1, 0x7f, + 0xd4, 0xad, 0xa9, 0xa8, 0xa8, 0xaa, 0xab, 0x53, 0xc7, 0x2d, 0x53, 0xaa, 0x57, 0xac, 0x51, 0xab, + 0xd4, 0x71, 0xab, 0xab, 0x57, 0x56, 0xad, 0x5a, 0xb3, 0x5a, 0x9d, 0xbc, 0x6c, 0x95, 0x5a, 0x51, + 0xb5, 0xba, 0x4a, 0x5d, 0x59, 0x5d, 0xa3, 0xac, 0xae, 0x62, 0x61, 0x30, 0x7f, 0x69, 0xd1, 0xad, + 0x40, 0x7e, 0x60, 0x97, 0x59, 0x46, 0xb7, 0x3e, 0x05, 0x73, 0x83, 0x86, 0xc7, 0x3a, 0xd8, 0x1d, + 0x27, 0x46, 0xf6, 0x1c, 0x04, 0x03, 0x08, 0x20, 0x69, 0x13, 0x5d, 0xdd, 0xc9, 0xe3, 0x31, 0x76, + 0xbc, 0x16, 0x6d, 0xfb, 0x04, 0xca, 0x0d, 0x47, 0x7c, 0xa1, 0x08, 0xa1, 0x51, 0xe6, 0xea, 0xca, + 0x1c, 0x09, 0x4a, 0x64, 0x11, 0xc6, 0x66, 0x49, 0xa8, 0x4c, 0xd0, 0x85, 0x2a, 0x71, 0x11, 0xca, + 0xd6, 0x02, 0x0d, 0xc4, 0x5b, 0x04, 0x5f, 0x15, 0xf3, 0x37, 0xed, 0x61, 0xd2, 0xc2, 0x87, 0x8e, + 0x90, 0x1e, 0x66, 0x85, 0xb8, 0x02, 0x4d, 0xd2, 0x70, 0x54, 0x35, 0x1a, 0x6a, 0x78, 0x1c, 0x7e, + 0xa7, 0xb0, 0x67, 0x93, 0xbd, 0x86, 0x8e, 0x01, 0x5f, 0x44, 0xc6, 0xb0, 0x37, 0x11, 0xd7, 0xa0, + 0x09, 0xf5, 0x2d, 0xa1, 0x90, 0x16, 0x88, 0xd4, 0x45, 0xb4, 0x66, 0x42, 0x45, 0x60, 0x24, 0xc8, + 0x97, 0xcb, 0xf3, 0xc8, 0x48, 0x7d, 0x9f, 0x1b, 0xbd, 0xa7, 0x89, 0x1f, 0x71, 0xcf, 0xd6, 0x44, + 0xdf, 0x89, 0x91, 0x2f, 0xc9, 0x53, 0xa2, 0xf2, 0xed, 0xc5, 0x6a, 0x34, 0x31, 0x1c, 0xd1, 0x9a, + 0xeb, 0x4c, 0x56, 0x28, 0x50, 0x6f, 0xd2, 0x15, 0xd9, 0x34, 0xa7, 0x8e, 0xad, 0xc2, 0xb1, 0x44, + 0x3c, 0x9e, 0x6a, 0x6b, 0x21, 0x6e, 0x16, 0xcc, 0x6d, 0xd5, 0x9a, 0xa9, 0xf5, 0xfd, 0x83, 0x6e, + 0xa3, 0x98, 0xf0, 0x86, 0x45, 0xe6, 0xac, 0x04, 0xdd, 0xbd, 0xaa, 0x2b, 0x2f, 0x4b, 0xd0, 0x45, + 0x7e, 0x11, 0x86, 0x4f, 0xf5, 0x9f, 0x4c, 0x0e, 0x6e, 0x83, 0xe1, 0xb9, 0x9c, 0x8e, 0x16, 0xc5, + 0x05, 0x85, 0x70, 0x69, 0x70, 0xac, 0xf0, 0xcd, 0xc6, 0xc0, 0x40, 0x62, 0xff, 0x79, 0x15, 0xc6, + 0x11, 0x5f, 0xe2, 0xa3, 0xd6, 0x03, 0x9d, 0x51, 0xac, 0x2b, 0x0f, 0xf2, 0x51, 0xeb, 0xd9, 0x97, + 0x60, 0x6e, 0x19, 0xd3, 0x36, 0x7c, 0xa0, 0xfa, 0x97, 0x78, 0xe6, 0x60, 0x22, 0x37, 0x82, 0xc5, + 0x1c, 0xd8, 0x47, 0x70, 0x45, 0x8f, 0xe3, 0xa8, 0xe7, 0x49, 0x9e, 0xa1, 0xee, 0x01, 0xc4, 0x30, + 0x6e, 0x8d, 0xc7, 0x62, 0xb6, 0x50, 0xf7, 0x8d, 0xbe, 0x70, 0x04, 0xa4, 0xb6, 0x84, 0x2c, 0x80, + 0x60, 0xf3, 0x56, 0xb1, 0x2c, 0xc6, 0x07, 0x76, 0x24, 0xbe, 0x3e, 0x66, 0x47, 0xae, 0x56, 0x3d, + 0x1f, 0xea, 0x7e, 0x8a, 0x67, 0xa8, 0x7b, 0x58, 0x3b, 0x04, 0xab, 0x35, 0x67, 0xa7, 0xc4, 0x77, + 0x13, 0x9a, 0xfc, 0x6e, 0x30, 0x54, 0xaf, 0xd1, 0x00, 0xde, 0x34, 0x63, 0x1b, 0x0e, 0x2c, 0xe8, + 0xa8, 0x92, 0x97, 0x90, 0xf3, 0xa2, 0xe9, 0x12, 0x21, 0x89, 0x65, 0x72, 0xb0, 0x2d, 0xd1, 0xf7, + 0x19, 0x43, 0x72, 0xe0, 0x92, 0x9d, 0xd8, 0x75, 0xca, 0x68, 0x3b, 0xaf, 0x3a, 0x46, 0x10, 0x3b, + 0x05, 0x34, 0xb1, 0x3e, 0xd8, 0xd4, 0x14, 0x0c, 0xd4, 0xfa, 0x42, 0xbe, 0xa6, 0x70, 0xe1, 0x54, + 0x0c, 0x35, 0x8f, 0x78, 0x42, 0x4d, 0x05, 0xd7, 0x10, 0x80, 0x07, 0x3b, 0x28, 0xda, 0x06, 0x90, + 0x17, 0x19, 0xad, 0x5f, 0x1b, 0xad, 0x67, 0x99, 0x26, 0x1b, 0x82, 0xdc, 0xa7, 0x2e, 0x9c, 0x36, + 0x61, 0x0e, 0x4c, 0x44, 0x68, 0xb4, 0x97, 0xa3, 0x23, 0x51, 0x5d, 0xb5, 0xf5, 0x16, 0x2b, 0x00, + 0xdb, 0x72, 0x24, 0xc6, 0xa3, 0xba, 0x32, 0x5f, 0x62, 0x85, 0x72, 0x21, 0x8f, 0x6d, 0x79, 0x2e, + 0x4e, 0x65, 0x6d, 0xc4, 0x1a, 0x84, 0x02, 0xc1, 0x06, 0xad, 0xba, 0xd6, 0x64, 0x59, 0x71, 0x6a, + 0xb6, 0xf1, 0x20, 0xb3, 0xe1, 0x8a, 0xe5, 0x07, 0x40, 0x67, 0x45, 0x0e, 0xe2, 0x93, 0xce, 0xf8, + 0x70, 0x6f, 0xb2, 0x67, 0x6b, 0x75, 0x2d, 0xe1, 0x7d, 0xb9, 0xa6, 0xe2, 0x3a, 0x34, 0xc1, 0xfc, + 0x45, 0xf2, 0x0a, 0x92, 0xdc, 0x01, 0x38, 0x23, 0x0a, 0x5f, 0x2e, 0x2f, 0x4a, 0x9d, 0xf9, 0xc6, + 0x18, 0xde, 0x8b, 0xdd, 0x3f, 0xad, 0xd8, 0xa6, 0x00, 0x66, 0xfd, 0x17, 0x8d, 0xd8, 0x9e, 0x64, + 0xcf, 0x56, 0xae, 0xbd, 0xca, 0x77, 0x9e, 0x5d, 0x83, 0x90, 0x75, 0x29, 0x3d, 0xde, 0x61, 0xc9, + 0xfe, 0x0e, 0x4f, 0x77, 0x1e, 0x90, 0xd9, 0x99, 0xd7, 0xae, 0xbc, 0x88, 0xa6, 0xba, 0x8e, 0xeb, + 0xba, 0x14, 0x2c, 0xbb, 0x05, 0x5d, 0xe9, 0x14, 0xd0, 0x0e, 0x41, 0xc2, 0x4f, 0xab, 0xbc, 0x49, + 0x20, 0x1c, 0x08, 0x4e, 0x36, 0xc3, 0x62, 0x42, 0xc3, 0xcf, 0xd4, 0x16, 0x30, 0x61, 0x8a, 0x26, + 0x0e, 0x1c, 0x35, 0xbe, 0xd9, 0x0a, 0x1f, 0xed, 0x40, 0x1d, 0x26, 0x21, 0x47, 0x43, 0x41, 0x02, + 0xdb, 0x6e, 0x74, 0xec, 0x03, 0x24, 0x73, 0x75, 0xa8, 0x2d, 0xb1, 0xf7, 0x5b, 0xa3, 0xbb, 0x2d, + 0x1e, 0xdb, 0xed, 0x6b, 0xf6, 0xc7, 0x07, 0x08, 0xb9, 0x98, 0x38, 0xba, 0xdd, 0xd8, 0xbe, 0x2d, + 0x75, 0xa9, 0x3b, 0x39, 0xf8, 0xed, 0xd5, 0xa1, 0xf6, 0xe2, 0x4f, 0x27, 0xa1, 0x1c, 0x8c, 0x30, + 0x7f, 0x46, 0xd8, 0x7b, 0x78, 0xe5, 0x67, 0xe9, 0xca, 0x74, 0xc2, 0xde, 0x4f, 0xb4, 0x21, 0x59, + 0xe0, 0xdd, 0x5f, 0x41, 0x79, 0x90, 0x39, 0x87, 0xbc, 0xdf, 0x40, 0xe3, 0x43, 0x91, 0xfc, 0x30, + 0x1f, 0xa1, 0x12, 0xac, 0xcb, 0xd8, 0x1b, 0xbe, 0x6e, 0x43, 0x38, 0xd8, 0x1c, 0x5e, 0xec, 0x6b, + 0xf6, 0xab, 0xa4, 0xb9, 0xf8, 0x34, 0xca, 0x69, 0xf4, 0x07, 0x36, 0xd8, 0x3c, 0x39, 0xcd, 0x02, + 0xb9, 0x10, 0x82, 0x11, 0x41, 0x33, 0xc2, 0x5a, 0xb7, 0x47, 0x93, 0x7b, 0x4e, 0xab, 0xb8, 0x5e, + 0x6c, 0x42, 0x79, 0xcd, 0x70, 0xc3, 0x40, 0x30, 0x53, 0xe4, 0x75, 0x80, 0x8b, 0xf8, 0xbb, 0x85, + 0x9f, 0x15, 0xd2, 0x49, 0x7e, 0x84, 0x7c, 0x17, 0x35, 0x29, 0x61, 0xd7, 0x6b, 0x83, 0xf6, 0xd1, + 0x95, 0xe8, 0x26, 0x7c, 0x6c, 0x46, 0xff, 0x45, 0x95, 0xb4, 0x17, 0x9f, 0x46, 0xb9, 0x21, 0x2d, + 0x12, 0xfa, 0x88, 0xa4, 0xab, 0x82, 0x90, 0xa9, 0xb8, 0x44, 0x9e, 0x91, 0xea, 0x3f, 0x01, 0xa3, + 0x91, 0x58, 0xe5, 0x5f, 0x1f, 0x4b, 0xec, 0xfd, 0x46, 0x85, 0x5a, 0x71, 0x11, 0x7d, 0x95, 0xf3, + 0xb8, 0x00, 0xa8, 0xf0, 0x2a, 0x4f, 0xf4, 0x7a, 0x8f, 0x17, 0xc0, 0x7b, 0x0c, 0xb6, 0x91, 0x33, + 0x75, 0x65, 0x1a, 0xbc, 0xc7, 0x13, 0xdd, 0x2f, 0xf1, 0x32, 0xe7, 0x4b, 0x9c, 0x8f, 0x97, 0x86, + 0xa5, 0x61, 0x8e, 0x97, 0x78, 0x62, 0xa6, 0x37, 0x58, 0xb7, 0x22, 0x84, 0x83, 0xf9, 0xdd, 0xc7, + 0x26, 0xc7, 0x40, 0x49, 0xa2, 0x05, 0xf0, 0x69, 0x40, 0x12, 0x61, 0xe1, 0xe0, 0x21, 0xe3, 0xd4, + 0x4e, 0xc6, 0x2c, 0xd4, 0xac, 0x5a, 0x5d, 0xb7, 0x5a, 0x51, 0x57, 0x57, 0x55, 0x5e, 0x2b, 0x2f, + 0x0f, 0xbd, 0xa4, 0x22, 0xab, 0xe0, 0x7b, 0x11, 0x4b, 0x6f, 0x5a, 0xc4, 0x12, 0xb2, 0x5c, 0xb7, + 0x19, 0xb1, 0xf4, 0x38, 0xac, 0xca, 0x41, 0x2c, 0xf1, 0x4f, 0x2a, 0x90, 0x49, 0x44, 0x8f, 0x8e, + 0x09, 0x27, 0x8b, 0x52, 0xaa, 0xb6, 0xbd, 0x48, 0xf0, 0x9e, 0x96, 0xe8, 0xca, 0x23, 0xb6, 0x17, + 0x89, 0x20, 0xc6, 0x51, 0xde, 0xa5, 0x57, 0x10, 0x32, 0xd1, 0xe4, 0x4a, 0x2d, 0xf2, 0x5e, 0x90, + 0xa6, 0x88, 0xc5, 0xb6, 0xb7, 0x5c, 0xb1, 0x7c, 0x9f, 0xf9, 0x37, 0x43, 0x59, 0xf1, 0xc1, 0xcf, + 0x93, 0x47, 0x37, 0x19, 0xdb, 0x87, 0x4d, 0x28, 0xe1, 0x9a, 0x89, 0x95, 0x1c, 0xae, 0x86, 0x27, + 0x16, 0x07, 0x80, 0xb1, 0x70, 0xb5, 0x63, 0x1c, 0x6f, 0x64, 0x7d, 0x49, 0x40, 0x13, 0xc3, 0x1b, + 0xfc, 0xcd, 0xab, 0x68, 0xfc, 0x91, 0xc9, 0xf8, 0xbd, 0xeb, 0x11, 0x74, 0x65, 0x9f, 0x20, 0xd9, + 0xaa, 0xe4, 0x56, 0x81, 0x85, 0x1e, 0x01, 0x0c, 0x42, 0x82, 0x8e, 0x1c, 0xe9, 0x86, 0xfd, 0x2d, + 0x4d, 0xee, 0x39, 0xcb, 0x2b, 0xaf, 0x21, 0x35, 0x24, 0xb5, 0x18, 0x33, 0x7b, 0x92, 0x0e, 0x90, + 0x4d, 0x03, 0xdf, 0x76, 0x7e, 0x20, 0xd8, 0x7e, 0x32, 0x07, 0xc1, 0x4c, 0x1d, 0x70, 0x68, 0x46, + 0xf7, 0xae, 0xe4, 0x60, 0x1f, 0xbc, 0xa5, 0xaa, 0x6d, 0x55, 0x62, 0x10, 0x8d, 0x8f, 0x84, 0x7c, + 0x81, 0x70, 0xa3, 0x79, 0x3a, 0xf0, 0xda, 0xbf, 0xa6, 0x2b, 0x35, 0x92, 0x55, 0x2a, 0x2b, 0xa9, + 0x53, 0x9f, 0x1b, 0xdb, 0xce, 0x19, 0xc3, 0x9f, 0xd0, 0x84, 0xb6, 0x1d, 0xf1, 0x81, 0xa8, 0xb5, + 0x97, 0x89, 0xfd, 0xe7, 0x49, 0x42, 0xc0, 0xd4, 0xf0, 0xd7, 0x89, 0xce, 0xcf, 0x92, 0x97, 0x06, + 0x53, 0xfd, 0xbb, 0x8d, 0xb3, 0x7b, 0x93, 0xc7, 0x63, 0x89, 0x7d, 0xdb, 0x13, 0xbd, 0x5f, 0xab, + 0xd6, 0x68, 0xe2, 0x5f, 0x09, 0x68, 0x3c, 0x8b, 0xa4, 0x42, 0xe8, 0x83, 0x3e, 0x41, 0x57, 0xbe, + 0x10, 0x24, 0xab, 0x5c, 0xfe, 0x54, 0x80, 0xdc, 0xfb, 0xec, 0xba, 0xb3, 0xbd, 0x33, 0xa2, 0x07, + 0x6d, 0xd9, 0x07, 0x89, 0xde, 0x62, 0x27, 0xdb, 0x07, 0xd8, 0xb7, 0xf8, 0x40, 0x2c, 0x12, 0x6a, + 0xd1, 0xf8, 0x6e, 0xe9, 0x3a, 0x94, 0x16, 0x51, 0x46, 0x9c, 0xb5, 0x86, 0x46, 0xf1, 0xc1, 0xd6, + 0xd4, 0x96, 0x61, 0x48, 0x67, 0x0a, 0xe8, 0x06, 0x76, 0x42, 0xb5, 0x16, 0x3a, 0xfb, 0x19, 0x34, + 0xe1, 0x46, 0x1f, 0xa9, 0x1d, 0x82, 0xae, 0x6c, 0x13, 0xd0, 0x16, 0x41, 0xc2, 0xef, 0x82, 0xfc, + 0x1b, 0x9e, 0x3e, 0x36, 0xd1, 0xe4, 0x8e, 0xd3, 0xf1, 0xe1, 0x5e, 0x76, 0x94, 0x24, 0x00, 0x0b, + 0x46, 0xa2, 0x2c, 0x47, 0x08, 0x58, 0xd1, 0x98, 0x8d, 0x87, 0x36, 0x27, 0xfa, 0x4e, 0x40, 0x17, + 0xf6, 0x06, 0x80, 0xdd, 0xe1, 0xc8, 0xf6, 0xce, 0xc4, 0xbe, 0x6f, 0x98, 0x89, 0x9b, 0x09, 0x15, + 0x5c, 0x0c, 0xbb, 0x64, 0x5f, 0xfb, 0x95, 0xe8, 0xe6, 0xe2, 0x63, 0xd9, 0x68, 0xdc, 0xea, 0x0d, + 0x5a, 0x85, 0xbf, 0x21, 0x24, 0x3e, 0x81, 0xb2, 0xd7, 0xd6, 0x56, 0x90, 0xf7, 0x09, 0x53, 0xae, + 0xe6, 0x6f, 0xb9, 0x30, 0x39, 0xbc, 0x3b, 0x71, 0xe6, 0x8f, 0x4c, 0x1d, 0xbd, 0xb6, 0xb6, 0x82, + 0x48, 0xd6, 0xcc, 0x6a, 0xf3, 0x59, 0xab, 0xa8, 0xae, 0x54, 0xc9, 0x3b, 0x05, 0xcf, 0x9a, 0x59, + 0x20, 0x4f, 0x84, 0x24, 0x44, 0xd0, 0x5b, 0xc5, 0x65, 0x62, 0x15, 0xca, 0xaf, 0xae, 0xad, 0x69, + 0x69, 0x5a, 0xa7, 0x85, 0x48, 0x46, 0x46, 0x8c, 0x13, 0x58, 0xa1, 0x3c, 0x1b, 0x9a, 0x1b, 0x1d, + 0xad, 0x46, 0xf7, 0x57, 0x46, 0x57, 0x7f, 0x72, 0xcf, 0xe9, 0xea, 0x5a, 0xa3, 0xf7, 0x1b, 0xe3, + 0x50, 0x54, 0x65, 0xad, 0xc4, 0xa7, 0x19, 0x36, 0xcd, 0xb1, 0xf2, 0x1c, 0x50, 0x6c, 0x2a, 0x92, + 0x21, 0xf0, 0xbd, 0xa0, 0x8c, 0x31, 0x41, 0x79, 0x65, 0x68, 0x1c, 0x79, 0xc2, 0x08, 0x07, 0x07, + 0x7a, 0x0d, 0x52, 0x66, 0x75, 0xd5, 0x2d, 0x02, 0x9f, 0x56, 0x3a, 0x82, 0x9b, 0xe5, 0x8d, 0x12, + 0xdc, 0x6c, 0x9c, 0x33, 0xb8, 0x59, 0xd9, 0xd3, 0xba, 0xf2, 0x04, 0x92, 0x25, 0xba, 0xdd, 0xf2, + 0xa3, 0x70, 0xb2, 0x40, 0x8c, 0xac, 0x7e, 0xb5, 0x8a, 0x90, 0x2a, 0xb0, 0x82, 0x36, 0xdd, 0x68, + 0xdb, 0x06, 0xdb, 0x5c, 0xbc, 0x57, 0x40, 0x13, 0x49, 0x27, 0xc8, 0xfa, 0x36, 0x1d, 0xe5, 0x62, + 0x0b, 0x01, 0x50, 0xe7, 0xa8, 0xf0, 0xc3, 0x84, 0x41, 0xf3, 0xf8, 0x00, 0xde, 0xf0, 0xd1, 0xcc, + 0x76, 0xee, 0x36, 0xb7, 0x85, 0x33, 0xed, 0x5b, 0x48, 0x77, 0xa8, 0xcc, 0x3c, 0x0f, 0x34, 0x5f, + 0xb2, 0x4d, 0x28, 0x4f, 0x5f, 0xfd, 0x6a, 0x55, 0x91, 0x79, 0x80, 0xb0, 0x58, 0xb2, 0xae, 0x7f, + 0x5c, 0x82, 0xa5, 0x31, 0x96, 0xc8, 0x40, 0xd5, 0x7e, 0x2d, 0xee, 0x16, 0x78, 0x3e, 0x4a, 0xb0, + 0xdc, 0x0f, 0x38, 0x3e, 0xaa, 0x9e, 0x4b, 0xfd, 0x05, 0x10, 0x5b, 0x5e, 0x51, 0xb7, 0xf0, 0xd5, + 0xa5, 0x75, 0x0b, 0x97, 0xe0, 0x7f, 0x0b, 0x8c, 0x6d, 0x07, 0x8d, 0x56, 0x12, 0x60, 0xd1, 0xbc, + 0x96, 0xc4, 0x34, 0x7f, 0xbb, 0x71, 0xa6, 0x87, 0x8d, 0x02, 0xa1, 0xef, 0x2d, 0x39, 0x53, 0x6f, + 0xd4, 0xb8, 0x78, 0xce, 0xe8, 0xfa, 0x06, 0xf4, 0x2a, 0x25, 0x3c, 0x63, 0xf6, 0x0a, 0x9a, 0x40, + 0x7e, 0x70, 0x51, 0x81, 0x16, 0x98, 0xbc, 0x3b, 0x5f, 0x2e, 0x4f, 0x84, 0x65, 0xd1, 0x60, 0x18, + 0xe3, 0x42, 0xb9, 0x05, 0x42, 0x61, 0x34, 0x5f, 0xe5, 0x1b, 0x89, 0x61, 0x2e, 0x21, 0x57, 0x36, + 0xcd, 0x0d, 0xbd, 0x92, 0x4b, 0xc7, 0xa5, 0x90, 0x90, 0x2d, 0x34, 0xf6, 0xbd, 0xf9, 0x8d, 0xb1, + 0xdd, 0xa0, 0x62, 0x82, 0x64, 0x67, 0xd8, 0x18, 0x07, 0x2e, 0x47, 0x3c, 0xb6, 0x3b, 0x75, 0xe6, + 0xbb, 0xc4, 0xbe, 0x61, 0xd8, 0x58, 0x40, 0xd5, 0x38, 0x0e, 0x47, 0x61, 0x11, 0x97, 0x27, 0xeb, + 0x35, 0x94, 0x17, 0xd2, 0xd6, 0xfb, 0x83, 0x01, 0x02, 0xef, 0xcf, 0x60, 0x78, 0x87, 0x22, 0x59, + 0xb4, 0x62, 0xc4, 0xf4, 0x9e, 0x36, 0xaf, 0xca, 0x91, 0x23, 0xd7, 0xca, 0x67, 0x85, 0x66, 0x14, + 0x08, 0x85, 0x0d, 0xee, 0xd8, 0x20, 0xa4, 0x97, 0xa8, 0xa2, 0xdc, 0x8d, 0xcd, 0xf5, 0xd5, 0x95, + 0xe4, 0x1e, 0x3c, 0x67, 0xd2, 0x23, 0x50, 0x22, 0x97, 0x10, 0x48, 0x3c, 0xb5, 0x29, 0xd1, 0xdb, + 0x9e, 0x1c, 0xde, 0x9d, 0x1c, 0xec, 0xf5, 0x37, 0xc0, 0x67, 0xc4, 0x07, 0x76, 0x90, 0x4d, 0xc2, + 0x7a, 0x4d, 0xba, 0x52, 0xe8, 0x68, 0x4f, 0x24, 0x97, 0x47, 0x13, 0xc9, 0x79, 0xab, 0x6d, 0xaf, + 0x95, 0xcf, 0x08, 0x4d, 0xf3, 0x5a, 0x20, 0xc7, 0x0e, 0xaf, 0xb1, 0xc9, 0xfe, 0xc7, 0xd1, 0x5c, + 0xd8, 0xb3, 0x6d, 0xb2, 0xff, 0x89, 0x20, 0xf5, 0x07, 0x91, 0x7f, 0xda, 0x51, 0x79, 0x25, 0x40, + 0x18, 0x4d, 0xd0, 0x02, 0x1b, 0xfd, 0xa1, 0x60, 0xa0, 0x49, 0x0b, 0x50, 0x37, 0x94, 0xd7, 0x74, + 0xe5, 0x29, 0x89, 0x2f, 0x97, 0x1f, 0x25, 0xdb, 0x80, 0xe5, 0xa5, 0xa5, 0x45, 0x00, 0xa8, 0x6f, + 0x36, 0x87, 0x82, 0x0d, 0xa5, 0x45, 0x0d, 0xda, 0xba, 0x96, 0xf5, 0xa5, 0x45, 0xe1, 0x88, 0x6f, + 0xfd, 0xdb, 0x78, 0x4e, 0x35, 0xc7, 0xfc, 0x5b, 0xcd, 0xc5, 0x15, 0x6a, 0x8e, 0xd9, 0x4a, 0xe5, + 0x47, 0x13, 0xdf, 0x40, 0x48, 0x0b, 0xac, 0xf7, 0x07, 0x20, 0x09, 0xf0, 0x78, 0xaa, 0xe2, 0x7b, + 0x44, 0xe2, 0x8a, 0xe5, 0x42, 0x63, 0x68, 0x6f, 0xe2, 0x93, 0x5d, 0x4c, 0x2c, 0x07, 0x24, 0xe0, + 0x86, 0xa5, 0xe1, 0x6b, 0xe5, 0x93, 0x43, 0x13, 0xd5, 0xec, 0x0d, 0x4b, 0xc3, 0x6a, 0x2e, 0xd6, + 0x9d, 0xa8, 0x5c, 0x37, 0x71, 0x15, 0x9a, 0xe0, 0x0f, 0x57, 0x7d, 0x68, 0x82, 0xa9, 0x7f, 0x23, + 0x10, 0x73, 0xf9, 0x20, 0x33, 0xe7, 0xcb, 0xe5, 0x39, 0x96, 0x58, 0x1a, 0x6f, 0x57, 0x72, 0xe7, + 0xd7, 0x46, 0xe7, 0x51, 0x82, 0xe6, 0xf8, 0x96, 0xe2, 0xbf, 0x12, 0xd8, 0x8d, 0xc1, 0xcb, 0x05, + 0xf2, 0xed, 0x33, 0x41, 0x57, 0x5a, 0x05, 0x89, 0xaf, 0x91, 0x37, 0xf2, 0x2a, 0x1e, 0xb6, 0x49, + 0xef, 0x6a, 0x0d, 0x1a, 0x64, 0x0e, 0x2f, 0x2d, 0x0a, 0xfb, 0x03, 0xeb, 0x1b, 0xb5, 0xb7, 0x4b, + 0x8b, 0xac, 0x42, 0xea, 0x65, 0x10, 0x4b, 0x6d, 0xda, 0x33, 0xb2, 0xf9, 0x24, 0x0c, 0x71, 0x75, + 0xa8, 0x03, 0x9a, 0x42, 0x6d, 0x72, 0xe7, 0xd7, 0xc9, 0xaf, 0x76, 0xb2, 0x2a, 0x46, 0x0c, 0x43, + 0x9b, 0x6b, 0xe5, 0x33, 0x43, 0xd3, 0x55, 0x64, 0x0d, 0xa9, 0xe6, 0x41, 0x85, 0xca, 0xaf, 0x4e, + 0xdc, 0x2f, 0xa0, 0x69, 0x56, 0x9b, 0x0a, 0x86, 0x96, 0x80, 0x86, 0xc4, 0x39, 0xa9, 0xbc, 0xea, + 0xe5, 0x57, 0x89, 0x7f, 0x0a, 0x4d, 0x20, 0xe7, 0x58, 0x2a, 0x26, 0x0c, 0xa3, 0x60, 0x49, 0x0c, + 0x2f, 0x74, 0xaa, 0xff, 0x44, 0x75, 0x25, 0xb0, 0xd2, 0xd0, 0xf0, 0xe5, 0x60, 0x38, 0x42, 0x5e, + 0x49, 0xaf, 0x19, 0xc4, 0xcf, 0x04, 0xe6, 0x83, 0x36, 0x09, 0xf3, 0x56, 0xa5, 0xde, 0xb1, 0x13, + 0x2c, 0xcc, 0x6a, 0x73, 0x3d, 0x7b, 0x4b, 0x57, 0x5e, 0x63, 0xae, 0x67, 0xcb, 0xd9, 0xaa, 0xa0, + 0xc0, 0x92, 0xa2, 0x74, 0xc7, 0x8c, 0x81, 0x93, 0x60, 0x12, 0xcd, 0x9b, 0x41, 0x43, 0xfc, 0xc1, + 0xf8, 0x40, 0xa7, 0xf1, 0xdd, 0x7e, 0x50, 0xe6, 0xca, 0x4b, 0xe2, 0x03, 0x5f, 0x5e, 0x2b, 0xcf, + 0xed, 0x11, 0xb2, 0x0a, 0xa6, 0x33, 0x67, 0xb5, 0x32, 0x4b, 0x1c, 0x35, 0x99, 0xbe, 0x96, 0xd3, + 0x2d, 0x71, 0xd4, 0x78, 0x26, 0x88, 0xba, 0x56, 0x9e, 0x17, 0xca, 0x29, 0xc8, 0x2a, 0x9c, 0x6e, + 0x49, 0xa4, 0x36, 0x09, 0x68, 0x72, 0x30, 0xd0, 0xf8, 0x11, 0x7c, 0x46, 0x75, 0xe0, 0xdd, 0x20, + 0x26, 0x33, 0xf3, 0xcb, 0x7f, 0xa1, 0x2b, 0x6b, 0x25, 0x47, 0x95, 0x5c, 0x19, 0x1f, 0x6c, 0x85, + 0xd1, 0xc8, 0x86, 0x5b, 0xec, 0x46, 0x27, 0xc8, 0xce, 0x93, 0xbd, 0x47, 0x8c, 0x33, 0xe4, 0x4d, + 0x86, 0x96, 0x6e, 0x7d, 0x8a, 0x63, 0x54, 0xf1, 0xaa, 0x80, 0xc6, 0xaf, 0xab, 0x0f, 0x13, 0x23, + 0x73, 0x90, 0x12, 0x2d, 0x1e, 0x75, 0x9f, 0xcb, 0x69, 0x0f, 0xd8, 0xea, 0x23, 0x82, 0xae, 0x7c, + 0x2a, 0x48, 0xd6, 0x40, 0x72, 0xa7, 0xc0, 0x2f, 0xf5, 0x16, 0x84, 0x0a, 0xe6, 0x4d, 0x49, 0x88, + 0xa5, 0x06, 0xbc, 0x88, 0x58, 0x70, 0xad, 0x5a, 0x4b, 0x13, 0x13, 0x02, 0x9a, 0xa0, 0x71, 0x86, + 0xf5, 0xa2, 0x77, 0x8a, 0x7f, 0xd7, 0x37, 0x73, 0x86, 0xe9, 0xf0, 0xd5, 0xdd, 0x82, 0xae, 0x74, + 0x08, 0x12, 0x3f, 0x98, 0xfc, 0x3b, 0xc7, 0x67, 0xff, 0x30, 0xb6, 0xf6, 0xec, 0x63, 0x47, 0xf6, + 0x1c, 0xb4, 0x7d, 0x26, 0xbf, 0x16, 0xb1, 0xc2, 0x24, 0xe4, 0x82, 0x2d, 0x0d, 0xd5, 0x95, 0x24, + 0xb5, 0x26, 0xa6, 0x23, 0x69, 0x99, 0x3c, 0xc7, 0x19, 0xad, 0x30, 0x3e, 0xb0, 0x03, 0x54, 0xee, + 0xd5, 0x95, 0x2a, 0x6d, 0x25, 0x7e, 0x27, 0x20, 0x04, 0x5b, 0x82, 0xb1, 0x1c, 0xc8, 0xc8, 0x0e, + 0x09, 0xba, 0x72, 0x50, 0x90, 0xb8, 0x0a, 0x79, 0x87, 0x4d, 0x8c, 0x64, 0x29, 0x84, 0x5b, 0xbf, + 0x4e, 0xf4, 0xb6, 0x9b, 0x8f, 0xbb, 0xc9, 0x39, 0x1c, 0x49, 0xec, 0x6d, 0xbb, 0x3a, 0xd4, 0xb1, + 0x52, 0xa9, 0x51, 0x96, 0x57, 0x55, 0xbe, 0x53, 0xb1, 0x62, 0x4d, 0xdd, 0xea, 0x2a, 0x75, 0x01, + 0x9c, 0x75, 0xa2, 0xfd, 0x40, 0xf2, 0xcc, 0x31, 0x18, 0xa5, 0x84, 0x01, 0x6e, 0xe2, 0x40, 0x7f, + 0x51, 0x75, 0x4d, 0x65, 0x55, 0x6d, 0x55, 0x4d, 0x65, 0x55, 0xcd, 0x6a, 0xd6, 0xc7, 0x81, 0xfb, + 0x52, 0xdb, 0xbf, 0x34, 0x2f, 0xc0, 0xe0, 0xb7, 0x89, 0x1d, 0xc7, 0x4b, 0x54, 0x6e, 0x61, 0x62, + 0x19, 0xca, 0x83, 0xd8, 0x84, 0x85, 0x33, 0xb0, 0xc0, 0x10, 0x13, 0xed, 0xa4, 0x48, 0x9e, 0x01, + 0x03, 0xc0, 0xaf, 0x22, 0x26, 0x24, 0x24, 0xd5, 0xe2, 0x93, 0x28, 0x37, 0x10, 0x6c, 0xd0, 0xc2, + 0x85, 0x33, 0x71, 0x57, 0x4c, 0x42, 0x43, 0x89, 0x3c, 0x0d, 0x7a, 0x9a, 0x3f, 0xac, 0x7e, 0x50, + 0x27, 0x1e, 0x10, 0xd0, 0x94, 0x80, 0x16, 0xf9, 0x20, 0x18, 0xda, 0x50, 0xa7, 0x45, 0x22, 0xfe, + 0xc0, 0x7a, 0x6a, 0xaf, 0x3d, 0xd7, 0x65, 0xb6, 0x63, 0x6b, 0x56, 0x5e, 0xa3, 0x2b, 0x15, 0x92, + 0xb3, 0xaf, 0xbc, 0x84, 0x91, 0xbd, 0xc9, 0xc1, 0x5e, 0xe3, 0x48, 0x2c, 0x79, 0x2c, 0x0a, 0xbc, + 0x2f, 0xf3, 0x2a, 0x04, 0x7f, 0x8a, 0xc4, 0xbe, 0x8b, 0x50, 0x7e, 0xad, 0x3c, 0xf7, 0x33, 0x21, + 0x2b, 0x5f, 0x50, 0x9d, 0x43, 0x89, 0xff, 0x93, 0x80, 0xa6, 0x93, 0x25, 0x94, 0xfb, 0xc2, 0xfe, + 0x7a, 0xb6, 0x3e, 0x08, 0x09, 0xfc, 0x90, 0xdb, 0x05, 0xcd, 0xd5, 0xb6, 0xfc, 0x63, 0x5d, 0x09, + 0x4a, 0x9e, 0xa3, 0xc8, 0x3f, 0x27, 0xc8, 0x07, 0xaf, 0x91, 0x5c, 0x58, 0xba, 0x52, 0x78, 0xf7, + 0x88, 0x46, 0x15, 0x7b, 0x35, 0xf0, 0x59, 0x6d, 0x37, 0x36, 0xd7, 0x27, 0xfb, 0xda, 0xcd, 0x93, + 0xa4, 0x9f, 0x42, 0xbe, 0xcc, 0xfe, 0x41, 0x9e, 0xd3, 0x8a, 0xff, 0x2c, 0xa0, 0x99, 0xa4, 0x42, + 0x69, 0xd8, 0xe8, 0x0b, 0xd4, 0x6b, 0xec, 0xbb, 0x20, 0xe6, 0xf0, 0xc3, 0x69, 0xbe, 0xcb, 0xde, + 0xba, 0x7c, 0xb3, 0xa0, 0x2b, 0x7f, 0x2a, 0xcd, 0x32, 0xdb, 0x6a, 0xee, 0xb1, 0xe4, 0x06, 0xea, + 0x9e, 0xf1, 0xe9, 0xc8, 0x81, 0xf3, 0x7c, 0x30, 0x4f, 0xf6, 0x75, 0x46, 0xb7, 0xc9, 0x8d, 0xf9, + 0x9b, 0x37, 0x86, 0xa1, 0xda, 0xfc, 0x42, 0x7b, 0x4c, 0x3d, 0xe8, 0x00, 0x9c, 0xa5, 0xe7, 0xd9, + 0xa9, 0x69, 0xbe, 0x44, 0xfc, 0x1b, 0x01, 0x4d, 0x34, 0xe1, 0x8b, 0x7d, 0xda, 0x6c, 0x6f, 0xff, + 0x94, 0x1a, 0xab, 0x4d, 0xb9, 0x2e, 0xe8, 0xca, 0x2e, 0x41, 0xb2, 0xf5, 0x93, 0x7f, 0xcf, 0x07, + 0x27, 0x75, 0x7c, 0x00, 0x71, 0x22, 0xa6, 0x7e, 0xcc, 0xc4, 0xd7, 0x99, 0x73, 0x6e, 0x86, 0x43, + 0x32, 0x5b, 0xee, 0x3f, 0x9a, 0x6c, 0xbf, 0x68, 0xb4, 0x7d, 0x35, 0xd2, 0x1b, 0x25, 0xd6, 0x7c, + 0x58, 0xab, 0x6b, 0xbe, 0x46, 0x74, 0xcc, 0xf2, 0x8a, 0x3a, 0xa0, 0xf1, 0x89, 0x5b, 0x10, 0x16, + 0x6e, 0xaa, 0xb6, 0xd5, 0x88, 0x9b, 0x05, 0x34, 0x05, 0xa4, 0xab, 0xaa, 0xe6, 0x0f, 0x84, 0x23, + 0xbe, 0xc6, 0x46, 0x1c, 0x1d, 0x39, 0xbf, 0xfc, 0x75, 0x5d, 0x59, 0x23, 0x39, 0xeb, 0xe4, 0x72, + 0xa0, 0xd0, 0x46, 0xb6, 0x77, 0xa6, 0x3e, 0x6f, 0xe5, 0xe3, 0x91, 0xf2, 0x72, 0x5e, 0xe0, 0xee, + 0x53, 0x9f, 0x7d, 0x05, 0x48, 0x25, 0xb1, 0xa5, 0xd5, 0xd8, 0xf6, 0xc7, 0xf8, 0xc0, 0xce, 0x44, + 0x6f, 0x7b, 0x62, 0x6f, 0x9b, 0xea, 0x1c, 0x54, 0x3c, 0x28, 0xa0, 0xa9, 0xfe, 0x80, 0x3f, 0xb2, + 0x22, 0xb8, 0xde, 0x1f, 0xa8, 0xf5, 0x85, 0xc3, 0x1f, 0x04, 0x43, 0x0d, 0x38, 0xe7, 0xe5, 0xf8, + 0xf2, 0x0d, 0xba, 0xf2, 0x9e, 0xe4, 0xae, 0x95, 0xeb, 0x32, 0x2c, 0x01, 0x04, 0x51, 0x4c, 0xae, + 0xd0, 0x4c, 0xfa, 0x8c, 0xbe, 0x32, 0xf7, 0x3c, 0xe2, 0xeb, 0x68, 0x02, 0xb9, 0xc5, 0x18, 0x03, + 0x3f, 0x80, 0x17, 0x85, 0x6d, 0x93, 0xf8, 0x72, 0x79, 0x3e, 0x8f, 0x24, 0x00, 0xff, 0x2e, 0x68, + 0x09, 0x34, 0x68, 0xa1, 0x46, 0xdf, 0x47, 0x8b, 0x83, 0x1b, 0xf1, 0xff, 0x25, 0x2a, 0xdf, 0x45, + 0xfc, 0x73, 0x01, 0xcd, 0xf2, 0xb5, 0x44, 0x82, 0xcb, 0xb5, 0x80, 0x49, 0x7c, 0x69, 0x2b, 0xf1, + 0xa7, 0x60, 0xbd, 0x35, 0x89, 0xa6, 0xbc, 0x53, 0xd0, 0x95, 0xed, 0x82, 0x94, 0xae, 0x95, 0xdc, + 0xc8, 0x3f, 0x77, 0x2b, 0xb9, 0x9d, 0x00, 0xfb, 0x10, 0xea, 0x89, 0x8e, 0x49, 0x0f, 0x42, 0xd1, + 0x82, 0x9c, 0x8c, 0x73, 0x0f, 0x7c, 0xb6, 0x88, 0x08, 0xa4, 0x12, 0xfb, 0xcf, 0x97, 0x16, 0xc1, + 0x9d, 0x00, 0x06, 0x95, 0xa0, 0x65, 0x7c, 0x48, 0x81, 0x7a, 0x4d, 0x4d, 0xb7, 0x0c, 0xf1, 0xff, + 0x14, 0xd0, 0x78, 0xda, 0x2a, 0x5c, 0xf8, 0xa0, 0xb7, 0xaa, 0xab, 0x9a, 0x34, 0xa0, 0x76, 0x8e, + 0x15, 0xd8, 0x23, 0xb9, 0xfc, 0x0b, 0x41, 0x57, 0x4e, 0x08, 0x92, 0xd5, 0x5f, 0xde, 0xef, 0xa4, + 0x5d, 0x8a, 0xd2, 0xcc, 0x4b, 0x17, 0x5e, 0x5a, 0xc4, 0x8b, 0x1c, 0xf9, 0xb5, 0xc3, 0x17, 0xd2, + 0xaf, 0x02, 0xee, 0x9c, 0x4d, 0x04, 0x0d, 0x93, 0x3d, 0x5b, 0x6d, 0xd9, 0xfe, 0x20, 0xe9, 0x1a, + 0xa4, 0x81, 0x06, 0xe1, 0x8e, 0xd1, 0x11, 0x83, 0xd0, 0x06, 0xaa, 0xb5, 0x48, 0xf1, 0x5b, 0x81, + 0xb8, 0xc2, 0x62, 0xb2, 0xb1, 0x68, 0x8c, 0x74, 0x5b, 0x15, 0xed, 0x01, 0x14, 0x0c, 0xa6, 0xee, + 0xad, 0x61, 0xe4, 0x35, 0x46, 0xdf, 0x01, 0x63, 0x33, 0xcd, 0xb3, 0x00, 0x34, 0x07, 0x71, 0x54, + 0x03, 0xf4, 0xa0, 0x85, 0xd7, 0xbd, 0xd3, 0x12, 0x6a, 0x5c, 0x4c, 0x52, 0xb3, 0xbd, 0xe3, 0x6f, + 0xf2, 0xad, 0xd7, 0x16, 0x37, 0x87, 0xfc, 0x1b, 0xfd, 0x8d, 0x5a, 0xc3, 0x7a, 0x0d, 0x0a, 0x92, + 0x7d, 0xed, 0x7c, 0x67, 0xd5, 0x9a, 0x41, 0xfc, 0x15, 0xca, 0x6f, 0xa2, 0x71, 0x6c, 0xe7, 0x59, + 0xd6, 0x07, 0xac, 0x50, 0x7e, 0x92, 0x4c, 0x4e, 0xbc, 0xd3, 0x16, 0x54, 0x28, 0xe0, 0x50, 0xca, + 0xbc, 0x17, 0x89, 0x73, 0x2d, 0xf6, 0x2c, 0x2b, 0x59, 0x00, 0x76, 0x70, 0x25, 0x2a, 0x1b, 0x40, + 0xfc, 0x3d, 0x9a, 0x8c, 0xa7, 0xb3, 0x38, 0x99, 0x62, 0x3c, 0xcf, 0x5a, 0x5d, 0xa9, 0x93, 0x1c, + 0x55, 0xb2, 0x62, 0xf4, 0x0f, 0x19, 0xad, 0x27, 0x18, 0x73, 0x00, 0xe4, 0x1a, 0x15, 0xbd, 0x80, + 0x9c, 0x95, 0xec, 0x00, 0x21, 0x47, 0xf6, 0x9f, 0x4f, 0x7e, 0x11, 0x33, 0xa2, 0x43, 0x6c, 0x66, + 0xc7, 0x90, 0xa2, 0x1f, 0x4d, 0xf1, 0x87, 0x41, 0x45, 0x47, 0x0a, 0x71, 0x06, 0xca, 0xfc, 0xf2, + 0x17, 0x75, 0xe5, 0x39, 0xc9, 0x59, 0x27, 0x97, 0x30, 0x86, 0x13, 0xf4, 0xab, 0x30, 0x77, 0x29, + 0x77, 0x6f, 0xd8, 0x4c, 0xce, 0xbe, 0x4e, 0xdb, 0xc7, 0xf9, 0x69, 0x6d, 0x1f, 0x09, 0x65, 0x96, + 0xce, 0xf6, 0xf1, 0x84, 0x80, 0xa6, 0x10, 0xc8, 0xa9, 0xf0, 0x45, 0xb4, 0xf5, 0xc1, 0xd0, 0x47, + 0x38, 0x59, 0xe4, 0xf8, 0xf2, 0xdf, 0xe8, 0xca, 0x87, 0x92, 0xb3, 0x4e, 0xd6, 0x2c, 0x86, 0xb6, + 0xed, 0x2b, 0x87, 0xbe, 0xc3, 0x04, 0xd6, 0xb6, 0x6d, 0x8c, 0x2b, 0x84, 0xaf, 0x4b, 0x1c, 0xc0, + 0x99, 0xc8, 0x07, 0x63, 0x57, 0xa2, 0x9b, 0x60, 0xc7, 0x17, 0xac, 0x6b, 0xf1, 0x37, 0x36, 0x68, + 0xa1, 0xc5, 0xfe, 0xa6, 0xe6, 0x60, 0x28, 0xa2, 0x85, 0x4a, 0xb8, 0x80, 0xbe, 0xd0, 0x56, 0x75, + 0xce, 0x2b, 0xd6, 0xa0, 0xf1, 0xfe, 0xf0, 0x3b, 0xe1, 0xf7, 0x7c, 0x21, 0xad, 0x01, 0x27, 0x82, + 0xcc, 0x27, 0xde, 0x41, 0xac, 0x54, 0x9e, 0xc7, 0x6d, 0xe7, 0xd9, 0x78, 0xec, 0x2b, 0xf7, 0x76, + 0x62, 0x8b, 0x32, 0xdc, 0x58, 0xfc, 0xdf, 0x05, 0x34, 0xb9, 0x9e, 0xf3, 0x26, 0xaa, 0xae, 0x24, + 0x99, 0x1c, 0x49, 0x06, 0x14, 0x47, 0xa5, 0xfc, 0x25, 0xa1, 0x71, 0x19, 0xd1, 0x12, 0x8f, 0xed, + 0x06, 0x07, 0xb3, 0xea, 0xca, 0x52, 0xc6, 0x67, 0x25, 0xbf, 0x88, 0x5d, 0x89, 0x6e, 0x26, 0xc9, + 0x1c, 0x77, 0x1c, 0x49, 0x6d, 0x19, 0x36, 0x3f, 0x69, 0xd7, 0x05, 0xa3, 0x6b, 0x1f, 0x6b, 0x6f, + 0x6c, 0xef, 0x4b, 0xf5, 0x6f, 0xba, 0x12, 0xdd, 0x0c, 0x02, 0xa4, 0x78, 0x6c, 0x37, 0x38, 0xbb, + 0xc7, 0x07, 0x76, 0x26, 0x07, 0x8f, 0xc4, 0x07, 0xa2, 0x40, 0x46, 0x73, 0x0e, 0x6e, 0x26, 0x65, + 0x14, 0xb5, 0xc8, 0x69, 0x68, 0x9e, 0x8c, 0x9d, 0x4b, 0x9e, 0x39, 0x06, 0xb8, 0xc2, 0x31, 0xb6, + 0xea, 0x58, 0xbc, 0xb8, 0xde, 0x65, 0xf7, 0xbf, 0x00, 0x7f, 0x2b, 0x06, 0x4b, 0xa7, 0xdd, 0xbf, + 0x64, 0x63, 0x34, 0x1d, 0x0e, 0xd5, 0x9c, 0x43, 0x54, 0xe2, 0xd0, 0x25, 0x57, 0x94, 0x9a, 0x26, + 0xd0, 0xd2, 0x63, 0x05, 0x78, 0xb8, 0xb0, 0x04, 0x63, 0xa6, 0xfb, 0xbc, 0x88, 0x14, 0xdc, 0x02, + 0xb4, 0xb6, 0x5c, 0x0f, 0x79, 0x9e, 0x03, 0xfb, 0x5a, 0xf3, 0x9d, 0x3d, 0x4a, 0xcd, 0x55, 0xad, + 0xe6, 0xe2, 0x5b, 0x68, 0x9c, 0x3f, 0xbc, 0xd2, 0xff, 0xa1, 0xd6, 0x50, 0x28, 0x61, 0x90, 0xc0, + 0xf1, 0x9c, 0x69, 0x99, 0xfc, 0x84, 0x79, 0x89, 0xcf, 0x7c, 0xe3, 0x06, 0xc8, 0xc4, 0x85, 0x0b, + 0x23, 0x5b, 0x08, 0xaa, 0xe3, 0x60, 0x0f, 0x60, 0x84, 0x76, 0x17, 0xd7, 0x99, 0x10, 0x02, 0x57, + 0xdb, 0xd7, 0xa4, 0x06, 0x1b, 0xb5, 0xc2, 0x9f, 0x71, 0xfe, 0x63, 0xf6, 0x2a, 0xf9, 0x61, 0xdf, + 0x07, 0xe1, 0x64, 0xcf, 0x56, 0xbf, 0xaf, 0xa9, 0x28, 0x14, 0x6c, 0x34, 0x9f, 0x05, 0xb8, 0x12, + 0xf8, 0x7b, 0xb4, 0x0d, 0x84, 0xcd, 0x52, 0x1d, 0xdd, 0xbe, 0x8f, 0xaf, 0xe5, 0x2f, 0xd0, 0x64, + 0x3b, 0x2b, 0xee, 0xd1, 0xfb, 0x31, 0xbb, 0x85, 0x81, 0x8b, 0x5e, 0x2c, 0x7f, 0x75, 0x55, 0x73, + 0xb8, 0xb6, 0xb1, 0x65, 0xbd, 0x3f, 0xc0, 0x0f, 0xfd, 0x26, 0x2a, 0x70, 0x72, 0xbc, 0x37, 0x6f, + 0x70, 0xea, 0x23, 0xca, 0x9e, 0xa2, 0xeb, 0xd2, 0x0e, 0xb5, 0x67, 0xe9, 0x4a, 0x6b, 0x16, 0xda, + 0x9c, 0x25, 0xb9, 0x64, 0xeb, 0xf2, 0xbb, 0x3c, 0xf4, 0x38, 0x1c, 0x4d, 0xc8, 0xed, 0xc5, 0x96, + 0xdb, 0xe6, 0x4b, 0xd7, 0x6b, 0xf2, 0xd2, 0x3c, 0xff, 0x7c, 0x25, 0xba, 0x19, 0x34, 0xac, 0xbc, + 0x84, 0x25, 0xd5, 0x7f, 0x01, 0x88, 0x16, 0x50, 0xb5, 0x26, 0x76, 0x9d, 0x30, 0xba, 0x3e, 0xbf, + 0x2c, 0x58, 0xb2, 0xf3, 0xcb, 0x02, 0x2f, 0xfd, 0xbe, 0x2c, 0x30, 0x99, 0xf4, 0x65, 0x81, 0x48, + 0x92, 0xed, 0xde, 0x5b, 0x9c, 0x9c, 0xf5, 0xb2, 0xc0, 0x0b, 0x40, 0x2f, 0x0b, 0x9c, 0xc4, 0xf2, + 0xb2, 0xc0, 0x8b, 0x1b, 0xad, 0x39, 0xa0, 0x8e, 0x85, 0x01, 0xfb, 0xcb, 0x1c, 0x34, 0xd5, 0xb1, + 0x09, 0xe1, 0xe6, 0x3b, 0xdd, 0x97, 0xa5, 0xd6, 0xe6, 0xf4, 0x35, 0x2b, 0x1d, 0xd3, 0x49, 0xc2, + 0x55, 0xf9, 0x22, 0x3e, 0xb9, 0x30, 0xf5, 0xd9, 0x57, 0x70, 0xb2, 0xe6, 0x2b, 0xcd, 0x9d, 0x0e, + 0xf1, 0xfa, 0xfa, 0x1d, 0xca, 0x89, 0xf8, 0xc2, 0x1b, 0x88, 0xab, 0xd7, 0x74, 0x2f, 0x33, 0x27, + 0x48, 0x7d, 0x81, 0x9b, 0xc9, 0x2f, 0xf3, 0x42, 0x32, 0xd0, 0x2d, 0x5e, 0x1d, 0x6a, 0x03, 0x28, + 0x49, 0xf4, 0xb6, 0x5f, 0x1d, 0x6a, 0x07, 0x7e, 0x86, 0xc8, 0x08, 0xc1, 0x0f, 0x86, 0xda, 0xb6, + 0x58, 0x26, 0x89, 0x87, 0x7b, 0x55, 0x3c, 0x9e, 0xf8, 0x5b, 0xb7, 0xd3, 0x59, 0xde, 0x18, 0x9d, + 0xce, 0xf0, 0x0b, 0xe6, 0x72, 0x3a, 0x9b, 0xc3, 0x3b, 0x9d, 0xb1, 0x4f, 0x4e, 0xe3, 0x77, 0xb6, + 0x5c, 0x57, 0x2a, 0x51, 0xb9, 0xe4, 0x86, 0x03, 0x79, 0x06, 0x7f, 0x1b, 0x4c, 0x44, 0xea, 0xed, + 0xbf, 0x73, 0x59, 0xc0, 0xbb, 0x58, 0xfc, 0x57, 0x59, 0x68, 0x86, 0xd2, 0xd0, 0x50, 0xd7, 0xb2, + 0x2e, 0xa0, 0x45, 0x98, 0x45, 0xab, 0xaa, 0xfd, 0x5a, 0x5c, 0xeb, 0xd6, 0x58, 0x2d, 0xc5, 0x6a, + 0x0b, 0x4b, 0x63, 0x95, 0x4f, 0xc9, 0xa6, 0x6b, 0xe5, 0x0f, 0x84, 0xe6, 0x78, 0x6a, 0x56, 0xca, + 0x72, 0xca, 0x2b, 0xea, 0x16, 0xf2, 0x6a, 0xa7, 0xd7, 0x51, 0x5e, 0x18, 0xcf, 0x46, 0x10, 0x88, + 0xcb, 0xaf, 0x09, 0xd6, 0x52, 0x87, 0x93, 0x7b, 0x13, 0xd9, 0x0d, 0x74, 0x90, 0x67, 0x90, 0x48, + 0x23, 0x7d, 0xdd, 0x26, 0xcf, 0x43, 0xdd, 0x48, 0x54, 0x52, 0x2d, 0x3e, 0x81, 0xf2, 0x83, 0xcd, + 0x26, 0xc5, 0x1e, 0xa4, 0x4a, 0x28, 0x6c, 0xf3, 0xc2, 0x0a, 0xe5, 0xf1, 0x60, 0x1c, 0x16, 0x8f, + 0xc5, 0x54, 0x56, 0x58, 0xf6, 0xaa, 0xae, 0xbc, 0x8c, 0x96, 0x49, 0xde, 0xbb, 0x20, 0x17, 0x92, + 0x63, 0xe0, 0x26, 0x06, 0x14, 0x63, 0x47, 0x07, 0x64, 0x09, 0xc5, 0x9b, 0xb3, 0xd1, 0x4c, 0xaf, + 0x81, 0xee, 0xfc, 0x0b, 0xfa, 0xdb, 0x1b, 0xf7, 0xe0, 0xbd, 0x09, 0xf0, 0x4c, 0x0e, 0x21, 0xcd, + 0xde, 0xc9, 0x73, 0xdc, 0xa7, 0x90, 0x1e, 0xb4, 0x8b, 0xf7, 0xe7, 0xa2, 0x07, 0xeb, 0x3e, 0xf0, + 0x47, 0xea, 0xdf, 0x23, 0x63, 0xac, 0x21, 0x4c, 0x31, 0x11, 0xbd, 0xfd, 0x90, 0xd0, 0x5d, 0x83, + 0xc6, 0x35, 0xf8, 0xc3, 0x38, 0x7c, 0x55, 0x16, 0xde, 0xfa, 0x27, 0x74, 0xe5, 0x31, 0x89, 0x96, + 0xc9, 0x8f, 0x18, 0x43, 0x51, 0xa3, 0xf5, 0x1c, 0xcf, 0xb8, 0x43, 0xb2, 0x6b, 0x2b, 0x1b, 0xd1, + 0x27, 0xc6, 0x50, 0x54, 0xa5, 0x1d, 0xb8, 0xdb, 0x92, 0x7d, 0x93, 0x6f, 0xcb, 0xcf, 0xd1, 0x64, + 0x7f, 0xb8, 0xce, 0x3c, 0x80, 0xfa, 0xea, 0xe6, 0x95, 0x26, 0x64, 0xe6, 0xe0, 0x05, 0xe3, 0x28, + 0x12, 0x8e, 0x2a, 0x79, 0x36, 0xb1, 0x32, 0x19, 0x8a, 0x1a, 0xdd, 0xfd, 0x23, 0x87, 0x0e, 0x26, + 0xa2, 0x9b, 0xaa, 0x6b, 0x49, 0x3a, 0x7a, 0x47, 0x5b, 0xf1, 0x77, 0x68, 0x5a, 0x7d, 0xa3, 0xcf, + 0xdf, 0x54, 0xf5, 0x61, 0xb3, 0x3f, 0xa4, 0x35, 0xd4, 0x69, 0xf5, 0xc1, 0x40, 0x43, 0x98, 0x98, + 0xaf, 0x61, 0x1b, 0x65, 0xaf, 0x7a, 0xf9, 0xb1, 0xb5, 0xb5, 0x15, 0x0b, 0x2b, 0x6a, 0xaa, 0xf9, + 0x5d, 0x89, 0x0f, 0xec, 0x2c, 0x35, 0x86, 0x2e, 0x26, 0xa2, 0xa7, 0x92, 0xc3, 0xbb, 0x8d, 0xce, + 0x63, 0xd5, 0xb5, 0xc6, 0xa7, 0x87, 0x13, 0x7b, 0xce, 0x13, 0x73, 0x28, 0xaf, 0x71, 0x6c, 0x58, + 0x20, 0x6f, 0xcc, 0x58, 0xa0, 0x41, 0x57, 0x7c, 0xe8, 0x1d, 0x69, 0x34, 0xb8, 0x91, 0x1f, 0x31, + 0xda, 0xb6, 0x27, 0x3a, 0x3f, 0x83, 0x03, 0xa4, 0xc2, 0x16, 0x7e, 0xc9, 0x5e, 0xd8, 0x81, 0x9e, + 0x66, 0xf1, 0x7f, 0xcd, 0x41, 0x45, 0x99, 0x67, 0xb8, 0xf3, 0x11, 0x05, 0x7d, 0x77, 0x73, 0xee, + 0x98, 0x77, 0x37, 0xf7, 0x96, 0xe1, 0x29, 0xb1, 0xce, 0xb2, 0x94, 0xc9, 0xcb, 0x4c, 0xc9, 0x38, + 0x4c, 0x68, 0xc8, 0x21, 0xc0, 0xd8, 0x58, 0xb8, 0xca, 0x4c, 0x68, 0xca, 0x5e, 0xd7, 0x95, 0x35, + 0xa8, 0x4e, 0x1a, 0x15, 0x32, 0xe4, 0xb9, 0x3c, 0xf0, 0xd9, 0x80, 0x2e, 0x0d, 0x26, 0xec, 0xbc, + 0x1f, 0xcd, 0x02, 0x12, 0x61, 0xad, 0x3f, 0x14, 0x69, 0xf1, 0x35, 0xde, 0x33, 0x49, 0xb9, 0x67, + 0x92, 0x72, 0xcf, 0x24, 0xe5, 0xc7, 0x63, 0x92, 0xf2, 0xef, 0x3c, 0x4d, 0x52, 0xbe, 0xba, 0x93, + 0x4c, 0x52, 0x1e, 0x0c, 0x3d, 0xe0, 0x69, 0x92, 0x32, 0x6e, 0x23, 0xa0, 0x24, 0xbb, 0x6d, 0x4a, + 0xab, 0x80, 0x26, 0xbd, 0x17, 0x0c, 0x47, 0x9c, 0x56, 0x29, 0xef, 0xe8, 0xca, 0x5b, 0x92, 0xbd, + 0x46, 0x7e, 0xd5, 0xf6, 0x33, 0x75, 0xb0, 0x27, 0xb1, 0xf3, 0x08, 0x61, 0x14, 0xbf, 0x3b, 0x94, + 0x68, 0x3f, 0x90, 0xec, 0xd9, 0x6a, 0xb6, 0xe0, 0x79, 0xc7, 0x52, 0xde, 0x78, 0x85, 0x97, 0x17, + 0xaa, 0xf6, 0xb1, 0xc5, 0x73, 0x02, 0x12, 0xb9, 0x12, 0x82, 0x85, 0x89, 0x71, 0xf4, 0x66, 0x41, + 0x57, 0x36, 0x48, 0x1e, 0xf5, 0xf2, 0x1a, 0x77, 0x99, 0x87, 0x92, 0xa6, 0x41, 0xdb, 0x18, 0xd0, + 0x22, 0x8b, 0xfd, 0x0d, 0xf5, 0x25, 0xf8, 0xf1, 0xdb, 0x67, 0x6c, 0x3b, 0x17, 0x8f, 0xed, 0xb2, + 0x16, 0x9b, 0xec, 0xd9, 0xca, 0x77, 0xb8, 0x56, 0x3e, 0x35, 0x34, 0x45, 0xcd, 0x83, 0x6e, 0x6a, + 0xb6, 0xbf, 0xa1, 0x5e, 0xfd, 0x13, 0xd5, 0x63, 0x7a, 0xf1, 0x0b, 0xcb, 0x7e, 0x66, 0x32, 0x96, + 0xc2, 0x3d, 0xee, 0xad, 0x1f, 0x70, 0xbd, 0x06, 0xb7, 0xd7, 0x8c, 0x66, 0xca, 0x4d, 0x30, 0xa3, + 0x29, 0xb8, 0xd5, 0x66, 0x34, 0x96, 0x95, 0xc1, 0xd4, 0xeb, 0xb6, 0x32, 0xe8, 0xf6, 0x30, 0x17, + 0x10, 0xc7, 0x64, 0x2e, 0xb0, 0xec, 0xe6, 0x98, 0x0b, 0xb8, 0xcd, 0x04, 0xfe, 0xc7, 0x74, 0x66, + 0x02, 0xd3, 0xc6, 0x6e, 0x26, 0x10, 0xba, 0xf5, 0x66, 0x02, 0xd7, 0x6f, 0x1e, 0x30, 0xfd, 0xc7, + 0x6b, 0x1e, 0x30, 0xe3, 0x47, 0x61, 0x1e, 0x30, 0x68, 0xd3, 0x73, 0xce, 0xc4, 0x78, 0xec, 0xa9, + 0xb1, 0xe2, 0xb1, 0xdb, 0xae, 0xee, 0x74, 0x68, 0xe8, 0x66, 0xdd, 0xa8, 0x86, 0x2e, 0x2a, 0xa0, + 0xac, 0x00, 0x35, 0xd2, 0x71, 0xc5, 0x89, 0x36, 0x29, 0xdc, 0x70, 0xb3, 0xaf, 0x1e, 0x02, 0x7d, + 0x62, 0x1f, 0x95, 0xac, 0x40, 0x58, 0x7e, 0xd9, 0xd8, 0x3d, 0x6c, 0x52, 0xc5, 0x5f, 0xc4, 0x46, + 0xf6, 0x7f, 0xcb, 0x02, 0x8e, 0xba, 0x1e, 0x46, 0xe7, 0x5b, 0x93, 0x38, 0xd2, 0x1d, 0x1f, 0xf8, + 0x92, 0xef, 0xab, 0x66, 0x05, 0xc2, 0xe2, 0x0b, 0x2c, 0x7a, 0x4c, 0x85, 0xc9, 0x8f, 0xde, 0x67, + 0x39, 0x6a, 0xf3, 0xe5, 0x32, 0x02, 0x4a, 0xd1, 0x64, 0x3d, 0x54, 0xbe, 0xe2, 0x66, 0x44, 0x94, + 0xbc, 0x31, 0x6d, 0xc1, 0xbe, 0x2c, 0x5d, 0xd1, 0xb3, 0x50, 0x57, 0x96, 0x94, 0x8e, 0xfb, 0xa1, + 0x66, 0x0c, 0xfc, 0xde, 0xfc, 0x04, 0x54, 0x07, 0xff, 0x77, 0x36, 0x9a, 0x64, 0x03, 0x1d, 0x96, + 0x60, 0x42, 0x70, 0x25, 0x98, 0xe0, 0xc1, 0xc1, 0xe6, 0x84, 0xb9, 0x8e, 0xd1, 0x18, 0x59, 0xf8, + 0x6e, 0x96, 0x64, 0x04, 0x4e, 0x1b, 0x65, 0x01, 0x1e, 0x29, 0x84, 0xb2, 0xb0, 0xcd, 0x90, 0x38, + 0xba, 0x3d, 0xd9, 0xf7, 0x1d, 0x23, 0x0e, 0x36, 0xda, 0x43, 0x9f, 0x66, 0xe3, 0x89, 0x16, 0x65, + 0x9e, 0xc8, 0x95, 0xc4, 0x1c, 0x6e, 0x1d, 0xcf, 0xeb, 0xdb, 0xa7, 0x3c, 0x77, 0x3a, 0x75, 0xea, + 0x73, 0x7b, 0x02, 0xf3, 0x5f, 0xa0, 0xdc, 0x5f, 0xb7, 0x04, 0x99, 0x9e, 0x62, 0x6e, 0xda, 0x19, + 0x5f, 0x33, 0x5b, 0x81, 0xba, 0x02, 0x7a, 0xc8, 0xb3, 0xf8, 0xb1, 0x71, 0xd1, 0xc8, 0xc1, 0x6e, + 0xa3, 0xed, 0xbc, 0x0a, 0xf5, 0xdf, 0xe7, 0x36, 0x7c, 0xcf, 0xbc, 0xd6, 0xc5, 0xbd, 0x02, 0x9a, + 0x6c, 0x5f, 0xb9, 0x58, 0x84, 0x26, 0xd4, 0x37, 0xb7, 0x90, 0x88, 0x6d, 0x61, 0x32, 0x0c, 0x5f, + 0x24, 0xde, 0x8f, 0xc6, 0xd7, 0x37, 0xb7, 0xac, 0xf0, 0x37, 0xf9, 0x23, 0x61, 0x32, 0xa4, 0x55, + 0x20, 0x3e, 0x82, 0x26, 0x37, 0x69, 0x4d, 0xc1, 0xd0, 0x47, 0x6c, 0x08, 0xcc, 0x63, 0xab, 0x8e, + 0x52, 0xb1, 0x18, 0x4d, 0x84, 0x12, 0x32, 0x10, 0xb8, 0xd5, 0xd8, 0xca, 0x8a, 0xff, 0x31, 0x07, + 0x15, 0x7a, 0xdf, 0xd3, 0x7b, 0x7a, 0xad, 0x9f, 0x98, 0x5e, 0x8b, 0x04, 0xcb, 0x4c, 0x0b, 0x0e, + 0xf2, 0x1c, 0x37, 0xde, 0x1e, 0x5d, 0xc9, 0x75, 0x52, 0x40, 0x93, 0x5e, 0x6d, 0x59, 0x47, 0xec, + 0xbf, 0x54, 0xed, 0xd7, 0x62, 0x0d, 0x42, 0x1b, 0x58, 0x01, 0x41, 0x7e, 0x8b, 0x74, 0x65, 0xbe, + 0xc4, 0x15, 0xcb, 0x33, 0x61, 0x7c, 0xab, 0x04, 0x52, 0x9f, 0xd0, 0x84, 0xc0, 0x5c, 0xd3, 0xb2, + 0x2a, 0x5d, 0x29, 0x47, 0x2f, 0x49, 0xf6, 0x59, 0xe4, 0x62, 0xe2, 0xc1, 0xfa, 0xdd, 0x27, 0x46, + 0xeb, 0x89, 0xc4, 0xe7, 0xd1, 0xc4, 0x1f, 0x77, 0x3a, 0x07, 0xbb, 0x2c, 0x70, 0xc3, 0x14, 0xef, + 0xcb, 0x43, 0xd3, 0xad, 0x21, 0x2a, 0x82, 0x81, 0x80, 0x56, 0x1f, 0x31, 0xd7, 0xbb, 0xc6, 0x2d, + 0xab, 0xc3, 0x61, 0xdc, 0x38, 0x59, 0xdd, 0xa3, 0xf1, 0xd8, 0x6e, 0x2a, 0xae, 0x5b, 0x00, 0xc4, + 0x4c, 0x59, 0x51, 0xaa, 0xf5, 0xbb, 0xd4, 0x99, 0xfe, 0x78, 0x6c, 0x77, 0x59, 0x51, 0x7d, 0x63, + 0x78, 0xe1, 0x87, 0x1f, 0x7e, 0x68, 0x93, 0xb7, 0xfd, 0x1a, 0x21, 0xf3, 0xd9, 0x88, 0x84, 0x7c, + 0x54, 0x1f, 0x97, 0x0f, 0xc4, 0x04, 0x57, 0x2c, 0xbf, 0xc4, 0x99, 0xd2, 0x14, 0x81, 0x55, 0x0b, + 0xb6, 0xe8, 0xdf, 0x6d, 0x32, 0x7b, 0xe0, 0xe9, 0x0a, 0x85, 0xc7, 0xf7, 0x25, 0x87, 0x77, 0xa7, + 0xce, 0x5c, 0x1a, 0xd9, 0x7f, 0x26, 0xd9, 0xb3, 0xd5, 0xca, 0x0a, 0xa2, 0x72, 0xa3, 0x89, 0xeb, + 0x2c, 0x13, 0xf5, 0x6c, 0x9a, 0xe0, 0xf9, 0x59, 0xf3, 0x3b, 0x82, 0x2d, 0x0d, 0x58, 0x50, 0xb1, + 0x08, 0x84, 0x70, 0x38, 0xfa, 0x64, 0x69, 0x91, 0x2d, 0xd3, 0x77, 0x6c, 0x37, 0x89, 0x18, 0x84, + 0xa5, 0x6f, 0x20, 0x89, 0xe3, 0xc4, 0x7f, 0xcc, 0x82, 0xfd, 0x73, 0x01, 0x8d, 0xf7, 0x31, 0x03, + 0x9f, 0x1c, 0x96, 0x12, 0xe1, 0x23, 0xc9, 0x2a, 0x96, 0x1b, 0x79, 0x43, 0x30, 0xc6, 0x6d, 0xe0, + 0x21, 0xc0, 0x9e, 0x86, 0xd2, 0x4f, 0x94, 0x8a, 0x8d, 0x25, 0xbf, 0x88, 0x3d, 0x5b, 0x04, 0xde, + 0xb4, 0xc9, 0x2f, 0x62, 0xd8, 0x76, 0x11, 0xea, 0xc0, 0x29, 0x16, 0x4c, 0x77, 0xf0, 0x56, 0xb8, + 0x46, 0xb9, 0x56, 0x9e, 0x1b, 0xca, 0x36, 0xd7, 0x68, 0x2d, 0x40, 0x5c, 0xc5, 0x64, 0x85, 0xb9, + 0xf4, 0x40, 0x47, 0x91, 0x15, 0xa6, 0x11, 0x99, 0x51, 0x49, 0x61, 0x3d, 0x9a, 0x1a, 0xd2, 0xc2, + 0x58, 0x13, 0x84, 0x2d, 0x65, 0xb8, 0xf4, 0xe3, 0x38, 0x14, 0x97, 0xbb, 0x56, 0x7e, 0x40, 0x79, + 0xb5, 0x8e, 0xdf, 0x62, 0xda, 0xa2, 0x68, 0xbd, 0xd9, 0x44, 0x75, 0xf7, 0x28, 0x8b, 0xe8, 0xca, + 0xaf, 0x51, 0x50, 0xf2, 0x04, 0x53, 0x59, 0x01, 0x20, 0x27, 0x09, 0x18, 0xe8, 0xed, 0xb4, 0x00, + 0x1c, 0x80, 0x83, 0x6c, 0xf9, 0xb6, 0xd6, 0xc5, 0x00, 0x32, 0xc4, 0x40, 0x07, 0xa7, 0x0c, 0x30, + 0x89, 0x15, 0x38, 0x45, 0x9e, 0x68, 0x2a, 0x6e, 0xcd, 0x42, 0x93, 0xf9, 0xbb, 0x75, 0xc7, 0x3f, + 0x0c, 0x14, 0x93, 0x39, 0x56, 0x2d, 0x3f, 0xec, 0x44, 0x03, 0x80, 0x9a, 0x13, 0xd1, 0x53, 0xd0, + 0x7f, 0x14, 0x4c, 0xd6, 0x91, 0x85, 0x66, 0x78, 0xec, 0xfc, 0x4f, 0x75, 0x3b, 0xfe, 0x36, 0x07, + 0x4d, 0xa9, 0xc6, 0xe6, 0x84, 0x38, 0x44, 0x38, 0x56, 0x3f, 0xae, 0xb2, 0x10, 0x8c, 0x60, 0xc1, + 0x3e, 0xf3, 0x81, 0x19, 0x33, 0x9a, 0x64, 0xd8, 0x64, 0xb9, 0xed, 0xad, 0xc8, 0xb2, 0x42, 0xd9, + 0x8c, 0xe1, 0xad, 0xe0, 0x1f, 0x09, 0xf1, 0xf7, 0x28, 0xd7, 0x1f, 0x88, 0x10, 0x75, 0x44, 0x7e, + 0xf9, 0x7b, 0xba, 0xa2, 0x49, 0x50, 0x22, 0xbf, 0x45, 0xf8, 0x61, 0xb8, 0x0f, 0xfb, 0x2e, 0x1a, + 0x43, 0x5d, 0x80, 0x9e, 0x4a, 0x39, 0x53, 0x69, 0x23, 0x7a, 0x30, 0x3e, 0x78, 0x02, 0x70, 0x2f, + 0xdf, 0x66, 0x51, 0x11, 0x0b, 0x15, 0x19, 0x1f, 0x6c, 0x35, 0xfa, 0x2f, 0xc6, 0x63, 0xbb, 0xa1, + 0x86, 0xe4, 0x61, 0x81, 0x49, 0xc4, 0xb7, 0xd0, 0x24, 0xdb, 0x7d, 0x26, 0x98, 0x11, 0x1b, 0x96, + 0xdb, 0x6b, 0xe4, 0x62, 0x1e, 0xfd, 0x30, 0xdd, 0x71, 0x72, 0x70, 0xeb, 0x02, 0xdf, 0xc7, 0x2d, + 0x21, 0x2d, 0x1e, 0xdb, 0x5d, 0xa2, 0xda, 0xbb, 0x88, 0xba, 0x80, 0xc6, 0xe1, 0x48, 0x3b, 0xcd, + 0x90, 0x40, 0x6e, 0x7c, 0xf9, 0x87, 0xba, 0xd2, 0x22, 0xd1, 0x32, 0xf9, 0x7d, 0xde, 0x64, 0x3c, + 0xd1, 0xb6, 0x2f, 0x15, 0x6d, 0x05, 0x81, 0x03, 0x95, 0x8e, 0x31, 0x9b, 0xe9, 0xae, 0x6e, 0xa3, + 0xbd, 0x13, 0x0c, 0x1d, 0x53, 0xdb, 0xcf, 0x41, 0xfc, 0x18, 0x50, 0x19, 0x5d, 0x89, 0x6e, 0x06, + 0x5c, 0x6b, 0x74, 0x75, 0x1a, 0xdd, 0xbb, 0xe3, 0x83, 0x9f, 0x27, 0xbb, 0xb7, 0x19, 0x67, 0x0e, + 0x27, 0x77, 0x11, 0x26, 0x0c, 0x7a, 0xa9, 0x74, 0xd2, 0x32, 0xf3, 0xec, 0xd1, 0x12, 0xc9, 0x09, + 0x24, 0xf2, 0x03, 0xf1, 0xd8, 0x6e, 0xca, 0x78, 0xf1, 0xef, 0x00, 0xa8, 0xd3, 0x8a, 0xff, 0xa9, + 0x10, 0x15, 0xd0, 0x2e, 0x4c, 0x61, 0x76, 0xc8, 0x43, 0x61, 0x86, 0x53, 0x6c, 0x70, 0x8f, 0x70, + 0x70, 0x34, 0x85, 0x19, 0x84, 0x5a, 0x30, 0x86, 0xf7, 0x8e, 0xaa, 0x36, 0x23, 0x01, 0x71, 0x61, + 0x75, 0xf1, 0xa1, 0x1e, 0x80, 0x10, 0x50, 0x9a, 0xd1, 0x59, 0x7e, 0x30, 0xe5, 0x99, 0x43, 0x8a, + 0x91, 0x7d, 0xa3, 0x52, 0x8c, 0x7a, 0x4e, 0x09, 0x07, 0xd0, 0xb6, 0x5c, 0x57, 0xca, 0x38, 0x25, + 0xdc, 0x8d, 0xbf, 0xf6, 0x96, 0xd2, 0xed, 0xa6, 0x3f, 0xa4, 0x6f, 0xb8, 0xd5, 0x63, 0xcf, 0x39, + 0x43, 0x96, 0xf1, 0x4b, 0x05, 0x01, 0x48, 0x06, 0x5d, 0x1e, 0xa7, 0x2a, 0xfb, 0xb9, 0x87, 0xaa, + 0xec, 0xe9, 0x51, 0x54, 0x65, 0x69, 0xc7, 0xbd, 0xed, 0xca, 0xb2, 0xb7, 0x3c, 0x94, 0x65, 0xcf, + 0x5d, 0x87, 0xb2, 0xac, 0x20, 0x34, 0xd9, 0xa6, 0x2c, 0xfb, 0x13, 0x9b, 0xba, 0xec, 0x23, 0xb7, + 0xba, 0x6c, 0x82, 0x3c, 0xdb, 0x95, 0x96, 0xa5, 0x3c, 0x18, 0x6c, 0x84, 0xa4, 0x2c, 0xcf, 0xea, + 0xca, 0x52, 0xbb, 0x2a, 0xad, 0x24, 0x83, 0x2a, 0xcd, 0x32, 0xe0, 0x36, 0x11, 0xac, 0x5d, 0xb1, + 0xf6, 0xaf, 0x3d, 0x15, 0x6b, 0xc7, 0xef, 0x24, 0xc5, 0x5a, 0x61, 0x68, 0xa6, 0xa7, 0x62, 0xed, + 0x4f, 0xec, 0x1a, 0x35, 0xce, 0xa7, 0x7a, 0xa2, 0xb7, 0x4f, 0xb5, 0x13, 0xd3, 0xdd, 0x06, 0x65, + 0xd0, 0xb3, 0xce, 0x10, 0x7f, 0xf3, 0xd2, 0x2a, 0x83, 0x38, 0x72, 0x9f, 0x68, 0x83, 0xce, 0x62, + 0xc4, 0x4c, 0x50, 0x3b, 0x49, 0x24, 0xf6, 0x60, 0xba, 0x8f, 0x24, 0xcd, 0xca, 0x43, 0xba, 0xb2, + 0x5e, 0xb2, 0xba, 0xc9, 0x6f, 0x10, 0xcb, 0xfa, 0xd8, 0x6e, 0x88, 0xb2, 0x22, 0x27, 0x4f, 0x75, + 0xc2, 0x6b, 0x50, 0x56, 0x14, 0x8f, 0xed, 0xae, 0xae, 0x34, 0xf4, 0x0e, 0xeb, 0x2d, 0x2f, 0x2d, + 0x8a, 0x0f, 0x0e, 0x26, 0xb6, 0x76, 0xc5, 0x07, 0xa2, 0xc9, 0x53, 0x9d, 0x46, 0xe7, 0x39, 0xa3, + 0xab, 0x9f, 0x25, 0xe1, 0x1c, 0x3c, 0x41, 0xf1, 0x73, 0x7c, 0x20, 0x66, 0x6c, 0xdf, 0xc6, 0x5c, + 0x19, 0xad, 0xe9, 0x9c, 0x4e, 0xb6, 0x53, 0xee, 0x3a, 0x27, 0x5b, 0xbf, 0xdd, 0x47, 0xad, 0x80, + 0x22, 0xf7, 0x4a, 0xbb, 0x8f, 0xda, 0x93, 0x63, 0xf1, 0x51, 0x2b, 0x65, 0x6b, 0x22, 0x25, 0x76, + 0xa7, 0x35, 0xbb, 0xe3, 0x53, 0x1a, 0x87, 0x75, 0x17, 0x10, 0xdf, 0x76, 0x4d, 0xc0, 0x46, 0x97, + 0x5b, 0x12, 0x84, 0x41, 0xc4, 0x99, 0xa3, 0x9c, 0x6e, 0x49, 0xcf, 0xdc, 0xb0, 0x5b, 0x92, 0xcb, + 0x1d, 0xc9, 0xcb, 0xb7, 0x67, 0xda, 0x9d, 0xee, 0xdb, 0x33, 0xfd, 0xfb, 0xfb, 0xf6, 0xbc, 0x8c, + 0xc6, 0x6d, 0xd4, 0x42, 0x61, 0x93, 0x0e, 0x98, 0x41, 0x05, 0x3a, 0x0f, 0x49, 0xb4, 0x4c, 0x2e, + 0xb4, 0xed, 0x30, 0x97, 0x92, 0x8d, 0xf1, 0xe6, 0xb4, 0xa9, 0x43, 0x7e, 0x30, 0xf3, 0x0e, 0x95, + 0x1f, 0xb4, 0x0a, 0x28, 0xc7, 0x17, 0xd2, 0x7c, 0xe9, 0x12, 0x83, 0x41, 0xd6, 0xa4, 0x90, 0xe6, + 0x03, 0x47, 0x38, 0xdc, 0x56, 0x7e, 0x95, 0x7c, 0xff, 0xe0, 0xb7, 0x46, 0xec, 0x24, 0xf8, 0x33, + 0x99, 0x67, 0x7c, 0xe4, 0x08, 0xcc, 0xb3, 0x80, 0xc4, 0xfa, 0xa2, 0x09, 0xea, 0x4a, 0x8b, 0x8c, + 0xb6, 0x83, 0xa0, 0xd0, 0x20, 0xc8, 0x8d, 0xb6, 0x2f, 0x5a, 0x52, 0xa2, 0xe2, 0x21, 0x6f, 0x9f, + 0x9a, 0x67, 0x50, 0xd0, 0x95, 0x0b, 0x02, 0xfa, 0x56, 0x90, 0x5c, 0xc4, 0xba, 0xbc, 0x10, 0x3e, + 0xc4, 0xb8, 0xf0, 0x07, 0xd0, 0xdd, 0x30, 0xc1, 0x23, 0x9c, 0x5a, 0x79, 0x45, 0x1d, 0xd1, 0xfc, + 0x63, 0xac, 0x9f, 0x41, 0x29, 0xf3, 0x83, 0xe9, 0x62, 0xfe, 0x43, 0x16, 0x9a, 0xea, 0x58, 0xf6, + 0x9d, 0x2f, 0xee, 0xae, 0x73, 0x88, 0xbb, 0x3d, 0x32, 0xe4, 0xb5, 0xd4, 0x47, 0x20, 0x26, 0x33, + 0x88, 0xbb, 0xe7, 0xc0, 0x38, 0xb6, 0xcb, 0xa2, 0x77, 0x80, 0xe0, 0x99, 0xa4, 0x25, 0xa1, 0xce, + 0x0c, 0xae, 0xdd, 0x90, 0x67, 0x38, 0xb0, 0xe2, 0x28, 0xe2, 0x80, 0xff, 0x25, 0x1b, 0xcd, 0x82, + 0x48, 0xdc, 0x6e, 0x73, 0xc7, 0x1f, 0xca, 0xe0, 0x3b, 0x4e, 0x4c, 0x51, 0x60, 0x5e, 0xfc, 0x42, + 0x81, 0x1c, 0x15, 0xa0, 0x53, 0x72, 0x54, 0xca, 0xc7, 0x05, 0xbb, 0x5d, 0xc9, 0x95, 0xe8, 0x66, + 0x16, 0xf4, 0x97, 0xf0, 0xf9, 0x26, 0x0e, 0x1e, 0x6c, 0x85, 0x04, 0x62, 0x64, 0xa2, 0x85, 0xe4, + 0x52, 0x27, 0xda, 0xa3, 0x10, 0x4f, 0x87, 0x27, 0xb2, 0xe2, 0x03, 0x9d, 0xf1, 0xa1, 0x9e, 0xd4, + 0xa9, 0x93, 0x46, 0xd7, 0xee, 0xf8, 0xe0, 0x60, 0x7c, 0x78, 0xaf, 0x15, 0x94, 0x15, 0xf3, 0x4e, + 0xe6, 0x1c, 0x34, 0x31, 0x2f, 0xc5, 0x46, 0xbb, 0xfc, 0xe1, 0x65, 0xc1, 0x50, 0xbd, 0xd6, 0x60, + 0x74, 0xe3, 0xbc, 0x93, 0x9d, 0x5d, 0x46, 0x77, 0x87, 0x71, 0xe1, 0x44, 0x7c, 0xb8, 0xf7, 0x4a, + 0x74, 0xb3, 0xea, 0x58, 0xb6, 0xf8, 0x92, 0xcb, 0xb7, 0x02, 0x73, 0x83, 0x96, 0x55, 0xf5, 0x0c, + 0x58, 0x2f, 0x79, 0x27, 0x3c, 0x2c, 0xac, 0x5f, 0xd0, 0x95, 0x67, 0xd1, 0x33, 0x52, 0xba, 0x03, + 0xa2, 0x19, 0xd3, 0x78, 0x5d, 0xac, 0x4d, 0x04, 0x18, 0xcb, 0x41, 0x85, 0xde, 0x7d, 0xef, 0xfc, + 0x6b, 0xb3, 0x76, 0x6c, 0x5a, 0x22, 0x1c, 0xad, 0x05, 0xae, 0xcd, 0x5c, 0x72, 0x6d, 0x2e, 0xfc, + 0x01, 0xb6, 0xc5, 0x5b, 0x57, 0xf4, 0xab, 0x31, 0xe8, 0x8a, 0xb0, 0x78, 0x27, 0xd7, 0x6c, 0x16, + 0x96, 0x25, 0x7e, 0x8f, 0xf9, 0xe0, 0xbd, 0x54, 0x71, 0xd4, 0xc1, 0x14, 0x47, 0x77, 0x92, 0x9b, + 0x53, 0xda, 0x73, 0xb7, 0x43, 0x5d, 0x06, 0x97, 0x90, 0xff, 0x94, 0x85, 0xee, 0x07, 0x8d, 0xbc, + 0x7d, 0x10, 0xac, 0x0c, 0xfd, 0x21, 0xd1, 0xc3, 0x4a, 0xaa, 0x50, 0xce, 0x1a, 0x93, 0x42, 0x19, + 0x07, 0x8a, 0x24, 0x0a, 0xe5, 0x09, 0x6e, 0x25, 0xb2, 0x58, 0x6e, 0x05, 0x23, 0xcf, 0xa6, 0xf2, + 0x9d, 0x07, 0xac, 0x60, 0xe4, 0x22, 0xbb, 0x78, 0xc6, 0xee, 0x03, 0x54, 0xc2, 0x43, 0xa9, 0x1b, + 0xd2, 0x88, 0x26, 0x2f, 0xcc, 0xb8, 0x1f, 0x72, 0x21, 0xc9, 0x26, 0xc4, 0xe9, 0xd9, 0x46, 0x5a, + 0x3b, 0x47, 0x3e, 0x3b, 0x64, 0xb7, 0x65, 0x80, 0x65, 0x15, 0xb7, 0x67, 0xa3, 0x07, 0x32, 0x0c, + 0x77, 0xe7, 0x5f, 0xd0, 0x7a, 0xdb, 0x05, 0x1d, 0xed, 0x94, 0xb0, 0x8b, 0x0c, 0xdc, 0xd3, 0xf9, + 0x30, 0x1c, 0xec, 0x96, 0xd1, 0xbd, 0x2b, 0xd9, 0xb3, 0x95, 0xb7, 0x03, 0x80, 0x38, 0x0f, 0xe4, + 0x9d, 0x23, 0x3e, 0x26, 0x99, 0x77, 0x4a, 0x5e, 0xe8, 0xde, 0x79, 0xc7, 0x88, 0x23, 0x9f, 0x1d, + 0xca, 0x00, 0xea, 0x7d, 0xf9, 0xa8, 0x00, 0xee, 0xcb, 0x2d, 0x78, 0xfd, 0xce, 0x66, 0xa1, 0x7c, + 0xfa, 0x90, 0x90, 0x77, 0x6f, 0x4f, 0x96, 0xae, 0x74, 0x67, 0x49, 0xac, 0x58, 0xde, 0x92, 0x45, + 0x9d, 0x87, 0x62, 0x46, 0xdb, 0x79, 0xb8, 0xb0, 0xf6, 0xfc, 0x49, 0x57, 0xa2, 0x9b, 0xf9, 0xca, + 0xf8, 0x50, 0x4f, 0x7c, 0x20, 0x6a, 0x5c, 0x3c, 0x6f, 0x7b, 0x02, 0xc9, 0x59, 0x10, 0x46, 0x98, + 0x8a, 0xa4, 0x99, 0x9c, 0x15, 0x64, 0xc9, 0x2c, 0x98, 0x79, 0xe2, 0xec, 0x51, 0x30, 0xa9, 0xe3, + 0x07, 0x36, 0x76, 0x9f, 0x4e, 0xf4, 0x1e, 0x49, 0x7d, 0xb7, 0x65, 0x64, 0xef, 0xa5, 0xab, 0x43, + 0x1d, 0x89, 0x81, 0xd6, 0x64, 0xf7, 0x36, 0x78, 0xf3, 0xcc, 0x07, 0xf4, 0xd2, 0xa7, 0x26, 0xad, + 0xb1, 0xf7, 0x92, 0xd1, 0xbd, 0xcb, 0xe8, 0xfa, 0x86, 0x04, 0xe4, 0xc7, 0x66, 0x7a, 0xe6, 0x72, + 0x39, 0xec, 0x0b, 0x0f, 0x6e, 0xf2, 0xab, 0x9d, 0x46, 0xdb, 0x60, 0xea, 0xb3, 0xaf, 0xcc, 0x71, + 0xbe, 0x88, 0x81, 0xbb, 0xbe, 0xf9, 0xa9, 0xc7, 0xb7, 0x62, 0x17, 0x70, 0x8c, 0xb6, 0x71, 0xa0, + 0x55, 0xf3, 0x41, 0x65, 0xfb, 0x21, 0x1e, 0x11, 0x90, 0x48, 0xa3, 0x7a, 0xc0, 0x41, 0x61, 0xb9, + 0x05, 0xdc, 0xe7, 0xa0, 0xae, 0x34, 0x4a, 0x1e, 0xd5, 0xf2, 0x5a, 0x02, 0x0a, 0x38, 0x2c, 0x08, + 0x0c, 0x6e, 0xb2, 0x80, 0x7d, 0xfb, 0x92, 0x7b, 0x4f, 0x94, 0x15, 0x45, 0x68, 0x1a, 0x80, 0x05, + 0x23, 0x7b, 0xa2, 0x89, 0xfe, 0x4d, 0xd0, 0xac, 0xa4, 0x28, 0xa4, 0x45, 0x7c, 0xfe, 0xc0, 0x82, + 0xf8, 0x60, 0x6b, 0xf2, 0xd4, 0xe0, 0xc8, 0xc1, 0xe3, 0xa5, 0x90, 0x9f, 0x89, 0x54, 0xe3, 0x24, + 0xdc, 0xee, 0xb9, 0xbc, 0x68, 0x9a, 0x9c, 0x1f, 0x39, 0x4d, 0x93, 0x7b, 0x23, 0x34, 0x8d, 0xd8, + 0x26, 0xa0, 0x69, 0x0d, 0xf6, 0xbb, 0x56, 0x1f, 0x0c, 0x41, 0x4e, 0x93, 0x7c, 0x60, 0xbb, 0xbc, + 0xea, 0xe5, 0xe7, 0x00, 0x8a, 0x8d, 0xdd, 0x07, 0x60, 0xd4, 0xd2, 0x22, 0xd8, 0x2f, 0xb2, 0x59, + 0x6c, 0xa7, 0x78, 0x7f, 0x21, 0x23, 0xf6, 0x09, 0x6c, 0x93, 0xea, 0x35, 0x24, 0x8d, 0xa3, 0xeb, + 0xba, 0xfa, 0xa3, 0xd2, 0x55, 0x5f, 0xe7, 0xa0, 0xa9, 0x8e, 0x4e, 0xf7, 0x08, 0xaa, 0x1f, 0x2b, + 0x41, 0xf5, 0x92, 0xae, 0x3c, 0x8f, 0x9e, 0x95, 0xdc, 0x07, 0x3e, 0x66, 0x4a, 0xea, 0x92, 0x84, + 0x0a, 0x68, 0x9a, 0x6e, 0xf6, 0xbc, 0x78, 0x9b, 0xa7, 0x94, 0xf2, 0xcf, 0xcb, 0x83, 0xa3, 0x68, + 0xc6, 0x2c, 0x09, 0x07, 0x9f, 0x3a, 0xc6, 0x43, 0xa3, 0x35, 0x37, 0xb3, 0x46, 0xcb, 0xae, 0xc7, + 0x8a, 0xb8, 0x9c, 0xc0, 0x5e, 0xbf, 0xf9, 0x4e, 0x60, 0x64, 0xe1, 0x96, 0x42, 0xea, 0x69, 0x87, + 0x17, 0xd8, 0x83, 0xa3, 0x28, 0xa4, 0x98, 0xe2, 0xa9, 0xce, 0xee, 0xeb, 0xf5, 0xfc, 0x0d, 0xfa, + 0x7a, 0x91, 0x05, 0x11, 0x67, 0xaf, 0x17, 0xdc, 0xda, 0xac, 0xa2, 0xf4, 0xce, 0x5e, 0xf4, 0x14, + 0x2c, 0x8d, 0x55, 0x95, 0x87, 0xc6, 0xea, 0xe1, 0x51, 0x34, 0x56, 0x64, 0x14, 0x5e, 0x3f, 0xf5, + 0xa6, 0x97, 0x7e, 0xea, 0x99, 0x1b, 0xd6, 0x4f, 0xd9, 0xf5, 0x50, 0xaf, 0x7b, 0xe8, 0xa1, 0x96, + 0xea, 0xca, 0x93, 0x36, 0x3d, 0xd4, 0xa3, 0x0e, 0x3d, 0xd4, 0x9b, 0x1b, 0x96, 0x86, 0x4b, 0x8b, + 0xb0, 0xe2, 0xe9, 0x6d, 0x5e, 0x2d, 0x65, 0xd3, 0x41, 0x6d, 0xb8, 0x5e, 0x1d, 0xd4, 0xf7, 0x71, + 0xe7, 0xfa, 0xda, 0x53, 0xeb, 0xd4, 0x7e, 0xe7, 0x68, 0x9d, 0x7e, 0x3c, 0x81, 0x84, 0x9d, 0x38, + 0xec, 0x36, 0x28, 0xbd, 0x38, 0x66, 0x6e, 0xf2, 0x0d, 0x32, 0x73, 0xe2, 0xbf, 0xb1, 0x52, 0xa8, + 0x80, 0x0e, 0xa9, 0x5f, 0xd0, 0x95, 0x77, 0x59, 0xd4, 0xff, 0xb7, 0xc8, 0xda, 0x59, 0x0e, 0x15, + 0x9c, 0x4a, 0x14, 0x7e, 0x56, 0xa8, 0x55, 0xca, 0xea, 0xea, 0x9a, 0xe5, 0x57, 0x87, 0x3a, 0x48, + 0xba, 0x94, 0xab, 0x43, 0x1d, 0x95, 0x55, 0x2b, 0xaa, 0x48, 0xe1, 0x32, 0x65, 0xc5, 0x1a, 0xb5, + 0xea, 0xea, 0x50, 0x07, 0xcb, 0x43, 0xa7, 0xac, 0xae, 0x5e, 0x55, 0x43, 0x1b, 0x55, 0x55, 0x5e, + 0x2b, 0xaf, 0x08, 0x29, 0x6a, 0x3e, 0x1d, 0xc7, 0xca, 0xba, 0x92, 0x4f, 0x47, 0xb1, 0xd2, 0xae, + 0x4c, 0xb6, 0x0f, 0xa2, 0x8e, 0x23, 0x63, 0xa8, 0x7f, 0xc2, 0xb2, 0x10, 0x8c, 0x29, 0x2e, 0xb1, + 0xeb, 0xd8, 0x7e, 0x02, 0x71, 0x89, 0x5d, 0xdf, 0x7c, 0xd7, 0xc5, 0x25, 0x5e, 0x83, 0xf2, 0x21, + 0xfe, 0x26, 0x0b, 0x4c, 0x8c, 0x11, 0x3f, 0x2b, 0x94, 0x25, 0x67, 0x64, 0x62, 0xf3, 0x6d, 0xc4, + 0x89, 0x39, 0xc1, 0xf0, 0x87, 0x0f, 0x54, 0xcc, 0x7a, 0x89, 0xdf, 0x7a, 0x45, 0x2a, 0xfe, 0x44, + 0xd0, 0x95, 0x2e, 0xbb, 0x12, 0x35, 0x7a, 0xd3, 0x95, 0xa8, 0xb7, 0x2d, 0x3e, 0xb1, 0x97, 0xe7, + 0xe0, 0xcc, 0x3b, 0xd4, 0x73, 0x70, 0xd6, 0x8f, 0xcc, 0x73, 0xb0, 0xf0, 0xc7, 0xeb, 0x39, 0x78, + 0xdf, 0x8f, 0xc2, 0x73, 0xd0, 0x11, 0x37, 0x77, 0xf6, 0xcd, 0x8b, 0x9b, 0xfb, 0xad, 0x80, 0xc6, + 0x33, 0x4d, 0x65, 0xe1, 0x9c, 0x31, 0xbe, 0x4d, 0x9e, 0x26, 0x08, 0x55, 0x3f, 0xb8, 0x09, 0x02, + 0x9b, 0x41, 0x7c, 0x9d, 0x8b, 0xbd, 0x7a, 0x3f, 0x35, 0xce, 0x7a, 0x86, 0x8b, 0xbd, 0xba, 0xf0, + 0xba, 0x62, 0xaf, 0x72, 0x31, 0x57, 0xdd, 0xc6, 0x0d, 0x0f, 0xdc, 0x12, 0xe3, 0x86, 0xdf, 0xb9, + 0x63, 0xad, 0xce, 0x1d, 0x95, 0x24, 0xc7, 0xae, 0x12, 0xae, 0x38, 0xac, 0xf3, 0x46, 0x8d, 0xc3, + 0xea, 0x8e, 0xbf, 0xda, 0x60, 0xb7, 0x8b, 0x7c, 0x90, 0xc4, 0x64, 0xf2, 0x50, 0x83, 0xfa, 0x03, + 0xeb, 0x61, 0xf2, 0x9b, 0x14, 0x9d, 0xb5, 0xe8, 0x0e, 0xb4, 0xe0, 0x78, 0x9f, 0xb7, 0xe0, 0x98, + 0x37, 0xea, 0x31, 0x7c, 0x2f, 0xeb, 0x8e, 0x88, 0x2d, 0xcf, 0x14, 0x04, 0xf8, 0x5d, 0x6d, 0x92, + 0xe9, 0x5c, 0xb1, 0x5c, 0xc1, 0x3b, 0x64, 0xf2, 0xc9, 0xb6, 0x4b, 0x13, 0x47, 0x87, 0x70, 0x3c, + 0xa9, 0xd8, 0x82, 0x88, 0xbf, 0x49, 0x5b, 0x54, 0x13, 0xfc, 0x60, 0x41, 0xc9, 0xa2, 0x65, 0xc1, + 0x50, 0x93, 0x2f, 0x02, 0x25, 0xea, 0xb2, 0x8a, 0xc7, 0x1f, 0x7f, 0xfc, 0x99, 0x92, 0x12, 0x5b, + 0xf6, 0xaa, 0x72, 0xcb, 0x2e, 0xed, 0x21, 0x8e, 0x44, 0xa7, 0x76, 0x69, 0x22, 0xb3, 0x4b, 0xf3, + 0x20, 0xd1, 0xa9, 0x79, 0xda, 0x49, 0x01, 0x4d, 0x86, 0x5d, 0x65, 0x87, 0x09, 0x71, 0x7b, 0x7f, + 0xaf, 0x2b, 0xbf, 0x91, 0x1c, 0x55, 0xb2, 0xdf, 0x18, 0xfe, 0xc4, 0xb1, 0xcf, 0x80, 0xeb, 0xe2, + 0x03, 0x31, 0x7a, 0x36, 0xd8, 0x74, 0x24, 0xf3, 0x21, 0x5b, 0xa6, 0x6a, 0x8b, 0xc1, 0x98, 0x04, + 0xac, 0xc9, 0xf9, 0x90, 0xb5, 0xaa, 0x63, 0x6a, 0xaf, 0xe0, 0xb8, 0x0f, 0xff, 0x68, 0x83, 0xe3, + 0xbe, 0x67, 0x05, 0x91, 0x7d, 0x64, 0x54, 0xc8, 0xc5, 0x11, 0x6b, 0x59, 0x80, 0xd9, 0xf9, 0x63, + 0x09, 0x30, 0xcb, 0x02, 0xca, 0xde, 0x0b, 0xf6, 0x7a, 0xbd, 0x76, 0x3d, 0xff, 0x49, 0xd0, 0x95, + 0xbf, 0x13, 0xd0, 0xdf, 0x0a, 0x92, 0x4b, 0xd2, 0x28, 0x7f, 0x2b, 0x78, 0xfa, 0x5c, 0x03, 0xd5, + 0x90, 0xea, 0x3f, 0x01, 0x0e, 0xd7, 0xf1, 0xc1, 0x56, 0x3e, 0xbd, 0x35, 0xd1, 0xce, 0xe9, 0x1d, + 0xf1, 0x4b, 0x67, 0x12, 0x7d, 0x9f, 0x7b, 0xab, 0x17, 0x8e, 0x75, 0x98, 0x88, 0x08, 0xa7, 0x0c, + 0xbc, 0x12, 0xdd, 0x4c, 0x7c, 0xc0, 0xc1, 0x21, 0x01, 0xe7, 0x20, 0x64, 0xa2, 0xdd, 0xe4, 0xa7, + 0x03, 0x46, 0xeb, 0x39, 0x10, 0xfe, 0xe1, 0x49, 0x2f, 0x24, 0x8e, 0x5e, 0x4c, 0x74, 0x9e, 0x81, + 0xc6, 0x24, 0xda, 0x3d, 0x4d, 0x95, 0xe9, 0x76, 0x00, 0x2f, 0xfe, 0xcb, 0x6c, 0x34, 0xd5, 0xf1, + 0x5d, 0x77, 0x9f, 0xe1, 0x4f, 0x1a, 0x9a, 0xde, 0x6d, 0xf8, 0xc3, 0x34, 0xa3, 0x1e, 0xd2, 0xf6, + 0xdb, 0x1a, 0xcb, 0xad, 0xac, 0x42, 0x57, 0x5e, 0x42, 0x2f, 0x48, 0xee, 0xb3, 0xa0, 0xca, 0x6f, + 0x1b, 0x8c, 0xa5, 0x11, 0x87, 0xff, 0x9d, 0x80, 0x66, 0xa8, 0x5a, 0x24, 0xf4, 0x91, 0x2b, 0xe5, + 0xdf, 0x53, 0x6e, 0x99, 0x78, 0x61, 0x3a, 0x95, 0x2b, 0x2f, 0xf4, 0x7e, 0x9e, 0xd3, 0x4a, 0x65, + 0x51, 0x5b, 0x68, 0x8f, 0xf8, 0x85, 0xa9, 0x68, 0x2b, 0x44, 0xc6, 0x11, 0x0a, 0x1b, 0x38, 0x33, + 0x9b, 0x97, 0x75, 0xa5, 0x0a, 0x55, 0x48, 0xde, 0x8b, 0x92, 0xe7, 0x42, 0xfa, 0xcb, 0xf8, 0xc0, + 0x4e, 0xa3, 0x6b, 0xb7, 0x3b, 0x6e, 0xb2, 0x0d, 0x4e, 0xbf, 0xc8, 0x46, 0x33, 0xbd, 0x46, 0xb9, + 0xf3, 0x81, 0x75, 0xe5, 0xd8, 0x80, 0x15, 0x2f, 0x02, 0x80, 0x75, 0x06, 0x3c, 0x48, 0xde, 0x4a, + 0xa1, 0x57, 0xc6, 0xa0, 0x14, 0x82, 0xb1, 0xb0, 0x47, 0xb6, 0x35, 0x16, 0x9f, 0x3c, 0x1b, 0xd4, + 0x3f, 0x65, 0x6b, 0x74, 0x45, 0x45, 0xb5, 0x52, 0x9a, 0x8d, 0xcd, 0x70, 0x3e, 0x99, 0x2d, 0xdf, + 0x76, 0x66, 0xa1, 0x49, 0xcb, 0xb5, 0x48, 0x3a, 0x8d, 0x7f, 0xd6, 0xcd, 0xd3, 0xf8, 0x37, 0x12, + 0x5b, 0x7b, 0xcc, 0x08, 0xc1, 0x89, 0x60, 0x9a, 0xdf, 0x2a, 0x95, 0x5f, 0x70, 0x93, 0x05, 0xb6, + 0x18, 0x5c, 0xcc, 0x4e, 0x7e, 0x97, 0xa5, 0xd9, 0xc4, 0x5b, 0x46, 0x02, 0x23, 0x5a, 0x43, 0x95, + 0x3d, 0xa1, 0x2b, 0x8f, 0xa1, 0xc5, 0x92, 0xfd, 0xdb, 0x64, 0x11, 0xdc, 0xd8, 0xd3, 0x42, 0xee, + 0xc9, 0x1c, 0x34, 0x99, 0xef, 0xf1, 0x93, 0x83, 0x58, 0x0d, 0xe5, 0x62, 0xbe, 0x29, 0x1d, 0x3a, + 0xad, 0xe2, 0x99, 0xaa, 0xc0, 0xbb, 0x41, 0x50, 0x5a, 0x40, 0x1f, 0x79, 0x9e, 0x63, 0x64, 0xa3, + 0xf5, 0x7c, 0x7c, 0x90, 0xbc, 0x7a, 0x64, 0x16, 0x68, 0x79, 0x9b, 0x75, 0x99, 0x8a, 0xae, 0xbc, + 0x80, 0x9e, 0x93, 0x1c, 0x27, 0xed, 0x00, 0x8e, 0xcc, 0xd7, 0xe6, 0x37, 0x84, 0x08, 0xe2, 0xb6, + 0x42, 0x5c, 0x8f, 0x26, 0x52, 0x45, 0x1e, 0x96, 0x22, 0x00, 0xea, 0x36, 0x1f, 0x0b, 0xc9, 0x56, + 0x41, 0x45, 0x67, 0x46, 0x6c, 0xaf, 0x71, 0x96, 0xca, 0xa0, 0x7a, 0xb6, 0xf2, 0x3a, 0xa6, 0x05, + 0x91, 0x0d, 0xda, 0xe2, 0x0d, 0x4b, 0xc3, 0x8b, 0xb1, 0x8e, 0xa9, 0x44, 0xb5, 0xf5, 0x2f, 0xee, + 0x11, 0xd0, 0xd4, 0x8a, 0xf7, 0xb4, 0xfa, 0x0d, 0x38, 0xb3, 0x0c, 0x89, 0x98, 0x21, 0xbe, 0x88, + 0xf2, 0xfd, 0x81, 0x80, 0x16, 0xaa, 0xae, 0x0d, 0x17, 0x0a, 0x58, 0x3c, 0x88, 0x63, 0x47, 0xb0, + 0x42, 0x79, 0x3a, 0xf0, 0xe6, 0xe0, 0x06, 0xca, 0xe4, 0x83, 0xac, 0xbe, 0xac, 0x52, 0x57, 0x14, + 0xf4, 0xa2, 0xe4, 0x1e, 0x5a, 0x7e, 0x30, 0xf1, 0x79, 0x34, 0x71, 0xe4, 0x44, 0x20, 0xd8, 0xa0, + 0x11, 0x8b, 0x1c, 0x6c, 0x1a, 0xbd, 0xae, 0x9e, 0xc8, 0x5c, 0x2f, 0x0b, 0x6c, 0x94, 0xe2, 0xf3, + 0xd9, 0x48, 0xe4, 0x47, 0x08, 0x37, 0x07, 0x03, 0x61, 0xed, 0x4e, 0xbf, 0x46, 0x8d, 0xec, 0x1a, + 0x79, 0x27, 0x8f, 0x74, 0x7d, 0xd0, 0xa2, 0x4a, 0x5f, 0xc4, 0x07, 0xd2, 0x19, 0x9c, 0x3b, 0x1d, + 0xee, 0xd6, 0x83, 0x30, 0x38, 0xde, 0x28, 0xbc, 0x65, 0x30, 0x4d, 0xe9, 0x06, 0xed, 0xa3, 0xc4, + 0x81, 0xfe, 0xea, 0x5a, 0xb8, 0x65, 0xb3, 0xeb, 0xd0, 0x78, 0xd6, 0xdd, 0x83, 0xc0, 0x5d, 0x62, + 0xa7, 0x9d, 0x67, 0x7b, 0x09, 0xd7, 0x54, 0xbc, 0x6e, 0x9e, 0xf8, 0x25, 0x66, 0xb2, 0x1e, 0x9b, + 0x4f, 0x77, 0x8b, 0x24, 0x9e, 0xc2, 0x3a, 0x1c, 0x37, 0x41, 0x72, 0x45, 0x40, 0xc8, 0x1a, 0x59, + 0xac, 0x30, 0xd9, 0x9c, 0xaa, 0x0f, 0xfd, 0x61, 0x48, 0x8b, 0x9c, 0x4f, 0x32, 0x02, 0x92, 0x32, + 0x79, 0x0e, 0x11, 0xf4, 0x70, 0xe0, 0x40, 0x55, 0x72, 0x7d, 0x2a, 0x6d, 0x25, 0x96, 0xbb, 0xdf, + 0x12, 0x2c, 0xd5, 0xe0, 0xde, 0x12, 0x02, 0x95, 0xa0, 0xd5, 0xf6, 0x22, 0x6b, 0x56, 0xd8, 0x75, + 0xf9, 0xd9, 0x56, 0xbe, 0x7a, 0x9b, 0x2e, 0xbf, 0xd0, 0x3d, 0x8e, 0x87, 0x5e, 0xbf, 0xf8, 0xef, + 0xb2, 0xd0, 0xb4, 0x35, 0x81, 0x8a, 0x60, 0xa8, 0x21, 0x18, 0x80, 0xaf, 0xbd, 0x39, 0xb7, 0x47, + 0xac, 0x73, 0x7f, 0xea, 0x93, 0xba, 0xf2, 0x33, 0xfe, 0x53, 0xe7, 0x12, 0x03, 0x3d, 0xb6, 0x50, + 0x8c, 0xaa, 0x58, 0x3d, 0x0e, 0x0f, 0x52, 0x24, 0xf0, 0xdf, 0x1e, 0xa2, 0x49, 0x05, 0xb3, 0xf1, + 0x92, 0xde, 0xd2, 0x95, 0x5f, 0xd0, 0xa4, 0x82, 0xb5, 0x64, 0x3d, 0xf8, 0x1b, 0x61, 0x35, 0x57, + 0x87, 0x3a, 0x0c, 0xbd, 0xc3, 0x6b, 0x9d, 0xf1, 0x58, 0xc7, 0x48, 0xb4, 0x3d, 0x3e, 0x10, 0x35, + 0x39, 0x98, 0xa1, 0x03, 0x46, 0x6b, 0x9b, 0xbb, 0x37, 0xc9, 0x48, 0x48, 0xed, 0x81, 0xbc, 0x76, + 0x49, 0x9e, 0x03, 0x52, 0x55, 0xd2, 0xb9, 0xab, 0x3f, 0xf5, 0xcd, 0x16, 0x23, 0x76, 0x12, 0x20, + 0xaa, 0xf8, 0x72, 0x16, 0x9a, 0x6e, 0xef, 0x74, 0x77, 0xdc, 0x7d, 0x7b, 0x24, 0x9e, 0x87, 0xbc, + 0x6e, 0xdb, 0xaa, 0x66, 0xa2, 0x28, 0xae, 0xc3, 0x1a, 0x47, 0x92, 0x96, 0x1d, 0x5f, 0x79, 0x32, + 0x26, 0xa1, 0x40, 0xc0, 0x5e, 0xb3, 0x5a, 0x57, 0x96, 0xa1, 0x4a, 0xc9, 0x73, 0x37, 0xe4, 0x39, + 0x3c, 0x14, 0x38, 0xf6, 0xd0, 0x7d, 0x2b, 0xff, 0x63, 0x16, 0x9a, 0x7a, 0x0f, 0x5a, 0xd3, 0x43, + 0xeb, 0x52, 0x5d, 0x79, 0x12, 0x3d, 0x2e, 0xb9, 0xf7, 0x48, 0x9e, 0xcb, 0xc3, 0x6a, 0x7c, 0xa0, + 0xd3, 0x09, 0xae, 0x7f, 0x9d, 0x85, 0xc4, 0x7b, 0xc0, 0xea, 0x2b, 0x7b, 0x45, 0x57, 0x96, 0xa3, + 0x2a, 0xc9, 0x63, 0x2f, 0xec, 0x20, 0xe0, 0xde, 0x42, 0x37, 0xb4, 0xc6, 0x72, 0xa8, 0x84, 0x82, + 0x87, 0xd6, 0x6a, 0x17, 0xb4, 0x2e, 0x1c, 0x03, 0xb4, 0x5e, 0x2b, 0x1f, 0xa7, 0x0b, 0x39, 0xf9, + 0x42, 0x41, 0x03, 0x07, 0xb7, 0x17, 0x2d, 0xab, 0x05, 0xd8, 0xed, 0xa3, 0x82, 0xae, 0xbc, 0xce, + 0xac, 0x16, 0x6a, 0xf8, 0x05, 0xc3, 0x22, 0x17, 0xd8, 0xed, 0x07, 0x16, 0x13, 0x53, 0x83, 0xc5, + 0xd4, 0xd2, 0x60, 0xb1, 0x52, 0x59, 0xb9, 0x90, 0x18, 0x1b, 0x2c, 0x56, 0xab, 0x56, 0xae, 0x5a, + 0x5b, 0x45, 0x7f, 0x96, 0x5c, 0x2b, 0x2f, 0x0f, 0xbd, 0xe4, 0xb6, 0x40, 0x70, 0x5b, 0x2b, 0x4c, + 0xe0, 0x06, 0x51, 0x27, 0xdb, 0x47, 0x61, 0x66, 0x0a, 0x2a, 0x9a, 0xc0, 0x72, 0x51, 0xb1, 0x20, + 0x46, 0x4b, 0x74, 0x65, 0xa1, 0xc4, 0x97, 0xa7, 0xb9, 0x77, 0x66, 0x0b, 0x08, 0xad, 0xc3, 0x37, + 0x16, 0x57, 0xf0, 0xf7, 0x38, 0x87, 0x3a, 0x2f, 0x5e, 0xcf, 0x3d, 0xe6, 0x2f, 0xf0, 0x52, 0xcb, + 0xae, 0x24, 0x97, 0x9a, 0xcc, 0x4d, 0xb7, 0xec, 0x4a, 0xc6, 0x93, 0x91, 0xa2, 0xad, 0xf4, 0xf2, + 0x33, 0xd7, 0x80, 0x72, 0x5d, 0x79, 0x11, 0x3d, 0x2f, 0xb9, 0x0f, 0x5f, 0x7e, 0x00, 0x7c, 0x14, + 0x71, 0x5c, 0x8d, 0x5a, 0x18, 0x00, 0xdf, 0x5c, 0x80, 0x41, 0x9e, 0x72, 0xfc, 0xa7, 0x2c, 0x24, + 0xf2, 0xfd, 0xef, 0x8e, 0x0b, 0xf9, 0x73, 0xdb, 0x85, 0xf4, 0xa4, 0xd5, 0xc8, 0x3d, 0xc4, 0xa1, + 0x5f, 0xe0, 0x1e, 0xde, 0x0f, 0x1b, 0x91, 0x68, 0xeb, 0x36, 0x76, 0x1c, 0x31, 0xf4, 0x0e, 0xe3, + 0xf8, 0xd9, 0xd4, 0xb7, 0x27, 0xc8, 0x31, 0x93, 0x7b, 0x59, 0xa7, 0x2b, 0xb5, 0xa8, 0x46, 0xf2, + 0xd8, 0x12, 0xf9, 0x51, 0x5e, 0xcc, 0x44, 0x54, 0xa8, 0x78, 0x6d, 0x96, 0x5d, 0x05, 0xa6, 0xc8, + 0xdc, 0x17, 0xf4, 0x05, 0xa0, 0xf1, 0x60, 0x45, 0x62, 0x21, 0x1a, 0x17, 0x6e, 0xa9, 0xaf, 0xd7, + 0xc2, 0xe4, 0x5e, 0xaa, 0xf4, 0xa7, 0x38, 0x13, 0xe5, 0xbd, 0xeb, 0xf3, 0x37, 0x62, 0xdb, 0x7c, + 0xb3, 0x82, 0xfc, 0x2a, 0xfe, 0xb7, 0x59, 0x68, 0xb6, 0x4d, 0xec, 0xb5, 0x12, 0xeb, 0xf5, 0xe8, + 0x4d, 0x7f, 0xce, 0x2d, 0xba, 0xc2, 0x56, 0x97, 0x1c, 0x38, 0x4e, 0x66, 0x2e, 0xee, 0x44, 0xe9, + 0x68, 0x81, 0xdf, 0x5b, 0x28, 0x0f, 0xd4, 0x84, 0x84, 0xf0, 0x7d, 0x20, 0x0d, 0x37, 0x0b, 0x73, + 0x96, 0x3f, 0xac, 0x2b, 0xc5, 0x12, 0xe9, 0x41, 0xd3, 0xed, 0x80, 0xbe, 0x11, 0x74, 0x8f, 0x64, + 0x02, 0xd2, 0x42, 0x7c, 0xd6, 0xe5, 0x88, 0xf6, 0x60, 0xba, 0xf4, 0x1e, 0x14, 0xbc, 0x2d, 0xe1, + 0xd8, 0x5a, 0x5d, 0xa9, 0x43, 0xaf, 0x49, 0x19, 0xbe, 0x9d, 0xde, 0xb3, 0x74, 0xeb, 0x70, 0xa4, + 0xfd, 0x81, 0x45, 0x15, 0x5f, 0xcd, 0x42, 0x73, 0x3c, 0xc7, 0xbc, 0x3b, 0x80, 0xdf, 0x6e, 0x4d, + 0x3d, 0xca, 0x79, 0xf1, 0xa1, 0x0c, 0x99, 0x63, 0x50, 0x72, 0xf8, 0x8c, 0xed, 0xb4, 0x00, 0xf6, + 0x7f, 0xa1, 0x2b, 0x6b, 0xd1, 0x6a, 0x29, 0xd3, 0xd6, 0xc8, 0xf3, 0x33, 0xef, 0x77, 0x3a, 0xb9, + 0xeb, 0x29, 0x2c, 0x77, 0xad, 0x0f, 0x86, 0x1a, 0xcc, 0x8b, 0x60, 0x32, 0xee, 0x14, 0x78, 0xd7, + 0x50, 0xf2, 0x45, 0xc0, 0x4c, 0xe0, 0x74, 0xaf, 0xab, 0x6c, 0x72, 0x41, 0x73, 0x28, 0x51, 0x23, + 0x92, 0xab, 0xd7, 0x7f, 0x32, 0xb1, 0xa5, 0x95, 0x3e, 0x5a, 0xf9, 0xba, 0x90, 0x9b, 0x2f, 0x14, + 0xa4, 0xc6, 0x39, 0xe8, 0x69, 0xef, 0x49, 0xe5, 0xa9, 0x10, 0xd1, 0xc7, 0x86, 0x12, 0xa1, 0x63, + 0xb1, 0x21, 0x60, 0x61, 0x14, 0xff, 0x92, 0x3e, 0x8f, 0xc6, 0x11, 0x74, 0x49, 0x6e, 0xd7, 0x43, + 0xba, 0x72, 0x9f, 0x44, 0xcb, 0xe4, 0xc9, 0xf6, 0x77, 0x14, 0x83, 0xf1, 0x87, 0x82, 0x4a, 0xeb, + 0xc5, 0xd7, 0xd0, 0xb8, 0xf0, 0x7b, 0xc1, 0x0f, 0x6a, 0x3f, 0xa0, 0x2e, 0x37, 0x58, 0xbf, 0x4d, + 0xcb, 0xe4, 0x12, 0xd2, 0xbd, 0x7f, 0x5b, 0xf2, 0xe8, 0x26, 0xc2, 0xd9, 0x9d, 0xdd, 0x9b, 0x3c, + 0x1e, 0x5b, 0x40, 0x75, 0x72, 0x9d, 0xf0, 0xbb, 0x44, 0xa5, 0x7d, 0x78, 0x59, 0x0a, 0x8f, 0xf5, + 0x8b, 0x48, 0xb4, 0x25, 0xb2, 0x12, 0x12, 0x3d, 0x92, 0x6c, 0x17, 0x88, 0xdd, 0xe8, 0xaa, 0x8a, + 0xff, 0x7d, 0x16, 0x9a, 0xc2, 0xba, 0xdf, 0x1d, 0x70, 0xff, 0x8a, 0x4d, 0x5c, 0xe0, 0x0d, 0x29, + 0x9e, 0x22, 0x37, 0x42, 0x4a, 0xf1, 0xb0, 0x4e, 0xbc, 0xea, 0x9c, 0x5b, 0x20, 0xcf, 0xb3, 0x6d, + 0xda, 0x98, 0xd0, 0x3b, 0x95, 0x4e, 0x1d, 0x15, 0x90, 0x48, 0x86, 0xe3, 0x01, 0xfc, 0xfb, 0x41, + 0x0f, 0x4d, 0xb5, 0xe5, 0x31, 0xb2, 0xfc, 0x48, 0xa6, 0xe3, 0x36, 0x6f, 0x07, 0xc5, 0x81, 0xec, + 0xd0, 0x93, 0x59, 0x68, 0x9a, 0x6d, 0xa0, 0xbb, 0xe3, 0xe0, 0x6b, 0x6c, 0x08, 0xaf, 0xd0, 0xeb, + 0xe0, 0xb1, 0x58, 0x74, 0xac, 0x87, 0xef, 0xd3, 0x95, 0x5f, 0xa2, 0xb7, 0x24, 0xaf, 0xad, 0x90, + 0x17, 0xa6, 0xdb, 0xc6, 0xeb, 0x03, 0x86, 0x68, 0x16, 0xbc, 0xf9, 0x24, 0x96, 0xdc, 0x9b, 0x68, + 0x22, 0x75, 0xdc, 0xe2, 0xa4, 0x94, 0x18, 0x11, 0xd8, 0x2a, 0xe4, 0xf9, 0x89, 0xde, 0x98, 0x71, + 0x78, 0x27, 0x4c, 0x69, 0xf4, 0xed, 0x4f, 0x7e, 0x7d, 0x32, 0x3e, 0xf0, 0x07, 0x66, 0x0a, 0x4c, + 0x4c, 0x01, 0x6c, 0x7d, 0xc4, 0x9f, 0xa1, 0xec, 0x8a, 0xda, 0x35, 0xf8, 0x24, 0x26, 0xc1, 0x76, + 0x9a, 0xbf, 0xe5, 0x29, 0xf0, 0x0d, 0x15, 0xb5, 0x6b, 0xc8, 0xc7, 0x9b, 0xa5, 0xe2, 0x22, 0x94, + 0xdd, 0xa4, 0x35, 0xe1, 0xbd, 0x9f, 0x04, 0xd1, 0xc1, 0xcd, 0xdf, 0x14, 0xab, 0x1a, 0xdb, 0x5a, + 0x8d, 0xbe, 0x03, 0xb4, 0x7d, 0x93, 0xd6, 0x24, 0x2e, 0x45, 0xd9, 0xcb, 0x6b, 0xd7, 0xe0, 0xad, + 0x9f, 0x04, 0xfa, 0x42, 0xf3, 0xb7, 0x7c, 0x3f, 0xb4, 0x5f, 0x4e, 0x07, 0xe7, 0x57, 0xb8, 0x44, + 0x35, 0x9b, 0x14, 0x0f, 0x4e, 0x40, 0xf9, 0x74, 0x7b, 0xc5, 0x37, 0x50, 0xbe, 0x89, 0x5f, 0x6b, + 0xac, 0xe0, 0xd5, 0x2f, 0xe8, 0xca, 0xb3, 0x12, 0x2b, 0x94, 0x17, 0xf3, 0xdc, 0x66, 0x69, 0x51, + 0xe2, 0x48, 0x77, 0x3c, 0xf6, 0x29, 0x33, 0x2b, 0x80, 0xdd, 0xe6, 0x9b, 0xa8, 0xac, 0xab, 0xf8, + 0x3e, 0x8c, 0x8d, 0x37, 0x36, 0xcb, 0x32, 0x6b, 0x62, 0x85, 0xf2, 0x8b, 0x84, 0x35, 0x21, 0xd6, + 0xf7, 0x24, 0x81, 0x37, 0xb6, 0x14, 0x25, 0x43, 0xea, 0x1d, 0xd5, 0x95, 0x15, 0xf0, 0xf7, 0x82, + 0x8a, 0xb5, 0x2b, 0x17, 0x57, 0x57, 0x56, 0x94, 0x94, 0x1a, 0x5d, 0xfd, 0x64, 0xbf, 0xd9, 0x50, + 0xe2, 0x52, 0x94, 0x87, 0x89, 0x6a, 0xca, 0x49, 0x60, 0x90, 0x23, 0x45, 0xf2, 0x34, 0x02, 0x6b, + 0xb1, 0xdd, 0xf4, 0x7c, 0xaa, 0x2b, 0x55, 0x52, 0x29, 0x3e, 0x63, 0xe1, 0x01, 0xce, 0xcd, 0x84, + 0xe1, 0x81, 0xa9, 0x3c, 0x1e, 0x88, 0x0f, 0x0c, 0x56, 0xd7, 0x5a, 0x2f, 0xc8, 0x32, 0x9e, 0xc0, + 0xcb, 0xa5, 0x86, 0x2d, 0x0f, 0xf3, 0x04, 0x5e, 0xa1, 0x83, 0xd3, 0xa8, 0xf0, 0xe2, 0x34, 0x1e, + 0x43, 0xd9, 0x6b, 0x6b, 0x2b, 0x88, 0x53, 0x09, 0x9e, 0xde, 0xfc, 0x2d, 0xcf, 0x70, 0xf4, 0x5d, + 0x5b, 0x5b, 0x51, 0x54, 0x5d, 0xa9, 0x9a, 0x75, 0xe2, 0x9b, 0xcc, 0x37, 0x66, 0x9c, 0x25, 0x58, + 0xa7, 0xbe, 0x31, 0x4f, 0xf1, 0x1d, 0x21, 0xce, 0x88, 0x65, 0x0f, 0x79, 0xf1, 0x92, 0x71, 0xc1, + 0xbc, 0x2e, 0x89, 0x0b, 0x67, 0x8d, 0xde, 0x73, 0x26, 0x7c, 0xec, 0x38, 0x6a, 0x5c, 0x38, 0x9c, + 0xec, 0x6b, 0x67, 0xfe, 0x33, 0xab, 0x50, 0x7e, 0x83, 0xb6, 0xd1, 0x6f, 0x6e, 0x13, 0x71, 0x30, + 0x79, 0x5c, 0x57, 0x96, 0x48, 0xac, 0x50, 0x9e, 0x5f, 0xa1, 0xb0, 0xe4, 0xf2, 0xa9, 0x33, 0xdf, + 0x19, 0xc7, 0xb7, 0x57, 0x57, 0x1a, 0x5d, 0x17, 0x70, 0x20, 0x16, 0xeb, 0x36, 0xb0, 0xf6, 0xe2, + 0xb7, 0x16, 0xa3, 0x0a, 0x4e, 0x25, 0x9f, 0x0a, 0xba, 0xb2, 0x5f, 0x60, 0x9c, 0x6a, 0x87, 0xc0, + 0x33, 0xa9, 0x24, 0x86, 0x8a, 0x9d, 0xd1, 0x2c, 0x82, 0x64, 0xca, 0xf1, 0x81, 0x3e, 0xcb, 0xd0, + 0xbe, 0x08, 0x6c, 0x38, 0xe3, 0x03, 0x7d, 0xa5, 0x45, 0x60, 0x08, 0x6f, 0x16, 0x12, 0xef, 0x57, + 0xb3, 0x90, 0x63, 0x44, 0x49, 0x7f, 0xe0, 0x2d, 0x68, 0x73, 0xae, 0x72, 0x27, 0xab, 0x2c, 0x61, + 0x3c, 0xea, 0x01, 0x01, 0x4d, 0xa6, 0x9f, 0x49, 0xe2, 0x56, 0xa2, 0xf4, 0x8c, 0x0d, 0x49, 0x8b, + 0x8f, 0xad, 0xa9, 0x1c, 0xdd, 0x28, 0xa4, 0xf3, 0x76, 0xef, 0xcc, 0xc0, 0x2c, 0x71, 0xa0, 0x1f, + 0x90, 0xcb, 0x95, 0xe8, 0xa6, 0x8a, 0xda, 0x35, 0x57, 0xa2, 0x9b, 0x56, 0x56, 0xad, 0xbc, 0x12, + 0xdd, 0xb4, 0xbc, 0x76, 0x4d, 0xb2, 0xaf, 0x9d, 0xdc, 0x79, 0xc7, 0x80, 0x62, 0x87, 0x80, 0xf2, + 0x3f, 0x0e, 0x06, 0xc0, 0xab, 0x74, 0x82, 0x37, 0xfe, 0x7d, 0x83, 0xd4, 0x83, 0x07, 0x25, 0x6b, + 0x2e, 0x2f, 0x67, 0xd2, 0x36, 0xc8, 0x91, 0x6f, 0x61, 0x0a, 0x1c, 0xb2, 0xcb, 0x6c, 0x67, 0xde, + 0xdf, 0xab, 0x43, 0x1d, 0xb8, 0x4b, 0xe5, 0x02, 0x5f, 0xf3, 0xc2, 0xf0, 0x7b, 0x5a, 0xe0, 0xe3, + 0xf7, 0xb4, 0xc0, 0xc2, 0x27, 0x8a, 0x16, 0x17, 0x3d, 0xfe, 0xf4, 0x92, 0x25, 0x4b, 0x9e, 0x28, + 0x51, 0xd9, 0x90, 0x62, 0xab, 0x80, 0x72, 0x31, 0x43, 0x8e, 0x9d, 0x56, 0x32, 0xa6, 0xad, 0xc6, + 0xfb, 0x03, 0x8d, 0xe5, 0x97, 0x1d, 0x10, 0xce, 0x5a, 0x15, 0x55, 0x57, 0xda, 0x81, 0x69, 0x41, + 0x7c, 0xb0, 0xb5, 0x42, 0x21, 0x0b, 0x1f, 0xd6, 0x71, 0x60, 0xc3, 0x5d, 0x8c, 0xf7, 0x2f, 0x51, + 0x61, 0x40, 0x71, 0x2b, 0xb1, 0xc8, 0xa5, 0x59, 0xb5, 0x71, 0x18, 0x34, 0x8f, 0x74, 0x8f, 0x35, + 0x5c, 0x1b, 0xc8, 0x7b, 0x6d, 0xeb, 0xc6, 0xb0, 0x1e, 0xd5, 0xbd, 0xf2, 0x79, 0xbb, 0xb9, 0x80, + 0x44, 0x1c, 0xe6, 0xe7, 0xbb, 0x53, 0x8a, 0x9d, 0xa1, 0x59, 0xf9, 0x65, 0xe2, 0x75, 0xe3, 0x7a, + 0xbd, 0x9c, 0x66, 0x86, 0xfd, 0x17, 0x13, 0xbb, 0x4e, 0x18, 0xed, 0x9d, 0xc9, 0xaf, 0xfa, 0x13, + 0x6d, 0xfb, 0x8c, 0xe3, 0xfb, 0x46, 0xb6, 0x9c, 0x4e, 0x9e, 0x1b, 0x4c, 0x0e, 0x1e, 0x01, 0xd5, + 0x58, 0xf1, 0xbf, 0x10, 0xd0, 0xf4, 0x15, 0xfe, 0x70, 0xc4, 0x66, 0x50, 0xa9, 0x6a, 0xbf, 0x16, + 0x43, 0x68, 0xa2, 0x49, 0x86, 0xae, 0xa5, 0xf6, 0x9c, 0x82, 0xa5, 0x54, 0xb6, 0x55, 0xc8, 0xcf, + 0x02, 0xd9, 0xba, 0x91, 0x6c, 0x09, 0x33, 0x27, 0x7d, 0x2f, 0x18, 0x8e, 0xf0, 0x16, 0x84, 0x84, + 0xce, 0x35, 0x5a, 0x4f, 0x8f, 0x6c, 0x39, 0x4d, 0x49, 0x5d, 0xdb, 0x50, 0x34, 0x2e, 0xa8, 0xe7, + 0x82, 0xe4, 0x42, 0x78, 0xb1, 0x79, 0xab, 0x50, 0x60, 0x0b, 0x8a, 0xff, 0x21, 0x1b, 0xcd, 0xf0, + 0xe8, 0x72, 0xe7, 0xeb, 0x97, 0xed, 0x94, 0x6e, 0x5a, 0xfd, 0x32, 0xe4, 0x7f, 0xc0, 0xf4, 0x8e, + 0xc8, 0xab, 0x95, 0x89, 0xb0, 0x16, 0x94, 0xcb, 0x51, 0x21, 0x9d, 0xda, 0x77, 0x6e, 0x66, 0xb5, + 0x2f, 0xb1, 0xc3, 0x75, 0x2a, 0x7d, 0xe7, 0xf1, 0x4a, 0x5f, 0x70, 0x44, 0x1c, 0x63, 0x98, 0x78, + 0xef, 0xb3, 0x90, 0xe7, 0xa6, 0x3b, 0xbf, 0x51, 0xb4, 0xc1, 0xff, 0x1b, 0x39, 0xdd, 0x5a, 0x92, + 0xc3, 0xc4, 0x02, 0xd1, 0xe7, 0x79, 0x17, 0x4a, 0xc1, 0x92, 0x3a, 0x78, 0xbb, 0x50, 0xe6, 0x84, + 0xb2, 0x0a, 0x1b, 0x78, 0x0f, 0xca, 0x17, 0xd8, 0x9b, 0x07, 0x67, 0xfd, 0xc8, 0xa8, 0x01, 0x4a, + 0x61, 0x08, 0xfa, 0xac, 0xdd, 0x96, 0x54, 0x86, 0xbb, 0x04, 0x4e, 0xd2, 0x02, 0x04, 0x06, 0xf6, + 0xd2, 0xb0, 0x24, 0x2d, 0xf5, 0xcc, 0x10, 0x69, 0x41, 0x7c, 0xe8, 0xa8, 0xd1, 0xb5, 0x39, 0xb1, + 0xff, 0x3c, 0x50, 0xc9, 0xa9, 0xfe, 0x13, 0x24, 0xfe, 0x16, 0xb6, 0x83, 0xb3, 0x12, 0xcd, 0xe0, + 0xe3, 0x24, 0x78, 0x08, 0xdb, 0xe0, 0x1d, 0x05, 0x77, 0x77, 0xe8, 0xc6, 0x9f, 0x15, 0x34, 0x2a, + 0xe1, 0x84, 0x37, 0x44, 0x38, 0xe9, 0x7d, 0x44, 0xf2, 0x7c, 0x62, 0x42, 0x82, 0x53, 0xd9, 0xc0, + 0x59, 0xc4, 0x07, 0x76, 0x5a, 0x46, 0x0c, 0x70, 0x81, 0xb7, 0xe7, 0xa1, 0x99, 0x5e, 0xfd, 0x7f, + 0x5a, 0x37, 0x78, 0x48, 0x40, 0x05, 0xa4, 0xbf, 0xe5, 0xd4, 0x90, 0x87, 0x07, 0x7e, 0xce, 0x39, + 0xb0, 0xf7, 0x6e, 0xd1, 0xf9, 0x1c, 0x1e, 0x0e, 0xaa, 0xae, 0xac, 0x92, 0x5c, 0x43, 0xcb, 0xcf, + 0xf2, 0x86, 0x24, 0x36, 0x73, 0x7f, 0xd2, 0x14, 0x7f, 0xeb, 0xd6, 0xf8, 0xc5, 0x9d, 0xe0, 0x49, + 0x09, 0x12, 0x14, 0x38, 0x50, 0xd5, 0x35, 0x9c, 0xb8, 0xd9, 0x03, 0x01, 0xe5, 0x8f, 0xd1, 0xee, + 0xe4, 0x66, 0xa1, 0xa0, 0xd9, 0xbf, 0x44, 0x33, 0x3c, 0xf7, 0xc0, 0xc3, 0x10, 0x60, 0xb1, 0xdd, + 0x10, 0xe0, 0x3e, 0x4f, 0x6b, 0x1c, 0xcc, 0x33, 0x72, 0x76, 0x00, 0xbf, 0xd4, 0x95, 0x37, 0xd1, + 0x2f, 0xa4, 0x34, 0xd0, 0x2a, 0x3f, 0x0a, 0x38, 0xce, 0x01, 0xee, 0xd7, 0x81, 0xec, 0x0e, 0x4c, + 0x45, 0x93, 0x31, 0xfa, 0xb4, 0xb0, 0xdc, 0x72, 0x2f, 0x77, 0xfb, 0x87, 0x47, 0x0b, 0x20, 0x0d, + 0xa8, 0xea, 0xf6, 0xa7, 0x5e, 0x7d, 0xc1, 0xe1, 0x74, 0x7f, 0xbd, 0x48, 0xf6, 0x87, 0xc8, 0xb3, + 0xfa, 0xbc, 0xdb, 0xf5, 0xfe, 0x7a, 0xde, 0x8d, 0x4a, 0x0f, 0xcf, 0xfb, 0xf9, 0xa3, 0x78, 0xde, + 0xc3, 0x20, 0x3f, 0x8c, 0xe3, 0x7d, 0x44, 0x0b, 0x47, 0x6e, 0x99, 0xe3, 0xfd, 0x4d, 0xcf, 0x95, + 0x7a, 0xcf, 0xb9, 0xfe, 0x26, 0x39, 0xd7, 0xff, 0x6b, 0x8b, 0x29, 0x86, 0x60, 0xcd, 0x67, 0x6e, + 0xa5, 0xcf, 0x79, 0x79, 0xe8, 0xa5, 0xcc, 0x3e, 0xe7, 0x79, 0x30, 0xc8, 0x58, 0x5c, 0xce, 0x9f, + 0x45, 0x79, 0xc1, 0x77, 0xdf, 0x0d, 0x6b, 0x11, 0xec, 0x80, 0x3f, 0x09, 0x24, 0xa9, 0xa4, 0x48, + 0x9e, 0x42, 0xc8, 0xc8, 0x4d, 0x5d, 0xc9, 0x53, 0x83, 0x23, 0xdb, 0xbb, 0xae, 0x95, 0xe7, 0x48, + 0x59, 0x0b, 0xfe, 0x44, 0x25, 0xf5, 0xe2, 0x73, 0x28, 0xb7, 0xd1, 0xdf, 0xe4, 0x8f, 0x60, 0xc7, + 0x7b, 0x2c, 0xca, 0x9a, 0x23, 0x41, 0x09, 0xb3, 0x41, 0xc4, 0xb1, 0xdb, 0x12, 0x7b, 0xbf, 0xc1, + 0xbd, 0x73, 0xa5, 0xec, 0xc2, 0xd4, 0x38, 0x15, 0x9a, 0xd8, 0xc9, 0xab, 0x82, 0xdb, 0x4f, 0x5e, + 0x89, 0x55, 0x9c, 0x8f, 0xf6, 0x54, 0xbc, 0x9e, 0x12, 0x5d, 0x79, 0x90, 0xf3, 0xd1, 0x9e, 0x46, + 0x12, 0x62, 0xa4, 0x2e, 0x6d, 0x4f, 0x0c, 0x92, 0x40, 0x31, 0x14, 0xdf, 0x58, 0x3e, 0xd9, 0xb7, + 0x2b, 0xea, 0xb1, 0xcf, 0xed, 0x18, 0x38, 0xcd, 0x52, 0x8e, 0xdc, 0x14, 0xe7, 0x3f, 0x9b, 0x45, + 0xff, 0xf4, 0xb1, 0x5b, 0xf4, 0xb7, 0x0b, 0x28, 0xdb, 0xd7, 0xd8, 0x88, 0xa3, 0x12, 0xe7, 0x97, + 0x7f, 0xa0, 0x2b, 0x11, 0xc9, 0xfc, 0x2d, 0x37, 0x91, 0x70, 0x4f, 0x84, 0x72, 0x6d, 0x8f, 0x9a, + 0xaf, 0x8b, 0xdd, 0x9e, 0xb7, 0xd4, 0xe8, 0x68, 0x4d, 0xec, 0xfc, 0x3a, 0xf5, 0xd9, 0x57, 0xa9, + 0xe1, 0x7e, 0x47, 0xe0, 0xa2, 0x67, 0x8b, 0xf0, 0x3a, 0xd9, 0x00, 0x23, 0x87, 0x0e, 0x13, 0x08, + 0x87, 0xbb, 0xe6, 0x34, 0x0d, 0x36, 0xe7, 0x2c, 0x3b, 0x26, 0xe8, 0xca, 0x21, 0x01, 0xf5, 0x08, + 0x92, 0xe3, 0xf5, 0x97, 0xb7, 0x0b, 0x46, 0xdb, 0x17, 0x26, 0x58, 0x1d, 0x3a, 0x16, 0x1f, 0x3c, + 0xcf, 0x1f, 0x32, 0xa1, 0x27, 0xa8, 0x97, 0x0d, 0xa1, 0x3c, 0x70, 0xb3, 0xf8, 0x40, 0x4c, 0x09, + 0x34, 0x18, 0xad, 0xe7, 0x92, 0xe7, 0x06, 0xad, 0x60, 0x47, 0x47, 0xba, 0x47, 0x8e, 0x5d, 0xe4, + 0x9b, 0x19, 0xd1, 0x21, 0x10, 0x37, 0x98, 0x6d, 0xda, 0x0e, 0x1a, 0x97, 0x86, 0x93, 0x7b, 0x4f, + 0x90, 0x28, 0x6a, 0x7b, 0x4e, 0x27, 0xfa, 0x8e, 0xf3, 0x93, 0x16, 0xff, 0x53, 0x2e, 0x9a, 0x62, + 0x5b, 0xdc, 0x4f, 0x8b, 0x3a, 0xff, 0x63, 0x7a, 0xea, 0xfc, 0x49, 0x2f, 0xea, 0xfc, 0x4e, 0x21, + 0xcb, 0xa3, 0x69, 0xc9, 0xf2, 0x5b, 0x25, 0x17, 0xf8, 0xc1, 0x89, 0x72, 0xe2, 0x5c, 0xe3, 0x84, + 0x4e, 0x2a, 0x31, 0xba, 0x0e, 0xf2, 0x7b, 0x7f, 0x36, 0xe7, 0x50, 0x2e, 0xb6, 0x0a, 0x08, 0xd5, + 0xfb, 0x02, 0x10, 0x95, 0xab, 0x81, 0x48, 0xc0, 0xf0, 0x13, 0xcf, 0x15, 0xcb, 0xab, 0xf9, 0xf1, + 0xad, 0xad, 0x80, 0x14, 0x6c, 0x5b, 0x86, 0x8d, 0xe3, 0x47, 0x00, 0x43, 0x2c, 0xa0, 0x31, 0x3f, + 0x8e, 0xc2, 0xde, 0x05, 0x82, 0x0d, 0x9a, 0xe5, 0xd0, 0xdd, 0xde, 0x69, 0xb4, 0x6e, 0x4a, 0x9d, + 0x19, 0x80, 0xb6, 0x25, 0x2a, 0x37, 0x83, 0xcb, 0xf6, 0x3d, 0xeb, 0x07, 0xb2, 0x7d, 0x17, 0x0f, + 0x08, 0x68, 0xbc, 0xaf, 0x25, 0x12, 0xac, 0xab, 0xf7, 0x35, 0x6a, 0xe4, 0x9a, 0x7d, 0xac, 0x2b, + 0x1f, 0x48, 0x56, 0x29, 0x4d, 0x18, 0x44, 0xbc, 0x2b, 0xb1, 0x8a, 0xc5, 0x18, 0xba, 0x98, 0x88, + 0x9e, 0x8a, 0x0f, 0x0d, 0x24, 0x87, 0xbe, 0x28, 0x2d, 0x32, 0x7a, 0x4f, 0x9b, 0x5c, 0x83, 0xab, + 0xc6, 0x5c, 0x49, 0x7b, 0xa7, 0xc9, 0x5c, 0x0c, 0xec, 0xa4, 0x8a, 0x1f, 0x58, 0x14, 0x19, 0xd1, + 0xd5, 0x43, 0xb5, 0xa6, 0x2d, 0x3e, 0x2e, 0xa0, 0xc9, 0x76, 0xf8, 0x14, 0x5f, 0x44, 0xb9, 0xcd, + 0x5a, 0xa8, 0x89, 0x9a, 0x14, 0x94, 0x64, 0x06, 0xe7, 0x45, 0xb5, 0x66, 0x5b, 0x0c, 0x77, 0x2a, + 0xf4, 0x9b, 0xfd, 0x1a, 0x42, 0x56, 0xa1, 0x07, 0x30, 0x2e, 0xb4, 0x03, 0x63, 0xba, 0xb8, 0xda, + 0x7c, 0x4e, 0xcf, 0x37, 0x51, 0x81, 0x93, 0xb9, 0x15, 0x97, 0x5b, 0xeb, 0xcc, 0x18, 0x9e, 0x1b, + 0xbf, 0x5a, 0xd0, 0x54, 0x9e, 0xc8, 0x13, 0x0d, 0x64, 0xbd, 0xc5, 0xbb, 0xc6, 0xa1, 0xfb, 0x4c, + 0x18, 0xc7, 0xf6, 0xe7, 0xd5, 0x9c, 0x6c, 0x94, 0x98, 0xad, 0xba, 0xcc, 0x83, 0xe6, 0xa5, 0x77, + 0x2d, 0xa2, 0x2e, 0x6a, 0xdc, 0x83, 0xf8, 0x7d, 0xe5, 0x61, 0x8c, 0x55, 0xcb, 0xbe, 0x79, 0xac, + 0xda, 0x0a, 0xbb, 0x59, 0x5f, 0x0e, 0xb5, 0x4f, 0x2f, 0xb2, 0x9b, 0xf5, 0x4d, 0x85, 0x2b, 0x55, + 0x63, 0x15, 0x31, 0x0e, 0x98, 0x37, 0xe8, 0x5b, 0xe6, 0x50, 0xcf, 0x02, 0x4f, 0x89, 0x03, 0xbd, + 0xd8, 0xd5, 0xb3, 0x53, 0x40, 0x83, 0xc2, 0x14, 0xb3, 0x0e, 0x4d, 0xec, 0x66, 0x8b, 0xd4, 0x06, + 0xf6, 0xf1, 0x7d, 0x5d, 0x59, 0xcf, 0x28, 0xed, 0xb7, 0x79, 0xe5, 0xd3, 0x75, 0x53, 0xda, 0xd5, + 0xa3, 0x90, 0xda, 0x1e, 0x54, 0xf2, 0xb8, 0xef, 0x41, 0x25, 0xe7, 0x8f, 0x9d, 0x4a, 0x6e, 0x7b, + 0x94, 0x52, 0xc9, 0x9c, 0xa9, 0xcb, 0xf8, 0x9b, 0x64, 0xea, 0xf2, 0x07, 0x41, 0x57, 0xce, 0x08, + 0xe8, 0x2b, 0x41, 0x4a, 0x0f, 0xe2, 0x38, 0x68, 0x94, 0x37, 0x31, 0x44, 0x66, 0xbc, 0xc5, 0x24, + 0xd1, 0xdf, 0x66, 0xa3, 0xd9, 0x5e, 0xab, 0xbd, 0xdb, 0xcc, 0x2d, 0xb2, 0xbd, 0x9c, 0xc8, 0xc9, + 0xd7, 0x60, 0x73, 0x1b, 0x37, 0x85, 0xc4, 0x6f, 0x38, 0xa1, 0x90, 0x9a, 0x6e, 0xdc, 0x6f, 0x18, + 0x5f, 0x41, 0x17, 0xa9, 0x61, 0x47, 0x82, 0x4e, 0x6d, 0x03, 0x51, 0x8a, 0x65, 0x38, 0x00, 0xaa, + 0x72, 0xf0, 0x00, 0x91, 0xcc, 0x64, 0x40, 0x7c, 0x1a, 0x9a, 0xc0, 0x7d, 0x3e, 0x67, 0x0d, 0x20, + 0xdc, 0xb8, 0x35, 0x40, 0xd6, 0x75, 0x5a, 0x03, 0x38, 0x6d, 0x49, 0xb2, 0x7f, 0x00, 0x5b, 0x92, + 0x9c, 0xeb, 0xb1, 0x25, 0xc9, 0xbd, 0x4e, 0x5b, 0x92, 0xbc, 0xeb, 0xb6, 0x25, 0x11, 0xbb, 0x2c, + 0xc4, 0x0a, 0x72, 0x35, 0xcc, 0x96, 0x51, 0xc4, 0xfa, 0xbe, 0x5b, 0xab, 0x7f, 0x75, 0xa8, 0x0d, + 0xdc, 0xfc, 0x79, 0xba, 0xc1, 0x38, 0xd3, 0x13, 0xbf, 0x68, 0xf2, 0x6c, 0x90, 0x66, 0x99, 0x20, + 0x5a, 0x4e, 0xa7, 0x5f, 0x5a, 0x44, 0xf1, 0x70, 0x69, 0x91, 0x89, 0x71, 0xab, 0x2a, 0x4b, 0x8b, + 0x1c, 0x62, 0x09, 0x8a, 0x65, 0x15, 0x94, 0x07, 0x5a, 0x6b, 0x22, 0xa1, 0x83, 0xd8, 0xb5, 0x66, + 0x91, 0x3c, 0xd7, 0xa1, 0xf7, 0x76, 0xee, 0x38, 0xe9, 0x28, 0xfe, 0xd6, 0xfe, 0x86, 0x81, 0x34, + 0xee, 0x0d, 0x5d, 0xf9, 0xb9, 0xfd, 0x0d, 0xbb, 0x79, 0xca, 0x6b, 0xc7, 0x9b, 0xc7, 0x91, 0x05, + 0xe8, 0x7b, 0x1b, 0x95, 0x4c, 0xb8, 0x21, 0xa3, 0x92, 0x89, 0x37, 0xdf, 0xa8, 0xa4, 0x06, 0xe5, + 0x35, 0xfb, 0xc2, 0xe1, 0x0f, 0x1a, 0x88, 0xb4, 0x0b, 0x07, 0x94, 0x22, 0x45, 0x72, 0x09, 0x0d, + 0xc8, 0x7d, 0xc8, 0x38, 0xb5, 0xd3, 0xe8, 0xd8, 0x07, 0x4f, 0x11, 0x4d, 0x65, 0x09, 0x21, 0x02, + 0x53, 0xa7, 0x3e, 0x37, 0xfa, 0xb7, 0xa9, 0xa4, 0x8b, 0xf8, 0x36, 0xc2, 0xa7, 0x4a, 0x44, 0x4e, + 0xd5, 0xba, 0xb2, 0x4c, 0x22, 0x07, 0x28, 0x3f, 0xe7, 0x38, 0x68, 0x90, 0x85, 0x73, 0x07, 0xf2, + 0x6c, 0x91, 0x15, 0x9f, 0x10, 0x6b, 0xdf, 0x81, 0xf6, 0x8e, 0xc7, 0x76, 0x55, 0x28, 0x2a, 0x1e, + 0x56, 0x54, 0x38, 0x1b, 0x98, 0x29, 0x54, 0x84, 0x5f, 0xcc, 0xd9, 0xc0, 0xcc, 0xf4, 0xb6, 0x81, + 0xe1, 0xac, 0x5e, 0x7e, 0xc5, 0x82, 0x67, 0x16, 0x60, 0x8c, 0xfd, 0x68, 0x06, 0x8c, 0x9d, 0x21, + 0xbf, 0x3f, 0xd9, 0x77, 0x9c, 0xd9, 0x9f, 0x5a, 0x71, 0x93, 0xd0, 0x97, 0x2f, 0xa3, 0xbc, 0x88, + 0xcf, 0x1f, 0x88, 0xd0, 0x38, 0x8f, 0x33, 0xdc, 0x4e, 0xf5, 0xfe, 0x40, 0x84, 0xbc, 0x2d, 0xd0, + 0x52, 0x9e, 0x68, 0x33, 0xbc, 0x23, 0xa5, 0xe2, 0xef, 0xd1, 0xa4, 0x96, 0x40, 0x5d, 0xfd, 0x7b, + 0x5a, 0x43, 0x4b, 0xa3, 0x6f, 0x5d, 0xa3, 0x86, 0xc5, 0x4d, 0x93, 0xca, 0x5f, 0xd7, 0x95, 0x35, + 0x92, 0xbd, 0x46, 0xae, 0xe4, 0xbd, 0x5e, 0x98, 0xf8, 0xd5, 0x88, 0x0e, 0x2d, 0x01, 0xe9, 0xac, + 0xd1, 0xb5, 0x39, 0x3e, 0xb0, 0x0b, 0x1a, 0x5d, 0x1d, 0xea, 0x78, 0x8c, 0x4a, 0x74, 0x3b, 0xf9, + 0x0a, 0xd5, 0x3e, 0xa8, 0x58, 0xc9, 0xd9, 0xa1, 0x4d, 0xb3, 0x80, 0xde, 0xb2, 0x43, 0xbb, 0xcf, + 0x66, 0x87, 0xb6, 0x61, 0x69, 0xb8, 0xc8, 0xac, 0x0a, 0xf8, 0x9a, 0x34, 0xce, 0xe2, 0xec, 0x55, + 0x94, 0xeb, 0x5b, 0xaf, 0x05, 0x22, 0x58, 0xac, 0x34, 0x09, 0x52, 0xd6, 0x42, 0x09, 0xa5, 0x71, + 0x14, 0xf3, 0x47, 0x11, 0x5b, 0xfb, 0x63, 0x46, 0xef, 0xe9, 0x64, 0xec, 0xd2, 0xd5, 0xa1, 0x8e, + 0x25, 0xe6, 0x02, 0xf1, 0x0f, 0x15, 0x7a, 0x88, 0xc5, 0x28, 0xdb, 0xdf, 0x50, 0x4f, 0x92, 0x60, + 0x15, 0xe8, 0xca, 0x24, 0xc9, 0xfc, 0x2d, 0xe7, 0x25, 0x7a, 0x63, 0x89, 0xb6, 0x4b, 0xaa, 0xf9, + 0x43, 0x7c, 0x18, 0xe5, 0x84, 0x7c, 0xf5, 0x1b, 0x48, 0x72, 0xab, 0xa9, 0xba, 0x32, 0x59, 0xc2, + 0x05, 0xd0, 0xea, 0xf0, 0x79, 0x15, 0xff, 0x12, 0xcb, 0xd0, 0x04, 0x80, 0x8a, 0x8a, 0x46, 0x5f, + 0x18, 0x22, 0xfa, 0x11, 0xa1, 0x17, 0x5f, 0x8e, 0x3b, 0x19, 0x87, 0x77, 0xaa, 0x7c, 0xa1, 0xf8, + 0x02, 0x1a, 0x4f, 0x5e, 0x98, 0x8d, 0x4f, 0xe1, 0xd8, 0x79, 0xe4, 0x39, 0xb3, 0x4a, 0xe5, 0x02, + 0xf8, 0x36, 0x7f, 0xf3, 0xc6, 0xa7, 0x4c, 0x4a, 0xff, 0x50, 0x54, 0xb5, 0x2a, 0xc5, 0x6a, 0x34, + 0x89, 0xa1, 0x17, 0xbc, 0xbd, 0xf7, 0x51, 0x6b, 0xd7, 0x22, 0xc9, 0x5e, 0x43, 0x5f, 0x93, 0xc4, + 0xd9, 0xa3, 0xc4, 0x96, 0xcf, 0x5e, 0x2f, 0x3e, 0x83, 0xc6, 0xaf, 0xdb, 0x50, 0x41, 0xb2, 0x02, + 0xcf, 0xc6, 0x5b, 0x3c, 0x47, 0x57, 0x0a, 0x25, 0xab, 0x54, 0x9e, 0xc0, 0x32, 0x5b, 0x99, 0xd8, + 0x88, 0x95, 0x8b, 0x11, 0x34, 0x81, 0xa7, 0x33, 0xe6, 0xa4, 0xf1, 0x2c, 0xe6, 0x2e, 0x04, 0x47, + 0x3a, 0xc0, 0xad, 0x80, 0x08, 0x60, 0x3c, 0xbd, 0x41, 0xaf, 0xc6, 0xb9, 0xd3, 0xa9, 0x53, 0x9f, + 0x13, 0x80, 0xe6, 0x1b, 0x88, 0xcb, 0xc0, 0x48, 0x0a, 0x7f, 0xf6, 0xfd, 0x96, 0xab, 0x2c, 0x2b, + 0x94, 0xe7, 0xd8, 0xac, 0x0d, 0x29, 0xbe, 0xa0, 0x96, 0x8c, 0xb4, 0x99, 0xf8, 0xbe, 0x79, 0xcf, + 0xc2, 0x1b, 0x58, 0x78, 0x36, 0x2c, 0x09, 0x22, 0x45, 0x72, 0x95, 0x03, 0xa3, 0x26, 0xda, 0xbf, + 0x30, 0xce, 0x5c, 0xac, 0xae, 0x2d, 0x65, 0xe6, 0x5d, 0x23, 0x7a, 0x9b, 0xd1, 0x7f, 0x11, 0x52, + 0x51, 0x90, 0xa9, 0x30, 0x39, 0x4d, 0x72, 0x23, 0x60, 0x73, 0x20, 0x95, 0x0c, 0x67, 0x92, 0x11, + 0xe0, 0x5e, 0xa2, 0x6a, 0xbe, 0x70, 0x30, 0x80, 0xe3, 0xb2, 0x51, 0x32, 0x82, 0xaf, 0x90, 0xe7, + 0xc7, 0x07, 0x76, 0x80, 0xdd, 0x1a, 0xb5, 0x8a, 0xde, 0x9e, 0x3c, 0xbd, 0x33, 0x3e, 0xd0, 0x07, + 0x66, 0x6c, 0xc6, 0xae, 0x23, 0xc6, 0xa7, 0x47, 0x55, 0x5b, 0x9f, 0xef, 0x13, 0x44, 0xe9, 0x05, + 0x54, 0xe0, 0x3c, 0x92, 0xeb, 0x0a, 0x47, 0x44, 0x6c, 0xe3, 0x79, 0x3a, 0x4d, 0x5e, 0xc8, 0x9b, + 0x45, 0x31, 0x22, 0x03, 0x30, 0x31, 0x4f, 0xfe, 0xc1, 0x76, 0x15, 0x1f, 0x15, 0xd0, 0x6c, 0x2b, + 0x4c, 0x41, 0x78, 0xa5, 0x16, 0xf1, 0x55, 0xfa, 0x70, 0xa2, 0x15, 0xcc, 0x50, 0x97, 0xa3, 0x7c, + 0x02, 0x4f, 0xd4, 0xb3, 0xee, 0x11, 0x13, 0x3a, 0x59, 0x21, 0x53, 0xb9, 0xba, 0x9c, 0x13, 0x58, + 0x13, 0xea, 0x37, 0x9e, 0x61, 0x1a, 0x79, 0x8e, 0x4d, 0x0d, 0xd0, 0xba, 0x05, 0xe4, 0x79, 0xb0, + 0xfa, 0xe2, 0x2b, 0xd9, 0x68, 0x8e, 0x67, 0xdf, 0xbb, 0xcd, 0x7f, 0x2b, 0x13, 0x8b, 0x61, 0x7e, + 0x95, 0x2d, 0x46, 0x91, 0xe7, 0x5e, 0xdc, 0x4e, 0x5e, 0xe3, 0x6d, 0x5d, 0x79, 0x03, 0xbd, 0x2e, + 0x65, 0x3a, 0x0a, 0xea, 0x52, 0xe0, 0xb9, 0xf6, 0x51, 0xf8, 0x8d, 0x7f, 0x29, 0x30, 0x7e, 0xc3, + 0x1c, 0x96, 0x57, 0x69, 0x34, 0x78, 0x06, 0x29, 0x6a, 0x60, 0xa2, 0x1c, 0x4e, 0x82, 0xd3, 0x20, + 0xae, 0x40, 0x93, 0xeb, 0xad, 0xeb, 0x50, 0xd3, 0xd2, 0x44, 0x8c, 0xc5, 0x31, 0xaa, 0x73, 0x54, + 0xc9, 0x53, 0x78, 0xb6, 0x28, 0xb1, 0xf7, 0x1b, 0xd5, 0xd1, 0xa0, 0x6c, 0xb1, 0xae, 0x94, 0x22, + 0x49, 0xe2, 0x57, 0x96, 0xf1, 0x68, 0x8a, 0x3f, 0xcd, 0x42, 0x73, 0x4c, 0x6e, 0x0c, 0x92, 0x89, + 0xdf, 0x7c, 0x09, 0x55, 0x59, 0x4c, 0xd0, 0x95, 0xf3, 0x02, 0x3a, 0x27, 0x48, 0x99, 0xe6, 0x91, + 0x3f, 0x49, 0x2b, 0x26, 0x80, 0x70, 0xbd, 0xb7, 0x47, 0x58, 0xf0, 0x7f, 0x64, 0xa3, 0xfb, 0xbd, + 0x57, 0xfd, 0xd3, 0x14, 0x17, 0xdc, 0xde, 0x30, 0x63, 0xc4, 0x37, 0x24, 0xe3, 0x89, 0xc8, 0xf3, + 0xf9, 0x2b, 0xed, 0x01, 0x3b, 0x99, 0x6f, 0x75, 0x57, 0x16, 0x9a, 0x65, 0x21, 0x8c, 0x8a, 0x90, + 0xd6, 0xa0, 0x05, 0x22, 0x7e, 0x5f, 0xa3, 0xaa, 0xfd, 0x5a, 0xfc, 0x42, 0x40, 0xe3, 0xc3, 0x5a, + 0x68, 0xa3, 0x16, 0x7a, 0x95, 0x3e, 0x78, 0xe5, 0x3b, 0x04, 0x5d, 0xf9, 0xbd, 0x64, 0x15, 0xcb, + 0xbf, 0x8e, 0x0f, 0xec, 0x48, 0xec, 0x20, 0x8c, 0x45, 0xb2, 0x67, 0x6b, 0x72, 0x70, 0x6b, 0x7c, + 0xf0, 0x7c, 0xb2, 0x67, 0xeb, 0x06, 0xed, 0x23, 0x13, 0xe4, 0xfa, 0x2f, 0xc6, 0x63, 0xbb, 0x36, + 0xb4, 0xac, 0xd3, 0x16, 0x62, 0x0a, 0xd3, 0x04, 0xe2, 0x03, 0xfd, 0xec, 0xb6, 0xb0, 0x16, 0x58, + 0xd4, 0xbf, 0xb0, 0x21, 0xe4, 0xdf, 0xa8, 0x85, 0x48, 0xba, 0x64, 0xf2, 0x0b, 0x7a, 0x24, 0x7a, + 0xdb, 0xab, 0x6b, 0x69, 0x42, 0x53, 0x76, 0xeb, 0xd8, 0x32, 0xa8, 0x7a, 0x25, 0xdd, 0xb7, 0xc8, + 0xf7, 0xf3, 0xbb, 0x64, 0x55, 0xb1, 0x08, 0x50, 0x6c, 0xa4, 0xe2, 0xab, 0x59, 0xa8, 0xd0, 0x7b, + 0x94, 0x3b, 0x5f, 0x97, 0xf8, 0xb6, 0xcd, 0x39, 0x69, 0x5e, 0x1a, 0xf0, 0xb7, 0xbe, 0xc9, 0xe3, + 0x41, 0x4b, 0x9c, 0x3b, 0x6d, 0x6c, 0xeb, 0x48, 0xf6, 0x6c, 0x4d, 0xf5, 0x6f, 0x8a, 0x5f, 0x3c, + 0x69, 0xf3, 0x55, 0x22, 0x11, 0xc8, 0xd2, 0x6e, 0x4f, 0xda, 0x5d, 0xce, 0x0c, 0x83, 0x7f, 0x3f, + 0xce, 0xe1, 0x52, 0x7c, 0xd7, 0x82, 0xa1, 0xfd, 0xf5, 0xc8, 0xba, 0x01, 0xfd, 0xc6, 0x1a, 0x34, + 0xb1, 0xbe, 0xd1, 0xaf, 0x05, 0x22, 0xe0, 0xeb, 0x4a, 0x04, 0x6a, 0x8f, 0x99, 0x7c, 0xa1, 0xad, + 0x42, 0x9e, 0x01, 0x1f, 0x6c, 0xd2, 0xde, 0xd8, 0xe7, 0xd5, 0xe8, 0xee, 0x34, 0xfa, 0xf6, 0x5b, + 0x63, 0xda, 0x5a, 0x8b, 0x6b, 0xd1, 0x24, 0x58, 0xa4, 0xd2, 0xd0, 0x10, 0xd2, 0xc2, 0x61, 0xa2, + 0xa4, 0x58, 0x62, 0x1e, 0xbf, 0xbd, 0x86, 0x29, 0x51, 0x20, 0x6a, 0x3f, 0x66, 0xad, 0x58, 0xe6, + 0xf4, 0x02, 0xd5, 0xde, 0x58, 0x5c, 0x8e, 0x50, 0xbd, 0xaf, 0x42, 0x0b, 0x45, 0x4c, 0x2a, 0x83, + 0xa8, 0x2a, 0x1e, 0x35, 0x39, 0x79, 0xae, 0x98, 0x3a, 0x7c, 0x57, 0x28, 0xf0, 0x1c, 0x93, 0x30, + 0xb7, 0x45, 0x2a, 0xd7, 0x46, 0xac, 0x45, 0xe3, 0x5b, 0xc2, 0x5a, 0x68, 0x75, 0x70, 0x83, 0x16, + 0x20, 0xfa, 0x0a, 0xd9, 0x64, 0x5b, 0xac, 0x52, 0x79, 0x76, 0xea, 0xcc, 0xa5, 0x91, 0xfd, 0x67, + 0x98, 0xc5, 0x47, 0xc4, 0x2c, 0xb5, 0xe5, 0x38, 0x2e, 0x50, 0xad, 0xe6, 0x62, 0x0d, 0x9a, 0x44, + 0xb6, 0xb5, 0x32, 0xd8, 0xe4, 0xf3, 0x53, 0xa7, 0x21, 0x1c, 0x85, 0xd7, 0x5e, 0xc3, 0x68, 0xe4, + 0x23, 0x47, 0x8c, 0xee, 0x4e, 0x36, 0x96, 0xbd, 0x91, 0xb8, 0x0a, 0x21, 0xd8, 0x52, 0x73, 0xcd, + 0x44, 0xd0, 0xb6, 0x58, 0x57, 0xe6, 0x4b, 0x5c, 0xb1, 0x3c, 0x13, 0x46, 0xb2, 0x4a, 0xe0, 0x16, + 0x71, 0x9f, 0xcc, 0x6a, 0xc4, 0x57, 0x4d, 0x58, 0x31, 0x7f, 0x99, 0x60, 0x0d, 0x02, 0xb7, 0x85, + 0xba, 0x52, 0x2c, 0x59, 0xa5, 0x34, 0xa2, 0x3f, 0x2b, 0x70, 0x8c, 0x66, 0xb5, 0x2c, 0xdb, 0x2b, + 0xe8, 0xca, 0x6e, 0x01, 0xed, 0x12, 0xa4, 0x0c, 0x57, 0x89, 0x46, 0x1d, 0x48, 0x8b, 0x05, 0x39, + 0xff, 0x74, 0x1b, 0xfc, 0x5c, 0x16, 0xec, 0xe7, 0x7e, 0x59, 0xe0, 0xce, 0xee, 0xb2, 0x60, 0xed, + 0xfa, 0x65, 0xc1, 0xbe, 0x6b, 0xc5, 0xfb, 0x9c, 0xee, 0xed, 0x77, 0x15, 0x42, 0x2d, 0x7b, 0x5d, + 0x57, 0xd6, 0xa0, 0x3a, 0x29, 0xd3, 0x27, 0xa4, 0xdd, 0xd4, 0xcc, 0x48, 0xaf, 0x27, 0x0b, 0xcd, + 0xb6, 0xa5, 0xd2, 0xba, 0x8b, 0x90, 0x5e, 0x96, 0xfd, 0xed, 0xad, 0xd5, 0x95, 0x95, 0xe8, 0x55, + 0x29, 0xc3, 0xe7, 0xc8, 0xf3, 0x6c, 0x49, 0xe9, 0xbc, 0x9e, 0x18, 0xdb, 0x1b, 0xdc, 0x9b, 0x85, + 0xe6, 0xa4, 0x1d, 0xed, 0xce, 0x87, 0x1a, 0x62, 0x80, 0x9d, 0xe9, 0x13, 0xe4, 0x62, 0x7e, 0x47, + 0x9c, 0x57, 0x71, 0x14, 0xd8, 0xd9, 0x91, 0x8b, 0x0a, 0x39, 0x3b, 0x12, 0x3b, 0xe4, 0x7c, 0xea, + 0x01, 0x39, 0xbf, 0xd3, 0x95, 0x30, 0x0f, 0x38, 0xef, 0xf2, 0x07, 0xc1, 0xc0, 0xc7, 0x09, 0x35, + 0x18, 0x68, 0xd2, 0x43, 0x8c, 0x0d, 0x60, 0xe0, 0x07, 0xdf, 0xf8, 0x67, 0xfe, 0x66, 0x66, 0x97, + 0x6c, 0x3d, 0x90, 0xcf, 0xbb, 0x1f, 0xc8, 0x07, 0xd3, 0x3f, 0x90, 0xa4, 0xbb, 0xf5, 0x3c, 0x06, + 0x28, 0x12, 0xe6, 0xf2, 0x5e, 0xd6, 0xe8, 0x4a, 0xa5, 0xc4, 0x15, 0xcb, 0x4f, 0x19, 0x67, 0x3e, + 0x4b, 0xb4, 0x5d, 0x48, 0x7e, 0xd5, 0x6f, 0x3e, 0x8d, 0x43, 0x5d, 0x57, 0x87, 0x3a, 0xd8, 0xe7, + 0x5c, 0x89, 0x6e, 0xb2, 0x96, 0x7b, 0x25, 0xba, 0x89, 0xfb, 0x12, 0x66, 0x00, 0x6d, 0x0d, 0x25, + 0xbe, 0x85, 0x26, 0xd4, 0x07, 0x03, 0x01, 0xad, 0x1e, 0x26, 0x84, 0x57, 0xb3, 0x4c, 0x57, 0x96, + 0x48, 0x7c, 0xb9, 0x3c, 0x6f, 0xe4, 0x93, 0xef, 0x12, 0xbb, 0x4e, 0xb0, 0xe9, 0x92, 0x9f, 0x7e, + 0x9b, 0xda, 0xb4, 0x27, 0xd1, 0xb6, 0x2f, 0x15, 0x6d, 0x1d, 0xe9, 0x39, 0x35, 0xb2, 0xe9, 0x13, + 0xcb, 0xd8, 0xdd, 0xea, 0xc6, 0x69, 0xc7, 0x73, 0xbf, 0x87, 0x76, 0x3c, 0xef, 0x06, 0x6c, 0x48, + 0x29, 0xbd, 0x9c, 0x16, 0x8c, 0xa8, 0x97, 0x40, 0x86, 0x1b, 0x4b, 0x18, 0xea, 0xcd, 0xd9, 0x60, + 0xf0, 0x71, 0x57, 0x12, 0xcc, 0xf5, 0x36, 0x7e, 0x71, 0x0c, 0x04, 0x73, 0xa9, 0xae, 0x94, 0x10, + 0x82, 0x79, 0xde, 0xa8, 0x7b, 0x63, 0x77, 0xf1, 0x4f, 0xbf, 0x4b, 0x63, 0xde, 0xec, 0xb4, 0x18, + 0x61, 0x36, 0x2a, 0xac, 0x0e, 0xf8, 0x23, 0xcb, 0x9c, 0x26, 0xd7, 0xaa, 0xf6, 0xeb, 0xe2, 0x39, + 0xe8, 0xbe, 0x34, 0x75, 0xe1, 0xe6, 0xe2, 0x83, 0x59, 0x68, 0xa6, 0xd2, 0xd0, 0x40, 0x2a, 0xb5, + 0x06, 0xce, 0xa7, 0xe3, 0x0d, 0x6f, 0x23, 0x72, 0xc1, 0xd2, 0x54, 0x78, 0x1a, 0x91, 0x4f, 0xe6, + 0x4d, 0xc6, 0xab, 0x2b, 0xbd, 0xed, 0xc0, 0x9f, 0x73, 0xa3, 0x01, 0x57, 0x98, 0x20, 0xb0, 0x10, + 0xf3, 0xb0, 0x8a, 0x2d, 0xd3, 0x74, 0x65, 0x1d, 0xfa, 0x95, 0x94, 0x66, 0xe1, 0xf2, 0x7c, 0xe3, + 0x9b, 0x6d, 0x84, 0xa2, 0xdb, 0x71, 0xd4, 0x68, 0x3d, 0xe1, 0xb0, 0x61, 0xa7, 0xd4, 0x8e, 0xd7, + 0xc2, 0x6c, 0xb1, 0x80, 0x7b, 0xb3, 0xd0, 0x2c, 0xcf, 0x29, 0xee, 0xfc, 0x17, 0x68, 0x9d, 0xae, + 0xbc, 0x83, 0xde, 0x96, 0xd2, 0x2d, 0x5f, 0x96, 0xc6, 0xb2, 0x45, 0xa3, 0xbc, 0x42, 0xff, 0x79, + 0x1a, 0x12, 0x69, 0x18, 0xea, 0x60, 0x4b, 0x03, 0x15, 0xa0, 0xbd, 0x83, 0xc6, 0x11, 0x6b, 0x6f, + 0x02, 0x2a, 0x55, 0xba, 0xb2, 0x80, 0xc4, 0x78, 0xc6, 0xa6, 0x00, 0x73, 0xe2, 0xb1, 0xdd, 0xcc, + 0x9f, 0x23, 0xb5, 0xf3, 0x6c, 0x62, 0xdf, 0x76, 0x66, 0x10, 0x70, 0xad, 0x7c, 0x56, 0x68, 0x46, + 0x41, 0x56, 0xe1, 0x74, 0x57, 0x38, 0x69, 0x95, 0x8e, 0x2a, 0x3e, 0x8f, 0x72, 0x02, 0x96, 0x93, + 0x51, 0x09, 0x8e, 0xb3, 0x61, 0x16, 0xc8, 0x33, 0xd8, 0xc0, 0xf1, 0x81, 0x3e, 0x73, 0x54, 0xe2, + 0x66, 0x04, 0x24, 0xcb, 0x4b, 0x2a, 0x6e, 0x25, 0x6e, 0x11, 0x50, 0xbe, 0xd6, 0xe0, 0x8f, 0x60, + 0x8d, 0x1f, 0x6c, 0xe8, 0x7a, 0x5d, 0x69, 0x90, 0x58, 0xa1, 0xfc, 0x3a, 0x3c, 0x72, 0x75, 0x3e, + 0x5f, 0x9d, 0x09, 0x80, 0x87, 0x3e, 0x63, 0x8a, 0x53, 0x62, 0x27, 0xd4, 0xd5, 0x9f, 0x1c, 0xda, + 0x97, 0xfa, 0x6e, 0x37, 0xe4, 0x16, 0x22, 0xe6, 0xe5, 0xd8, 0x21, 0x09, 0x1b, 0xa2, 0x6f, 0x05, + 0xdd, 0x3e, 0x4b, 0xf8, 0x4c, 0xda, 0xf7, 0xef, 0x56, 0xd9, 0x1c, 0xe2, 0x01, 0x01, 0xa1, 0x20, + 0xcd, 0x7f, 0x10, 0x26, 0xf8, 0x47, 0x76, 0xe1, 0x1f, 0xd7, 0xf6, 0x2e, 0x62, 0x49, 0x13, 0x88, + 0x86, 0xa8, 0x52, 0x57, 0x14, 0x89, 0x1b, 0x4a, 0x7e, 0x1c, 0x22, 0xb1, 0x24, 0x8e, 0x6e, 0x37, + 0xb6, 0x6f, 0x4b, 0x5d, 0xea, 0x4e, 0x0e, 0x7e, 0x6b, 0x9c, 0x39, 0x9c, 0xdc, 0xf5, 0x0d, 0x51, + 0xd3, 0x9c, 0xdd, 0x0b, 0x6e, 0x50, 0xf0, 0x3a, 0x41, 0x0a, 0x3b, 0x95, 0x1b, 0x40, 0xfc, 0xa3, + 0x80, 0x26, 0x62, 0x0b, 0x79, 0xba, 0xb8, 0x5c, 0xbc, 0xb8, 0x27, 0xc6, 0xb0, 0xb8, 0x2a, 0xae, + 0x1b, 0x2c, 0xef, 0x4d, 0x5d, 0x79, 0x5d, 0xb2, 0x0d, 0x27, 0xbf, 0xcc, 0xa7, 0x93, 0x63, 0xb9, + 0x10, 0x88, 0x02, 0x64, 0xfb, 0x97, 0xb0, 0x79, 0x50, 0xcb, 0x67, 0x97, 0x03, 0xd3, 0x53, 0x10, + 0x9f, 0xc1, 0xf6, 0xab, 0xb6, 0x71, 0xc5, 0x7f, 0xc6, 0xa9, 0x6f, 0x82, 0x2d, 0x0d, 0x16, 0x72, + 0x25, 0xce, 0xc5, 0xb3, 0x3d, 0x96, 0x4e, 0x11, 0x3a, 0x89, 0xca, 0xe0, 0xec, 0x29, 0x6f, 0x11, + 0xcc, 0x53, 0x8f, 0xed, 0x66, 0x79, 0x44, 0x98, 0xc1, 0x46, 0xea, 0xdb, 0x93, 0x89, 0xb6, 0x0b, + 0xbc, 0x79, 0x08, 0xce, 0x37, 0x45, 0x65, 0xac, 0x34, 0x69, 0x2f, 0xc4, 0x3d, 0x20, 0x52, 0xd7, + 0xe1, 0x4f, 0xc8, 0xed, 0xbb, 0x12, 0xdd, 0x44, 0x5c, 0xf2, 0xe2, 0x03, 0x3b, 0x13, 0x7f, 0x38, + 0x96, 0xe8, 0x6d, 0x87, 0x28, 0x95, 0x89, 0xfd, 0xe7, 0xe3, 0x43, 0x3d, 0xa0, 0x93, 0x37, 0xbf, + 0x19, 0xb2, 0xbf, 0x3b, 0x97, 0x25, 0xfe, 0x06, 0x4d, 0x0c, 0x86, 0x57, 0xe2, 0xcf, 0xc0, 0x2e, + 0x59, 0xe3, 0xf0, 0x07, 0xce, 0x74, 0x7e, 0xe0, 0xaa, 0x3a, 0x1c, 0x04, 0xe1, 0x45, 0x5d, 0x79, + 0x4e, 0xb2, 0x75, 0x90, 0x4b, 0xd9, 0x67, 0xad, 0x22, 0xd0, 0xcd, 0x3e, 0x8c, 0xcf, 0x97, 0x42, + 0x70, 0x90, 0xad, 0xaf, 0xa8, 0x0b, 0x68, 0x2a, 0x99, 0x88, 0x5b, 0x42, 0x7e, 0x9a, 0x3d, 0x26, + 0x0d, 0xd7, 0x87, 0xca, 0x4d, 0x62, 0x43, 0x72, 0xf7, 0x94, 0x97, 0xb0, 0xb5, 0xf0, 0x49, 0xf6, + 0x60, 0x55, 0x26, 0xb4, 0x62, 0xd8, 0xb0, 0xad, 0xc7, 0x3d, 0x88, 0xb8, 0x53, 0x40, 0xd3, 0x98, + 0xca, 0x96, 0x5b, 0x16, 0x4a, 0x1f, 0x05, 0x01, 0x9a, 0xae, 0x0f, 0x95, 0x3f, 0xab, 0x2b, 0x4b, + 0x25, 0xaf, 0xde, 0xf2, 0x3c, 0xb6, 0x34, 0x9b, 0x79, 0x30, 0xbf, 0x16, 0xaf, 0x7e, 0xe2, 0x4b, + 0x56, 0xd6, 0x9f, 0x09, 0xd4, 0x40, 0x75, 0xb6, 0x95, 0xf5, 0x67, 0x0a, 0x7d, 0xcd, 0x3f, 0x35, + 0x06, 0x63, 0x2c, 0x0d, 0x43, 0x56, 0xe1, 0x74, 0x2b, 0xe7, 0xcf, 0x0a, 0x34, 0x09, 0x1f, 0x7a, + 0x2d, 0x75, 0x83, 0x9c, 0x48, 0xc7, 0x79, 0x48, 0xb2, 0xd7, 0xc8, 0x22, 0xa4, 0x77, 0x83, 0xeb, + 0x0d, 0xc4, 0xa7, 0x6a, 0x6f, 0x22, 0x46, 0x05, 0x94, 0x57, 0x0f, 0x61, 0x3c, 0xc0, 0x04, 0xe5, + 0x3d, 0x5d, 0xd1, 0x24, 0x52, 0x24, 0xbf, 0x09, 0xd7, 0xcc, 0xe8, 0xdb, 0x9f, 0x38, 0xf3, 0xc7, + 0xd2, 0xa2, 0xf8, 0xa5, 0x43, 0x46, 0xdf, 0x81, 0x91, 0xe8, 0xe6, 0x91, 0xd6, 0x4e, 0xa3, 0x7b, + 0x6b, 0xf2, 0x54, 0x27, 0x1e, 0xcc, 0x44, 0x6a, 0x5c, 0x10, 0x8f, 0x52, 0x12, 0xda, 0x0b, 0x92, + 0xe5, 0xe0, 0x48, 0x92, 0xc1, 0x96, 0x86, 0xa2, 0xf7, 0xc3, 0xc1, 0x40, 0xea, 0xd4, 0xe7, 0x89, + 0xc3, 0xdd, 0x04, 0x76, 0xc9, 0x24, 0xe2, 0x6b, 0xf6, 0xc4, 0x57, 0x93, 0xa9, 0xe4, 0xa4, 0xd4, + 0x9e, 0xda, 0xea, 0x01, 0x48, 0x67, 0x05, 0x89, 0x7a, 0xfa, 0x4f, 0x26, 0x07, 0xb7, 0xc5, 0x07, + 0x77, 0x26, 0x07, 0x3b, 0xa9, 0x8e, 0x9b, 0xcf, 0x72, 0xb5, 0xc2, 0xe6, 0x3a, 0x08, 0xa6, 0x2a, + 0x98, 0x32, 0xe3, 0x5d, 0x07, 0xe7, 0x64, 0x30, 0x31, 0xb7, 0xb9, 0x0b, 0x56, 0xa3, 0x3c, 0x2d, + 0x80, 0x9f, 0x83, 0x02, 0x2a, 0x6d, 0x5b, 0x24, 0x91, 0x22, 0x79, 0x3e, 0x78, 0x97, 0x26, 0xdb, + 0xdb, 0x88, 0xb5, 0x3c, 0x79, 0x6e, 0x0f, 0x12, 0x37, 0xaa, 0xae, 0xfe, 0xd4, 0xa9, 0x4d, 0x2a, + 0x69, 0x2d, 0xfe, 0x8e, 0xa5, 0x91, 0xc3, 0xae, 0x17, 0x53, 0xbd, 0x75, 0x05, 0x18, 0x67, 0xd6, + 0x58, 0xed, 0x88, 0x4b, 0x25, 0xd7, 0x53, 0x7e, 0xd4, 0x1b, 0xfb, 0x60, 0xab, 0x64, 0xfe, 0x30, + 0x54, 0xbe, 0x97, 0xf8, 0x3e, 0xca, 0x37, 0x37, 0x1d, 0xcf, 0x2d, 0xe2, 0xb9, 0x1f, 0xf4, 0x9c, + 0x1b, 0x02, 0xaa, 0x58, 0xe1, 0xfb, 0x59, 0x2f, 0x79, 0xae, 0x63, 0xde, 0x78, 0x6c, 0xb7, 0x6d, + 0x3a, 0xd6, 0xd2, 0xbc, 0x77, 0x13, 0x9b, 0x1b, 0x7d, 0x91, 0x77, 0x83, 0xa1, 0x26, 0x3c, 0xe1, + 0xb4, 0x31, 0x3f, 0x13, 0xb5, 0x5c, 0x37, 0x78, 0x26, 0xf0, 0x96, 0xdb, 0x86, 0x93, 0xe7, 0xd2, + 0xf4, 0x9d, 0x24, 0x25, 0x93, 0x03, 0x0a, 0x55, 0x5b, 0xeb, 0xd9, 0x6f, 0xa0, 0x29, 0x8e, 0x97, + 0xf1, 0xe6, 0xa5, 0x24, 0x7a, 0x0b, 0x4d, 0x75, 0x3d, 0x6c, 0x37, 0x6f, 0xf4, 0x17, 0xd1, 0x54, + 0xd7, 0x7e, 0x5c, 0x97, 0x91, 0x01, 0x89, 0x4c, 0xe9, 0x41, 0x8b, 0xc9, 0x53, 0x01, 0xd1, 0x90, + 0x3b, 0x45, 0xa2, 0xee, 0x11, 0x3a, 0xea, 0xb2, 0x80, 0xe9, 0xa1, 0xcb, 0x82, 0x0d, 0xc7, 0x9b, + 0xf5, 0x80, 0x88, 0x8a, 0xbf, 0x15, 0xd0, 0x34, 0xdb, 0x98, 0x77, 0x85, 0x0a, 0xb0, 0xf8, 0x5f, + 0x4e, 0xa3, 0x41, 0x64, 0x6d, 0x64, 0xe9, 0xab, 0x4e, 0xb2, 0xf4, 0x31, 0x1c, 0xcd, 0x9e, 0x94, + 0x8d, 0x42, 0x94, 0xb2, 0xbc, 0x6c, 0x84, 0x04, 0x7d, 0xce, 0x46, 0x82, 0x2e, 0x18, 0x9d, 0x04, + 0x25, 0x03, 0xdc, 0x7d, 0x14, 0xa8, 0x7b, 0x27, 0xef, 0x20, 0x0a, 0xd4, 0x63, 0x71, 0xf7, 0x28, + 0xd0, 0x7b, 0x14, 0xe8, 0x4f, 0x9b, 0x02, 0x7d, 0xd6, 0x0a, 0xe1, 0x3d, 0x81, 0x2a, 0x20, 0xd3, + 0x84, 0xf0, 0x1e, 0x17, 0xca, 0x2d, 0xc8, 0xb2, 0xe5, 0x84, 0xbf, 0x47, 0x7c, 0xde, 0x6a, 0xe2, + 0xf3, 0x6d, 0x07, 0xf1, 0x59, 0xa5, 0x2b, 0xe5, 0x8c, 0xf8, 0x5c, 0x3a, 0x16, 0xe2, 0x73, 0x01, + 0x98, 0xf8, 0x60, 0x8f, 0xf0, 0xb6, 0x7d, 0xd8, 0xb1, 0xbb, 0xe4, 0x1e, 0x41, 0x9a, 0x9e, 0x20, + 0xf5, 0x78, 0x35, 0xee, 0x11, 0xa4, 0x37, 0x93, 0x20, 0x25, 0xd9, 0x11, 0xa7, 0xc3, 0x46, 0x93, + 0xc7, 0x86, 0x92, 0xa4, 0x24, 0xef, 0x2d, 0x38, 0x65, 0xbb, 0x69, 0x52, 0x8a, 0x89, 0x8a, 0xb7, + 0x67, 0xa1, 0x69, 0xb6, 0x93, 0xba, 0x3b, 0x0c, 0xd0, 0x5e, 0xb3, 0x59, 0xe0, 0xcc, 0xf0, 0x04, + 0x76, 0x9b, 0xd5, 0x0d, 0x4b, 0x72, 0x09, 0xd9, 0xee, 0xf8, 0x70, 0x8b, 0xa0, 0x3e, 0x28, 0xfe, + 0x0b, 0x01, 0x89, 0x54, 0x93, 0xc8, 0x11, 0xb4, 0x6f, 0x3b, 0x09, 0xda, 0x8a, 0xeb, 0x20, 0x68, + 0x47, 0x97, 0xb2, 0x16, 0xa2, 0x71, 0xfe, 0xf0, 0xb2, 0x60, 0xa8, 0x1e, 0xf6, 0x2d, 0x5f, 0xa5, + 0x3f, 0xcb, 0xca, 0x74, 0xe5, 0x69, 0xf4, 0xa4, 0xe4, 0xb1, 0x26, 0x79, 0x06, 0x89, 0x43, 0x4a, + 0xbf, 0xc3, 0x79, 0xbe, 0xf8, 0x54, 0x6d, 0xfd, 0x7e, 0xa4, 0xa7, 0x6a, 0x5c, 0xf8, 0x03, 0x0b, + 0xb9, 0xe1, 0x7d, 0xaa, 0xbd, 0x02, 0x8e, 0x79, 0x6e, 0x3b, 0xd2, 0x95, 0xce, 0x23, 0x7d, 0xdc, + 0x5c, 0x1a, 0x3b, 0xd2, 0x09, 0x5c, 0xa0, 0xab, 0x31, 0x1c, 0x21, 0x3d, 0x28, 0xe7, 0x34, 0x56, + 0x90, 0xca, 0x0b, 0xf1, 0xe1, 0x4f, 0xbc, 0x2f, 0x62, 0xf1, 0x9f, 0x67, 0xa1, 0x02, 0xab, 0xdf, + 0xdd, 0x71, 0x4a, 0xaf, 0x8e, 0xe5, 0x94, 0xc6, 0x98, 0x07, 0xb1, 0x6c, 0x99, 0xae, 0x54, 0x20, + 0x45, 0x72, 0x6d, 0x82, 0x3c, 0x03, 0x76, 0xcf, 0x82, 0xf1, 0xcc, 0x5a, 0x92, 0x64, 0x0e, 0x2a, + 0x00, 0xc5, 0x1f, 0x77, 0xd0, 0xaf, 0x38, 0x0f, 0x7a, 0xc9, 0x75, 0xdc, 0xdd, 0x9c, 0x10, 0xc8, + 0x0b, 0xc9, 0x45, 0x7d, 0xc2, 0xc6, 0x8b, 0x16, 0x8d, 0xc6, 0x8b, 0xde, 0x51, 0x3c, 0xe8, 0x63, + 0x96, 0xb4, 0x14, 0x54, 0xeb, 0x38, 0x53, 0x11, 0x93, 0x96, 0x8e, 0x67, 0x72, 0x52, 0x4b, 0x3c, + 0xfa, 0x98, 0x33, 0x43, 0xcd, 0xac, 0x34, 0xe4, 0x6d, 0x06, 0xa2, 0x36, 0xef, 0x7b, 0x10, 0xb5, + 0x65, 0xfb, 0x04, 0x5d, 0xd1, 0x05, 0xd4, 0x25, 0x48, 0xae, 0x73, 0x95, 0x7f, 0xe3, 0x84, 0x0d, + 0x6a, 0xb8, 0x4d, 0xe2, 0xb4, 0xe3, 0xe8, 0x01, 0xf1, 0xd8, 0xb6, 0xe4, 0xa7, 0x67, 0x4c, 0xee, + 0x18, 0x53, 0xbe, 0xc0, 0x9f, 0x25, 0x07, 0xb7, 0x1a, 0xdd, 0x6d, 0x50, 0x4e, 0x76, 0x19, 0x0f, + 0x65, 0xf5, 0x6d, 0x3d, 0x0d, 0x1c, 0x9e, 0xd1, 0x76, 0x30, 0x3e, 0x10, 0xa3, 0x57, 0xf8, 0xf4, + 0xc8, 0xf6, 0x2e, 0xe2, 0x86, 0xf1, 0x5d, 0x16, 0x9a, 0xca, 0xad, 0xe8, 0xee, 0xb8, 0xb3, 0x2f, + 0xdb, 0x14, 0xf0, 0x69, 0xee, 0x2c, 0x6f, 0xaa, 0x0d, 0x77, 0xd6, 0x68, 0xfb, 0xc6, 0xc4, 0xac, + 0xfc, 0x85, 0x7d, 0x49, 0x57, 0x9e, 0x47, 0xcf, 0x4a, 0xee, 0x2d, 0x18, 0xeb, 0x8d, 0x2d, 0xfe, + 0x7a, 0x1a, 0x9a, 0x09, 0x02, 0x2f, 0xc6, 0xa2, 0xd1, 0x0b, 0xbb, 0x94, 0x5c, 0x32, 0x81, 0x06, + 0xd2, 0x9b, 0x45, 0x2e, 0x19, 0x71, 0x1f, 0xc3, 0xc7, 0x07, 0xa2, 0x1e, 0x30, 0x95, 0xfc, 0xff, + 0x04, 0x72, 0xd1, 0xfe, 0xd4, 0xad, 0xe9, 0xf6, 0xe9, 0xca, 0x0b, 0xbc, 0xa6, 0xfb, 0x31, 0x36, + 0x46, 0xa2, 0x3d, 0xca, 0xc2, 0x2f, 0xb3, 0x50, 0x6f, 0x38, 0xc8, 0x5a, 0x7c, 0x20, 0x66, 0x5e, + 0x32, 0x5b, 0xd6, 0xdd, 0xac, 0x31, 0x65, 0xdd, 0x7d, 0x9b, 0x39, 0xb8, 0x66, 0x5b, 0xea, 0x58, + 0xea, 0xe0, 0x3a, 0xd7, 0x3d, 0x35, 0x78, 0xb2, 0x51, 0x73, 0x2f, 0xf3, 0x95, 0x11, 0x0a, 0x8b, + 0xdc, 0xaf, 0x0c, 0x75, 0x71, 0x7d, 0x17, 0x4d, 0x01, 0x56, 0x43, 0x69, 0x89, 0x04, 0xc3, 0x38, + 0x26, 0x4b, 0x0e, 0x3e, 0xfc, 0xe7, 0x74, 0xe5, 0x19, 0xc9, 0x59, 0x27, 0x3f, 0x42, 0x90, 0xc7, + 0x50, 0xd4, 0xe8, 0xee, 0xe7, 0x19, 0x5b, 0xe6, 0x54, 0x49, 0x22, 0x68, 0x39, 0x3a, 0x8a, 0x1b, + 0xd1, 0x04, 0x1a, 0x68, 0xc5, 0x1f, 0x58, 0x9f, 0xce, 0x0a, 0x5f, 0xb1, 0x9a, 0x40, 0xe4, 0x6d, + 0x6c, 0x44, 0xca, 0xf7, 0x94, 0x0b, 0x6d, 0x5e, 0xd8, 0xf0, 0x06, 0x62, 0x32, 0xfe, 0x5a, 0x79, + 0xee, 0x0e, 0x21, 0xab, 0x40, 0x50, 0xf9, 0xe6, 0xe2, 0x1e, 0x01, 0x4d, 0x6e, 0xf4, 0xb5, 0x04, + 0xea, 0xdf, 0x63, 0xf1, 0xb5, 0xf3, 0xbc, 0x33, 0xaf, 0xad, 0xc0, 0xad, 0x80, 0x93, 0x69, 0x01, + 0xbb, 0x82, 0xf2, 0xe5, 0xba, 0xf2, 0x9c, 0xe4, 0xe8, 0x2f, 0x4b, 0x30, 0x77, 0x62, 0xff, 0x79, + 0xc0, 0x6f, 0xb0, 0x08, 0xf0, 0x06, 0x66, 0x4c, 0x05, 0x80, 0x2a, 0x5b, 0x93, 0x63, 0x0c, 0x71, + 0x23, 0xf3, 0xb3, 0x1d, 0x97, 0x49, 0x75, 0xec, 0x04, 0x64, 0x9b, 0xcb, 0x2d, 0xf6, 0x0b, 0xa4, + 0x2e, 0xb7, 0x0f, 0x98, 0x54, 0xa8, 0xdd, 0x21, 0x19, 0xd7, 0x38, 0xbc, 0x6f, 0x37, 0x0b, 0xcc, + 0xfd, 0x36, 0xff, 0xba, 0x26, 0xc6, 0x5e, 0xb9, 0x64, 0x62, 0x70, 0x83, 0x26, 0xbe, 0xb9, 0x25, + 0xee, 0x89, 0x93, 0x3d, 0x5b, 0x13, 0x67, 0x8f, 0x31, 0xf7, 0xb8, 0x05, 0x46, 0xec, 0x88, 0x31, + 0xb4, 0xa5, 0x84, 0x39, 0xee, 0xbe, 0x0b, 0xa1, 0x0e, 0x56, 0xd5, 0x11, 0xb3, 0x59, 0x1c, 0x20, + 0x8e, 0x14, 0xc9, 0x0a, 0x1b, 0x6f, 0x24, 0xda, 0x0e, 0xcc, 0x37, 0x04, 0x13, 0x5f, 0x55, 0x87, + 0x65, 0x65, 0x9b, 0x93, 0xad, 0xa7, 0x4c, 0x86, 0x92, 0xbc, 0x4b, 0x7d, 0xb0, 0xdd, 0xe6, 0xbe, + 0x53, 0x9f, 0x5e, 0x95, 0x0c, 0xc5, 0x2b, 0xf3, 0xd0, 0x8d, 0x29, 0xf3, 0x4e, 0x0a, 0x5c, 0x3c, + 0x53, 0x5b, 0xd4, 0x48, 0x2b, 0xa2, 0xe9, 0x47, 0x6c, 0xaf, 0x48, 0xd0, 0xd2, 0xef, 0x0e, 0xa5, + 0xfe, 0xb8, 0x0f, 0x08, 0x47, 0xf2, 0x10, 0xed, 0xbb, 0x98, 0x38, 0xd6, 0xc6, 0x44, 0x94, 0xf0, + 0x13, 0x5e, 0x8c, 0xf8, 0xc0, 0x2e, 0x10, 0xa3, 0x5c, 0x89, 0x6e, 0x66, 0x31, 0x21, 0x79, 0x39, + 0x60, 0xea, 0xe4, 0x26, 0x10, 0xef, 0x99, 0x25, 0x97, 0x5a, 0x47, 0x8e, 0x0d, 0x26, 0x0e, 0xf4, + 0x13, 0x0f, 0x55, 0x2e, 0x04, 0xea, 0x7b, 0x08, 0xd5, 0x07, 0x03, 0xe1, 0x96, 0x26, 0x2e, 0xee, + 0x1e, 0x16, 0x9a, 0x71, 0xc5, 0xf2, 0xd3, 0xd6, 0xdf, 0x10, 0xb4, 0x3d, 0xa4, 0x85, 0x83, 0x2d, + 0xa1, 0x7a, 0x0d, 0xc4, 0x4f, 0x21, 0xb0, 0x44, 0x4f, 0xee, 0x39, 0x97, 0xea, 0xbf, 0x90, 0xfa, + 0xe3, 0xd6, 0x44, 0xac, 0x1b, 0xe4, 0x1f, 0x2a, 0x37, 0x88, 0xf8, 0xbe, 0x23, 0x5a, 0xfd, 0xb4, + 0x31, 0x44, 0xab, 0xc7, 0xd6, 0x46, 0xf6, 0x68, 0xf5, 0x33, 0x2c, 0xc4, 0x8b, 0x0f, 0x1b, 0x3e, + 0xd2, 0x1e, 0x93, 0x5e, 0xfc, 0x10, 0xe5, 0x44, 0x7c, 0xeb, 0xc3, 0x85, 0xd3, 0x31, 0xa8, 0x2e, + 0x19, 0x33, 0xa8, 0xae, 0x27, 0x80, 0x2a, 0xeb, 0xca, 0x62, 0x09, 0x0f, 0x21, 0x3f, 0xea, 0x09, + 0xa6, 0xf0, 0x95, 0x36, 0x3f, 0x75, 0xdc, 0x5c, 0xfc, 0xa3, 0xc0, 0xb9, 0x20, 0x63, 0x41, 0x11, + 0xf8, 0x54, 0xef, 0x12, 0x74, 0x65, 0x87, 0x20, 0xd9, 0xeb, 0xe4, 0x8f, 0x98, 0x13, 0x32, 0x89, + 0x80, 0x15, 0x08, 0x86, 0x9a, 0x7c, 0x8d, 0x8b, 0xb5, 0x0f, 0x23, 0x5a, 0x28, 0xe0, 0x6b, 0x2c, + 0xb9, 0x12, 0xdd, 0x9c, 0x38, 0x78, 0x66, 0x24, 0xda, 0xc3, 0x23, 0x2f, 0xcb, 0x73, 0x59, 0xef, + 0x48, 0x7e, 0xfd, 0x75, 0x7c, 0xa0, 0x3d, 0xb1, 0xef, 0xa2, 0x67, 0x83, 0xd2, 0x22, 0xa3, 0xf3, + 0x5c, 0xc5, 0xda, 0x95, 0xa4, 0xa0, 0x6d, 0x1f, 0xcb, 0x30, 0xa2, 0xda, 0x57, 0x62, 0x77, 0x77, + 0x9e, 0x79, 0x5d, 0xee, 0xce, 0xd5, 0x84, 0xcc, 0x52, 0x42, 0x9a, 0x0f, 0x7b, 0x1f, 0xcf, 0xe2, + 0x9c, 0xae, 0x6d, 0x35, 0xf2, 0x14, 0x36, 0x04, 0x75, 0xba, 0xb6, 0xd5, 0x9b, 0x58, 0x86, 0x64, + 0x21, 0x2f, 0xf4, 0x8e, 0x02, 0x87, 0x17, 0xcc, 0x82, 0xa0, 0x95, 0xaf, 0xd0, 0x95, 0x6a, 0x9a, + 0x83, 0xfc, 0x25, 0x6b, 0x5b, 0xf0, 0xc5, 0xc4, 0xa5, 0x54, 0x78, 0xe8, 0x70, 0x4f, 0x06, 0x29, + 0x4e, 0x7c, 0xe0, 0x4b, 0x93, 0xe6, 0xeb, 0xd8, 0x67, 0x74, 0x6d, 0x4e, 0xec, 0xfd, 0x86, 0xa6, + 0x28, 0x7f, 0x1f, 0x4d, 0x0e, 0x06, 0x1a, 0x49, 0xa6, 0x7d, 0x2c, 0x50, 0xba, 0x0f, 0x3f, 0x6c, + 0x38, 0x75, 0x82, 0xa3, 0x4a, 0x5e, 0x68, 0xff, 0x1d, 0x1f, 0x6c, 0x85, 0xb4, 0x5e, 0xe0, 0xf2, + 0x50, 0x1a, 0x1f, 0xe8, 0x4c, 0xb4, 0x9f, 0x4a, 0x1d, 0xeb, 0x00, 0x89, 0xb2, 0xea, 0xe8, 0xfe, + 0x7d, 0x7c, 0x94, 0x9f, 0x41, 0x13, 0x38, 0xdc, 0x7a, 0x5d, 0x5d, 0x9f, 0x46, 0xe3, 0x19, 0xac, + 0x5f, 0x97, 0x84, 0x67, 0xb3, 0xa0, 0x2b, 0x7f, 0x8a, 0x7e, 0x27, 0xa5, 0x21, 0x97, 0xe4, 0x19, + 0x04, 0x27, 0xd2, 0x2b, 0x4a, 0xd9, 0x4b, 0xa2, 0x71, 0xb4, 0xe5, 0xc1, 0x03, 0x3a, 0xe2, 0xb2, + 0xc0, 0xbf, 0xba, 0x97, 0x05, 0xc7, 0x7b, 0x67, 0xa9, 0x25, 0x2f, 0x0b, 0x04, 0x3b, 0x17, 0x37, + 0xa0, 0xc9, 0x76, 0x30, 0x10, 0x67, 0x73, 0xc8, 0x16, 0xbe, 0xc3, 0x42, 0x70, 0x33, 0x51, 0x5e, + 0x73, 0x30, 0xd8, 0x48, 0x89, 0x30, 0x95, 0xfc, 0x12, 0xe7, 0x22, 0x04, 0xa2, 0x5d, 0x2b, 0x7e, + 0x8d, 0xca, 0x95, 0x14, 0x77, 0x66, 0xa3, 0x59, 0xae, 0xaf, 0xbc, 0x3b, 0x68, 0xeb, 0xd7, 0x6d, + 0xfc, 0xf0, 0xcf, 0x46, 0xc5, 0x7e, 0xf0, 0x55, 0x95, 0xbe, 0x88, 0x6f, 0x94, 0x8c, 0xb1, 0xe2, + 0x47, 0x37, 0xee, 0x16, 0x89, 0x93, 0x93, 0xba, 0xdc, 0x22, 0x0b, 0x6d, 0x01, 0x1b, 0x33, 0xf8, + 0x44, 0x16, 0xff, 0x85, 0x80, 0xe6, 0x64, 0x58, 0xb9, 0xf8, 0x3a, 0x1a, 0xcf, 0x30, 0x1a, 0x09, + 0x66, 0x97, 0x21, 0x31, 0x0b, 0x8e, 0x3a, 0x62, 0x75, 0xe0, 0xa2, 0x41, 0xd0, 0xe4, 0x94, 0xac, + 0x4e, 0xac, 0x35, 0x1f, 0x93, 0xf0, 0x06, 0x22, 0x4d, 0x9d, 0xee, 0x0e, 0x3b, 0x12, 0xde, 0x40, + 0x64, 0x40, 0x66, 0x33, 0x79, 0x0e, 0x7f, 0x07, 0x70, 0x78, 0x89, 0x5d, 0x46, 0xd7, 0x37, 0x10, + 0xfe, 0x40, 0xc5, 0x4d, 0x8a, 0xff, 0xbb, 0x88, 0x66, 0x5a, 0xc9, 0x3d, 0x6d, 0x0c, 0xc7, 0x32, + 0x7b, 0x3c, 0x1e, 0xc1, 0x0a, 0xe0, 0x6d, 0x8b, 0xc7, 0x33, 0x81, 0x5d, 0x31, 0x6a, 0x2e, 0x3f, + 0xdd, 0x1e, 0x59, 0xe7, 0xb6, 0xb3, 0x1f, 0x8b, 0x08, 0xe7, 0x04, 0xcc, 0xc7, 0xec, 0xf4, 0x9c, + 0x13, 0xe1, 0x97, 0x2a, 0x1c, 0xb1, 0xd8, 0x7f, 0x76, 0x1d, 0xec, 0x0a, 0x63, 0x4a, 0x36, 0x0b, + 0x6e, 0xae, 0x24, 0x97, 0x28, 0x09, 0x9d, 0x81, 0x0d, 0xcb, 0x83, 0xc1, 0xc6, 0xb5, 0x26, 0x66, + 0xbb, 0xd9, 0x1c, 0x4b, 0xc0, 0xce, 0xb1, 0xe4, 0x8d, 0x91, 0x63, 0x91, 0xc6, 0xce, 0xb1, 0xd8, + 0x39, 0x95, 0x0e, 0x37, 0xa7, 0x32, 0x6e, 0xec, 0x9c, 0xca, 0x8b, 0xdf, 0x93, 0x53, 0x71, 0x71, + 0x28, 0x4e, 0x3a, 0x2f, 0xff, 0x07, 0xa4, 0xf3, 0x2c, 0x6e, 0x68, 0x7c, 0x26, 0x33, 0x86, 0x9b, + 0xce, 0x0d, 0x7d, 0xcc, 0x98, 0x21, 0x74, 0x5d, 0xf3, 0xf2, 0xcc, 0x10, 0x46, 0x88, 0x94, 0x19, + 0x9a, 0x37, 0x2a, 0x33, 0xc4, 0x98, 0x20, 0x4a, 0xdb, 0x4e, 0xf0, 0xa6, 0x6d, 0xd3, 0xce, 0xfc, + 0xfd, 0x69, 0x5b, 0x8b, 0xfd, 0x9a, 0xf8, 0x43, 0xb3, 0x5f, 0x54, 0xd4, 0x37, 0x89, 0x63, 0xbf, + 0xa8, 0xa8, 0x8f, 0xb0, 0x5f, 0x9c, 0x3e, 0x9b, 0xb1, 0x5f, 0x54, 0xf2, 0x67, 0x63, 0xbf, 0x26, + 0xdf, 0x35, 0xec, 0xd7, 0x94, 0x1f, 0x90, 0xfd, 0x2a, 0x43, 0x39, 0x0d, 0x5a, 0xb8, 0x9e, 0x68, + 0x9b, 0x89, 0xce, 0x42, 0x0b, 0xd7, 0x53, 0x4d, 0x94, 0x85, 0x61, 0xb1, 0x46, 0x9c, 0x89, 0xd8, + 0xb4, 0x70, 0xbd, 0xf9, 0xb6, 0x5a, 0xcc, 0xc1, 0x54, 0x72, 0x9f, 0x9d, 0xf8, 0x74, 0x4d, 0x75, + 0x20, 0xf2, 0xb8, 0x0c, 0x18, 0x15, 0xc7, 0xe1, 0xe3, 0x58, 0x87, 0x89, 0x8c, 0xee, 0x2f, 0xb2, + 0xf3, 0x0e, 0xeb, 0x9d, 0xbc, 0x83, 0x98, 0x66, 0xf4, 0xba, 0x48, 0xc8, 0x1f, 0x58, 0x0f, 0xa3, + 0xdf, 0x08, 0x67, 0x41, 0x88, 0x7a, 0xb8, 0x1d, 0x44, 0x4b, 0x6c, 0x27, 0xea, 0xad, 0x2a, 0x20, + 0xea, 0xad, 0xdf, 0xf1, 0xc1, 0x56, 0x92, 0xb5, 0x3b, 0x03, 0x51, 0x6f, 0x35, 0x17, 0x3f, 0x40, + 0xe3, 0x35, 0x16, 0x85, 0x7b, 0xba, 0x77, 0x14, 0xee, 0x34, 0xd7, 0xd4, 0x11, 0x85, 0x1b, 0x87, + 0x83, 0xb1, 0x06, 0x63, 0x41, 0xa0, 0xce, 0x1e, 0x25, 0x36, 0x4c, 0x26, 0xa5, 0xc2, 0xaa, 0xef, + 0x32, 0x6e, 0x62, 0xf6, 0x73, 0x68, 0xf2, 0xa8, 0x31, 0xb7, 0xd3, 0xf3, 0x22, 0x4f, 0xe8, 0xca, + 0x63, 0x68, 0xb1, 0x94, 0x86, 0x90, 0x92, 0x67, 0xc0, 0x91, 0xb1, 0x72, 0x60, 0x45, 0x8a, 0xb7, + 0x67, 0xa3, 0x59, 0xae, 0x1e, 0x77, 0x07, 0x59, 0xaf, 0xda, 0xc8, 0xfa, 0x0c, 0xc4, 0x2d, 0x9f, + 0x6e, 0x9b, 0xa9, 0x99, 0x4d, 0xdc, 0x8a, 0xf3, 0x06, 0xf2, 0xc2, 0xf3, 0xdb, 0x49, 0xd0, 0x6f, + 0xcd, 0x47, 0x33, 0x41, 0x25, 0xec, 0x22, 0x82, 0x7f, 0xe1, 0x45, 0x04, 0x3f, 0x3d, 0x0a, 0x11, + 0x9c, 0x56, 0x2f, 0x6a, 0xa3, 0x8b, 0xff, 0x95, 0xe0, 0xd0, 0x6f, 0x97, 0x7f, 0x29, 0xe8, 0xca, + 0x49, 0x41, 0xa2, 0xa5, 0x72, 0x8f, 0x60, 0x0c, 0xc5, 0x8c, 0xb6, 0xf3, 0xa0, 0xc7, 0x85, 0x4c, + 0x91, 0x89, 0x9d, 0x5f, 0x27, 0x06, 0x5a, 0x93, 0xdd, 0xdb, 0x2c, 0x79, 0x0d, 0xb6, 0xc7, 0x32, + 0xdf, 0xe8, 0xde, 0x98, 0x71, 0xf0, 0xf4, 0x95, 0xe8, 0x66, 0xc8, 0x5f, 0x08, 0xf8, 0x17, 0xfa, + 0xa6, 0x86, 0xbf, 0x36, 0x5a, 0x4f, 0x00, 0xfd, 0x4f, 0xbc, 0x7e, 0xf7, 0x5e, 0x02, 0x46, 0xc0, + 0xe8, 0xbf, 0x68, 0xb4, 0xed, 0xb7, 0xf2, 0xb9, 0x0c, 0xf5, 0xc0, 0x91, 0x9b, 0xcc, 0x04, 0x79, + 0xde, 0xf6, 0x5d, 0x8c, 0x7f, 0x77, 0x29, 0x79, 0xec, 0x4c, 0xea, 0xcc, 0xf1, 0xd4, 0xa5, 0x4f, + 0x8d, 0xd8, 0xc9, 0x2b, 0xd1, 0xcd, 0x4c, 0x19, 0x2f, 0xfe, 0x85, 0x80, 0x66, 0x84, 0x34, 0xec, + 0x5f, 0x6b, 0x8f, 0x2f, 0x4b, 0xe0, 0x49, 0x17, 0x74, 0x65, 0x97, 0x20, 0x79, 0xb7, 0x91, 0x5b, + 0xe2, 0x97, 0x0e, 0x25, 0xf7, 0x1e, 0x24, 0xf1, 0x62, 0x7a, 0x4f, 0xd3, 0xb4, 0x2f, 0x7d, 0x57, + 0x87, 0x3a, 0xe2, 0x83, 0xad, 0x64, 0xf9, 0xf4, 0x5b, 0x4d, 0x66, 0xe0, 0xd4, 0xe7, 0xac, 0x24, + 0x3e, 0xb0, 0xcb, 0x62, 0x6e, 0x30, 0x2d, 0x6e, 0x7e, 0xfd, 0xf0, 0x27, 0xf1, 0x81, 0x3d, 0x58, + 0xfc, 0xf1, 0x09, 0xbf, 0x7f, 0x89, 0xfd, 0xe7, 0x93, 0x7b, 0x8e, 0x24, 0xf6, 0xb6, 0x99, 0xab, + 0xf7, 0x5e, 0x8d, 0x38, 0x2c, 0xa0, 0xa9, 0x1b, 0x34, 0xad, 0x99, 0x14, 0x43, 0x98, 0x49, 0xa2, + 0x4d, 0x20, 0x72, 0x33, 0x77, 0xbd, 0xdc, 0x42, 0x56, 0x33, 0xb8, 0x8b, 0xc6, 0xef, 0x1e, 0x84, + 0xf3, 0x22, 0x27, 0x85, 0x0f, 0xc2, 0xfc, 0x9e, 0xe1, 0x6d, 0xf1, 0x81, 0xce, 0x91, 0x3d, 0xd1, + 0x44, 0xff, 0x26, 0x38, 0x2c, 0xb3, 0x10, 0x7f, 0x3f, 0xfc, 0x84, 0xc4, 0xaa, 0x63, 0xfd, 0x06, + 0xf7, 0x4a, 0xc4, 0xe7, 0xb9, 0xb4, 0x2c, 0xb9, 0x56, 0xec, 0x0f, 0x2b, 0x2d, 0xcb, 0x78, 0x96, + 0x96, 0xc5, 0xf2, 0xa3, 0xb7, 0xb2, 0xa8, 0x90, 0xa7, 0x09, 0xee, 0x02, 0xc9, 0xdc, 0x60, 0x7f, + 0x9a, 0xac, 0x2a, 0x78, 0x9a, 0xac, 0xdf, 0xec, 0xb0, 0x32, 0x3d, 0x4d, 0x56, 0xf3, 0xb2, 0x2e, + 0x41, 0x57, 0x76, 0x0a, 0xa8, 0x4d, 0x90, 0xd2, 0xdc, 0x3d, 0x79, 0x0d, 0x8c, 0xc7, 0xca, 0x93, + 0x9f, 0x0e, 0x18, 0xad, 0xe7, 0x2c, 0x9b, 0xd3, 0xe1, 0x4f, 0x2c, 0x94, 0x7a, 0xe9, 0x40, 0xa2, + 0xb7, 0xdd, 0xe8, 0xea, 0x67, 0x97, 0xc1, 0xac, 0x4a, 0xec, 0x3f, 0x8f, 0x55, 0x9b, 0xe6, 0x28, + 0x10, 0x9d, 0xef, 0x4a, 0x74, 0xf3, 0x65, 0x81, 0xbf, 0x85, 0x97, 0x05, 0xf6, 0xf5, 0x58, 0xce, + 0xe2, 0x5a, 0xca, 0x8f, 0x42, 0xce, 0x92, 0xe6, 0xab, 0xee, 0x70, 0x39, 0xcb, 0x61, 0x16, 0x82, + 0xc1, 0x5b, 0xce, 0xd2, 0x70, 0x5d, 0x72, 0x16, 0xcc, 0xc5, 0x73, 0x72, 0x16, 0x9b, 0x81, 0x0c, + 0x6b, 0xe6, 0x96, 0xb9, 0x1c, 0x10, 0xc6, 0x20, 0x74, 0x09, 0xe8, 0xca, 0x06, 0x22, 0x74, 0xa9, + 0x77, 0x42, 0x6d, 0xcf, 0x56, 0x5e, 0xee, 0x02, 0x13, 0x5c, 0x89, 0x6e, 0x26, 0x21, 0x7c, 0x1d, + 0xf7, 0x1b, 0xa7, 0xd1, 0x61, 0xe9, 0x2e, 0xe2, 0x43, 0x3d, 0xf1, 0xd8, 0xa9, 0xe4, 0x9e, 0x23, + 0x8e, 0xbe, 0x44, 0x78, 0xf3, 0xe7, 0x02, 0xcb, 0x5f, 0x6f, 0x7b, 0xb4, 0x36, 0x7a, 0x3d, 0x5a, + 0xab, 0x75, 0xe5, 0x69, 0xfb, 0xa3, 0xb5, 0x80, 0x0f, 0x9d, 0x6c, 0x62, 0xd6, 0xed, 0x5f, 0x1a, + 0x83, 0xb1, 0xea, 0x4a, 0x30, 0x8a, 0x67, 0x89, 0xeb, 0xc6, 0xfc, 0xa2, 0x95, 0x3d, 0xad, 0x2b, + 0x4f, 0x20, 0x59, 0xf2, 0x5a, 0x93, 0x3c, 0x07, 0x34, 0xe0, 0x8e, 0x8d, 0x26, 0xa4, 0xd0, 0x7f, + 0xc8, 0x46, 0xd3, 0xed, 0x9d, 0x7e, 0xc4, 0x74, 0x10, 0x33, 0xf9, 0x71, 0x02, 0xdd, 0xed, 0xbe, + 0x70, 0x65, 0xaf, 0xe8, 0xca, 0x72, 0x54, 0x25, 0x79, 0x1e, 0xc5, 0xf5, 0x1a, 0x1d, 0x7d, 0x9e, + 0x0d, 0x41, 0x0e, 0xb9, 0x78, 0x77, 0x36, 0x18, 0xfd, 0x53, 0x77, 0x90, 0xc3, 0x5b, 0x2b, 0x15, + 0x3c, 0x28, 0xa0, 0x89, 0x20, 0x2f, 0x5b, 0xe6, 0x6f, 0x34, 0xa9, 0x15, 0xa0, 0xc1, 0x5a, 0x74, + 0x25, 0x24, 0xd9, 0x2a, 0xe4, 0x75, 0xfc, 0x2f, 0x6a, 0xe6, 0xbc, 0xff, 0x7c, 0x69, 0x51, 0xea, + 0xbb, 0x4f, 0x8c, 0xed, 0x31, 0x80, 0x89, 0x44, 0x47, 0x7b, 0xb2, 0xf5, 0x54, 0x3a, 0x41, 0x5d, + 0x62, 0x97, 0x6e, 0xc4, 0xba, 0x16, 0x40, 0x85, 0x49, 0xaa, 0xe1, 0xdf, 0x46, 0xef, 0x69, 0xa3, + 0x7b, 0xd7, 0xc8, 0xa1, 0xcf, 0x4a, 0x54, 0xdb, 0x8c, 0x65, 0xeb, 0x75, 0xa5, 0x01, 0xad, 0x93, + 0x32, 0x6d, 0xa0, 0x5c, 0x41, 0x42, 0x2c, 0x72, 0xc7, 0x9a, 0xec, 0xd9, 0xca, 0x68, 0xeb, 0xd2, + 0x22, 0xa0, 0xe7, 0xc0, 0x56, 0x9d, 0xbb, 0xa5, 0x46, 0xe7, 0x76, 0x23, 0xd6, 0x05, 0xa7, 0x57, + 0xfc, 0xf7, 0x24, 0xd8, 0xa2, 0x7b, 0x92, 0xbb, 0xe3, 0x02, 0xae, 0xb0, 0xd9, 0xee, 0x64, 0xb8, + 0x80, 0x63, 0xb1, 0xdf, 0xb9, 0x9d, 0x57, 0xef, 0x35, 0x5d, 0xa9, 0x41, 0x2b, 0xa4, 0x8c, 0x87, + 0x41, 0x71, 0x28, 0x0c, 0x64, 0xc9, 0x8c, 0xbc, 0xe3, 0x72, 0x14, 0xff, 0x75, 0x36, 0xa4, 0x2c, + 0x77, 0x5d, 0xbd, 0x45, 0x36, 0x4b, 0xa2, 0xd1, 0xe5, 0xe1, 0xef, 0xb8, 0x05, 0xf8, 0xca, 0xf7, + 0xbe, 0xaa, 0xfc, 0x55, 0xac, 0x70, 0xd8, 0x07, 0xdd, 0x90, 0xc0, 0x7d, 0x05, 0x9f, 0xad, 0x14, + 0x04, 0xf7, 0xf8, 0x50, 0xb8, 0x6c, 0xa5, 0x1e, 0x43, 0x91, 0xe4, 0xb3, 0xe4, 0xd5, 0x67, 0x4d, + 0xcb, 0xf6, 0x08, 0xba, 0xd2, 0x2d, 0xa0, 0x4e, 0x41, 0xf2, 0xdc, 0x43, 0xb9, 0x05, 0x8e, 0x82, + 0x5d, 0xb7, 0x5b, 0x64, 0x60, 0xf7, 0x97, 0x59, 0x90, 0xe4, 0xfb, 0xa7, 0x7d, 0x51, 0xcb, 0x2a, + 0x75, 0x45, 0x41, 0x2f, 0x4a, 0xde, 0x5b, 0x41, 0x5f, 0x2a, 0x8e, 0x39, 0xf0, 0x36, 0xb6, 0x4b, + 0x8e, 0x47, 0x53, 0x94, 0x86, 0x06, 0xcc, 0x41, 0x59, 0xa1, 0x43, 0x5c, 0xcf, 0x92, 0xa2, 0x2b, + 0x73, 0x79, 0x58, 0x9f, 0x0a, 0x91, 0xc6, 0x19, 0x7c, 0xd3, 0x67, 0x47, 0x18, 0xd3, 0xb3, 0x53, + 0x8d, 0x72, 0x4d, 0xa0, 0x09, 0x17, 0x66, 0xe1, 0x50, 0xd9, 0x8f, 0xeb, 0xca, 0x23, 0x12, 0x94, + 0xc8, 0x0f, 0x38, 0x06, 0x06, 0x68, 0xad, 0xae, 0x65, 0x11, 0x10, 0x75, 0x21, 0x27, 0x5f, 0x28, + 0x14, 0x54, 0x68, 0x2f, 0xfa, 0xd1, 0x54, 0x7f, 0xc0, 0x1f, 0x59, 0x11, 0x5c, 0xef, 0x0f, 0xd4, + 0xfa, 0xc2, 0xe1, 0x0f, 0x82, 0xa1, 0x06, 0x72, 0x83, 0xb0, 0x4f, 0x97, 0xbb, 0x56, 0x7e, 0x68, + 0x64, 0x7b, 0x67, 0xea, 0xf3, 0x56, 0x93, 0x8d, 0xec, 0xd9, 0x4a, 0x24, 0xed, 0x24, 0xe7, 0x83, + 0xd1, 0xd5, 0x4f, 0x12, 0x72, 0xb8, 0xfb, 0x89, 0x21, 0xaf, 0xfc, 0x52, 0xb5, 0xba, 0xb2, 0xd2, + 0x4e, 0x51, 0xbe, 0x00, 0x5f, 0x40, 0x98, 0x79, 0x0c, 0xd3, 0x90, 0x4a, 0x02, 0x42, 0xbc, 0xb0, + 0x13, 0xb9, 0x3a, 0xd4, 0x41, 0xca, 0xf1, 0x6d, 0x81, 0xab, 0x58, 0x5d, 0x69, 0x97, 0x8f, 0x5c, + 0x16, 0x5c, 0xd6, 0x0f, 0xb9, 0x18, 0xdc, 0xbe, 0x10, 0x74, 0xe5, 0x84, 0xe0, 0xb2, 0x7f, 0xd0, + 0x05, 0x93, 0x05, 0x35, 0x47, 0x3b, 0xe1, 0x88, 0x6c, 0x4e, 0x0c, 0x83, 0x0f, 0xf4, 0x63, 0x35, + 0x99, 0x49, 0x7b, 0x7b, 0x35, 0x04, 0x6e, 0x31, 0x3e, 0xd4, 0x03, 0x4f, 0x26, 0x39, 0x32, 0xc0, + 0xdd, 0x58, 0x82, 0x4b, 0x45, 0xe5, 0x00, 0x5e, 0x8e, 0x39, 0x8c, 0x8b, 0xe7, 0x41, 0xca, 0x1e, + 0x1f, 0x88, 0x91, 0x4c, 0x2a, 0x26, 0xa1, 0xee, 0x58, 0xa4, 0x8d, 0x41, 0xcf, 0x1b, 0x1b, 0x83, + 0x3e, 0x9d, 0x63, 0xd0, 0x57, 0xa3, 0xc9, 0xbc, 0xd6, 0x89, 0xe5, 0x55, 0xc6, 0xce, 0x5f, 0x8e, + 0x2a, 0x79, 0x16, 0x43, 0xc4, 0x84, 0xa1, 0x20, 0x86, 0xfb, 0xaa, 0xa3, 0xa1, 0xd8, 0x2d, 0xa0, + 0xc9, 0xfe, 0x70, 0x15, 0xb1, 0xf4, 0x31, 0x4f, 0x09, 0xab, 0xca, 0xf2, 0xc1, 0x59, 0xee, 0x21, + 0x92, 0xc3, 0xee, 0x40, 0x3f, 0xb3, 0xf0, 0x81, 0xf1, 0x16, 0x30, 0x13, 0x9e, 0x12, 0xf9, 0x85, + 0xf8, 0xc0, 0x8e, 0xc4, 0xe1, 0xf3, 0x8e, 0x16, 0x23, 0xbd, 0x51, 0xd8, 0x11, 0x93, 0x64, 0x2a, + 0x2d, 0x8a, 0x0f, 0xec, 0x01, 0x05, 0x04, 0x2c, 0x8c, 0x3b, 0x6c, 0xd5, 0x31, 0xbf, 0xd8, 0x2e, + 0xa0, 0xdc, 0x46, 0x13, 0x04, 0xb1, 0x7d, 0xdd, 0x04, 0xf9, 0x01, 0x2f, 0x8c, 0x81, 0x61, 0x14, + 0x5b, 0xdf, 0xac, 0xd6, 0x95, 0xd7, 0x24, 0xe8, 0x20, 0xbf, 0x0c, 0x4b, 0x21, 0x2b, 0xc0, 0xf0, + 0x0e, 0xea, 0x9f, 0xc4, 0x7e, 0x72, 0x44, 0x7c, 0xde, 0x2d, 0xf3, 0xc8, 0xa9, 0x3b, 0x95, 0xd1, + 0xd5, 0x6f, 0xb4, 0x0e, 0x19, 0x67, 0x2e, 0x1a, 0xc7, 0xb7, 0x26, 0xbb, 0xb7, 0xa9, 0x30, 0x60, + 0xd9, 0x25, 0x41, 0x57, 0x06, 0x05, 0x34, 0x20, 0x48, 0x4e, 0x74, 0x21, 0x77, 0x0b, 0xc9, 0xc1, + 0x83, 0x89, 0x8e, 0xed, 0xc6, 0x99, 0x1e, 0xeb, 0xda, 0xe2, 0xb4, 0x29, 0x70, 0x13, 0xae, 0x0e, + 0x75, 0x5c, 0x1d, 0xda, 0x94, 0x38, 0x77, 0x3a, 0xb1, 0xb5, 0xcb, 0xfc, 0x83, 0x5e, 0x70, 0x10, + 0xf7, 0x10, 0x37, 0xd9, 0x03, 0xfd, 0xa9, 0xd6, 0xef, 0x52, 0x67, 0xfa, 0xe3, 0xb1, 0xdd, 0xf5, + 0x1b, 0x9b, 0x98, 0x18, 0x8e, 0x5f, 0x3a, 0xac, 0x32, 0xb5, 0x65, 0x98, 0x78, 0xf3, 0x7d, 0x75, + 0x38, 0x3e, 0x78, 0x21, 0x75, 0xe6, 0x58, 0xea, 0xdb, 0x8b, 0x60, 0xae, 0xc5, 0xc6, 0xb4, 0x9b, + 0xb6, 0x00, 0xa6, 0x28, 0xde, 0x91, 0x83, 0x0a, 0xac, 0xa5, 0xdf, 0x1d, 0x2f, 0xc6, 0x4a, 0x1b, + 0x6f, 0xe5, 0xcd, 0x76, 0xdb, 0xd8, 0x2a, 0x80, 0xf1, 0x0b, 0x83, 0xc6, 0x8e, 0xa3, 0x3c, 0xbb, + 0x7c, 0xfb, 0x69, 0xbb, 0x0e, 0x41, 0x57, 0xda, 0x04, 0xd4, 0x2a, 0x48, 0xae, 0x43, 0x90, 0xeb, + 0x8d, 0xcf, 0x0e, 0x1b, 0x3b, 0x8e, 0xf2, 0x08, 0x1f, 0x76, 0x03, 0x9f, 0x38, 0xb1, 0x14, 0x33, + 0xba, 0x3a, 0x47, 0x4e, 0xb6, 0x81, 0xf8, 0xcb, 0x64, 0xd2, 0x77, 0x9c, 0x36, 0x3a, 0xf6, 0x41, + 0xde, 0x09, 0xf3, 0x65, 0xe4, 0x3e, 0x16, 0xa7, 0x06, 0xba, 0x14, 0x8f, 0xed, 0x4a, 0x1c, 0x39, + 0x31, 0x72, 0xa0, 0x15, 0x12, 0xae, 0xb0, 0x97, 0x0f, 0x38, 0xb3, 0xbf, 0xce, 0x45, 0x73, 0xcb, + 0x7d, 0x91, 0xfa, 0xf7, 0x6c, 0xb1, 0x21, 0x6d, 0xaf, 0xe0, 0x5b, 0xee, 0x57, 0xf0, 0x05, 0x67, + 0x6c, 0x34, 0x9c, 0x40, 0xea, 0xe2, 0x8d, 0x3c, 0x81, 0xab, 0xd0, 0x38, 0x9c, 0xf6, 0xab, 0x36, + 0x4c, 0x00, 0x09, 0x27, 0x8c, 0xa1, 0x65, 0xf2, 0xa3, 0xf0, 0x34, 0xc0, 0xf8, 0xc9, 0x9e, 0xad, + 0xd5, 0xb5, 0x40, 0xe1, 0x96, 0x82, 0x03, 0xca, 0xa3, 0xa5, 0x8f, 0x8e, 0xf4, 0xec, 0x31, 0x86, + 0xa2, 0x2a, 0xed, 0x21, 0x06, 0xd0, 0xe4, 0x8d, 0xfe, 0x50, 0xa4, 0x05, 0x70, 0x47, 0x75, 0x65, + 0x98, 0xbc, 0x82, 0xcb, 0x74, 0xa5, 0x42, 0x72, 0x54, 0xc9, 0x8f, 0x39, 0x86, 0xb7, 0xe5, 0x07, + 0xf1, 0x9e, 0xc8, 0x31, 0x84, 0x0d, 0x89, 0xe7, 0x5c, 0x3f, 0x12, 0xef, 0x17, 0x10, 0x6a, 0xc0, + 0x7b, 0x8f, 0x23, 0x3a, 0xe6, 0xf2, 0x56, 0x99, 0x5c, 0x85, 0xfc, 0x5b, 0x22, 0x13, 0xa2, 0x21, + 0x1d, 0x43, 0x5a, 0xc4, 0xe7, 0x0f, 0x2c, 0x00, 0xe9, 0x32, 0x0f, 0x31, 0x20, 0x5a, 0x4e, 0x1c, + 0xe8, 0x07, 0x59, 0x72, 0x7c, 0x60, 0x30, 0xd1, 0x1b, 0x2b, 0xb9, 0x3a, 0xd4, 0x61, 0x42, 0xb5, + 0x3f, 0xe0, 0x8b, 0x68, 0x0b, 0x8c, 0xae, 0x2f, 0x21, 0x71, 0x68, 0xa2, 0xa3, 0x7d, 0x64, 0x7b, + 0x17, 0x41, 0x1d, 0x14, 0x69, 0x94, 0xf0, 0x8f, 0xa4, 0x5a, 0xb5, 0x5a, 0xa9, 0xae, 0x51, 0xb9, + 0x95, 0x94, 0x1d, 0x16, 0x74, 0xa5, 0x47, 0x40, 0xfb, 0x05, 0x69, 0x14, 0xc8, 0x91, 0x7d, 0x89, + 0xf6, 0x8b, 0x26, 0xb9, 0x8a, 0x13, 0xa4, 0x90, 0x5b, 0x81, 0xd1, 0x23, 0x79, 0x32, 0x40, 0x83, + 0x41, 0x93, 0x64, 0xee, 0x34, 0x76, 0x9c, 0x76, 0xa4, 0x53, 0xb9, 0x12, 0xdd, 0x44, 0x73, 0x76, + 0x5d, 0x89, 0x6e, 0x72, 0xbc, 0x27, 0xc9, 0xbe, 0xf6, 0x12, 0x4f, 0x04, 0x77, 0x21, 0x07, 0x3d, + 0x98, 0x76, 0x65, 0x77, 0x07, 0xbe, 0xfb, 0x85, 0x8d, 0x42, 0x76, 0x61, 0x25, 0xfc, 0x75, 0xf8, + 0x83, 0xea, 0x70, 0xc6, 0x35, 0x3b, 0xee, 0xc3, 0x03, 0x52, 0x9d, 0x88, 0xb9, 0x99, 0x64, 0xf0, + 0xdb, 0x8e, 0xfb, 0x2c, 0xc8, 0x19, 0xed, 0x7c, 0xe4, 0x77, 0x79, 0xd0, 0x49, 0x87, 0x0a, 0xc9, + 0xd6, 0x7d, 0x3a, 0x60, 0xc4, 0xf6, 0xf0, 0x2d, 0x19, 0x1e, 0xbc, 0x3a, 0xd4, 0x41, 0x34, 0x55, + 0xdc, 0x6e, 0x10, 0x0a, 0xa6, 0xad, 0xdb, 0xd8, 0x71, 0xc4, 0x81, 0x0d, 0xff, 0x07, 0x01, 0x15, + 0x38, 0xf7, 0x56, 0x2c, 0xb4, 0x30, 0x14, 0xce, 0x68, 0x63, 0xa1, 0x9a, 0x42, 0x34, 0x2e, 0xdc, + 0x52, 0x5f, 0xaf, 0x85, 0xc3, 0xd4, 0x27, 0x95, 0xfc, 0x34, 0x6b, 0x28, 0xb8, 0x80, 0x09, 0x27, + 0x03, 0x86, 0x99, 0x2c, 0x8d, 0x51, 0x0e, 0xd8, 0x7d, 0x92, 0x94, 0x43, 0x45, 0x76, 0xa2, 0x1a, + 0xe3, 0x01, 0x3b, 0x09, 0x3c, 0xdf, 0x69, 0xc1, 0x8d, 0x49, 0x46, 0x87, 0xc1, 0x74, 0xf1, 0xb1, + 0xf1, 0xd4, 0x3b, 0xf7, 0x16, 0x22, 0xf1, 0x5a, 0x8b, 0x8f, 0x61, 0x01, 0x69, 0x09, 0x1f, 0x33, + 0x56, 0x04, 0x8e, 0xad, 0x05, 0x0b, 0x18, 0x3b, 0xf3, 0x85, 0x1d, 0x2d, 0x02, 0x0a, 0x6f, 0x13, + 0x74, 0x65, 0xab, 0x1d, 0x2d, 0x6e, 0x74, 0xa0, 0x45, 0xc0, 0x57, 0x36, 0xb4, 0x98, 0x16, 0x21, + 0xae, 0xae, 0x52, 0x57, 0x56, 0xd7, 0x28, 0xab, 0xab, 0xbe, 0x1f, 0x42, 0x14, 0x7f, 0x6f, 0xa9, + 0x6e, 0x41, 0x39, 0xd8, 0xa0, 0x2b, 0x3e, 0x4b, 0x71, 0xbb, 0x36, 0x3e, 0xd0, 0x99, 0x3c, 0x73, + 0x8c, 0x3c, 0x2a, 0xc7, 0xb7, 0xc6, 0x63, 0xbb, 0xe2, 0x83, 0x83, 0xf1, 0xe1, 0xbd, 0xf0, 0x20, + 0x8f, 0x6c, 0x19, 0x76, 0x28, 0x76, 0x89, 0x32, 0x00, 0xe7, 0xca, 0x33, 0xda, 0x7a, 0x98, 0x0d, + 0xd4, 0xd5, 0xa1, 0x8e, 0x9a, 0x60, 0x44, 0xd5, 0x7c, 0x0d, 0x1f, 0x25, 0xfb, 0xda, 0x2d, 0x9d, + 0xeb, 0x0d, 0xe8, 0xf9, 0xf8, 0x17, 0xe8, 0x0f, 0x42, 0x1a, 0x45, 0x1f, 0x31, 0x4d, 0x72, 0xaa, + 0xfa, 0xc2, 0xcc, 0xb0, 0x88, 0x72, 0x50, 0x8c, 0xd7, 0x21, 0xc2, 0x50, 0x5e, 0x5b, 0x4b, 0x80, + 0x64, 0x21, 0x41, 0x2a, 0x89, 0xf6, 0x28, 0xe4, 0x9b, 0x62, 0x5c, 0x3c, 0x50, 0xb3, 0xf1, 0xa1, + 0x9e, 0xd4, 0xa9, 0x93, 0x46, 0xd7, 0x6e, 0xd8, 0x1a, 0x46, 0xd8, 0x80, 0xbe, 0x70, 0x91, 0x53, + 0x61, 0xf8, 0x03, 0xf1, 0x3e, 0x6f, 0xdb, 0x2f, 0x61, 0xbe, 0xc5, 0x3e, 0xdb, 0x38, 0xdb, 0x12, + 0x82, 0x56, 0x5d, 0xfc, 0x0d, 0xcc, 0xc3, 0xb4, 0xd0, 0x4e, 0x26, 0xd6, 0x83, 0xb5, 0x1a, 0x7f, + 0xfd, 0xac, 0xd5, 0xce, 0x9b, 0xc8, 0x5a, 0x95, 0x85, 0x75, 0xa5, 0x19, 0x05, 0x24, 0x0f, 0x94, + 0x21, 0x57, 0x12, 0x39, 0x32, 0xbe, 0xb9, 0x00, 0x41, 0xf8, 0x60, 0x77, 0xc1, 0x1b, 0xce, 0x74, + 0xf3, 0x04, 0xab, 0xe2, 0x42, 0x2a, 0x9f, 0x60, 0x5b, 0xed, 0xf9, 0x40, 0x6f, 0xcb, 0xa1, 0x5e, + 0xf7, 0x3f, 0x01, 0x26, 0x04, 0xb6, 0xe7, 0xce, 0x62, 0x42, 0x5a, 0x05, 0x5d, 0xd9, 0x24, 0xa0, + 0x3f, 0x95, 0xbc, 0x8e, 0x41, 0x7e, 0x63, 0x2c, 0xaf, 0xee, 0x4d, 0x79, 0x6f, 0x77, 0x64, 0xa3, + 0x59, 0x2b, 0x83, 0xc4, 0xf0, 0x62, 0x75, 0xd0, 0x26, 0x98, 0x5e, 0xeb, 0x7e, 0xb1, 0x96, 0xa6, + 0x8f, 0xcc, 0x6e, 0xbe, 0x55, 0xb9, 0x63, 0x7a, 0xab, 0xea, 0xec, 0x32, 0xb7, 0xe7, 0x75, 0x65, + 0x11, 0x7d, 0xab, 0x1e, 0x36, 0xff, 0x2b, 0xa2, 0x2f, 0xd4, 0xd5, 0xa1, 0x8e, 0x44, 0x6f, 0xd4, + 0x38, 0x7e, 0x0a, 0x98, 0xed, 0xd4, 0xf9, 0xd6, 0xd4, 0xa5, 0xed, 0x8f, 0x2d, 0x59, 0x72, 0xad, + 0x7c, 0xbc, 0x2e, 0xe4, 0xe5, 0x0b, 0x05, 0x0d, 0x96, 0xf4, 0x6d, 0x9d, 0x1d, 0x71, 0xc0, 0x73, + 0xf5, 0x92, 0xae, 0x3c, 0x64, 0x47, 0x1c, 0xd3, 0x19, 0x22, 0xb2, 0x65, 0x5d, 0x1f, 0x9b, 0x42, + 0x95, 0x44, 0xf1, 0x4f, 0xb7, 0x61, 0x5c, 0x0c, 0xe5, 0xf8, 0x40, 0x1f, 0x39, 0x98, 0x53, 0x83, + 0x4c, 0xae, 0x95, 0x38, 0x7b, 0x94, 0x0b, 0x36, 0xed, 0x71, 0x2b, 0xff, 0x6b, 0x36, 0x2a, 0x74, + 0x8f, 0x7d, 0x77, 0x5c, 0xcd, 0xb7, 0xc6, 0x70, 0x35, 0xc1, 0xc0, 0x18, 0x5f, 0xcd, 0x47, 0x8d, + 0x6f, 0xb6, 0xa5, 0xdb, 0x21, 0xbb, 0x5f, 0xc4, 0xed, 0xbe, 0xa9, 0x24, 0x61, 0x77, 0xda, 0x83, + 0xc9, 0xf8, 0x29, 0xfc, 0x56, 0xb9, 0x25, 0xde, 0xff, 0x3d, 0x0b, 0xcd, 0x51, 0xb5, 0x26, 0x3a, + 0xf0, 0xb2, 0x50, 0xb0, 0xe9, 0x96, 0x5c, 0xc0, 0x2a, 0xfb, 0x05, 0x5c, 0x6c, 0x62, 0x4c, 0x72, + 0x01, 0x67, 0x11, 0x62, 0x11, 0x53, 0x6f, 0x1c, 0xb1, 0x78, 0xbb, 0xae, 0x1c, 0x09, 0x65, 0x99, + 0x69, 0x9b, 0xe4, 0xb9, 0xec, 0x45, 0xb4, 0xb6, 0x1e, 0xaf, 0x3f, 0xc3, 0x03, 0xf8, 0xdf, 0xb2, + 0xd1, 0xfd, 0xde, 0x63, 0xde, 0x1d, 0xd7, 0x6d, 0xed, 0x18, 0xae, 0x1b, 0x9f, 0x99, 0x20, 0x3e, + 0xb8, 0xcb, 0xb1, 0x39, 0x77, 0xdc, 0x45, 0xa3, 0xb9, 0xed, 0x32, 0x1d, 0x0b, 0x4d, 0x6a, 0x9d, + 0x1c, 0xdc, 0xca, 0x1f, 0x31, 0x7b, 0x22, 0xf9, 0xb7, 0x0f, 0x1a, 0xf0, 0x6f, 0x5f, 0xf1, 0x3f, + 0x64, 0xa3, 0xc2, 0x8a, 0x46, 0xcd, 0x17, 0x20, 0x66, 0x7a, 0xb7, 0xe4, 0xb6, 0xbd, 0x6a, 0xbf, + 0x6d, 0x4f, 0xf2, 0x2a, 0x26, 0xb8, 0x6d, 0x60, 0x97, 0x68, 0x7c, 0x7a, 0x38, 0xb1, 0xe7, 0xfc, + 0xed, 0xbf, 0x73, 0xdf, 0x53, 0x9e, 0x56, 0xf6, 0x81, 0xae, 0x44, 0x50, 0x48, 0x4a, 0xbb, 0xd1, + 0x72, 0x09, 0x0f, 0x8c, 0xf1, 0x81, 0x3e, 0xfe, 0xf3, 0x29, 0x11, 0xeb, 0x75, 0x75, 0xed, 0x86, + 0x82, 0xb0, 0x21, 0xbc, 0xc1, 0xe0, 0xee, 0x1c, 0x74, 0x9f, 0xc7, 0xa4, 0x77, 0xc7, 0x85, 0x7e, + 0x65, 0x0c, 0x17, 0xda, 0x16, 0xa9, 0x08, 0x06, 0xe9, 0xd9, 0x0a, 0xbb, 0x77, 0xa7, 0x5c, 0xe2, + 0x4e, 0x41, 0x57, 0xda, 0x05, 0xb4, 0x4d, 0x90, 0xd2, 0x1f, 0x85, 0xec, 0xe7, 0x4d, 0xa6, 0xad, + 0xbb, 0xbb, 0xe7, 0x6c, 0x3c, 0xb6, 0x2b, 0xd5, 0x7f, 0x02, 0x28, 0xa4, 0xf8, 0x40, 0xcc, 0x18, + 0xda, 0x9c, 0xe8, 0x3b, 0xc1, 0x42, 0xe6, 0x98, 0x55, 0x40, 0xf9, 0x0e, 0xb6, 0xa6, 0xb6, 0x0c, + 0xc3, 0x5d, 0xe7, 0x3f, 0x9f, 0xdc, 0xf5, 0xbe, 0xcf, 0x8d, 0x81, 0x01, 0x70, 0x4f, 0x2b, 0xfe, + 0x2f, 0xd9, 0x68, 0xb6, 0x6b, 0x21, 0x6b, 0xe5, 0x1f, 0xfa, 0xce, 0xbf, 0x6e, 0x17, 0xc7, 0x94, + 0x9b, 0x0c, 0x2c, 0xb9, 0xf3, 0x8b, 0x33, 0xde, 0x79, 0x2c, 0x2a, 0xb9, 0x94, 0xdc, 0x73, 0xfa, + 0xd1, 0xd2, 0x47, 0x8d, 0xb6, 0x6d, 0x46, 0xfb, 0x1f, 0x1c, 0x62, 0x99, 0xbb, 0x00, 0x01, 0x7c, + 0xa4, 0x2b, 0x1b, 0x51, 0x44, 0xca, 0xb0, 0xef, 0x3f, 0x18, 0x0a, 0xd8, 0x9b, 0x83, 0xe6, 0x78, + 0x4e, 0x7b, 0x0f, 0x09, 0xdc, 0x42, 0x24, 0x60, 0xd9, 0x92, 0x67, 0x3a, 0x8c, 0x5b, 0x89, 0x06, + 0xfe, 0x2a, 0x0b, 0x52, 0x52, 0x79, 0x63, 0x81, 0xdb, 0x64, 0xa0, 0x2b, 0x7e, 0x8c, 0xf2, 0x82, + 0x2d, 0x91, 0xe6, 0x96, 0x08, 0x01, 0xae, 0x75, 0xba, 0xf2, 0x8e, 0x44, 0x8a, 0xe4, 0x35, 0x60, + 0xce, 0x68, 0x59, 0x2c, 0x75, 0xf5, 0x8f, 0x44, 0xdb, 0x8d, 0xe8, 0x50, 0xd1, 0x07, 0xfe, 0x06, + 0x6d, 0x81, 0xd1, 0x7a, 0x7a, 0x64, 0xcb, 0x69, 0xa8, 0x2d, 0x29, 0x2d, 0x5a, 0xe7, 0x0b, 0xfb, + 0xeb, 0x17, 0x18, 0x47, 0x62, 0x89, 0xde, 0xaf, 0x49, 0x21, 0x93, 0x99, 0xf2, 0xa5, 0x2a, 0x19, + 0xbe, 0xec, 0x59, 0x5d, 0x59, 0x8a, 0x9e, 0x92, 0x66, 0x39, 0x77, 0x25, 0x9d, 0x81, 0x30, 0xaf, + 0x91, 0x2b, 0xfe, 0x5f, 0xb3, 0xd1, 0x6c, 0xaf, 0xed, 0xbc, 0x3b, 0x6e, 0xd9, 0x2a, 0x9b, 0x6a, + 0xe7, 0x81, 0xb4, 0xc6, 0x4f, 0x38, 0x29, 0x34, 0x76, 0x58, 0x84, 0xeb, 0x36, 0x15, 0xa3, 0x1b, + 0x8f, 0xb4, 0xee, 0xb7, 0xf1, 0xaa, 0x11, 0xfe, 0x28, 0xc3, 0x69, 0xc8, 0x0f, 0x13, 0x75, 0xd4, + 0x67, 0x5f, 0x59, 0xb4, 0x33, 0x75, 0xcb, 0x30, 0xbf, 0xc8, 0x61, 0xb0, 0x08, 0x72, 0xa1, 0xbf, + 0x9a, 0x80, 0x26, 0xd9, 0x36, 0x42, 0x5c, 0x0a, 0x3e, 0xbe, 0xec, 0x7e, 0xe0, 0x33, 0x22, 0x45, + 0xf2, 0x34, 0x22, 0x6e, 0x8a, 0xed, 0xf6, 0x13, 0xdf, 0x97, 0xea, 0x4a, 0x95, 0x54, 0x8a, 0xcf, + 0xa0, 0x71, 0xfe, 0x40, 0x40, 0x0b, 0x55, 0xd7, 0x5a, 0xf9, 0xfd, 0xee, 0x97, 0x68, 0x99, 0x3c, + 0x95, 0x80, 0xd6, 0xb6, 0xd6, 0xe4, 0xf0, 0xee, 0xf8, 0xc0, 0x60, 0x75, 0xad, 0x4a, 0xeb, 0xc4, + 0x37, 0xd1, 0x44, 0x3a, 0xa0, 0x15, 0x8d, 0xa3, 0xfc, 0x69, 0x5d, 0x79, 0x42, 0xb2, 0x55, 0xc8, + 0xf3, 0x13, 0xbd, 0x31, 0xe3, 0xf0, 0x4e, 0x72, 0x38, 0x34, 0x34, 0x22, 0x5c, 0x9b, 0xd4, 0x96, + 0x61, 0x62, 0x4a, 0x65, 0xeb, 0x23, 0xfe, 0x0c, 0x65, 0x57, 0xd4, 0xae, 0xc1, 0xc8, 0x76, 0x12, + 0xc0, 0x8d, 0xf9, 0x9b, 0x9a, 0x5d, 0x56, 0xd4, 0xae, 0x21, 0xb0, 0x66, 0x96, 0x8a, 0x8b, 0x50, + 0x76, 0x93, 0xd6, 0x44, 0xd2, 0xf2, 0x61, 0xa0, 0x30, 0x7f, 0x53, 0xbf, 0x4b, 0x63, 0x5b, 0xab, + 0xd1, 0x77, 0x80, 0xb6, 0x6f, 0xd2, 0x9a, 0xc4, 0xa5, 0x28, 0x7b, 0x79, 0xed, 0x1a, 0x2b, 0x15, + 0xdf, 0x43, 0x92, 0xf9, 0x5b, 0xbe, 0x1f, 0xda, 0x2f, 0xa7, 0x83, 0xf3, 0x2b, 0x5c, 0xa2, 0x9a, + 0x4d, 0xc4, 0x2e, 0x01, 0xe5, 0x85, 0xb1, 0xe2, 0x8b, 0x48, 0xd4, 0x4d, 0x82, 0x5a, 0x22, 0x45, + 0xf2, 0xfb, 0xe4, 0x10, 0xb1, 0xe6, 0x82, 0x8e, 0xd1, 0x96, 0x38, 0x7a, 0x31, 0xd1, 0x79, 0xc6, + 0x16, 0x15, 0x80, 0x46, 0x50, 0xbf, 0x3a, 0xd4, 0x7e, 0x75, 0xa8, 0x83, 0xd8, 0x40, 0x95, 0x16, + 0x55, 0x56, 0xad, 0xa8, 0x5a, 0x5d, 0x85, 0xff, 0xac, 0x50, 0xab, 0x94, 0xd5, 0xf8, 0xaf, 0x65, + 0x4a, 0xf5, 0x8a, 0xaa, 0xca, 0xd2, 0xa2, 0xea, 0x9a, 0xea, 0xd5, 0xd5, 0xca, 0x8a, 0xea, 0x37, + 0x94, 0xd5, 0xd5, 0xab, 0x6a, 0x54, 0x32, 0xa7, 0xa8, 0xa0, 0xbc, 0x8f, 0x83, 0x01, 0x8d, 0xc9, + 0xe3, 0x4b, 0x4c, 0x16, 0x26, 0xc7, 0x2c, 0xa2, 0x36, 0x9c, 0x46, 0x57, 0x7f, 0x72, 0xcf, 0x69, + 0xa3, 0x23, 0xe6, 0xdc, 0x71, 0xd2, 0x51, 0xfc, 0xad, 0x1d, 0xc5, 0x42, 0x94, 0xae, 0x37, 0x74, + 0xe5, 0xe7, 0x76, 0x14, 0xfb, 0x32, 0x21, 0x0a, 0x68, 0x32, 0x74, 0x1e, 0xe3, 0x62, 0x9b, 0x38, + 0x36, 0xf2, 0x82, 0xf8, 0x60, 0x2b, 0xd5, 0x4c, 0x1b, 0xc3, 0xba, 0x71, 0xf6, 0x70, 0x3c, 0xb6, + 0x8b, 0x0d, 0x55, 0x62, 0x47, 0xb4, 0xcb, 0x78, 0x32, 0x0f, 0x59, 0xe9, 0xea, 0x38, 0x32, 0xaf, + 0xd0, 0x31, 0x33, 0x4b, 0x00, 0xc7, 0x93, 0x75, 0x8f, 0xa1, 0xec, 0xb5, 0xb5, 0x15, 0x24, 0x6c, + 0x17, 0x86, 0x62, 0xf3, 0x37, 0x8d, 0x48, 0xc0, 0xfa, 0xae, 0xad, 0xad, 0x28, 0xaa, 0xae, 0x54, + 0xcd, 0x3a, 0xf1, 0x4d, 0x66, 0x4c, 0x3b, 0x91, 0xc6, 0xe4, 0x7d, 0x89, 0x19, 0xd3, 0x3e, 0xc5, + 0x77, 0x04, 0x33, 0x5a, 0x4b, 0xfb, 0x74, 0xf1, 0x92, 0x71, 0xc1, 0x7c, 0x10, 0x13, 0x17, 0xce, + 0x1a, 0xbd, 0xe7, 0xcc, 0x8d, 0xdd, 0x71, 0xd4, 0xb8, 0x70, 0x38, 0xd9, 0xd7, 0xce, 0x8c, 0x6c, + 0x6b, 0x50, 0x5e, 0xb3, 0x2f, 0x1c, 0xfe, 0xa0, 0x81, 0xb8, 0xc3, 0x43, 0x18, 0x35, 0x28, 0x92, + 0x4b, 0x1c, 0x0e, 0xfc, 0xd4, 0xb2, 0x10, 0xe8, 0x4f, 0x30, 0x8b, 0x4a, 0x9d, 0xfa, 0xdc, 0xe8, + 0xdf, 0xa6, 0x92, 0x2e, 0xe2, 0xdb, 0x08, 0x9f, 0x2a, 0x76, 0x8c, 0x9f, 0x54, 0x5e, 0xad, 0x2b, + 0xcb, 0x24, 0x72, 0x80, 0x94, 0xf1, 0x66, 0x07, 0x0d, 0xb9, 0x3f, 0xb9, 0x03, 0x79, 0xb6, 0x88, + 0x85, 0x03, 0x05, 0x41, 0x35, 0xd0, 0xb1, 0xf1, 0xd8, 0xae, 0x0a, 0x45, 0xc5, 0xc3, 0x8a, 0x0a, + 0xca, 0x6f, 0xd0, 0x36, 0xfa, 0x4d, 0xe4, 0x40, 0x3c, 0xda, 0x1f, 0xd6, 0x95, 0x62, 0x89, 0x15, + 0xca, 0x33, 0x2b, 0x94, 0x22, 0x7a, 0x45, 0x53, 0x67, 0xbe, 0x33, 0x8e, 0x6f, 0xaf, 0xae, 0x34, + 0xba, 0x2e, 0xa8, 0xac, 0x85, 0xf8, 0x5b, 0x0b, 0x21, 0xa8, 0x41, 0x16, 0x22, 0xfd, 0x75, 0x5d, + 0x59, 0x23, 0xd9, 0x2a, 0xe4, 0x2a, 0x42, 0x56, 0x9c, 0xd2, 0x53, 0xed, 0x26, 0x1e, 0x58, 0xa9, + 0xd4, 0xad, 0xae, 0x52, 0x4b, 0x8b, 0x7e, 0xbe, 0x4a, 0x7d, 0xd5, 0xfc, 0xbf, 0x6a, 0x75, 0x45, + 0x65, 0x69, 0x11, 0x94, 0xbe, 0x83, 0x7f, 0x28, 0x2b, 0x56, 0x50, 0x2b, 0xfd, 0xf8, 0x40, 0x0c, + 0xda, 0xa9, 0xb6, 0x41, 0xc5, 0xdf, 0xa3, 0x49, 0x2d, 0x81, 0xba, 0xfa, 0xf7, 0xb4, 0x86, 0x96, + 0x46, 0x1c, 0x27, 0x75, 0x2a, 0xde, 0x28, 0x3c, 0xbd, 0xbd, 0x46, 0xae, 0x4c, 0x7d, 0xb3, 0xc5, + 0x88, 0x9d, 0x84, 0x7b, 0x6a, 0x3d, 0xc5, 0xd1, 0xa1, 0x25, 0xa9, 0x63, 0xa7, 0x93, 0xc7, 0x63, + 0x46, 0xd7, 0xe6, 0xf8, 0xc0, 0x2e, 0x68, 0x74, 0x75, 0xa8, 0xe3, 0x31, 0x28, 0xc5, 0x51, 0x51, + 0xad, 0x0a, 0xd5, 0x3e, 0xa8, 0xf8, 0x34, 0xca, 0x37, 0xc1, 0x9a, 0xf9, 0xc3, 0x8f, 0x87, 0x50, + 0x5c, 0xac, 0x50, 0x9e, 0x48, 0x4e, 0x09, 0xec, 0xc5, 0x59, 0x79, 0xf1, 0xe5, 0x6c, 0xc8, 0x0f, + 0x7b, 0x37, 0x72, 0xc6, 0xcb, 0x6c, 0xcf, 0xf5, 0x74, 0xaf, 0xe7, 0xfa, 0x4e, 0x7f, 0xa5, 0x57, + 0xeb, 0xca, 0x6b, 0x68, 0x95, 0x94, 0xf6, 0x08, 0x6e, 0xec, 0x8d, 0xfe, 0x77, 0xd9, 0xe8, 0x7e, + 0xf0, 0x58, 0x87, 0x8c, 0x0f, 0xfe, 0xc0, 0x4a, 0xdf, 0x87, 0x75, 0xfe, 0x8f, 0xb5, 0xeb, 0xf5, + 0x96, 0x76, 0xb1, 0x88, 0x5e, 0x4c, 0xae, 0x1d, 0xa3, 0xbe, 0x8e, 0xc6, 0x35, 0xf9, 0x03, 0xe6, + 0x64, 0x18, 0x06, 0x26, 0x95, 0xbf, 0x60, 0xbe, 0xc9, 0xb4, 0x4c, 0x2e, 0x89, 0x5f, 0x3a, 0x93, + 0xd8, 0x73, 0x31, 0xc0, 0x79, 0xdd, 0xf9, 0x48, 0x18, 0x1c, 0x7f, 0x60, 0x3d, 0xd8, 0x5d, 0xc6, + 0x07, 0x76, 0x8e, 0x1c, 0xec, 0xa6, 0x49, 0x6c, 0x69, 0x57, 0x3c, 0x32, 0x7c, 0x06, 0x06, 0x11, + 0x36, 0x32, 0x94, 0x8d, 0x71, 0xe4, 0x1d, 0xb6, 0x91, 0xa1, 0xab, 0xf8, 0x92, 0x8b, 0xad, 0x9d, + 0x8f, 0x6f, 0x0f, 0x63, 0x6b, 0x27, 0x02, 0x5b, 0x1b, 0x8f, 0xc5, 0x8c, 0xdd, 0x07, 0xac, 0xc4, + 0xf9, 0x16, 0x67, 0xfb, 0xb6, 0xae, 0xbc, 0x81, 0x5e, 0x97, 0x32, 0xee, 0xba, 0x2c, 0xc1, 0x0a, + 0xd9, 0xa6, 0x26, 0x7a, 0xa3, 0xc6, 0x37, 0x5d, 0xa0, 0xc8, 0x22, 0xf9, 0x6e, 0xce, 0x5c, 0x1c, + 0x39, 0xd8, 0x3d, 0xf2, 0xd9, 0x21, 0x3b, 0x43, 0x5b, 0xdc, 0x93, 0x8d, 0x1e, 0x48, 0x33, 0xf4, + 0xdd, 0x71, 0x55, 0x3d, 0xae, 0x58, 0xce, 0x2d, 0xba, 0x62, 0xef, 0xe8, 0xca, 0x5b, 0xe8, 0x0d, + 0x29, 0xf3, 0xfe, 0xc9, 0xcf, 0x8c, 0xfd, 0x6c, 0x98, 0xaa, 0x0e, 0xbe, 0xb1, 0xb8, 0xcb, 0x7e, + 0x38, 0x4a, 0x78, 0xb5, 0xbf, 0x49, 0x53, 0x7d, 0x81, 0xf5, 0xb7, 0xe2, 0xba, 0x6d, 0x44, 0x28, + 0x42, 0xa7, 0x03, 0x41, 0xb2, 0x87, 0xd7, 0x06, 0x5b, 0x10, 0x18, 0x4c, 0x70, 0x3d, 0x64, 0xc9, + 0x38, 0xd3, 0x93, 0xd8, 0x7f, 0x1e, 0x8c, 0x3a, 0xc8, 0x57, 0x72, 0x16, 0x8b, 0xb6, 0xac, 0x15, + 0x5c, 0x3f, 0xf3, 0xc1, 0x61, 0x57, 0x26, 0x9b, 0x7b, 0x70, 0xbc, 0xaf, 0x0c, 0x77, 0x53, 0x48, + 0xba, 0xd9, 0xcc, 0x3b, 0x26, 0xcf, 0x73, 0x84, 0xe2, 0x80, 0x55, 0x26, 0xda, 0xbf, 0x48, 0x0e, + 0x7d, 0x91, 0xec, 0xdb, 0x97, 0xdc, 0x7b, 0xc2, 0x29, 0xf2, 0xe1, 0x16, 0x57, 0xbc, 0x3f, 0x1b, + 0xcd, 0x4d, 0x37, 0xfe, 0xbd, 0xfb, 0x32, 0xca, 0x7d, 0x79, 0x53, 0x57, 0x5e, 0x47, 0x6b, 0xa5, + 0x51, 0x36, 0x50, 0x7e, 0x62, 0x7d, 0x86, 0x23, 0xa2, 0x56, 0xa0, 0xe6, 0x41, 0xd9, 0xee, 0xca, + 0x3f, 0x0a, 0xe8, 0xa1, 0xd5, 0x21, 0x5f, 0x20, 0xcc, 0xba, 0xad, 0x0e, 0xf2, 0x61, 0xbd, 0xe8, + 0x8d, 0x69, 0xf0, 0xba, 0x31, 0xe5, 0x26, 0x65, 0x6e, 0xbb, 0x31, 0x33, 0xb9, 0x1f, 0x9c, 0x69, + 0x0f, 0x8d, 0x45, 0x3d, 0xca, 0xe5, 0xa1, 0xce, 0x7c, 0x63, 0x59, 0x91, 0x3c, 0x8b, 0x8d, 0x9f, + 0x1a, 0xfe, 0x3a, 0xd1, 0xf9, 0x19, 0x7c, 0x96, 0x53, 0xf4, 0x58, 0xbc, 0x2d, 0x1b, 0xcd, 0xcf, + 0x3c, 0xdc, 0xdd, 0x01, 0x80, 0x8d, 0x28, 0x3f, 0x42, 0xc3, 0xb1, 0xe5, 0x8c, 0x21, 0x1c, 0x1b, + 0xd6, 0xe0, 0xb3, 0x2e, 0xf2, 0x43, 0xf4, 0x2f, 0xd8, 0x2c, 0x87, 0x79, 0x57, 0xaa, 0xff, 0x64, + 0x62, 0x4b, 0xab, 0xca, 0x9a, 0xd3, 0x83, 0x18, 0xd3, 0xce, 0xc9, 0xf3, 0x1d, 0x27, 0x11, 0x1f, + 0x88, 0xf1, 0x83, 0x13, 0x48, 0xdb, 0x6a, 0xc7, 0xca, 0x95, 0x5a, 0xd8, 0x1f, 0xd2, 0x1a, 0x6e, + 0x11, 0x11, 0x54, 0x81, 0x53, 0x49, 0xd1, 0x09, 0x09, 0x21, 0x34, 0x4f, 0x57, 0xe6, 0x4a, 0x7c, + 0xb9, 0x3c, 0xc5, 0x41, 0xb2, 0xa8, 0x7c, 0xad, 0xf8, 0x82, 0x0b, 0xc5, 0x16, 0x67, 0xa4, 0x4a, + 0x72, 0x42, 0xb6, 0x20, 0x21, 0x2c, 0xf2, 0x6a, 0xe6, 0x6d, 0x90, 0x5f, 0x72, 0xbd, 0x7c, 0x47, + 0x12, 0xbd, 0x9f, 0x5a, 0x27, 0xb6, 0xf7, 0x9b, 0x52, 0x78, 0x17, 0x8c, 0xf6, 0xce, 0xf8, 0xa5, + 0x43, 0xa9, 0xfe, 0x4d, 0x10, 0x77, 0x22, 0x3e, 0x10, 0x4d, 0x6d, 0xff, 0x36, 0x11, 0x3d, 0xe5, + 0xc4, 0xc4, 0xfc, 0x47, 0x14, 0x77, 0xdb, 0x51, 0xb1, 0x6d, 0xfe, 0x7b, 0xa8, 0x78, 0x6c, 0xdc, + 0x81, 0xc7, 0x06, 0x9a, 0xa7, 0xc5, 0x2e, 0xc4, 0x42, 0x07, 0x26, 0x86, 0x13, 0x64, 0xc7, 0xe7, + 0xa4, 0x57, 0xf6, 0xe5, 0x78, 0xdd, 0x0c, 0x18, 0xf1, 0x07, 0xbf, 0x19, 0x2b, 0xd8, 0xcd, 0xc0, + 0x36, 0x96, 0x70, 0x33, 0x20, 0x8e, 0x25, 0x57, 0x2e, 0x17, 0xc2, 0x37, 0x38, 0x84, 0xcc, 0x89, + 0xbd, 0xdf, 0xa8, 0x7c, 0x33, 0xb1, 0xd2, 0x75, 0x45, 0x16, 0x98, 0x97, 0xcc, 0xba, 0x22, 0x22, + 0x80, 0x6e, 0xc6, 0x8b, 0x22, 0xee, 0x15, 0x50, 0x5e, 0x93, 0x2f, 0xd0, 0xe2, 0x6b, 0x24, 0x46, + 0xc2, 0xbf, 0xd3, 0x95, 0x8f, 0x25, 0x52, 0x24, 0x37, 0x83, 0xfb, 0x03, 0x3f, 0x50, 0x29, 0x3d, + 0x41, 0x67, 0x85, 0xc9, 0xa5, 0x6f, 0xea, 0x81, 0xfb, 0x61, 0xc2, 0x60, 0x34, 0x0a, 0xea, 0x87, + 0xab, 0x43, 0x1d, 0xc6, 0xd9, 0xbd, 0x26, 0x73, 0x8f, 0xe3, 0x06, 0x9a, 0x04, 0x65, 0xdf, 0x89, + 0x91, 0x2f, 0x71, 0xe8, 0x21, 0x6c, 0xdc, 0x0c, 0x03, 0x8e, 0x6c, 0xef, 0x4c, 0xf5, 0xef, 0x55, + 0xc9, 0xcc, 0x65, 0x01, 0x5d, 0xd9, 0x80, 0xfc, 0x52, 0xe6, 0xc3, 0x72, 0x91, 0x4a, 0xee, 0xfb, + 0x9b, 0xee, 0x82, 0xd6, 0x60, 0x96, 0xd1, 0xd2, 0x91, 0xfd, 0xb3, 0xe7, 0x5d, 0xe5, 0x41, 0xed, + 0x4e, 0xbf, 0xab, 0xb5, 0x63, 0x50, 0x93, 0xf1, 0xb9, 0x97, 0x2c, 0x35, 0x19, 0xe7, 0x0f, 0x7b, + 0xa7, 0x28, 0xcb, 0x7e, 0x98, 0xdb, 0x7f, 0x59, 0x40, 0x0f, 0x56, 0xe1, 0x18, 0x16, 0xac, 0x07, + 0x8d, 0x2b, 0x7b, 0x0b, 0xee, 0x3f, 0xfd, 0xa8, 0xd1, 0x96, 0x20, 0xcf, 0x85, 0x10, 0x1c, 0x16, + 0x02, 0xa0, 0x0c, 0x0a, 0xd8, 0x3c, 0x3b, 0xa8, 0xae, 0xdd, 0xd9, 0xa8, 0x28, 0xfd, 0x88, 0xf7, + 0xde, 0x99, 0x51, 0x20, 0xad, 0x4e, 0x57, 0x6a, 0x51, 0x8d, 0x34, 0xea, 0x16, 0xca, 0x52, 0xe6, + 0x53, 0xe1, 0xbf, 0xab, 0xf8, 0x6f, 0x04, 0x54, 0x54, 0xe9, 0x0f, 0xdf, 0x36, 0x48, 0x5b, 0xa3, + 0x2b, 0x2a, 0xaa, 0x95, 0x46, 0x5d, 0x83, 0x3c, 0xd7, 0x68, 0x3d, 0x37, 0xb2, 0xbf, 0x6f, 0x8c, + 0xa0, 0xf6, 0x49, 0x36, 0x9a, 0x97, 0x61, 0xc8, 0x7b, 0xb0, 0x36, 0x36, 0xac, 0x36, 0xfa, 0x1e, + 0xca, 0x52, 0xe6, 0x73, 0xb1, 0x01, 0xdb, 0x3f, 0x23, 0x34, 0x15, 0xbc, 0xf7, 0x4d, 0x1c, 0x4f, + 0xa1, 0xeb, 0x77, 0x28, 0x3f, 0xe2, 0x0b, 0x6f, 0xc0, 0x0a, 0x42, 0x16, 0xba, 0xe8, 0x97, 0x12, + 0x2b, 0x94, 0x55, 0xc0, 0xf5, 0x2c, 0x81, 0x1a, 0x28, 0x58, 0x68, 0x26, 0x73, 0xbc, 0x11, 0x57, + 0x87, 0x3a, 0xa8, 0x33, 0xf0, 0xea, 0xa0, 0x55, 0xc6, 0x19, 0xe7, 0x2f, 0x0b, 0x05, 0x9b, 0x48, + 0x45, 0xb2, 0xaf, 0x5d, 0x65, 0xa3, 0x8b, 0xeb, 0x99, 0xba, 0x0e, 0xce, 0x74, 0x15, 0x3e, 0x18, + 0xa2, 0xae, 0x9b, 0x48, 0xa6, 0xc6, 0x6a, 0x80, 0x6b, 0xe5, 0x8f, 0x87, 0x1e, 0x53, 0x27, 0x32, + 0x2d, 0x5b, 0x75, 0xcd, 0x72, 0x75, 0x1c, 0xd1, 0xcc, 0xa9, 0xe3, 0xea, 0xd6, 0x54, 0x54, 0x54, + 0xd5, 0xd5, 0xa9, 0x79, 0xa0, 0x8d, 0x53, 0xc7, 0xad, 0xae, 0x5e, 0x59, 0xb5, 0x6a, 0xcd, 0x6a, + 0xa6, 0x86, 0xfb, 0xa5, 0xc3, 0xa5, 0x0d, 0xf2, 0x6c, 0x33, 0xe8, 0x79, 0x8a, 0x58, 0x3f, 0xe0, + 0x28, 0x7f, 0x4c, 0xbb, 0x98, 0xd8, 0x71, 0x62, 0x64, 0xcf, 0xc1, 0xc4, 0xfe, 0xf3, 0xf1, 0x81, + 0x18, 0x00, 0x56, 0xa2, 0xab, 0x3b, 0x79, 0x3c, 0x66, 0x05, 0x2f, 0x63, 0x10, 0xf6, 0x04, 0xca, + 0x0d, 0x47, 0x7c, 0xa1, 0x08, 0x11, 0x8e, 0xce, 0xd5, 0x95, 0x39, 0x12, 0x94, 0xc8, 0x22, 0x09, + 0x4e, 0xd9, 0xdd, 0x6f, 0x9e, 0xcd, 0xfe, 0xf3, 0x23, 0xfb, 0xbf, 0x55, 0xa1, 0x4a, 0x5c, 0x84, + 0xb2, 0xb5, 0x40, 0x03, 0x71, 0x7b, 0x02, 0xc5, 0xa8, 0x16, 0x68, 0xa0, 0x3d, 0xcc, 0x83, 0x3b, + 0x74, 0x84, 0xf4, 0x30, 0x2b, 0xc4, 0x15, 0x68, 0x92, 0xf6, 0xa1, 0x56, 0xdf, 0x62, 0xc2, 0xc9, + 0x6a, 0x7f, 0x93, 0xc6, 0xab, 0x48, 0xed, 0x35, 0x74, 0x0c, 0x12, 0xb7, 0x10, 0xc6, 0xb0, 0x37, + 0x11, 0xd7, 0xa0, 0x09, 0xf5, 0x2d, 0xa1, 0x90, 0x16, 0x88, 0xd4, 0x45, 0xb4, 0x66, 0xa2, 0x30, + 0x7d, 0x5c, 0x57, 0x96, 0x48, 0x7c, 0xb9, 0x3c, 0x8f, 0x8c, 0xd4, 0xf7, 0xb9, 0xd1, 0x7b, 0x1a, + 0xc6, 0x63, 0xd4, 0x19, 0x51, 0x96, 0xf0, 0xed, 0xc5, 0xd7, 0xd0, 0xc4, 0x70, 0x44, 0x6b, 0xae, + 0x33, 0x21, 0x2c, 0x50, 0xaf, 0xe1, 0xcc, 0x46, 0xe3, 0xcb, 0x17, 0xea, 0x4a, 0xb1, 0x64, 0xab, + 0x70, 0x2c, 0x11, 0x8f, 0x77, 0xad, 0x3c, 0x57, 0x17, 0xb2, 0xf2, 0x05, 0xd5, 0xd6, 0x52, 0x3c, + 0x28, 0x98, 0xdb, 0xab, 0x35, 0xd3, 0x88, 0xe4, 0xa5, 0xde, 0xd9, 0x17, 0x38, 0xc0, 0x5e, 0x64, + 0x2e, 0x85, 0xc4, 0xe6, 0x5e, 0xa3, 0x2b, 0x2f, 0xff, 0xff, 0xec, 0xfd, 0x0b, 0x74, 0x14, 0xc7, + 0xb6, 0x18, 0x0c, 0x9f, 0x1e, 0x49, 0x20, 0x15, 0xe2, 0xd5, 0x06, 0x2c, 0x8b, 0xd7, 0x78, 0x8c, + 0x6d, 0x31, 0x96, 0x10, 0x34, 0xf8, 0x25, 0x1b, 0xdb, 0x2d, 0x09, 0x38, 0xb2, 0x79, 0xc8, 0xc3, + 0xe3, 0x9c, 0x63, 0x1f, 0x1f, 0x3c, 0xcc, 0x34, 0x62, 0x0e, 0xd2, 0xcc, 0x9c, 0x99, 0x91, 0x6c, + 0xf0, 0x3d, 0xf7, 0x17, 0x58, 0x02, 0xc9, 0x08, 0x04, 0x6d, 0x1e, 0x46, 0x16, 0x2f, 0x1b, 0x0c, + 0xb6, 0x91, 0x04, 0xc6, 0xc6, 0x42, 0x12, 0xe6, 0xde, 0x95, 0x7b, 0xf3, 0xe7, 0xbb, 0xb9, 0x37, + 0xb9, 0x71, 0x72, 0x73, 0xb3, 0x92, 0x2f, 0x39, 0xc9, 0xf2, 0xf4, 0xcc, 0x28, 0xdf, 0x97, 0x45, + 0xf2, 0xad, 0xac, 0x6f, 0xe5, 0x73, 0x1e, 0xdf, 0xb7, 0xaa, 0x76, 0x55, 0x77, 0xf5, 0x74, 0xf7, + 0x48, 0xf2, 0x1b, 0x1f, 0xaf, 0xe5, 0x65, 0x34, 0x55, 0xbb, 0xaa, 0xab, 0x76, 0xed, 0xbd, 0x6b, + 0xd7, 0xae, 0x5d, 0x7b, 0x7b, 0xa1, 0xbd, 0xf4, 0x34, 0x7c, 0x13, 0xb2, 0x12, 0xc3, 0x37, 0xb9, + 0x87, 0x5c, 0xc3, 0x99, 0xf7, 0xf6, 0xc0, 0xbd, 0x1b, 0x14, 0x82, 0x7f, 0x0c, 0x56, 0x4d, 0x47, + 0xf6, 0x6a, 0x83, 0x83, 0xa9, 0x13, 0xd7, 0xbf, 0xac, 0x9e, 0xdc, 0x23, 0xe4, 0x17, 0x0a, 0x33, + 0x66, 0xf9, 0xa0, 0x47, 0xf1, 0x65, 0xeb, 0xfd, 0x68, 0x35, 0x09, 0x30, 0x6c, 0xdc, 0x8f, 0xea, + 0x13, 0x35, 0x58, 0x7f, 0x22, 0xe1, 0xbd, 0x5e, 0xe0, 0xc3, 0x01, 0xc1, 0xfd, 0xe9, 0x93, 0xe4, + 0x0b, 0x46, 0x38, 0x20, 0xf3, 0x17, 0x48, 0x20, 0x20, 0xe6, 0x48, 0x63, 0x93, 0x6d, 0xcc, 0x68, + 0xc8, 0x27, 0x65, 0x2a, 0xb6, 0x4d, 0xca, 0x04, 0xb4, 0x4b, 0x3c, 0x81, 0x92, 0x43, 0x43, 0x36, + 0x49, 0x99, 0xea, 0x10, 0x6a, 0xf4, 0xc7, 0x13, 0xa0, 0x82, 0xd1, 0xbb, 0x54, 0x72, 0xc9, 0xcd, + 0x15, 0x4b, 0x25, 0xf4, 0x05, 0xd1, 0xe0, 0x1b, 0xa9, 0xcb, 0xe7, 0x68, 0xd8, 0x67, 0xa0, 0x49, + 0x0e, 0xaa, 0x74, 0x3d, 0x42, 0xc6, 0xb2, 0xd9, 0x84, 0x2d, 0xf6, 0x9a, 0x53, 0xf0, 0x5a, 0x94, + 0x57, 0xdc, 0x98, 0x0f, 0x66, 0x1c, 0x55, 0xe5, 0x26, 0xb4, 0xd3, 0x6b, 0x15, 0x7b, 0x2c, 0x6f, + 0x2e, 0x23, 0x06, 0x78, 0x55, 0xa2, 0x8b, 0xa5, 0xcf, 0x05, 0x13, 0xf9, 0x7d, 0x2e, 0xc0, 0x52, + 0x9b, 0xdd, 0xe9, 0x0c, 0x24, 0x1a, 0xe9, 0x54, 0x3c, 0xff, 0x56, 0x40, 0x22, 0xff, 0xb5, 0x3b, + 0x63, 0xaf, 0x2b, 0x1b, 0xfb, 0x4c, 0x40, 0xf3, 0xac, 0x7e, 0x21, 0xa0, 0x19, 0x3e, 0x25, 0x11, + 0xdb, 0xc5, 0xef, 0x21, 0x3f, 0xd7, 0x1f, 0x05, 0xeb, 0xe9, 0x37, 0x45, 0x2f, 0x2d, 0x92, 0x0a, + 0x01, 0xc7, 0x58, 0x29, 0x29, 0x89, 0xcd, 0x21, 0x09, 0xd2, 0x6d, 0xd2, 0xdf, 0xd1, 0x67, 0xc4, + 0x6b, 0x8c, 0x18, 0xf5, 0x30, 0xef, 0x0a, 0x55, 0x76, 0x1b, 0x31, 0xea, 0x67, 0x43, 0x5f, 0x70, + 0x06, 0xd4, 0xba, 0x8f, 0x64, 0x3e, 0xf9, 0x94, 0xd0, 0xa4, 0x25, 0xf3, 0x7a, 0xd5, 0x93, 0xaa, + 0xfc, 0x38, 0x7a, 0xd4, 0x6b, 0x19, 0xab, 0x34, 0x03, 0x1a, 0xe3, 0x22, 0xb6, 0xec, 0xf4, 0xe3, + 0x5c, 0xb6, 0xe4, 0xff, 0x21, 0xa0, 0x99, 0x5c, 0xcb, 0x3b, 0x2d, 0xf7, 0xa3, 0xf3, 0xc1, 0x8e, + 0x6c, 0x4b, 0x70, 0xb0, 0xbb, 0x4b, 0x8f, 0x61, 0x6d, 0x44, 0x47, 0xa6, 0x8b, 0x9c, 0x14, 0xd0, + 0xf4, 0x8d, 0x3b, 0x43, 0xd1, 0x6f, 0x67, 0x8d, 0x9f, 0xcd, 0x5e, 0xe3, 0xa5, 0x78, 0xf7, 0xd2, + 0xd7, 0x98, 0x4a, 0x8a, 0xcc, 0xa7, 0xd7, 0x32, 0xb7, 0xf6, 0xa7, 0x7b, 0xda, 0x72, 0x2e, 0x33, + 0x75, 0xc4, 0xcb, 0x1e, 0xad, 0x34, 0x03, 0x9a, 0xe7, 0x5e, 0xe5, 0xff, 0x2e, 0xa0, 0x19, 0x46, + 0xc3, 0x3f, 0xb6, 0x45, 0xce, 0x4c, 0x42, 0x33, 0x41, 0xec, 0xf2, 0xcb, 0xbc, 0x26, 0x6b, 0x99, + 0x2b, 0x1d, 0x96, 0x19, 0xb6, 0x96, 0x45, 0xce, 0xab, 0xbc, 0x23, 0x4b, 0xb1, 0xab, 0xcf, 0xa1, + 0xd8, 0xad, 0x88, 0x49, 0x63, 0x2a, 0x76, 0x93, 0xb1, 0x62, 0xb7, 0xd9, 0xb7, 0xea, 0xbb, 0xd7, + 0xec, 0xa8, 0x8e, 0x96, 0xff, 0x95, 0x75, 0xb4, 0x82, 0x6f, 0x50, 0x47, 0x9b, 0xf4, 0x0d, 0xe9, + 0x68, 0x86, 0x42, 0x35, 0xd9, 0x5e, 0xa1, 0xb2, 0x90, 0xc6, 0x77, 0xa7, 0x50, 0x71, 0x89, 0x4a, + 0x0a, 0x6d, 0x13, 0x95, 0xc0, 0x54, 0x09, 0x65, 0x9b, 0x55, 0x12, 0x0a, 0xf2, 0x8d, 0xeb, 0x11, + 0x2b, 0x55, 0xb9, 0x0a, 0x3d, 0xe6, 0xb5, 0xf2, 0x8b, 0x34, 0x03, 0x86, 0x91, 0x5b, 0xd0, 0xfc, + 0x4f, 0x01, 0x89, 0x7c, 0xd3, 0x3f, 0x36, 0x51, 0xf3, 0xba, 0x0b, 0xcd, 0x84, 0xc3, 0xe0, 0xb7, + 0x22, 0x6a, 0x12, 0xd9, 0xb9, 0x07, 0x88, 0x6b, 0xa4, 0x1e, 0xc0, 0x62, 0x2d, 0x1f, 0x9f, 0xc2, + 0x18, 0x1b, 0xa6, 0xc1, 0x83, 0xd7, 0x92, 0x37, 0x6f, 0xa5, 0x7a, 0x3f, 0x00, 0x77, 0x77, 0x60, + 0x1b, 0xad, 0xbf, 0x2b, 0xd5, 0x41, 0x22, 0xdc, 0xdf, 0x38, 0x43, 0x12, 0x08, 0xbc, 0xad, 0xb5, + 0x5f, 0x48, 0x0f, 0x77, 0xa4, 0xfa, 0xde, 0xe1, 0x53, 0x05, 0x54, 0x55, 0xaa, 0x72, 0x39, 0xf2, + 0x7a, 0xad, 0x13, 0x93, 0x8a, 0x69, 0xda, 0x7e, 0x32, 0x03, 0x9d, 0x1e, 0x3c, 0xad, 0x2e, 0x16, + 0xda, 0xe4, 0x4e, 0xa2, 0x82, 0xe7, 0xc6, 0x41, 0x05, 0xe4, 0xd6, 0x0e, 0xa8, 0x60, 0x0e, 0x1f, + 0x89, 0xdc, 0x42, 0x08, 0xfb, 0x05, 0x34, 0x6d, 0x8d, 0x92, 0xe0, 0xa9, 0x60, 0x75, 0x16, 0x15, + 0x2c, 0x51, 0xe5, 0x99, 0x3a, 0x15, 0x4c, 0xc6, 0x90, 0xee, 0xf1, 0x10, 0x41, 0x55, 0x85, 0x2a, + 0x7b, 0x51, 0x99, 0x37, 0xab, 0x7b, 0x69, 0x0e, 0x78, 0xe2, 0x1b, 0x23, 0xa1, 0x51, 0xba, 0xff, + 0xdc, 0x85, 0xa6, 0xeb, 0xa0, 0x3f, 0x4e, 0x7e, 0xd4, 0x63, 0x73, 0x67, 0x2f, 0x43, 0xd5, 0x2a, + 0x55, 0xae, 0x46, 0xcf, 0x78, 0xb3, 0x11, 0x30, 0xd1, 0xb0, 0xd8, 0xff, 0x6d, 0x12, 0x9a, 0xbe, + 0x36, 0x14, 0x37, 0x2d, 0x67, 0xc0, 0xfa, 0x26, 0x6c, 0x95, 0x2a, 0x3f, 0xc1, 0x1f, 0x86, 0x97, + 0x18, 0x47, 0xd5, 0xf1, 0xc5, 0xc1, 0x86, 0xbb, 0x28, 0x53, 0xbc, 0x1e, 0xee, 0x3c, 0x0c, 0xa8, + 0x97, 0x48, 0x44, 0x7c, 0xe3, 0x3c, 0x3c, 0x37, 0xeb, 0x23, 0x7c, 0x6c, 0x5c, 0xe8, 0xd1, 0xcd, + 0x9f, 0x82, 0x9f, 0x32, 0x4e, 0xc1, 0x79, 0x46, 0x6e, 0x40, 0xfb, 0x53, 0x30, 0x79, 0xb8, 0x05, + 0xb9, 0x01, 0xf5, 0x33, 0xf0, 0x53, 0xc6, 0x96, 0x95, 0xcf, 0xb5, 0xb7, 0xdd, 0xb2, 0xf8, 0xf6, + 0x2c, 0xb3, 0x16, 0x6f, 0x85, 0x2b, 0xf8, 0xee, 0xad, 0x70, 0x31, 0x5d, 0x59, 0x9b, 0x64, 0xf8, + 0x96, 0x33, 0x65, 0x6d, 0x1d, 0xaf, 0xac, 0x95, 0xf1, 0x6a, 0x5a, 0xb9, 0x5b, 0xf7, 0x8c, 0xa7, + 0x6a, 0x9a, 0xe1, 0x0d, 0x4f, 0xb5, 0xb4, 0x72, 0xf7, 0xea, 0x0d, 0xbe, 0x9a, 0x55, 0x7a, 0xac, + 0xa2, 0xc5, 0xba, 0xda, 0xb6, 0x99, 0x3e, 0x89, 0xa8, 0xa7, 0x76, 0x27, 0xbc, 0xc7, 0xd2, 0x27, + 0x11, 0xf5, 0xd2, 0xd2, 0xd4, 0x99, 0xc3, 0xc9, 0xa1, 0xb7, 0xb5, 0xde, 0xa1, 0xd4, 0xc9, 0x81, + 0xe4, 0xe0, 0x01, 0x23, 0xf2, 0x77, 0x5d, 0x3d, 0x0d, 0x25, 0x3c, 0x70, 0x43, 0x1b, 0x3a, 0xaa, + 0x87, 0xee, 0xa0, 0xef, 0x25, 0xea, 0xc5, 0x5f, 0xd8, 0xc5, 0xc0, 0x21, 0x41, 0xf9, 0x4c, 0xd6, + 0xf2, 0xfb, 0xa0, 0x47, 0xce, 0x21, 0x26, 0x73, 0x6b, 0x7f, 0x6a, 0xf8, 0x3c, 0x5b, 0x68, 0xe2, + 0xfa, 0x6a, 0xb2, 0x95, 0xbf, 0x21, 0xa8, 0xf2, 0x3e, 0x01, 0xbd, 0x2e, 0x78, 0xb3, 0x89, 0x5e, + 0x8a, 0xc2, 0x90, 0x30, 0x3a, 0xbf, 0xa3, 0xd8, 0xc9, 0x1f, 0xe6, 0xa1, 0x19, 0xc6, 0x28, 0xee, + 0x0c, 0xf9, 0xb5, 0x31, 0xb7, 0x2b, 0x32, 0x91, 0x5f, 0xf0, 0x38, 0x82, 0xc8, 0xaf, 0x05, 0xa6, + 0x88, 0xc9, 0xdc, 0xb2, 0x98, 0xa2, 0xd0, 0x28, 0x08, 0x35, 0xfa, 0x13, 0x0a, 0x60, 0x82, 0x5e, + 0x3b, 0xda, 0x77, 0x8d, 0xf7, 0x6b, 0xda, 0xf5, 0x22, 0xbd, 0x6b, 0xed, 0xe6, 0x9b, 0x5a, 0xe7, + 0xc1, 0x54, 0x6f, 0x6b, 0xea, 0xf8, 0x95, 0xac, 0xf0, 0x93, 0x3e, 0xae, 0x63, 0xdd, 0x9c, 0x90, + 0x8d, 0x73, 0x49, 0xa4, 0x22, 0x13, 0x74, 0x60, 0x87, 0xe0, 0xcc, 0xc3, 0x8b, 0xd0, 0x02, 0x60, + 0x55, 0x2e, 0x3d, 0xe5, 0x86, 0x28, 0xd6, 0xf1, 0x99, 0xdc, 0xfc, 0x1d, 0x9a, 0x19, 0x8a, 0x13, + 0xdb, 0x7e, 0x6d, 0xe4, 0x95, 0x30, 0x5c, 0x32, 0x91, 0x85, 0x2c, 0x84, 0x47, 0x0f, 0xd6, 0x5a, + 0xe9, 0x21, 0x92, 0x17, 0xb3, 0x22, 0x18, 0x79, 0x25, 0x5c, 0x01, 0x11, 0xf7, 0x83, 0xe5, 0x34, + 0x66, 0x7f, 0xfb, 0x9e, 0x4c, 0xff, 0x20, 0xbd, 0x02, 0x80, 0xbc, 0xd4, 0xd6, 0xf6, 0xe2, 0x2b, + 0xa8, 0x50, 0x79, 0x35, 0xea, 0x0f, 0x07, 0xf5, 0x83, 0xf8, 0x8b, 0xaa, 0xfc, 0x4b, 0xaf, 0x5e, + 0x28, 0xad, 0x65, 0x7f, 0x51, 0xe7, 0x96, 0x74, 0xff, 0x89, 0xd4, 0xb5, 0x63, 0x24, 0x0c, 0x6c, + 0x07, 0x78, 0xe4, 0xdf, 0x1e, 0xe9, 0x8c, 0xf9, 0xc3, 0xc1, 0x48, 0x53, 0xb9, 0xbb, 0x51, 0xf1, + 0xc7, 0x13, 0x15, 0xaf, 0xf8, 0xe3, 0x09, 0xa5, 0xdc, 0xdd, 0x14, 0x89, 0x27, 0x2a, 0xa2, 0x91, + 0x60, 0xbc, 0xdc, 0x1d, 0x8d, 0x85, 0x22, 0xb1, 0x50, 0x62, 0x97, 0x4f, 0xef, 0x57, 0xdc, 0x8d, + 0xc4, 0x26, 0xff, 0xab, 0xab, 0x9a, 0xa2, 0x89, 0x5d, 0xd5, 0xcd, 0x8d, 0x3b, 0x41, 0x40, 0x51, + 0x7f, 0xe5, 0x67, 0x55, 0x79, 0x8d, 0xd7, 0xa6, 0x5a, 0x5a, 0xd6, 0xe4, 0x7f, 0xb5, 0x42, 0xc1, + 0x85, 0x15, 0xdb, 0x9a, 0x1b, 0x77, 0x56, 0x40, 0x00, 0xb3, 0x72, 0xed, 0xe0, 0xb1, 0xd4, 0xe5, + 0x73, 0x34, 0xc8, 0x13, 0xf1, 0x44, 0x35, 0xdc, 0x20, 0x6c, 0xba, 0x11, 0x5f, 0x43, 0xd3, 0xe2, + 0x0c, 0x0f, 0xb5, 0x4a, 0xa3, 0x7f, 0x17, 0x7d, 0xc1, 0xb4, 0x51, 0x95, 0xeb, 0xbd, 0x59, 0x55, + 0xd2, 0x53, 0x2c, 0xb6, 0x23, 0x71, 0xed, 0x39, 0x7c, 0x48, 0x3b, 0xdf, 0x33, 0x7a, 0xec, 0x16, + 0x9c, 0xd3, 0xb4, 0x91, 0x56, 0xed, 0xe2, 0x01, 0xad, 0xe3, 0xbc, 0xd6, 0xdf, 0x03, 0x9f, 0xd7, + 0xdf, 0x29, 0x2c, 0x5b, 0xaa, 0x75, 0xec, 0x1b, 0x55, 0xcf, 0xf8, 0xb2, 0xfa, 0x13, 0xff, 0x81, + 0x80, 0x66, 0xeb, 0x45, 0x9b, 0xc3, 0x61, 0x45, 0x09, 0x2a, 0x41, 0xee, 0x88, 0x08, 0xc1, 0x55, + 0xbd, 0xf6, 0x30, 0x52, 0x84, 0x5b, 0xef, 0x66, 0x5a, 0x51, 0x91, 0x08, 0x35, 0x29, 0xe5, 0xf4, + 0xbc, 0x07, 0x31, 0xea, 0xfa, 0x3a, 0xb5, 0xcf, 0xda, 0x61, 0x8c, 0x78, 0x43, 0xa5, 0xef, 0x43, + 0x4f, 0xa7, 0x87, 0xfb, 0xd2, 0xef, 0x0f, 0x8d, 0x9e, 0xf8, 0x48, 0x3b, 0xdf, 0xa3, 0x5d, 0x39, + 0x02, 0x23, 0xd4, 0x0e, 0x1f, 0xca, 0xbc, 0xf3, 0xa1, 0xd3, 0xf0, 0xed, 0xc7, 0x21, 0xfe, 0x67, + 0x01, 0xcd, 0x37, 0x6a, 0x12, 0xa1, 0xc6, 0xd0, 0x6e, 0x72, 0x6f, 0xb5, 0x69, 0x47, 0x4c, 0xf1, + 0xef, 0x88, 0x34, 0x06, 0xe9, 0xa5, 0x04, 0x0d, 0x6d, 0x9d, 0x1b, 0x56, 0x7a, 0x5d, 0xe0, 0xa7, + 0x65, 0x40, 0x54, 0x24, 0x76, 0xc4, 0x94, 0x38, 0x06, 0x29, 0x87, 0xc8, 0x6a, 0x94, 0x9c, 0x49, + 0xfe, 0xa9, 0xd1, 0xb7, 0x3a, 0xb4, 0xd6, 0x11, 0x63, 0x7a, 0x5c, 0x76, 0x46, 0x2c, 0x23, 0x6f, + 0x1e, 0x4a, 0x0e, 0x1d, 0x82, 0x79, 0xa6, 0x4f, 0x7e, 0xa6, 0x75, 0xec, 0x4b, 0x0d, 0x1c, 0x85, + 0x95, 0x02, 0xb1, 0x3a, 0x7a, 0xe2, 0x23, 0x23, 0x47, 0xd8, 0xe0, 0xd0, 0xc3, 0x4b, 0x7d, 0xb9, + 0x07, 0x29, 0x1e, 0x14, 0xd0, 0x3d, 0xf1, 0x9d, 0x21, 0x48, 0x50, 0xf5, 0x8b, 0x50, 0x62, 0xc7, + 0xda, 0x48, 0xc0, 0xdf, 0xb8, 0x31, 0x11, 0x89, 0x61, 0xe1, 0x39, 0x99, 0xb0, 0xe9, 0x06, 0x55, + 0x5e, 0xeb, 0x75, 0x86, 0x92, 0x2a, 0xb5, 0x5b, 0x37, 0xd3, 0xc7, 0x2e, 0xa4, 0x7a, 0x3b, 0x53, + 0xbd, 0x97, 0xb5, 0xde, 0x2b, 0x5a, 0xdf, 0x5b, 0xda, 0xde, 0x4b, 0xba, 0x0f, 0x0a, 0x3f, 0x20, + 0xc8, 0x80, 0xeb, 0xdc, 0x97, 0x78, 0x5a, 0x40, 0x77, 0x9b, 0x6a, 0x37, 0xee, 0x8a, 0x27, 0x94, + 0xa6, 0xfa, 0x48, 0x30, 0x4e, 0xa3, 0x5d, 0x93, 0x18, 0x7e, 0x4e, 0x30, 0xd2, 0x6a, 0x18, 0xcb, + 0xce, 0xe6, 0x6d, 0x4a, 0x45, 0x9c, 0x14, 0xbb, 0xd7, 0x6f, 0xc4, 0xdb, 0xec, 0xa9, 0xd3, 0xb5, + 0x7e, 0xa5, 0x29, 0x12, 0xde, 0xa8, 0x24, 0xf4, 0x27, 0x14, 0xf5, 0x91, 0xa0, 0x75, 0x94, 0x30, + 0x44, 0xa7, 0x0f, 0x88, 0x87, 0x05, 0x34, 0x37, 0xd4, 0x10, 0x8e, 0xc4, 0x14, 0xbd, 0xbf, 0x38, + 0x87, 0x59, 0x1a, 0x37, 0x8e, 0x64, 0x3a, 0xcd, 0x05, 0x27, 0x95, 0xc3, 0x40, 0x8d, 0x41, 0xb1, + 0x3c, 0xaa, 0x99, 0xfe, 0x73, 0xe9, 0xfe, 0x13, 0x59, 0xc3, 0xc9, 0xd5, 0x95, 0xb8, 0x47, 0x40, + 0x77, 0x45, 0x76, 0x6e, 0x8a, 0x24, 0xfc, 0x8d, 0x9b, 0xc3, 0x31, 0xc5, 0x1f, 0xdc, 0x55, 0x13, + 0x69, 0x0e, 0x27, 0xc8, 0x8d, 0xcd, 0x54, 0x58, 0x3d, 0xbb, 0x7a, 0xe9, 0xe1, 0xc8, 0xce, 0x8a, + 0x04, 0x2e, 0xad, 0x68, 0x86, 0xe2, 0x8a, 0x00, 0x2e, 0x2f, 0x07, 0x21, 0xeb, 0xa6, 0x85, 0x6e, + 0x3d, 0x94, 0x58, 0xea, 0xd8, 0x95, 0xd1, 0xfd, 0xdd, 0x3e, 0xbb, 0xbe, 0xc4, 0xcf, 0x05, 0x74, + 0x4f, 0x93, 0xff, 0x55, 0xbe, 0xa2, 0x5e, 0x89, 0x05, 0x94, 0x70, 0x02, 0xd3, 0xd1, 0x14, 0x32, + 0x92, 0x37, 0x05, 0x55, 0xee, 0x16, 0xbc, 0xce, 0x70, 0x52, 0x0c, 0x8b, 0x42, 0xf3, 0x90, 0xa2, + 0x7a, 0x6d, 0x39, 0x2d, 0xa2, 0x9c, 0x41, 0xa2, 0x7e, 0x51, 0x31, 0xd6, 0x3a, 0xac, 0x0f, 0x52, + 0x67, 0x0b, 0xcc, 0x43, 0x04, 0x26, 0xd5, 0x77, 0x1e, 0xb8, 0x4a, 0xeb, 0x38, 0xa9, 0xed, 0xe9, + 0x4d, 0xf5, 0xbd, 0xc3, 0xfb, 0xbb, 0xfb, 0x9c, 0x87, 0x23, 0xaa, 0x02, 0x9a, 0xc5, 0x49, 0x0a, + 0x52, 0x4d, 0x84, 0x5a, 0x31, 0x99, 0xcf, 0x6f, 0x54, 0xf9, 0x45, 0xaf, 0x2d, 0x80, 0x54, 0x63, + 0x92, 0x68, 0x30, 0x13, 0x22, 0xd0, 0x4c, 0x73, 0xb0, 0x95, 0x6b, 0xda, 0xc1, 0x63, 0xc9, 0x9b, + 0x07, 0xd3, 0x17, 0x55, 0x9f, 0x6d, 0xd7, 0xe2, 0x5f, 0x0a, 0x68, 0x2e, 0xee, 0xa5, 0x21, 0x84, + 0x15, 0x01, 0xe6, 0x0e, 0xd4, 0x14, 0x69, 0xf1, 0x37, 0x92, 0xb1, 0x4d, 0x25, 0x63, 0x23, 0xee, + 0x9f, 0xde, 0x5c, 0x80, 0xd2, 0xcb, 0x2c, 0x02, 0x24, 0x7b, 0x28, 0x43, 0x74, 0x67, 0xed, 0xb3, + 0x76, 0xd3, 0x66, 0x70, 0x65, 0x1f, 0x0d, 0xe4, 0xd9, 0xfb, 0x81, 0xd6, 0x7b, 0x09, 0xf3, 0x55, + 0x2c, 0xac, 0x24, 0x94, 0x78, 0x72, 0xb0, 0x2f, 0x75, 0xed, 0x92, 0xb6, 0xaf, 0xcb, 0xca, 0x41, + 0xcb, 0x99, 0x98, 0xcd, 0xf5, 0x79, 0xb1, 0x89, 0x3f, 0x4f, 0x4d, 0x63, 0x57, 0xe4, 0xe5, 0xfc, + 0x79, 0x6a, 0x21, 0x77, 0x58, 0xc2, 0x98, 0x31, 0x1f, 0xaa, 0x26, 0x96, 0x48, 0xa8, 0xca, 0x38, + 0x07, 0x4d, 0x67, 0x2a, 0xe1, 0x2c, 0xe3, 0x1c, 0x54, 0xc4, 0x9d, 0x80, 0x2c, 0xf7, 0x80, 0x2b, + 0xb9, 0xe4, 0xc0, 0x33, 0x58, 0xe0, 0x8b, 0x05, 0x5c, 0x6a, 0x60, 0x31, 0xdd, 0x79, 0x23, 0xd5, + 0x7a, 0x91, 0x66, 0x01, 0x26, 0x21, 0x4f, 0xb9, 0x9c, 0xbd, 0x97, 0x6c, 0x92, 0x8c, 0xcf, 0x24, + 0x62, 0xe2, 0x4f, 0x55, 0xf9, 0x35, 0x6b, 0x22, 0xf1, 0x1d, 0x7c, 0x7e, 0xa2, 0x2c, 0xbf, 0x07, + 0x62, 0x5f, 0x24, 0x79, 0x8b, 0x0e, 0x1f, 0x4a, 0x8e, 0xf4, 0x68, 0xbd, 0x97, 0x32, 0x03, 0x17, + 0x00, 0x1f, 0xa3, 0xaf, 0x5f, 0x4a, 0xdf, 0xfc, 0xc8, 0x4d, 0x8f, 0x41, 0x9c, 0x3e, 0xe6, 0x4e, + 0x0f, 0xb7, 0x25, 0x87, 0xaf, 0xf3, 0x72, 0xd8, 0xed, 0x90, 0x8a, 0xfc, 0x1f, 0x09, 0xe8, 0xae, + 0x6d, 0xcd, 0xdb, 0xb7, 0x2b, 0x31, 0x1f, 0x4d, 0x19, 0xec, 0xc3, 0x32, 0x86, 0xbc, 0x2a, 0x9c, + 0x5a, 0x7d, 0x4c, 0x50, 0xe5, 0x23, 0x82, 0xd7, 0x0e, 0x42, 0xda, 0x0d, 0x85, 0x15, 0x2c, 0xd5, + 0x70, 0x05, 0x49, 0x17, 0x4e, 0x77, 0x38, 0xea, 0x60, 0xc7, 0xed, 0x70, 0x3c, 0x9b, 0xd2, 0x27, + 0x27, 0xdc, 0x56, 0x97, 0x3e, 0xb4, 0x1f, 0x78, 0x37, 0x33, 0x70, 0x01, 0xb6, 0x43, 0xad, 0xe3, + 0x24, 0xdf, 0x95, 0x3e, 0x17, 0xf7, 0xb2, 0xa5, 0x4b, 0x7d, 0x76, 0x03, 0x12, 0xcf, 0x83, 0x44, + 0x5a, 0x13, 0xf3, 0x07, 0x94, 0xed, 0xcd, 0x8d, 0x9b, 0x68, 0x90, 0xed, 0x10, 0x96, 0x9f, 0x01, + 0x92, 0xcc, 0x77, 0x6a, 0xf5, 0x76, 0x55, 0x0e, 0x78, 0x9d, 0xa1, 0xa4, 0xd5, 0x58, 0x1e, 0x35, + 0xd0, 0xba, 0x8a, 0x84, 0x51, 0x59, 0x11, 0x57, 0x02, 0xe5, 0x54, 0x37, 0x23, 0x61, 0x55, 0x81, + 0x73, 0xdc, 0xf5, 0x91, 0xa0, 0x7b, 0xb4, 0xb5, 0x55, 0xdb, 0x3f, 0x94, 0xea, 0x6d, 0xd5, 0x99, + 0xc8, 0xe7, 0xfc, 0x09, 0xb1, 0x4d, 0x40, 0xc5, 0xf1, 0x80, 0x3f, 0x5c, 0x17, 0x4e, 0x28, 0xb1, + 0x16, 0x7f, 0x63, 0xc9, 0x2c, 0x32, 0xb2, 0x97, 0x55, 0xf9, 0x25, 0xaf, 0xa9, 0x42, 0x5a, 0x87, + 0x7f, 0x55, 0x84, 0xe8, 0xcf, 0xf2, 0x2c, 0xc2, 0x48, 0xbd, 0xdb, 0x9a, 0xfa, 0xe4, 0x00, 0x7c, + 0x0f, 0xff, 0xd7, 0x73, 0x54, 0x97, 0x25, 0x58, 0x35, 0xb8, 0xa8, 0x9a, 0x96, 0x7f, 0xd9, 0x52, + 0x9f, 0xa9, 0x73, 0xbc, 0xef, 0xce, 0x6a, 0xf2, 0xbf, 0x8a, 0x99, 0xb4, 0x1e, 0xd3, 0x6d, 0x9c, + 0x99, 0xf8, 0x67, 0x93, 0xe1, 0xfc, 0x56, 0x95, 0x1b, 0xbc, 0xb6, 0x00, 0xd2, 0x06, 0x8c, 0x23, + 0x7c, 0x9c, 0xac, 0x88, 0xb2, 0x72, 0x10, 0x75, 0x80, 0x12, 0xaa, 0xb4, 0x76, 0x1f, 0x4e, 0x7e, + 0xf6, 0x36, 0x8f, 0x13, 0x5e, 0xd2, 0x19, 0xab, 0xf9, 0xf8, 0xd2, 0xa5, 0x3e, 0xdb, 0xcf, 0x88, + 0xa7, 0x04, 0x34, 0x9d, 0xd0, 0xe8, 0xe6, 0x28, 0x3e, 0xec, 0xbf, 0xa0, 0xc4, 0x22, 0x25, 0x73, + 0xc6, 0xcc, 0xd4, 0xff, 0x0b, 0x55, 0xde, 0xe4, 0xcd, 0x6e, 0x27, 0xc9, 0x20, 0x9d, 0x9b, 0xa3, + 0x15, 0xdb, 0x63, 0x91, 0xa6, 0x8a, 0xdd, 0x4a, 0x2c, 0x42, 0x37, 0x3d, 0x7e, 0x67, 0xb8, 0x3d, + 0xd2, 0x91, 0xfa, 0xe8, 0x5c, 0xaa, 0xb7, 0xd3, 0xcd, 0xef, 0x83, 0x64, 0xb9, 0x3b, 0x7d, 0xd9, + 0x7d, 0xe2, 0xf1, 0xcd, 0x31, 0x2b, 0xc5, 0xf2, 0x76, 0xcc, 0x86, 0xc1, 0x60, 0xc9, 0xdd, 0x04, + 0x85, 0x8a, 0x2a, 0x6f, 0xf3, 0x3a, 0x80, 0x48, 0x3f, 0xe7, 0xf6, 0x8b, 0x20, 0xae, 0xa9, 0xf0, + 0x6f, 0x27, 0xa2, 0x39, 0x18, 0x2c, 0x37, 0x94, 0xf4, 0x8e, 0xf3, 0xa9, 0xe3, 0x7d, 0x3a, 0xd5, + 0x59, 0x17, 0x1a, 0x6f, 0x1a, 0x0e, 0x5f, 0x10, 0xdf, 0xc3, 0x8a, 0x9e, 0xb5, 0x8a, 0x1e, 0x51, + 0x4a, 0xc8, 0x10, 0x49, 0xb4, 0x5b, 0x67, 0x28, 0xc7, 0x51, 0xd2, 0x13, 0x0b, 0xe8, 0xe2, 0xc9, + 0xc1, 0xf3, 0xc6, 0xb9, 0xc5, 0x69, 0x94, 0xce, 0x1f, 0x11, 0xff, 0xb1, 0x80, 0x4a, 0x6d, 0x6a, + 0x57, 0xfb, 0x43, 0x8d, 0xcd, 0x31, 0xa5, 0xe4, 0x9e, 0x71, 0x64, 0x13, 0x6f, 0x52, 0xe5, 0xdf, + 0x7a, 0x73, 0x74, 0x22, 0xad, 0x75, 0x98, 0xc8, 0x76, 0xa8, 0xa7, 0x9c, 0x0d, 0xc9, 0x48, 0xb5, + 0xc3, 0x87, 0xe0, 0x62, 0xdd, 0x71, 0x32, 0x39, 0xbe, 0x24, 0xee, 0x75, 0x21, 0xb7, 0x5e, 0xbd, + 0x26, 0xda, 0x9c, 0xa5, 0x84, 0x93, 0x63, 0x40, 0x49, 0x29, 0xc1, 0xfe, 0x27, 0x82, 0x2a, 0x5f, + 0x15, 0xbc, 0x63, 0x82, 0x4b, 0x5d, 0xfc, 0xc1, 0xa2, 0x21, 0xda, 0x3c, 0xc1, 0xc3, 0x45, 0xd9, + 0x9a, 0xfa, 0xcd, 0x8b, 0xbf, 0xc1, 0x13, 0xc6, 0x98, 0x03, 0x16, 0xff, 0x4e, 0x40, 0x73, 0xcc, + 0x22, 0xba, 0x26, 0xda, 0x0c, 0x1b, 0xcb, 0x5c, 0x32, 0xf5, 0x5e, 0x41, 0x95, 0xdf, 0x12, 0xbc, + 0x0e, 0x40, 0xd2, 0x9f, 0xda, 0x97, 0x4f, 0x60, 0x73, 0x09, 0x44, 0x9b, 0xbf, 0xc6, 0xfe, 0xe2, + 0x30, 0x2e, 0x9b, 0x79, 0xad, 0x53, 0x9a, 0x60, 0x5e, 0xf3, 0x72, 0xcc, 0x8b, 0x01, 0x65, 0xcf, + 0x8b, 0x95, 0x4f, 0x60, 0x5e, 0x4d, 0x4a, 0xd3, 0x37, 0x37, 0x2f, 0xf6, 0xfd, 0x2a, 0xbc, 0x2d, + 0x22, 0xbf, 0x77, 0x0c, 0xcb, 0x8e, 0x34, 0x1f, 0x74, 0x26, 0x4b, 0xbd, 0x5d, 0x28, 0x5b, 0x5b, + 0x97, 0xa2, 0xff, 0x25, 0xa0, 0x85, 0x8e, 0xdf, 0xb8, 0x33, 0x4c, 0x7f, 0x4f, 0x9a, 0xae, 0x2e, + 0xca, 0x2c, 0xce, 0x7b, 0x16, 0x65, 0x8c, 0x4e, 0x0f, 0xee, 0x19, 0xd2, 0x0f, 0xb1, 0x37, 0x17, + 0x3f, 0x24, 0xf3, 0xd9, 0x45, 0xc1, 0x62, 0x3f, 0x7b, 0x43, 0xf8, 0x16, 0x0d, 0x68, 0x5f, 0x56, + 0x97, 0xc7, 0xbc, 0xbe, 0x49, 0x00, 0xee, 0x9b, 0xc2, 0x81, 0xfb, 0x8a, 0x74, 0x70, 0xac, 0x4f, + 0x5b, 0xec, 0x6d, 0xaf, 0x0b, 0x39, 0x0c, 0x6e, 0x1b, 0xbf, 0x39, 0x83, 0xdb, 0x97, 0xd5, 0x93, + 0xbc, 0xf9, 0x25, 0xc1, 0x32, 0xc1, 0xd6, 0xf2, 0xb6, 0x4f, 0x70, 0x30, 0xbd, 0xfd, 0xe6, 0x5b, + 0x30, 0xbd, 0x7d, 0x59, 0x5d, 0xe8, 0x9d, 0x54, 0xd2, 0xfa, 0x6e, 0x41, 0xd9, 0x93, 0x16, 0x2b, + 0xdc, 0x3f, 0x19, 0xc3, 0x0a, 0x77, 0xe2, 0x07, 0x65, 0x85, 0xe3, 0x67, 0xe2, 0x60, 0x90, 0xfb, + 0x7f, 0xc6, 0x69, 0x90, 0xfb, 0xe8, 0xce, 0x31, 0xc8, 0x01, 0x29, 0xd5, 0x97, 0xfd, 0x6c, 0x2c, + 0xcb, 0xdc, 0xfb, 0x63, 0x5a, 0xe6, 0x72, 0xab, 0xbe, 0xdf, 0xa5, 0xd5, 0x6e, 0x68, 0x0c, 0xab, + 0x5d, 0xee, 0x91, 0x7e, 0xcf, 0x16, 0xbd, 0xd3, 0xe3, 0xb0, 0xe8, 0xe5, 0x9e, 0xc0, 0x33, 0xaa, + 0xbc, 0x32, 0xb7, 0xb5, 0x6f, 0x41, 0x6e, 0x6b, 0x5f, 0x6e, 0xfb, 0x5e, 0x57, 0x4e, 0xfb, 0xde, + 0x0b, 0xdf, 0xb0, 0x7d, 0x8f, 0xb2, 0xe5, 0x5f, 0xdc, 0x55, 0xf6, 0x33, 0x7b, 0x53, 0xdf, 0xbf, + 0x19, 0x87, 0xa9, 0xaf, 0xf7, 0x87, 0x68, 0xea, 0x63, 0x52, 0xfc, 0x67, 0xb9, 0x6c, 0x7e, 0xa7, + 0x73, 0xdb, 0xfc, 0x7e, 0xfb, 0xed, 0xda, 0xfc, 0xbe, 0xac, 0x2e, 0xf2, 0x4e, 0x26, 0x32, 0xf1, + 0x4a, 0xd1, 0x8f, 0xdc, 0xfe, 0xb7, 0x99, 0x77, 0x75, 0x98, 0xc6, 0x9e, 0x7e, 0x55, 0xf0, 0xae, + 0x0e, 0x6e, 0xf0, 0x6d, 0xc8, 0x32, 0xfe, 0xe5, 0xf6, 0x77, 0xd8, 0xc4, 0x9b, 0x15, 0xa7, 0xb3, + 0xf0, 0x67, 0x13, 0x34, 0x2b, 0x5a, 0xfc, 0x32, 0xaa, 0x0c, 0x2f, 0x88, 0x19, 0x9c, 0xf5, 0x90, + 0x79, 0x41, 0x14, 0xe5, 0x70, 0xd9, 0x33, 0x59, 0x0f, 0x67, 0x4e, 0xdc, 0x7a, 0x38, 0xae, 0x13, + 0xa4, 0xf8, 0x23, 0x3f, 0x41, 0xde, 0x76, 0xb0, 0x4b, 0xde, 0x35, 0x0e, 0x6b, 0xc0, 0xe9, 0x1f, + 0xa6, 0xd5, 0xd2, 0x90, 0x46, 0xb6, 0xe6, 0xcb, 0x81, 0x9c, 0xe6, 0x4b, 0x30, 0x12, 0xfe, 0xee, + 0xbb, 0x31, 0x5f, 0xf2, 0x8a, 0x5a, 0x0e, 0x4b, 0x66, 0x77, 0xb6, 0x25, 0x13, 0x4c, 0x87, 0x3b, + 0xbf, 0x6d, 0x4b, 0xa6, 0x31, 0xbc, 0x82, 0x2c, 0xa3, 0xe6, 0x07, 0x4e, 0x46, 0xcd, 0x39, 0x64, + 0x64, 0x2d, 0xdf, 0x9d, 0x51, 0xd3, 0x90, 0xeb, 0x6d, 0x93, 0x27, 0x60, 0xe0, 0xbc, 0xfb, 0x07, + 0x64, 0xe0, 0x7c, 0xdf, 0xd9, 0xc0, 0x59, 0xc2, 0xa8, 0xf1, 0x3b, 0x30, 0x70, 0x9a, 0x76, 0x48, + 0x27, 0x63, 0xe7, 0xd5, 0x9c, 0xc6, 0xce, 0x7b, 0xc8, 0x70, 0xe3, 0xdf, 0x95, 0xb1, 0xd3, 0xa0, + 0xcf, 0x9f, 0xe5, 0xb2, 0x7b, 0xfe, 0xcb, 0xdc, 0x76, 0xcf, 0xd2, 0x71, 0x48, 0xba, 0x57, 0xbf, + 0x53, 0xbb, 0x27, 0x2f, 0x16, 0x72, 0x99, 0x40, 0xff, 0xdd, 0x58, 0xd6, 0xbf, 0x0b, 0x3f, 0x68, + 0xeb, 0x9f, 0x21, 0xa7, 0x9d, 0xcc, 0x80, 0xff, 0x6e, 0x2c, 0x33, 0xe0, 0x85, 0x1f, 0xb4, 0x19, + 0xd0, 0x71, 0x82, 0x6c, 0x20, 0xa2, 0x1f, 0x4d, 0x6a, 0x8a, 0x04, 0x9b, 0x1b, 0x95, 0x92, 0xf9, + 0x54, 0x20, 0x65, 0x99, 0xb9, 0xd6, 0x91, 0x5a, 0x92, 0xe3, 0xbb, 0x42, 0x95, 0xbd, 0x5e, 0x0a, + 0x2e, 0xb9, 0x61, 0x78, 0x2c, 0x20, 0x6f, 0xe6, 0xe6, 0xe5, 0xf4, 0xc5, 0x61, 0xac, 0xe1, 0x9c, + 0x3a, 0x41, 0x6d, 0x6f, 0x14, 0x52, 0x6c, 0x40, 0x93, 0x5f, 0x51, 0xb6, 0xed, 0x88, 0x44, 0x76, + 0x96, 0x2c, 0x20, 0xdf, 0x98, 0x6b, 0xf3, 0x16, 0x1d, 0x57, 0xaf, 0x8b, 0x04, 0x95, 0xea, 0xa5, + 0x58, 0x51, 0x64, 0x0d, 0x24, 0x0f, 0xfb, 0x8a, 0x9b, 0x96, 0x80, 0x0e, 0x65, 0x8a, 0x5e, 0xc7, + 0x80, 0xc5, 0x28, 0xe4, 0x54, 0x04, 0xab, 0x1b, 0xc9, 0xa9, 0xb8, 0x90, 0x18, 0xd3, 0x7e, 0xae, + 0xca, 0xab, 0xbc, 0x59, 0x55, 0xd2, 0xf2, 0xe4, 0x70, 0x3b, 0xa8, 0x76, 0x35, 0x32, 0x5c, 0xa2, + 0x42, 0xa7, 0x5a, 0xf7, 0xde, 0xd4, 0xb1, 0x2b, 0xd0, 0x75, 0x79, 0x72, 0xf0, 0x20, 0xc5, 0x2d, + 0x49, 0x89, 0xe8, 0xcb, 0xea, 0x44, 0x4c, 0x0b, 0x68, 0x9e, 0xf2, 0x6a, 0x54, 0x09, 0x07, 0xfd, + 0xdb, 0x1a, 0x15, 0x7c, 0xe4, 0xac, 0xa7, 0x96, 0xac, 0x9a, 0xe6, 0x44, 0x64, 0xfb, 0xf6, 0x92, + 0xfb, 0xe9, 0x84, 0xb3, 0x59, 0x9b, 0xe3, 0x6c, 0xc8, 0x0b, 0xe7, 0xcd, 0xd9, 0x8f, 0xe4, 0x4f, + 0x8e, 0xbc, 0xa5, 0xb5, 0x77, 0xa4, 0x87, 0x2e, 0x82, 0x0e, 0x96, 0xea, 0x3b, 0x8f, 0xa9, 0xa5, + 0xa7, 0xcd, 0x1d, 0x8d, 0x04, 0x6f, 0x8f, 0x74, 0xe1, 0xa6, 0xa1, 0x70, 0x83, 0x9b, 0xcf, 0xea, + 0xa8, 0xd3, 0x83, 0x2e, 0xc3, 0x92, 0x23, 0x3d, 0xe9, 0xb7, 0x3f, 0x4e, 0x1d, 0xba, 0xe0, 0xde, + 0x19, 0x6a, 0x6c, 0x64, 0xa1, 0x6f, 0xb5, 0xd6, 0x91, 0x8a, 0x65, 0x4b, 0x7d, 0x39, 0x07, 0x20, + 0x5e, 0x11, 0x90, 0x18, 0x56, 0x5e, 0xa9, 0x8f, 0x04, 0x37, 0xc2, 0xe6, 0x01, 0xc6, 0xb0, 0x07, + 0xc6, 0x21, 0xba, 0xb6, 0xa9, 0xf2, 0x2f, 0xbd, 0x36, 0x8d, 0xa5, 0x6a, 0x6b, 0xd9, 0xed, 0x91, + 0xae, 0xd4, 0xf1, 0x2b, 0xd1, 0x48, 0x50, 0x1b, 0x1e, 0x4a, 0x7f, 0x78, 0x40, 0x3b, 0xdf, 0x93, + 0xbc, 0xd1, 0x9e, 0xbc, 0x71, 0x40, 0x3b, 0x7c, 0x28, 0xd5, 0x49, 0xd7, 0xa2, 0x46, 0x66, 0x23, + 0x77, 0x2f, 0x65, 0x11, 0x3f, 0x6d, 0xba, 0xd7, 0x4d, 0xdd, 0xb9, 0xad, 0xb0, 0xd2, 0x7c, 0xa0, + 0x82, 0x89, 0x9b, 0xba, 0xd9, 0x43, 0x99, 0xf7, 0xf2, 0xd0, 0x42, 0xc7, 0x6f, 0xdc, 0x19, 0xa6, + 0xee, 0xd0, 0x57, 0x33, 0x75, 0x57, 0x3f, 0xa4, 0xca, 0x65, 0xd4, 0x3d, 0xd5, 0xad, 0xbf, 0xa4, + 0xb1, 0x80, 0xfd, 0x40, 0x32, 0x30, 0x7a, 0x4e, 0xe4, 0xa1, 0xfb, 0xe8, 0x42, 0xc5, 0x61, 0x64, + 0xb5, 0x24, 0xc8, 0x74, 0x3d, 0x3d, 0x8f, 0x31, 0xbb, 0xfc, 0x26, 0xeb, 0x73, 0x80, 0x6f, 0xe0, + 0x9c, 0x79, 0x46, 0xe0, 0x0e, 0x8b, 0xb0, 0xa8, 0x70, 0x92, 0x37, 0x4e, 0x8b, 0x71, 0x68, 0x4e, + 0xfd, 0x55, 0xf4, 0x64, 0x29, 0x20, 0xf8, 0x99, 0x59, 0x29, 0x75, 0xf5, 0x2c, 0x38, 0xd4, 0x97, + 0xa5, 0xdf, 0xee, 0xd7, 0x3a, 0x0f, 0x62, 0x39, 0x46, 0x42, 0x4d, 0xed, 0x6a, 0x0e, 0x27, 0x42, + 0x5f, 0xb4, 0xee, 0x89, 0x2b, 0x8d, 0xdb, 0xb3, 0x40, 0x79, 0xb5, 0x9a, 0x80, 0xe9, 0xf5, 0x8b, + 0x8d, 0xe3, 0x68, 0xd5, 0xab, 0xaa, 0xdc, 0x8c, 0xe2, 0xde, 0xf1, 0xe0, 0x48, 0x7a, 0xd8, 0x81, + 0x6b, 0x52, 0xbd, 0x97, 0x53, 0x97, 0xcf, 0x59, 0x87, 0x0c, 0x34, 0x60, 0xe6, 0x26, 0xfd, 0xcb, + 0x9e, 0xbf, 0x14, 0xd0, 0xa2, 0xdc, 0x5f, 0xbd, 0x23, 0xf8, 0xc8, 0xf3, 0xcf, 0x17, 0xa3, 0x79, + 0x1b, 0x77, 0x85, 0x03, 0x3f, 0x5d, 0xf9, 0x7c, 0x95, 0x2b, 0x9f, 0x93, 0xb9, 0xae, 0x7c, 0x42, + 0xf8, 0xac, 0x69, 0x77, 0xe5, 0xb3, 0x66, 0xc2, 0x57, 0x3e, 0x4f, 0xb8, 0x6b, 0x64, 0xed, 0xc6, + 0x75, 0xc3, 0xfe, 0x41, 0x2a, 0x72, 0x5f, 0x04, 0x1d, 0x73, 0xba, 0x08, 0x6a, 0x52, 0xe5, 0xad, + 0x96, 0x8b, 0xa0, 0x75, 0x5f, 0xef, 0x22, 0xe8, 0xf6, 0xc8, 0xdb, 0xa9, 0x13, 0x67, 0x53, 0xc7, + 0x3a, 0x40, 0x19, 0xf9, 0xe9, 0x5e, 0xe8, 0x8f, 0xe4, 0x5e, 0xa8, 0x6b, 0x1c, 0x1e, 0xdb, 0xc4, + 0xfd, 0x38, 0xc7, 0xdd, 0xcf, 0x92, 0xf1, 0xdf, 0xfd, 0x24, 0x62, 0xcd, 0x39, 0xaf, 0x7e, 0x4e, + 0x8d, 0xe9, 0xb0, 0x1d, 0x50, 0xe5, 0x97, 0x9d, 0xaf, 0x77, 0x56, 0x7d, 0xed, 0xeb, 0x1d, 0x32, + 0x42, 0xc7, 0xdb, 0x9d, 0x23, 0xe3, 0xf2, 0xd7, 0x26, 0x97, 0x65, 0x39, 0x6f, 0x70, 0x2a, 0x72, + 0xdf, 0xe0, 0x70, 0x29, 0x22, 0xc8, 0x78, 0x7e, 0xba, 0xd0, 0xf9, 0xe9, 0x42, 0x67, 0x9c, 0x17, + 0x3a, 0x26, 0x4d, 0x72, 0xea, 0xb7, 0x70, 0x63, 0x31, 0x6d, 0xa2, 0x37, 0x16, 0xe3, 0xba, 0x72, + 0x98, 0xfe, 0x23, 0xbf, 0x72, 0xf8, 0x67, 0x0e, 0x57, 0x0e, 0x33, 0xc8, 0xbc, 0xef, 0xcc, 0x4b, + 0x85, 0xcb, 0x39, 0x2f, 0x15, 0x20, 0x6b, 0x4d, 0x18, 0x8b, 0xeb, 0x1c, 0x97, 0x0a, 0x35, 0xe3, + 0xbb, 0x54, 0xf8, 0x56, 0x6e, 0x14, 0xc4, 0x1f, 0xec, 0x8d, 0xc2, 0x5d, 0x3f, 0xc0, 0x1b, 0x85, + 0xf3, 0xa0, 0x2a, 0xe3, 0x8a, 0x8d, 0x09, 0x7f, 0x2c, 0xd1, 0x1c, 0x25, 0x43, 0x85, 0xbb, 0xa3, + 0x84, 0x2a, 0x2b, 0x5e, 0x9b, 0x6a, 0x6e, 0xa0, 0x71, 0x28, 0xe5, 0x87, 0xa9, 0x75, 0xbf, 0x95, + 0x1c, 0x1c, 0x22, 0xb2, 0x0b, 0xef, 0x2f, 0x13, 0x1e, 0xa8, 0xcd, 0x07, 0xc5, 0x7f, 0x24, 0xa0, + 0x12, 0xbe, 0x98, 0x66, 0x36, 0x52, 0x38, 0xf7, 0xf3, 0x03, 0x82, 0x2a, 0xff, 0x89, 0xd7, 0x11, + 0x4a, 0x7a, 0xd9, 0x3c, 0xe6, 0x8a, 0x38, 0xad, 0xb4, 0x62, 0x18, 0x26, 0xa0, 0x75, 0x0f, 0xd0, + 0x3c, 0x4c, 0x5f, 0x65, 0x12, 0x8e, 0xe3, 0xf8, 0xc1, 0x3b, 0xa9, 0xbf, 0x3f, 0x96, 0x93, 0xfa, + 0x1d, 0x73, 0x87, 0x53, 0x72, 0x27, 0xde, 0xe1, 0xdc, 0xf3, 0x63, 0xbc, 0xc3, 0x29, 0xfd, 0xb1, + 0xdf, 0xe1, 0xcc, 0xfd, 0x51, 0xdc, 0xe1, 0x70, 0x17, 0x2c, 0xf3, 0xbe, 0xd5, 0x0b, 0x96, 0x31, + 0xaf, 0x3b, 0xe6, 0xff, 0xc8, 0xaf, 0x3b, 0x16, 0xfc, 0x80, 0xaf, 0x3b, 0x7e, 0xa9, 0xca, 0x9b, + 0xd1, 0x46, 0x6f, 0x4e, 0xfb, 0xa3, 0x34, 0x5f, 0x3b, 0xdc, 0x95, 0xea, 0xbb, 0x60, 0xa9, 0x07, + 0x43, 0x93, 0xd9, 0x3c, 0xab, 0x5f, 0x70, 0x9c, 0xcf, 0x43, 0xf3, 0x1d, 0x7a, 0xfd, 0xe3, 0xb9, + 0xde, 0x00, 0xc4, 0xa5, 0x7b, 0xda, 0x7e, 0xb0, 0xd7, 0x1b, 0x1f, 0xe4, 0xa1, 0x05, 0xb0, 0x59, + 0x39, 0x9a, 0x9f, 0x7f, 0x65, 0xbd, 0xd9, 0x78, 0x42, 0x95, 0x4b, 0xf8, 0xf3, 0xe8, 0x14, 0x53, + 0x14, 0xa3, 0xf1, 0x3f, 0xc2, 0xfd, 0xf7, 0x42, 0x76, 0x40, 0xb3, 0xbf, 0x14, 0x54, 0xf9, 0xcf, + 0x05, 0x23, 0xa4, 0xd9, 0x27, 0x02, 0x1f, 0xd3, 0xcc, 0x01, 0x8d, 0x5f, 0x2d, 0xc0, 0x99, 0x36, + 0x70, 0x23, 0x39, 0x74, 0x08, 0x2b, 0x4f, 0x24, 0x07, 0xae, 0xd5, 0xfb, 0x51, 0xeb, 0xef, 0xcc, + 0xbc, 0xdb, 0x9e, 0xee, 0x69, 0xd3, 0x83, 0xf3, 0x60, 0xd6, 0x7b, 0x6b, 0xc0, 0x94, 0x99, 0xff, + 0xd3, 0x8f, 0xe0, 0x9d, 0x6d, 0xba, 0xa7, 0xad, 0x46, 0x86, 0xab, 0x6c, 0x53, 0xf0, 0xb4, 0x67, + 0x55, 0x79, 0x0d, 0x5a, 0xe5, 0x1d, 0x03, 0xc9, 0xd2, 0xdd, 0x0e, 0x13, 0xe4, 0xb9, 0xcb, 0xf3, + 0x7e, 0x1e, 0x5a, 0xe8, 0xd8, 0xcf, 0x9d, 0x92, 0x49, 0xea, 0xab, 0x71, 0x15, 0xa1, 0x73, 0xe0, + 0xaa, 0xfb, 0xf8, 0xc0, 0x6b, 0x3f, 0x58, 0xc6, 0xba, 0xe1, 0x42, 0x73, 0xd7, 0x28, 0x89, 0xef, + 0x83, 0xab, 0x5a, 0x2c, 0x77, 0x86, 0x24, 0xca, 0x95, 0x71, 0x65, 0xf8, 0x5c, 0x8d, 0x0c, 0x33, + 0x48, 0x0e, 0x1d, 0x61, 0x85, 0x24, 0x6d, 0x72, 0x72, 0xf8, 0x02, 0xcb, 0xd2, 0x0b, 0xff, 0xa6, + 0x4e, 0x5c, 0x2f, 0x77, 0x6b, 0xe7, 0x0f, 0xa6, 0x8f, 0x5e, 0x62, 0xb7, 0x13, 0x59, 0xed, 0xb8, + 0xab, 0xc0, 0x35, 0xaa, 0x5c, 0x8b, 0xaa, 0xbd, 0xb9, 0xa6, 0x2d, 0xdd, 0x07, 0x51, 0x84, 0x1c, + 0x96, 0x8d, 0x86, 0xac, 0xfb, 0x6f, 0x79, 0x68, 0x9e, 0x7d, 0x27, 0x7f, 0x3c, 0x5b, 0x87, 0x1e, + 0xd3, 0xee, 0x87, 0x4a, 0xe1, 0x2c, 0x4f, 0x48, 0xce, 0x95, 0x92, 0xe6, 0x3b, 0xac, 0xb7, 0x53, + 0x00, 0xa9, 0x4b, 0xf9, 0x68, 0xde, 0xda, 0x50, 0xdc, 0x99, 0x6f, 0xc2, 0x56, 0xbe, 0xa9, 0x57, + 0xe5, 0xd5, 0x3c, 0xdf, 0x3c, 0x6e, 0xbd, 0x60, 0xfe, 0xea, 0x11, 0xf8, 0x5e, 0xb4, 0x46, 0xe0, + 0x5b, 0xa9, 0xca, 0xcb, 0x79, 0xb7, 0xf4, 0x07, 0x9c, 0xbf, 0x37, 0x86, 0x73, 0x7a, 0x5d, 0x76, + 0x30, 0xbe, 0x4a, 0x55, 0xbe, 0xdf, 0x08, 0x42, 0x51, 0x6a, 0x55, 0xb9, 0x1c, 0xe3, 0xf2, 0xd5, + 0x65, 0xc7, 0xe5, 0x83, 0xae, 0x98, 0x7d, 0xd7, 0xda, 0x95, 0x63, 0x88, 0xbe, 0xaa, 0xf3, 0x82, + 0x2a, 0x9f, 0x15, 0xd0, 0x29, 0xc1, 0x9b, 0x73, 0x29, 0xa4, 0xdf, 0x3b, 0xac, 0xed, 0x77, 0x14, + 0x19, 0xee, 0xbf, 0xb8, 0xd0, 0x7c, 0x87, 0xf1, 0xdd, 0x19, 0x62, 0xe2, 0x45, 0x53, 0x98, 0xb8, + 0xf1, 0x8b, 0x89, 0xf9, 0xaa, 0x5c, 0x4a, 0xc5, 0x84, 0x68, 0x0a, 0x1d, 0xc7, 0x47, 0xbe, 0xa4, + 0x99, 0x55, 0x72, 0x63, 0x68, 0xc2, 0xec, 0xf9, 0x91, 0xcb, 0xe6, 0x81, 0xea, 0x46, 0x12, 0xe6, + 0x90, 0x31, 0xe8, 0x33, 0x68, 0x92, 0xc2, 0xbb, 0x28, 0x90, 0x0c, 0xfa, 0xb4, 0x48, 0x9a, 0xcb, + 0x87, 0x32, 0xd1, 0xef, 0xbb, 0xe1, 0xf0, 0xe5, 0xa3, 0x40, 0xe6, 0x0b, 0x10, 0xd7, 0xb7, 0x70, + 0x01, 0x92, 0x37, 0xd1, 0x0b, 0x90, 0x27, 0xb9, 0x1d, 0x35, 0xdf, 0xa0, 0x0c, 0x63, 0x47, 0x9d, + 0x99, 0x63, 0x5f, 0xb4, 0xf7, 0xf5, 0x62, 0x48, 0xfb, 0x69, 0x47, 0xfb, 0xe1, 0xe8, 0x6c, 0x97, + 0x5c, 0x68, 0xfa, 0x46, 0x25, 0xd6, 0x12, 0x82, 0x3c, 0xfe, 0xc4, 0x5b, 0x73, 0x25, 0x2a, 0x8c, + 0x45, 0x1a, 0x21, 0x97, 0xbe, 0xc0, 0xbd, 0xd6, 0x61, 0x85, 0x92, 0x18, 0x87, 0x16, 0x6e, 0x5c, + 0xc2, 0x32, 0xea, 0xb3, 0x5a, 0x71, 0x05, 0x9a, 0x84, 0xff, 0xd6, 0x09, 0x99, 0x44, 0x55, 0xa7, + 0x45, 0xd2, 0x74, 0xbe, 0xa9, 0xbb, 0xae, 0xd6, 0x47, 0x2b, 0xc4, 0x72, 0x94, 0xe7, 0x8f, 0x85, + 0x29, 0x9d, 0x12, 0x62, 0xc0, 0xbf, 0xa5, 0x19, 0x26, 0x78, 0x7f, 0x2c, 0xec, 0xc3, 0xc5, 0xe2, + 0x6a, 0x92, 0x45, 0x31, 0x10, 0x0b, 0x11, 0x64, 0x1a, 0x61, 0x59, 0xef, 0xf5, 0xf2, 0xe5, 0xe6, + 0x81, 0xa6, 0xba, 0xbb, 0x33, 0xb7, 0x20, 0x7f, 0x22, 0x03, 0xa8, 0xf2, 0xaa, 0xf2, 0x83, 0xe8, + 0x7e, 0x6f, 0x36, 0x0a, 0xcc, 0x0d, 0xa9, 0xf0, 0xcd, 0xb8, 0xd0, 0x9c, 0x35, 0x4a, 0x82, 0x03, + 0xd5, 0x05, 0xc0, 0x63, 0x68, 0x72, 0xa0, 0x31, 0xd2, 0x1c, 0xd4, 0xf7, 0xe7, 0x05, 0x10, 0x59, + 0x09, 0xca, 0xa4, 0xa2, 0xe4, 0xd0, 0x11, 0x6e, 0x43, 0x9c, 0xe1, 0xf2, 0xb1, 0x2a, 0xf1, 0x71, + 0x54, 0xe4, 0x0f, 0x90, 0x2b, 0x6c, 0x1d, 0x5f, 0x24, 0x8f, 0xb4, 0x51, 0x2a, 0x4d, 0x49, 0x0e, + 0x1d, 0xd1, 0xf6, 0xf7, 0x65, 0x06, 0xf6, 0xd4, 0xd5, 0xfa, 0x8c, 0x72, 0x71, 0x17, 0x2c, 0x13, + 0x09, 0x2b, 0x0b, 0x68, 0x7b, 0x49, 0x95, 0x65, 0xaf, 0x5e, 0x28, 0x3d, 0xec, 0x7f, 0x25, 0xee, + 0xe6, 0x27, 0x02, 0x4e, 0x6e, 0x44, 0xed, 0x1d, 0x6d, 0xed, 0xd4, 0x5a, 0x47, 0x92, 0x83, 0x43, + 0x94, 0xc0, 0xca, 0xf5, 0x68, 0xa8, 0x5f, 0x56, 0xcf, 0x89, 0xe1, 0x4d, 0x16, 0xca, 0x7d, 0x45, + 0x46, 0x72, 0x56, 0xbd, 0xe7, 0xaa, 0xdf, 0xa8, 0xf2, 0x8b, 0xe8, 0x57, 0x5e, 0x07, 0x74, 0xb0, + 0xe8, 0x9e, 0x26, 0x2a, 0x21, 0xd1, 0x3d, 0x99, 0xaf, 0x28, 0x9b, 0xfe, 0xe7, 0x82, 0x31, 0x9f, + 0xcf, 0x05, 0xbd, 0x7f, 0xcf, 0x3f, 0x74, 0xa1, 0xbb, 0x2d, 0x7d, 0xdf, 0x19, 0x62, 0xc3, 0x67, + 0xda, 0xe1, 0x16, 0x5a, 0x82, 0xcf, 0x9b, 0x09, 0x6d, 0x7c, 0x1b, 0xdb, 0x63, 0xaa, 0xfc, 0x30, + 0x5a, 0xee, 0x75, 0x42, 0x89, 0x54, 0xe2, 0x84, 0x6f, 0xcf, 0x7e, 0x17, 0x9a, 0xc9, 0xec, 0xa0, + 0x10, 0xeb, 0x16, 0x33, 0xf8, 0x72, 0x94, 0x1f, 0x36, 0x98, 0x7b, 0xa1, 0x2a, 0xcf, 0xf3, 0x92, + 0x02, 0x69, 0x16, 0xbb, 0xaf, 0x75, 0x37, 0x90, 0x8c, 0xd6, 0xc0, 0xda, 0xa4, 0x0e, 0x70, 0xd1, + 0x80, 0xb9, 0x0d, 0xd0, 0xc8, 0x70, 0x81, 0x8b, 0xa4, 0x62, 0xad, 0xf7, 0x8a, 0x76, 0xe6, 0x0c, + 0xf3, 0x68, 0x87, 0x52, 0xf1, 0x05, 0x34, 0x53, 0xbf, 0xe9, 0xa3, 0xf2, 0x9f, 0x91, 0x6a, 0xb9, + 0x2a, 0x2f, 0xf6, 0x5a, 0x6b, 0xb3, 0x47, 0x00, 0x71, 0x89, 0x7d, 0x56, 0xc0, 0x2a, 0x2c, 0xf8, + 0xd0, 0x62, 0xaf, 0x75, 0x76, 0xd9, 0x5d, 0x50, 0xee, 0xfd, 0xe7, 0x02, 0x2a, 0x59, 0xa3, 0x24, + 0x4c, 0xe0, 0xdf, 0x2b, 0xff, 0x56, 0x55, 0xab, 0xf2, 0xd3, 0x68, 0xa5, 0xd7, 0x71, 0x54, 0xd2, + 0xbd, 0xb0, 0xac, 0xe6, 0xe9, 0xc4, 0x79, 0x4e, 0xf2, 0xfc, 0x53, 0x17, 0xba, 0xc7, 0xa6, 0xfd, + 0x9d, 0xc1, 0x2a, 0x9b, 0x4c, 0xac, 0x72, 0x6f, 0x36, 0xab, 0x58, 0x56, 0x76, 0x7c, 0xcc, 0x42, + 0xd3, 0x39, 0x38, 0xa3, 0x45, 0x9a, 0x9b, 0x03, 0xaf, 0x9e, 0xb4, 0x80, 0x90, 0x8f, 0x90, 0x2f, + 0x61, 0x15, 0x83, 0xea, 0x85, 0xf1, 0x52, 0x7d, 0x0d, 0x42, 0xf0, 0x17, 0xd9, 0x40, 0x01, 0x91, + 0xf7, 0xa9, 0xb2, 0xdb, 0xcb, 0x15, 0x4b, 0x22, 0xdf, 0x94, 0xf2, 0x19, 0x57, 0x2f, 0x3e, 0x83, + 0xa6, 0xc0, 0x2f, 0x9e, 0x69, 0x48, 0x00, 0x78, 0xbe, 0x9c, 0x8d, 0x80, 0xb2, 0x09, 0x5f, 0x55, + 0x85, 0xd9, 0x1a, 0x95, 0x7a, 0xb9, 0xc9, 0x98, 0xc7, 0xeb, 0xf9, 0x6b, 0x81, 0xec, 0x67, 0x35, + 0x98, 0x92, 0x01, 0xe8, 0xfb, 0xe5, 0x07, 0xba, 0x70, 0x0e, 0x63, 0x62, 0x9b, 0x0a, 0xf9, 0x90, + 0x1b, 0x26, 0x62, 0x62, 0x85, 0x3f, 0x87, 0x3d, 0xc3, 0xdc, 0xf4, 0xce, 0x60, 0x84, 0x75, 0x26, + 0x46, 0x28, 0xb5, 0x32, 0x02, 0x5b, 0xc1, 0x09, 0x6f, 0x17, 0x76, 0xd8, 0x60, 0xdb, 0x85, 0x15, + 0x93, 0x9e, 0x3f, 0xb8, 0x50, 0xe1, 0x0b, 0x91, 0x30, 0xa8, 0x81, 0x4b, 0xd1, 0xa4, 0xdd, 0xf8, + 0x6f, 0x46, 0x03, 0x25, 0xaa, 0x3c, 0xdb, 0x4b, 0x8b, 0xa4, 0x29, 0x5a, 0xf7, 0x40, 0xfa, 0xe8, + 0x25, 0xad, 0x6b, 0x08, 0xeb, 0x70, 0x50, 0x28, 0xae, 0x40, 0xf9, 0xf8, 0x2f, 0x1e, 0x67, 0x3c, + 0xcd, 0x4f, 0xd7, 0xdb, 0xb0, 0x8d, 0x05, 0x43, 0x8b, 0x55, 0xa8, 0x10, 0xff, 0x4b, 0xb8, 0x65, + 0x7c, 0x74, 0xae, 0xc3, 0x8b, 0x4f, 0xa2, 0x22, 0xfc, 0x37, 0x30, 0x49, 0xfe, 0xb8, 0x1a, 0x1b, + 0x0d, 0xc4, 0x0d, 0xa8, 0x28, 0xde, 0xbc, 0x2d, 0xac, 0x24, 0xd6, 0x37, 0x37, 0x51, 0x3f, 0xe0, + 0x65, 0xaa, 0xbc, 0xc4, 0x6b, 0x94, 0x4a, 0xf7, 0x66, 0x06, 0x2e, 0x18, 0xc3, 0x26, 0x7f, 0xa4, + 0x7b, 0xda, 0xb4, 0xbe, 0xc3, 0xe9, 0x9b, 0x47, 0x68, 0x30, 0x58, 0x03, 0xba, 0x0a, 0x4f, 0x19, + 0xcd, 0xf5, 0xea, 0x38, 0xe4, 0xa6, 0x4c, 0x99, 0x6e, 0x68, 0x12, 0x9a, 0x41, 0x16, 0x85, 0x9e, + 0x1f, 0x08, 0xa6, 0x1f, 0xb7, 0x1a, 0x78, 0xe6, 0x66, 0x1b, 0x46, 0x93, 0x43, 0x47, 0xd8, 0x49, + 0x8f, 0x3f, 0xe2, 0x3d, 0x83, 0xa6, 0xd0, 0x1f, 0x9c, 0xb4, 0x01, 0x14, 0x70, 0xe5, 0x52, 0x31, + 0x7d, 0x31, 0xc1, 0x92, 0x05, 0x19, 0x55, 0xe2, 0x8b, 0x48, 0xa4, 0x3f, 0x6b, 0x39, 0x8d, 0x1a, + 0x16, 0x82, 0x9c, 0x65, 0x6c, 0xaa, 0x25, 0x91, 0x1e, 0x2a, 0x88, 0x4a, 0x4d, 0x89, 0xcf, 0x06, + 0x4e, 0xac, 0x43, 0xd3, 0x68, 0xe9, 0x16, 0x25, 0x16, 0x37, 0x54, 0x75, 0x72, 0xa0, 0xc8, 0xaa, + 0x62, 0x83, 0x4c, 0x77, 0x76, 0xa4, 0x7a, 0x2f, 0xfb, 0xb2, 0x6a, 0xc5, 0x67, 0x74, 0x24, 0x6d, + 0xd8, 0x48, 0xd3, 0x28, 0x78, 0xf8, 0x4c, 0x8c, 0x1b, 0x36, 0xea, 0xa3, 0x22, 0xa9, 0xc8, 0xd3, + 0xd7, 0x86, 0xd3, 0xc3, 0x67, 0x7c, 0x46, 0x35, 0x87, 0x2b, 0xa2, 0x33, 0x4f, 0xb2, 0xe2, 0x8a, + 0xa8, 0xcd, 0x6c, 0x18, 0x44, 0x59, 0xf6, 0xf1, 0x55, 0xe2, 0x41, 0x01, 0x4d, 0xa5, 0xbf, 0xe1, + 0x30, 0x4b, 0xd3, 0x1b, 0x34, 0xa8, 0x72, 0xd0, 0x6b, 0xae, 0x91, 0xe8, 0x61, 0x9d, 0x66, 0x56, + 0xf0, 0x35, 0x87, 0xb1, 0xee, 0xe2, 0xce, 0xdc, 0x3a, 0x9c, 0x39, 0xd7, 0x95, 0x1c, 0xec, 0x73, + 0x93, 0xa8, 0x5f, 0xb8, 0x88, 0x26, 0x2b, 0x1c, 0xec, 0x73, 0xd7, 0x05, 0x49, 0xac, 0xd2, 0xd1, + 0x13, 0x1f, 0xa5, 0x6f, 0xf6, 0xe3, 0x02, 0x79, 0x5b, 0x38, 0x12, 0x6b, 0xf2, 0x37, 0xba, 0x21, + 0xa1, 0xd2, 0x62, 0x9f, 0xf9, 0x1b, 0x62, 0x08, 0x15, 0x36, 0x46, 0x02, 0xe0, 0xc5, 0x0b, 0xc9, + 0x10, 0xd6, 0xa9, 0xf2, 0xb3, 0x5e, 0xbd, 0x50, 0x7a, 0x0a, 0xcb, 0x5a, 0x4e, 0xe8, 0x97, 0x35, + 0xec, 0x54, 0xe0, 0x15, 0x0c, 0x26, 0xe7, 0x33, 0x67, 0xd2, 0x43, 0x17, 0xb5, 0x8e, 0x0f, 0x35, + 0xb5, 0x4b, 0xa7, 0x53, 0x28, 0x81, 0xb1, 0x2f, 0xf6, 0xe9, 0x3d, 0x89, 0xbf, 0x44, 0xc5, 0xf4, + 0xdb, 0x6b, 0x95, 0x16, 0xa5, 0x91, 0x38, 0x0d, 0x17, 0x55, 0xaf, 0x50, 0xe5, 0x65, 0x5e, 0x53, + 0x85, 0x74, 0x2f, 0x9d, 0x37, 0xe9, 0xa7, 0x0c, 0xf8, 0xf0, 0x8b, 0xd6, 0x3d, 0x98, 0xeb, 0xa0, + 0x6c, 0xb1, 0xcf, 0xd4, 0xa0, 0xaa, 0x4c, 0x95, 0xef, 0x47, 0xf7, 0x79, 0x2d, 0x6c, 0x21, 0x4d, + 0xd7, 0x69, 0x9e, 0x32, 0xcf, 0xc9, 0x3c, 0x30, 0x7f, 0x71, 0x52, 0x8d, 0xc2, 0x7f, 0xfd, 0x8d, + 0xeb, 0xb1, 0x2c, 0xf5, 0xd6, 0xed, 0xb8, 0xd1, 0xb3, 0xa6, 0x6c, 0xbf, 0x7f, 0x86, 0xdf, 0xf2, + 0xf2, 0x18, 0x61, 0x3a, 0x6e, 0x79, 0xac, 0x39, 0x77, 0x92, 0x7b, 0x05, 0xcd, 0x8c, 0xf1, 0xaa, + 0x0a, 0x61, 0x65, 0x60, 0x94, 0x3a, 0x55, 0x5e, 0xed, 0xb5, 0xd6, 0x4a, 0xcb, 0xe4, 0xdd, 0xcd, + 0x31, 0xc5, 0x4d, 0x30, 0x91, 0x1c, 0xec, 0xe3, 0x6f, 0x2a, 0xd2, 0x3d, 0x6d, 0xb6, 0x6a, 0xbc, + 0xb5, 0x97, 0x2a, 0xdc, 0x3b, 0xaa, 0xf5, 0xe6, 0x46, 0xaa, 0x74, 0x1f, 0xb7, 0x5f, 0x00, 0x22, + 0xd8, 0xfb, 0x2b, 0x6e, 0xfb, 0x4d, 0xb9, 0xd0, 0x02, 0xa7, 0x6e, 0xee, 0x8c, 0x5d, 0x78, 0xab, + 0x69, 0x17, 0x76, 0x5b, 0x0d, 0x3e, 0x66, 0xf2, 0x74, 0x4c, 0x67, 0xc1, 0x23, 0xc7, 0xb4, 0x2f, + 0xd7, 0xaa, 0xb2, 0x8c, 0x9e, 0xf6, 0x8e, 0x81, 0x26, 0x69, 0x7e, 0x4e, 0x74, 0x7b, 0xfe, 0xaf, + 0x3c, 0x54, 0x6a, 0xde, 0xd9, 0xf1, 0x6e, 0xf3, 0x0d, 0xa8, 0x6e, 0x5f, 0xe1, 0x80, 0xf7, 0xb8, + 0x95, 0xf4, 0xc7, 0x6b, 0xbd, 0x88, 0xa3, 0x82, 0x96, 0x68, 0xa0, 0x8e, 0xa5, 0xde, 0x7b, 0x49, + 0x95, 0x5f, 0xf0, 0x42, 0x89, 0xf4, 0x3c, 0x64, 0x6b, 0x49, 0x9d, 0x39, 0x9c, 0x1c, 0xfc, 0xa0, + 0x25, 0x1a, 0xc8, 0xda, 0x70, 0x97, 0xb8, 0x33, 0x07, 0xe8, 0x9d, 0x5d, 0x39, 0xb1, 0x94, 0x13, + 0xdf, 0x16, 0xb2, 0xa2, 0x86, 0x14, 0xcb, 0xda, 0xa3, 0xa1, 0x67, 0x71, 0x27, 0xc9, 0xe3, 0x9c, + 0x60, 0x69, 0x78, 0x36, 0xab, 0xb2, 0xcf, 0x0b, 0x25, 0x52, 0x9d, 0xd1, 0x16, 0x24, 0xb6, 0xbc, + 0x45, 0xae, 0x5b, 0x2b, 0x57, 0xaf, 0x5d, 0x05, 0x15, 0x95, 0x9b, 0xd7, 0xeb, 0x25, 0xc9, 0xc1, + 0x83, 0x50, 0xb8, 0x98, 0xb9, 0x9c, 0xc0, 0xe7, 0x53, 0x9d, 0xad, 0xa9, 0xde, 0x4e, 0x1f, 0xf4, + 0xc8, 0xae, 0xc1, 0x73, 0x2c, 0x96, 0xf4, 0xa0, 0x8d, 0x26, 0xa6, 0x2b, 0x1b, 0x3c, 0x77, 0xfd, + 0x2d, 0x5c, 0xad, 0x5a, 0xfb, 0xb9, 0xd3, 0xf2, 0x8c, 0x61, 0xd6, 0x2a, 0xc9, 0x66, 0x2d, 0xa6, + 0x2e, 0x8d, 0x4f, 0xbd, 0xa5, 0x09, 0xae, 0x72, 0xe1, 0x83, 0x1d, 0x9d, 0x73, 0x20, 0xd6, 0xf3, + 0x1f, 0xf3, 0x51, 0xf1, 0x86, 0xa8, 0x42, 0x1c, 0xd3, 0xc3, 0x6b, 0x23, 0x0d, 0x62, 0x0d, 0x2a, + 0x66, 0x12, 0x92, 0x4b, 0x98, 0x4e, 0xac, 0x23, 0xa6, 0x0a, 0xa9, 0x18, 0x9c, 0xd4, 0xa8, 0x82, + 0x60, 0xaa, 0x13, 0x1f, 0xc7, 0x87, 0x3f, 0xf8, 0xad, 0x1f, 0x80, 0x08, 0x82, 0xb8, 0x62, 0xa9, + 0x10, 0x3a, 0xa8, 0xab, 0xf5, 0x71, 0xa5, 0xe2, 0x72, 0x3d, 0x59, 0x1a, 0xc7, 0x49, 0x2c, 0x59, + 0xda, 0x34, 0x96, 0x32, 0x2f, 0xd3, 0x7f, 0x45, 0xbb, 0x79, 0x4c, 0x4f, 0x8f, 0xc7, 0x2d, 0x64, + 0xbe, 0xdd, 0x42, 0x6a, 0xfd, 0xe7, 0x32, 0xfd, 0xe7, 0x52, 0x27, 0x2e, 0x68, 0xb7, 0x4e, 0x64, + 0x2f, 0xe4, 0x12, 0x34, 0x29, 0x12, 0xdd, 0x1c, 0x57, 0x62, 0x94, 0x1d, 0xe6, 0xa8, 0xf2, 0x5d, + 0x5e, 0x5a, 0x24, 0x15, 0x81, 0x16, 0x95, 0x1c, 0x1a, 0xf2, 0xd1, 0x22, 0x71, 0x25, 0x42, 0x01, + 0xc8, 0x7e, 0xcc, 0x92, 0x93, 0x17, 0xc1, 0x8a, 0x71, 0xc5, 0x52, 0x31, 0xa8, 0x33, 0x2c, 0xff, + 0xb3, 0x51, 0x23, 0xae, 0xe2, 0xb5, 0x5c, 0xd0, 0x9b, 0x1e, 0x54, 0xe5, 0x45, 0xbc, 0x96, 0x7b, + 0x37, 0x7c, 0xd4, 0x72, 0xb7, 0xc1, 0x6b, 0xbc, 0xab, 0xf8, 0xdb, 0xc9, 0x42, 0xae, 0x1b, 0xe3, + 0x76, 0xd2, 0xd2, 0x0d, 0x8d, 0xa1, 0xc5, 0xdf, 0x43, 0x72, 0xab, 0x4d, 0xb6, 0xdb, 0x22, 0x9b, + 0xd5, 0x06, 0xd5, 0x19, 0x16, 0x8b, 0x6e, 0xa2, 0xa6, 0xba, 0x2a, 0xfc, 0x61, 0xe4, 0xf1, 0x9a, + 0xe8, 0x48, 0x12, 0xe1, 0xeb, 0x80, 0x73, 0xc0, 0xbf, 0xe7, 0x5f, 0xb8, 0xd0, 0x8c, 0x4d, 0xfe, + 0xf8, 0x4e, 0x13, 0xc1, 0x79, 0xec, 0x08, 0x2e, 0x8b, 0x9e, 0x16, 0x58, 0xe9, 0xc9, 0x44, 0x34, + 0x73, 0xcc, 0x44, 0xa3, 0xd3, 0x45, 0x49, 0x16, 0x5d, 0x18, 0xab, 0x3e, 0xc7, 0xbc, 0xea, 0xfa, + 0xea, 0x2e, 0xb0, 0xae, 0xae, 0x69, 0xf9, 0xe6, 0x59, 0x96, 0x8f, 0x5f, 0x95, 0x79, 0x96, 0x55, + 0xe1, 0x91, 0x3d, 0x47, 0x4f, 0x41, 0x56, 0x04, 0xdf, 0xa4, 0x69, 0xc2, 0x4a, 0xb9, 0xcc, 0x68, + 0x24, 0xb9, 0x3a, 0x97, 0xb6, 0xcc, 0x93, 0xb5, 0x40, 0x53, 0xcc, 0xd8, 0xc1, 0x65, 0x9e, 0x7f, + 0xe3, 0x42, 0x53, 0x30, 0x5a, 0x37, 0x26, 0x94, 0x28, 0xc6, 0xe8, 0xf2, 0xac, 0x7c, 0x83, 0xe3, + 0x62, 0xa1, 0x95, 0xa8, 0x30, 0x9e, 0x50, 0xa2, 0xdc, 0xf9, 0x09, 0xae, 0x3b, 0x58, 0xa1, 0x9e, + 0xc8, 0x95, 0xcf, 0xb7, 0xaa, 0xd7, 0x8a, 0x55, 0xa8, 0xa0, 0x91, 0x68, 0xc4, 0x79, 0xc6, 0x25, + 0x04, 0x94, 0x48, 0x25, 0x40, 0x03, 0xe9, 0xbe, 0xce, 0xf4, 0xd0, 0xc5, 0xb2, 0xba, 0xf5, 0xab, + 0x37, 0x94, 0xaf, 0xf2, 0xf9, 0x36, 0xf8, 0x16, 0xfb, 0x00, 0x40, 0x5c, 0x91, 0xcd, 0xbd, 0x44, + 0x72, 0xeb, 0xdc, 0x5b, 0x6c, 0xcf, 0xb7, 0x5f, 0x8f, 0x0f, 0xc7, 0x4f, 0xb4, 0xe7, 0x26, 0x83, + 0x63, 0x02, 0x91, 0xb2, 0x75, 0xe1, 0x78, 0xc2, 0x1f, 0x06, 0xaa, 0xfc, 0xfa, 0xba, 0xc6, 0x8a, + 0x2c, 0x5d, 0x83, 0xde, 0x11, 0x81, 0xae, 0x31, 0x3d, 0xeb, 0xd0, 0xf2, 0x4d, 0xa8, 0x1b, 0xf5, + 0xd4, 0x34, 0x91, 0xcf, 0x12, 0xec, 0x4b, 0x5e, 0x52, 0x20, 0x79, 0xf5, 0x7d, 0x01, 0xee, 0xe1, + 0xdd, 0xfe, 0x68, 0x45, 0x43, 0xb3, 0x3f, 0xdc, 0xb0, 0x7b, 0x47, 0xa4, 0xb9, 0x62, 0x59, 0xb9, + 0xbb, 0x39, 0x5e, 0xf1, 0x8a, 0x12, 0x4f, 0x2c, 0xab, 0xf0, 0x33, 0x6f, 0x06, 0x30, 0x5b, 0xd4, + 0x22, 0x14, 0x8e, 0x04, 0x95, 0xd5, 0xfe, 0xa6, 0x50, 0xe3, 0x2e, 0x2a, 0x41, 0x49, 0x62, 0x40, + 0xae, 0x58, 0x2a, 0x4e, 0xf5, 0x0e, 0x69, 0xa7, 0x0f, 0xa4, 0xaf, 0x0d, 0x6b, 0x1d, 0x27, 0x58, + 0x7b, 0x0e, 0x40, 0x7c, 0x00, 0xe5, 0x05, 0xa2, 0xcd, 0xf4, 0xad, 0xee, 0x2c, 0x55, 0x9e, 0xe9, + 0xc5, 0xbf, 0x25, 0x54, 0x53, 0xbf, 0xd9, 0x9d, 0x3a, 0x3b, 0x98, 0x3a, 0x76, 0xc5, 0x87, 0x0b, + 0xc4, 0x95, 0x68, 0x52, 0x93, 0xd2, 0x14, 0x89, 0xed, 0x22, 0xac, 0x37, 0xb5, 0xfa, 0x7e, 0x55, + 0xf6, 0x78, 0x69, 0x91, 0x54, 0xa2, 0xed, 0x6b, 0xd7, 0xfa, 0xde, 0xd2, 0xce, 0x5f, 0xd4, 0xae, + 0x74, 0xeb, 0xbe, 0xed, 0xee, 0x35, 0xd5, 0x3e, 0x0a, 0x21, 0x6e, 0x41, 0x05, 0xdb, 0x42, 0xbb, + 0x75, 0x81, 0x49, 0xa2, 0x75, 0x42, 0x89, 0xb4, 0x22, 0x39, 0xd8, 0x43, 0xd8, 0xa2, 0xdc, 0x0d, + 0x19, 0x7d, 0x53, 0x6f, 0x0d, 0xc0, 0xee, 0x09, 0x15, 0xe9, 0x8b, 0x7b, 0x52, 0xbd, 0x9d, 0x99, + 0xfd, 0x1f, 0x68, 0xc3, 0x43, 0x7a, 0x98, 0x02, 0x1f, 0x34, 0x16, 0x9f, 0xe7, 0x6e, 0x89, 0x8b, + 0x8c, 0x6c, 0x7c, 0xc6, 0x2d, 0xf1, 0x03, 0xec, 0x2f, 0xbd, 0x29, 0x7d, 0xe0, 0x73, 0xfc, 0x46, + 0x19, 0x89, 0xb0, 0x50, 0x19, 0x57, 0x1a, 0xb7, 0x73, 0xd1, 0x15, 0xc4, 0x43, 0x42, 0x96, 0x58, + 0x24, 0x82, 0xa1, 0xfa, 0xb7, 0xaa, 0xbc, 0x21, 0x6b, 0x1f, 0x7e, 0x5a, 0xbb, 0xf9, 0x26, 0x6b, + 0x96, 0x1c, 0x1c, 0xc2, 0x1d, 0x11, 0xe7, 0x2d, 0x1e, 0x88, 0xdf, 0xaa, 0xcb, 0x22, 0xe1, 0xc6, + 0x50, 0x58, 0xa9, 0x8c, 0x6c, 0xdf, 0x8e, 0xff, 0x5d, 0xfc, 0x65, 0xf5, 0xec, 0xd8, 0x5d, 0xbe, + 0x9f, 0xf9, 0x26, 0x41, 0xb9, 0x6f, 0x32, 0xad, 0x30, 0x8b, 0xe0, 0xaa, 0x1e, 0x41, 0x95, 0x8f, + 0x0b, 0xe8, 0x4d, 0xc1, 0x7b, 0x37, 0xe6, 0x06, 0x1b, 0x46, 0x90, 0x5e, 0x05, 0x9f, 0x02, 0x58, + 0x6c, 0xd0, 0x2f, 0xbe, 0x23, 0x8f, 0x90, 0xbf, 0x77, 0x71, 0x47, 0x62, 0xf3, 0xd0, 0xee, 0x0c, + 0xd5, 0x70, 0x83, 0x49, 0x35, 0x9c, 0x97, 0xad, 0x1a, 0xf2, 0x53, 0x1a, 0x9f, 0x7a, 0xb8, 0x5a, + 0x95, 0x6b, 0x90, 0xec, 0x9d, 0x85, 0xb1, 0xb2, 0x3e, 0x12, 0x34, 0x21, 0x43, 0x2a, 0xb1, 0x2e, + 0x94, 0x93, 0xdf, 0xc7, 0xff, 0x2a, 0x44, 0xc5, 0xfc, 0xd7, 0xc5, 0x47, 0x51, 0x61, 0x98, 0xf6, + 0xc7, 0x6f, 0x2f, 0x7a, 0x21, 0x30, 0xfb, 0xc9, 0x4b, 0x54, 0x2f, 0xd4, 0xcb, 0x71, 0xc3, 0xc4, + 0xae, 0xa8, 0xc2, 0x6d, 0x30, 0xd0, 0x90, 0x15, 0x32, 0x29, 0xc1, 0xb6, 0x16, 0x56, 0x8e, 0x05, + 0x3d, 0x27, 0x62, 0xf2, 0x38, 0x41, 0xef, 0x24, 0x62, 0x4c, 0xb2, 0xe5, 0x7e, 0x90, 0x2d, 0x10, + 0x7f, 0xe1, 0x2e, 0x55, 0x9e, 0x01, 0xb2, 0xa5, 0x28, 0x10, 0x6d, 0xb6, 0x17, 0x2d, 0x05, 0xce, + 0xa2, 0xa5, 0xff, 0xc6, 0xe8, 0x7e, 0x7b, 0xd1, 0x72, 0x3f, 0xca, 0x6b, 0xd0, 0x25, 0x18, 0x7c, + 0xa5, 0x01, 0x7f, 0xa5, 0xc1, 0xf8, 0x4a, 0x43, 0xb4, 0x59, 0x8c, 0xeb, 0x2a, 0xc0, 0x64, 0x23, + 0x1d, 0x21, 0xcb, 0x42, 0xba, 0x9e, 0xce, 0x81, 0x9c, 0xbc, 0x6e, 0x8f, 0x74, 0x6d, 0x5c, 0xb5, + 0x76, 0xed, 0xed, 0x91, 0x9e, 0xcc, 0xb9, 0x4b, 0xe9, 0xf3, 0x43, 0x5a, 0xff, 0xe9, 0xe4, 0x67, + 0x07, 0xb4, 0xee, 0x81, 0xcc, 0xc7, 0x7d, 0xc9, 0x1b, 0x57, 0x70, 0xf5, 0x86, 0xb5, 0xb5, 0x5b, + 0x37, 0x6c, 0xde, 0x94, 0x0d, 0xf2, 0xe9, 0x47, 0xda, 0xd1, 0xfe, 0xf4, 0xcd, 0x36, 0x5d, 0xbf, + 0xa8, 0x43, 0x45, 0xcd, 0xe1, 0x50, 0xa2, 0x3e, 0x16, 0x0a, 0x28, 0x44, 0xf4, 0xb9, 0xc0, 0xa4, + 0x69, 0x94, 0x4a, 0x73, 0xa1, 0x6d, 0x72, 0xf8, 0xd3, 0xd4, 0xd9, 0x11, 0x7d, 0x82, 0xb7, 0x47, + 0x7a, 0xb4, 0xf6, 0xd7, 0x7d, 0x06, 0x9c, 0xb8, 0x02, 0x15, 0x60, 0xb1, 0x8f, 0x35, 0x98, 0x3c, + 0x66, 0x36, 0x84, 0x12, 0x49, 0x04, 0x8b, 0x1a, 0x3e, 0x73, 0xb2, 0xbd, 0xc4, 0x07, 0x55, 0xe2, + 0xef, 0x38, 0xf9, 0x88, 0x8c, 0x33, 0xa7, 0x21, 0x1f, 0x57, 0x6b, 0x03, 0x37, 0x52, 0x87, 0x2e, + 0x18, 0xd2, 0xb1, 0xf7, 0x20, 0x96, 0xb9, 0x3d, 0x6d, 0x86, 0x93, 0x6a, 0x96, 0x54, 0x06, 0xf9, + 0xa9, 0x7f, 0x0c, 0x5a, 0x72, 0xf2, 0xb3, 0x01, 0x4d, 0x63, 0xe2, 0xab, 0x3e, 0x12, 0x69, 0xac, + 0xab, 0x05, 0xcd, 0xa9, 0xfa, 0x69, 0x55, 0x7e, 0xd2, 0x9b, 0x55, 0x25, 0x79, 0x41, 0xae, 0x6b, + 0xea, 0x25, 0xcc, 0x15, 0x57, 0xcf, 0xd6, 0xd5, 0x96, 0xf3, 0x69, 0xdd, 0xb5, 0xae, 0x1b, 0xa3, + 0xed, 0x07, 0xe9, 0x27, 0xb2, 0xda, 0x8a, 0x67, 0x04, 0x84, 0x20, 0x5c, 0x41, 0x6d, 0x28, 0xbe, + 0x93, 0xbc, 0x25, 0xb7, 0x39, 0xdb, 0xd5, 0xfa, 0x13, 0x7e, 0x5c, 0x0f, 0xc9, 0x5f, 0xb8, 0x06, + 0xd2, 0x26, 0x9d, 0x70, 0xd3, 0xc3, 0x67, 0xd2, 0x6f, 0xbf, 0xc5, 0x66, 0x0a, 0x9f, 0xce, 0xda, + 0x70, 0x96, 0xb8, 0x93, 0xc3, 0xed, 0xc9, 0xe1, 0x76, 0x3b, 0x79, 0x0f, 0xce, 0xe9, 0x5a, 0xfb, + 0xb5, 0xd4, 0xb5, 0x4b, 0x3e, 0xee, 0x0b, 0x62, 0xaf, 0x80, 0x8a, 0x82, 0xf4, 0xfb, 0xf1, 0x92, + 0xa9, 0xf6, 0x87, 0x4f, 0x7d, 0x80, 0x24, 0x06, 0xb7, 0x01, 0xcf, 0xc6, 0x97, 0x3a, 0x76, 0x25, + 0x75, 0xb0, 0xff, 0x1b, 0x1b, 0x9f, 0xf1, 0x81, 0x2a, 0xcc, 0xca, 0xa8, 0xc4, 0x5b, 0xb8, 0xde, + 0x56, 0x80, 0x78, 0xb4, 0x02, 0x74, 0xef, 0x1a, 0x25, 0xb1, 0xce, 0x4f, 0x0c, 0xbe, 0xcd, 0x0d, + 0x0d, 0x4a, 0x3c, 0xa1, 0x04, 0xd7, 0xf9, 0x03, 0x3b, 0x42, 0xdf, 0x88, 0xbd, 0xe7, 0x89, 0x2c, + 0x1d, 0xec, 0xbe, 0x5c, 0x3a, 0x58, 0xb6, 0xd1, 0xf3, 0x3d, 0xc1, 0xac, 0xf6, 0x76, 0x0b, 0xaa, + 0xdc, 0xe4, 0x2d, 0x0c, 0x34, 0xc6, 0xc1, 0x0a, 0xec, 0xa7, 0x56, 0x60, 0x50, 0x7d, 0xd7, 0x2e, + 0x5b, 0xba, 0x14, 0x38, 0x75, 0x69, 0xc5, 0xb2, 0xa5, 0x4b, 0x93, 0x83, 0x1f, 0xe8, 0x01, 0x2c, + 0xd6, 0x3e, 0x6c, 0x54, 0x3d, 0x9c, 0x55, 0xb5, 0x6c, 0x29, 0xab, 0xc3, 0x40, 0xa4, 0x98, 0xb8, + 0x6b, 0xbf, 0x91, 0xee, 0xeb, 0x5c, 0xfc, 0x65, 0xf5, 0xbc, 0x58, 0xa9, 0x2f, 0x1f, 0x03, 0xf9, + 0xf2, 0x71, 0x2f, 0xbe, 0x02, 0xd2, 0xc0, 0x57, 0xb0, 0x56, 0x22, 0xff, 0x80, 0x8a, 0x6d, 0xd2, + 0x19, 0xf3, 0x27, 0xa4, 0x33, 0x2e, 0x05, 0x13, 0x55, 0x2d, 0x55, 0xee, 0xc8, 0xd6, 0x09, 0x25, + 0xd2, 0x34, 0xd0, 0x8a, 0xd2, 0x37, 0x8f, 0xa4, 0x87, 0x7b, 0xeb, 0x6a, 0xc1, 0xbe, 0x54, 0xfb, + 0x5d, 0x69, 0x73, 0x2d, 0x4c, 0x16, 0x81, 0x36, 0x47, 0x12, 0x65, 0x51, 0x59, 0xb4, 0x29, 0x75, + 0xe8, 0x52, 0xe6, 0xe0, 0x61, 0xba, 0xa1, 0x9c, 0x6f, 0xc3, 0x94, 0xca, 0xdd, 0x60, 0xdd, 0x1e, + 0xe9, 0x82, 0xdc, 0xc8, 0xe5, 0xa3, 0x3d, 0x47, 0xb5, 0x91, 0xd6, 0x2f, 0x5a, 0xf7, 0x1a, 0xc6, + 0x34, 0xb7, 0xd6, 0x71, 0x52, 0x1b, 0xb8, 0xa1, 0x03, 0xa7, 0x4e, 0x9c, 0xc5, 0x82, 0xe7, 0xea, + 0x5e, 0x2a, 0xcd, 0x98, 0x83, 0xe5, 0xd8, 0x54, 0x29, 0x79, 0x53, 0x67, 0x6f, 0xa4, 0x0e, 0xf6, + 0x37, 0x11, 0x28, 0x30, 0xfb, 0x53, 0x13, 0x19, 0x3f, 0x3c, 0x30, 0xc4, 0xfc, 0x57, 0x17, 0xf2, + 0xe4, 0xea, 0xf1, 0xce, 0xd0, 0x63, 0x7e, 0x65, 0xd2, 0x63, 0x1e, 0x70, 0xd4, 0x63, 0x94, 0xa6, + 0x68, 0xa3, 0x3f, 0xa1, 0xd4, 0x44, 0xc2, 0xdb, 0x43, 0x0d, 0x13, 0xf2, 0x6b, 0x1d, 0x07, 0x92, + 0xa4, 0x12, 0x2b, 0x7e, 0x9d, 0xf4, 0x9b, 0x8e, 0x3c, 0x74, 0x8f, 0x45, 0x73, 0x8c, 0x7f, 0x5f, + 0x47, 0xbb, 0xad, 0xd6, 0xa3, 0x9d, 0xac, 0xca, 0x4f, 0xf1, 0x6c, 0xba, 0x8c, 0x63, 0xd3, 0x72, + 0x37, 0x90, 0x71, 0xaa, 0x6b, 0xbf, 0xd6, 0xdf, 0x83, 0x11, 0x36, 0x74, 0x24, 0xf3, 0xf1, 0x7b, + 0x5a, 0xf7, 0xa7, 0xf4, 0x55, 0x05, 0xc1, 0x25, 0xcf, 0xcc, 0x2f, 0xa2, 0x49, 0xa1, 0x28, 0x9e, + 0x2f, 0x15, 0x02, 0x35, 0xaa, 0xfc, 0xb8, 0x97, 0x16, 0x49, 0x95, 0xb8, 0xb9, 0x1e, 0x82, 0x85, + 0x67, 0xed, 0x7a, 0x3c, 0xda, 0x53, 0xad, 0xec, 0x7b, 0x94, 0x6d, 0x60, 0xd2, 0x82, 0x8f, 0xb6, + 0xd7, 0x7d, 0x4e, 0x1c, 0xf1, 0x29, 0xcd, 0xa5, 0xba, 0xfb, 0xe1, 0xb6, 0xe4, 0xe0, 0x07, 0xfa, + 0xd7, 0x28, 0x07, 0xfc, 0x7b, 0x17, 0x2a, 0xb5, 0x6b, 0x7a, 0x27, 0x7a, 0xbc, 0xdd, 0x63, 0x7b, + 0x6f, 0x82, 0xb7, 0x38, 0x70, 0x82, 0x01, 0x62, 0xa7, 0x2e, 0x08, 0x3c, 0x16, 0x4c, 0x24, 0xbf, + 0x41, 0x95, 0xd7, 0xa2, 0x67, 0xbd, 0x39, 0xb0, 0xc2, 0x30, 0x9a, 0x85, 0x4b, 0x27, 0x6a, 0xff, + 0x64, 0x32, 0x2a, 0xd2, 0x47, 0x22, 0x3e, 0x46, 0xd3, 0xd3, 0x33, 0xe2, 0x26, 0x08, 0xa2, 0x45, + 0xd2, 0x5d, 0x74, 0xa7, 0x19, 0x3a, 0x12, 0xa2, 0x1f, 0xad, 0xab, 0xa5, 0x19, 0xe8, 0x6b, 0xc5, + 0xc7, 0xd1, 0xe4, 0x50, 0x38, 0xac, 0xc4, 0xea, 0xea, 0x29, 0x6e, 0x89, 0xc5, 0x90, 0x95, 0x49, + 0x33, 0xe9, 0x58, 0xf6, 0xb5, 0xa7, 0x6f, 0x1e, 0x49, 0x0e, 0x0e, 0xd7, 0xd5, 0xfb, 0x58, 0x9d, + 0xf8, 0x22, 0x2a, 0x0e, 0x71, 0xe7, 0x09, 0x4a, 0xe5, 0x8f, 0xaa, 0xf2, 0x0a, 0xaf, 0xa9, 0x42, + 0x5a, 0x04, 0xec, 0x4b, 0x7d, 0x83, 0xfa, 0x4e, 0xa4, 0x2f, 0xbf, 0x97, 0x1c, 0xfc, 0x08, 0xef, + 0x04, 0xdd, 0x03, 0x99, 0xd7, 0x6f, 0x82, 0xb4, 0xf6, 0x99, 0xda, 0x88, 0x0f, 0xf1, 0xba, 0x3e, + 0x59, 0x34, 0xb2, 0xf3, 0x4c, 0x87, 0xf1, 0x04, 0xa2, 0xcd, 0x14, 0xbd, 0x64, 0xfb, 0x59, 0x82, + 0xf2, 0x9a, 0x14, 0xe6, 0xf1, 0x40, 0xf8, 0x13, 0xff, 0x96, 0x44, 0x7d, 0xf0, 0x5a, 0xdf, 0x5b, + 0x0c, 0xbe, 0x49, 0x69, 0x12, 0x1f, 0xe3, 0x55, 0xfc, 0x07, 0x54, 0xf9, 0x3e, 0x50, 0xf1, 0xe7, + 0x01, 0x7c, 0x03, 0xeb, 0x9c, 0x1f, 0xe1, 0x52, 0xd0, 0xfa, 0x97, 0xa1, 0xbc, 0x96, 0x68, 0x80, + 0xaa, 0xfc, 0x04, 0x55, 0xf8, 0xb7, 0x34, 0x9b, 0xc6, 0x68, 0x60, 0xf7, 0x95, 0x5b, 0xea, 0x6b, + 0xdc, 0x75, 0xb5, 0x3e, 0x5c, 0x87, 0x19, 0x95, 0xca, 0x8f, 0x42, 0xc6, 0xa8, 0xcf, 0xe8, 0xf2, + 0xe3, 0x11, 0xbe, 0x21, 0x5c, 0x61, 0xdf, 0x1e, 0xe9, 0xc2, 0xba, 0xff, 0x7b, 0x7b, 0xb5, 0x1b, + 0xb7, 0xb4, 0x4f, 0x4f, 0xdf, 0x1e, 0xe9, 0x4a, 0x7d, 0x7a, 0x55, 0xeb, 0xbd, 0x86, 0x47, 0xf3, + 0xc6, 0x59, 0xed, 0xd3, 0xd3, 0xe9, 0xbe, 0x4e, 0x5d, 0xcc, 0x3c, 0x85, 0x8a, 0xe8, 0x72, 0xb4, + 0x3c, 0x42, 0x0d, 0x16, 0x64, 0xed, 0x8d, 0x52, 0x69, 0x06, 0x7c, 0x22, 0x14, 0x6d, 0x79, 0x04, + 0x78, 0xdf, 0x67, 0x54, 0x8a, 0xab, 0x74, 0x9f, 0x18, 0xd0, 0xe6, 0x21, 0xd4, 0x2f, 0xf5, 0x89, + 0x71, 0xb3, 0xf8, 0x1a, 0xba, 0x67, 0x4c, 0xf6, 0x9a, 0x31, 0x47, 0x99, 0x95, 0xd4, 0x1a, 0x05, + 0x9a, 0x39, 0x5c, 0x24, 0x12, 0x6b, 0xd4, 0x82, 0xac, 0x2e, 0xb2, 0x3b, 0x00, 0xd3, 0xd3, 0x33, + 0x9c, 0xc7, 0x4c, 0xb1, 0x61, 0x75, 0xd4, 0x0b, 0x19, 0x7e, 0xb3, 0xfd, 0x6d, 0x0c, 0xbf, 0x99, + 0x20, 0x9a, 0x1e, 0x30, 0xee, 0x4e, 0x30, 0x4f, 0x90, 0xb0, 0x4b, 0x85, 0xd5, 0x55, 0xaa, 0xfc, + 0xa8, 0x37, 0xbb, 0x4e, 0x5a, 0x04, 0x6f, 0x18, 0xf0, 0x19, 0x64, 0xe0, 0x42, 0x72, 0xe8, 0x48, + 0xba, 0xa7, 0x0d, 0x6e, 0xe7, 0x40, 0x96, 0xd3, 0xa0, 0x8a, 0xd9, 0xcd, 0xaa, 0xb0, 0x04, 0x47, + 0x4f, 0x7a, 0xa7, 0xd0, 0x1b, 0x4e, 0xd2, 0x55, 0x05, 0x58, 0x5f, 0x29, 0x8f, 0x31, 0xba, 0xa1, + 0x3a, 0x35, 0xc7, 0xc8, 0xda, 0xd5, 0x63, 0xe9, 0xf3, 0x43, 0x9e, 0x8b, 0x2e, 0xe3, 0xb6, 0x53, + 0x06, 0x61, 0xfe, 0x7d, 0x5a, 0x20, 0xbf, 0xed, 0x6d, 0x8a, 0xf9, 0x6e, 0xe5, 0x98, 0xb3, 0x34, + 0xdb, 0x10, 0x7c, 0xa4, 0x2b, 0x7a, 0x5c, 0x18, 0xe5, 0xae, 0x08, 0x4d, 0xad, 0xee, 0x34, 0xfd, + 0x49, 0x70, 0xbc, 0x7d, 0xe7, 0xa6, 0x35, 0x91, 0xcd, 0xa4, 0x5e, 0x95, 0xd7, 0xa1, 0xe7, 0xbc, + 0xb9, 0xb0, 0xc3, 0xef, 0x26, 0x1c, 0x52, 0x9d, 0x76, 0x93, 0x23, 0x02, 0xf5, 0xe2, 0xe2, 0xba, + 0x12, 0x7f, 0x8f, 0xf2, 0x13, 0x86, 0x6d, 0x28, 0xa4, 0xca, 0xdb, 0xbd, 0xa4, 0x40, 0xfa, 0x4d, + 0x56, 0xaf, 0x65, 0xf0, 0x3a, 0x83, 0x16, 0xf5, 0xb4, 0x81, 0xaa, 0xa1, 0x47, 0xa0, 0xdd, 0xb8, + 0x49, 0x5e, 0x5f, 0x2b, 0xfb, 0x6a, 0x93, 0x83, 0x43, 0xa9, 0xb3, 0xfb, 0xb5, 0xfd, 0xfb, 0x00, + 0x1c, 0x1f, 0x88, 0x56, 0xad, 0x91, 0x6b, 0x7e, 0x95, 0x1c, 0x1c, 0x4a, 0x8e, 0x9c, 0xc5, 0x67, + 0x66, 0x52, 0xbe, 0xd8, 0x47, 0xbe, 0xe2, 0xb9, 0xe9, 0x42, 0x6e, 0x36, 0xc3, 0x6a, 0x7f, 0x38, + 0xf8, 0x4a, 0x28, 0x98, 0xd8, 0x51, 0xef, 0x0f, 0xec, 0xf4, 0x37, 0x7c, 0x65, 0xb5, 0x4e, 0xf8, + 0x5a, 0xa7, 0x45, 0xe1, 0xbb, 0x63, 0x1b, 0x2a, 0x69, 0xc6, 0x44, 0x00, 0x33, 0x00, 0xe2, 0x8f, + 0xb5, 0x5f, 0x4d, 0x0e, 0x7d, 0xa8, 0x0d, 0xbe, 0xa7, 0xf5, 0xdf, 0xd4, 0xba, 0xda, 0x3d, 0xff, + 0xc3, 0x45, 0x8e, 0xdb, 0x4e, 0xcd, 0xef, 0x0c, 0x2e, 0x0a, 0x98, 0x74, 0xb1, 0x45, 0xd9, 0x5c, + 0x94, 0x3d, 0x2f, 0x07, 0x3f, 0x16, 0x2b, 0x76, 0x80, 0xab, 0x28, 0x3f, 0xd1, 0x57, 0xb0, 0x63, + 0x63, 0xcb, 0x19, 0xdb, 0x56, 0x96, 0x52, 0x05, 0x34, 0xcb, 0x6e, 0x78, 0xe2, 0x34, 0xe4, 0x0a, + 0x05, 0xe9, 0xdd, 0xa8, 0x2b, 0x14, 0x14, 0x45, 0xfa, 0x78, 0x01, 0xee, 0x42, 0xe1, 0x6d, 0x82, + 0x1b, 0x4d, 0x09, 0x2b, 0x89, 0x57, 0x22, 0xb1, 0x9d, 0x86, 0x66, 0xe5, 0xe3, 0x8b, 0xb8, 0x1b, + 0xc8, 0x7c, 0xd3, 0x0d, 0xe4, 0x3c, 0x54, 0xb4, 0x8d, 0x7d, 0x95, 0x28, 0x44, 0x05, 0x3e, 0xa3, + 0xc0, 0xf3, 0x49, 0x3e, 0xba, 0x5b, 0x57, 0x41, 0x37, 0xc4, 0xeb, 0x9a, 0xfc, 0x0d, 0x77, 0xe2, + 0xe5, 0xd7, 0xff, 0x5f, 0xb0, 0x3c, 0xe6, 0xfb, 0x40, 0x50, 0xe5, 0xf7, 0x04, 0xce, 0x10, 0x79, + 0x52, 0x18, 0x3d, 0xd6, 0xab, 0xbd, 0xde, 0xad, 0x5f, 0xcf, 0x80, 0xea, 0x01, 0xef, 0x84, 0xaa, + 0xea, 0x37, 0x57, 0xaf, 0xad, 0xab, 0xd9, 0x5a, 0xb7, 0x4e, 0x5e, 0xb3, 0xaa, 0x4c, 0x6b, 0xbf, + 0xac, 0xb5, 0x5f, 0x05, 0xf0, 0xc5, 0xe5, 0xf5, 0xbe, 0xba, 0x2d, 0xf2, 0xa6, 0x55, 0xb4, 0x0e, + 0x0e, 0x4f, 0xac, 0x6e, 0xe3, 0xcf, 0x65, 0xdf, 0xaa, 0x5a, 0xbd, 0x19, 0x26, 0x01, 0x56, 0xb5, + 0x4e, 0xf6, 0x3d, 0xb7, 0x6a, 0x13, 0xab, 0x1a, 0xdc, 0xab, 0xf5, 0x0e, 0xb1, 0x2a, 0xb7, 0xbc, + 0x76, 0x2d, 0xb8, 0xd2, 0x40, 0x09, 0x67, 0xdc, 0xdc, 0xc9, 0x5f, 0x33, 0x17, 0x18, 0x1e, 0x8f, + 0xdc, 0xe5, 0xff, 0x4a, 0xad, 0xff, 0x86, 0x76, 0xf2, 0x92, 0x76, 0xe3, 0x9a, 0xd6, 0x7d, 0x85, + 0xdd, 0xfc, 0x97, 0xbb, 0x21, 0xa4, 0x10, 0x68, 0x2d, 0xd0, 0xad, 0xee, 0x5f, 0x40, 0x15, 0x6d, + 0x20, 0x71, 0xa3, 0x27, 0xdd, 0x8f, 0xda, 0x81, 0x02, 0xf4, 0xcb, 0x04, 0xce, 0xdd, 0x94, 0x1e, + 0xe8, 0xfe, 0xad, 0x0b, 0x95, 0x58, 0x5b, 0xdd, 0x19, 0x22, 0xe4, 0x59, 0x93, 0x08, 0xb9, 0x3b, + 0x5b, 0x84, 0xd0, 0xd9, 0x8c, 0xcf, 0x72, 0xb1, 0x45, 0x95, 0x37, 0xa2, 0xe7, 0xbd, 0x8e, 0xb8, + 0x90, 0x16, 0x59, 0x51, 0x08, 0x8b, 0x93, 0xfb, 0x34, 0xf7, 0x65, 0x01, 0x9a, 0x4c, 0xbb, 0x12, + 0x97, 0xa1, 0xc9, 0x21, 0xfc, 0x87, 0xce, 0x87, 0x77, 0x13, 0x3e, 0xa4, 0x65, 0x52, 0x11, 0xf4, + 0x87, 0x8f, 0x17, 0xac, 0x4c, 0x5c, 0x82, 0x0a, 0xfc, 0x8d, 0x21, 0x7f, 0x9c, 0xe2, 0x93, 0x38, + 0xb6, 0x43, 0x89, 0x54, 0xcc, 0x3e, 0xff, 0xa1, 0x76, 0xf8, 0xa0, 0x0f, 0x0a, 0xf1, 0x8a, 0xf9, + 0x63, 0x81, 0x1d, 0xfc, 0xe3, 0x44, 0x52, 0x20, 0x4d, 0x07, 0xe8, 0x9a, 0xfa, 0xcd, 0xa9, 0xd3, + 0xd7, 0x53, 0xa7, 0xdb, 0x7c, 0xa4, 0x58, 0xf4, 0xa1, 0xe9, 0x91, 0x78, 0x4d, 0x73, 0x3c, 0x11, + 0x69, 0x0a, 0xed, 0x86, 0xc3, 0x1e, 0x70, 0x1d, 0x79, 0x18, 0x9c, 0x5d, 0x27, 0x89, 0x5a, 0x7f, + 0x8f, 0xd6, 0x71, 0x9d, 0x1a, 0xc2, 0xe1, 0xf6, 0x28, 0x1b, 0x48, 0x7c, 0x14, 0x4d, 0x8a, 0xc4, + 0x89, 0xc6, 0x5f, 0x60, 0x1c, 0xa6, 0x68, 0x11, 0xbb, 0xbd, 0xa7, 0x34, 0x08, 0xca, 0x3e, 0xad, + 0x13, 0xeb, 0x10, 0x8a, 0x2b, 0xb1, 0x90, 0x02, 0x8d, 0x27, 0x19, 0x27, 0x0e, 0xae, 0x58, 0x2a, + 0xe1, 0x3b, 0x80, 0xab, 0x24, 0xf6, 0x28, 0xc5, 0x80, 0x12, 0xe5, 0xac, 0x3b, 0x1c, 0xd2, 0x0d, + 0xbb, 0xc3, 0x99, 0x47, 0xb9, 0x8a, 0xdc, 0xe1, 0x54, 0xb9, 0xd7, 0x6f, 0xf0, 0xad, 0x93, 0xd7, + 0x96, 0x41, 0x6c, 0x9a, 0xc5, 0xba, 0xbc, 0xfd, 0x94, 0x17, 0x45, 0x70, 0xc0, 0x83, 0xfb, 0x55, + 0x4e, 0x14, 0x75, 0xe6, 0x14, 0x45, 0xee, 0xef, 0x52, 0x16, 0x71, 0xa2, 0x27, 0x80, 0x0a, 0x29, + 0x2b, 0xc0, 0x1d, 0x90, 0x4d, 0xf8, 0x30, 0xde, 0x3b, 0xd4, 0xab, 0xca, 0x0f, 0x7a, 0xf5, 0x16, + 0xd2, 0x5c, 0x4a, 0x57, 0x66, 0xcf, 0x26, 0xca, 0x2c, 0x3a, 0x58, 0x95, 0x47, 0x95, 0x17, 0xa2, + 0xf9, 0x5e, 0x46, 0xdc, 0xe6, 0x85, 0x85, 0x2e, 0x3c, 0xeb, 0xd0, 0x14, 0xfe, 0xf1, 0x80, 0xdb, + 0xfc, 0x02, 0x00, 0x36, 0x4a, 0x93, 0x87, 0xff, 0x3c, 0xcb, 0xe3, 0x72, 0xce, 0x73, 0xc7, 0xf3, + 0xb7, 0x02, 0x9a, 0x6b, 0x78, 0xa4, 0x36, 0x87, 0x13, 0xa1, 0x26, 0xb2, 0xf1, 0xb2, 0x7d, 0xee, + 0x11, 0xeb, 0xe3, 0x04, 0xc2, 0x30, 0x9c, 0xdb, 0x56, 0xa1, 0x9d, 0x9f, 0x16, 0xb7, 0x3f, 0xba, + 0x26, 0xb4, 0x3f, 0x56, 0x3d, 0xad, 0xca, 0x4f, 0xa2, 0x2a, 0x6f, 0xae, 0x51, 0x31, 0x7d, 0x1d, + 0xdc, 0xe9, 0x53, 0x27, 0xae, 0xf3, 0x32, 0xdc, 0xf3, 0xaf, 0xf3, 0x38, 0xc7, 0x15, 0x53, 0xe3, + 0x3b, 0xed, 0xe9, 0x39, 0x26, 0xb3, 0x47, 0xb2, 0xc9, 0x2c, 0xd7, 0xd4, 0xc8, 0x75, 0xd6, 0xaa, + 0x70, 0x22, 0xb6, 0x6b, 0x5c, 0x12, 0xba, 0xf4, 0x17, 0xa8, 0x48, 0x6f, 0x21, 0xce, 0x40, 0x79, + 0x3b, 0x95, 0x5d, 0x94, 0x84, 0xf0, 0x9f, 0xe2, 0x0a, 0x54, 0xd0, 0xe2, 0x6f, 0x6c, 0x86, 0x69, + 0x4f, 0x91, 0x16, 0x58, 0x9e, 0x26, 0x35, 0x93, 0x38, 0xab, 0xf4, 0x8d, 0x86, 0x0f, 0x80, 0xab, + 0x5c, 0x8f, 0x09, 0x55, 0xbf, 0x50, 0xe5, 0x4d, 0xc8, 0xe7, 0xcd, 0xb9, 0x0e, 0xd2, 0xbd, 0x39, + 0x56, 0xd1, 0x49, 0xf6, 0x7b, 0xd1, 0x34, 0xf3, 0x57, 0xc5, 0x12, 0x34, 0xb9, 0x85, 0xbe, 0x2e, + 0x11, 0xdc, 0x79, 0x65, 0x45, 0x3e, 0xf6, 0xd3, 0xf3, 0x3f, 0x05, 0x6e, 0x1f, 0xae, 0x87, 0x8d, + 0x3d, 0x7e, 0xe7, 0x29, 0x70, 0x55, 0x8f, 0xa8, 0xf2, 0x72, 0xb4, 0xcc, 0xeb, 0x38, 0x17, 0xce, + 0x26, 0x00, 0x1a, 0x0f, 0x65, 0x84, 0x7f, 0xe3, 0xe2, 0x6c, 0xfc, 0x46, 0x9b, 0x1f, 0x85, 0x67, + 0x08, 0x3f, 0xa7, 0xf1, 0x69, 0x23, 0xeb, 0x55, 0xf9, 0x39, 0x54, 0xe7, 0x75, 0xc6, 0x08, 0x67, + 0x05, 0xe0, 0xd1, 0xe8, 0x44, 0x89, 0xeb, 0x51, 0x31, 0xdf, 0x8d, 0xd9, 0x07, 0x12, 0x23, 0x35, + 0x9f, 0xf7, 0x81, 0x74, 0xa3, 0x29, 0xf4, 0x87, 0xe1, 0x08, 0xe2, 0xe3, 0x8b, 0x3c, 0x37, 0xf2, + 0xd0, 0x2c, 0x7d, 0x6c, 0x5b, 0xa2, 0x81, 0x3b, 0x90, 0x52, 0xc5, 0x67, 0xd8, 0x9d, 0x29, 0x28, + 0x3c, 0x64, 0x17, 0xa4, 0x77, 0xa6, 0x0b, 0x98, 0x5b, 0x3f, 0xd1, 0xf8, 0xc8, 0xd1, 0x1e, 0x9c, + 0xfb, 0xe9, 0xd7, 0xe9, 0x1d, 0x6a, 0xc2, 0xee, 0x31, 0x0c, 0xe8, 0x3c, 0xab, 0x55, 0xb9, 0xc6, + 0xee, 0x31, 0xcc, 0x12, 0xf3, 0x63, 0x98, 0x2d, 0xd1, 0xc0, 0x84, 0x5f, 0xc2, 0x3c, 0xa5, 0xca, + 0x4f, 0xa0, 0xc7, 0xbd, 0xb6, 0xf8, 0x67, 0x62, 0x2a, 0x39, 0x74, 0x84, 0x46, 0xd4, 0x20, 0xc4, + 0x91, 0xee, 0x69, 0x6b, 0x89, 0x06, 0x28, 0xa7, 0xfd, 0x9d, 0x0b, 0xcd, 0xce, 0x6a, 0xfb, 0xa3, + 0x70, 0xcd, 0x67, 0xf3, 0x19, 0x1f, 0x87, 0x51, 0x4b, 0x9b, 0x3d, 0x26, 0x2c, 0x68, 0xa4, 0xcf, + 0x32, 0x39, 0x34, 0x5a, 0x79, 0x0c, 0x1f, 0x5d, 0x59, 0x4f, 0xfa, 0xd1, 0x5f, 0xe0, 0x8e, 0xfe, + 0xb3, 0xd8, 0x3b, 0x12, 0x60, 0x28, 0xfa, 0xd0, 0xa3, 0x14, 0x15, 0x86, 0xa2, 0x2d, 0x2b, 0x6a, + 0x42, 0x41, 0x1a, 0xfa, 0xc6, 0xa7, 0xff, 0xa6, 0x75, 0x8f, 0x90, 0xba, 0x7c, 0xbd, 0x8e, 0xfc, + 0x16, 0x97, 0xa3, 0x82, 0x40, 0x28, 0x18, 0x8b, 0x97, 0x14, 0x10, 0x74, 0xcc, 0xcf, 0x46, 0x87, + 0x1c, 0x8f, 0x87, 0xe2, 0x09, 0x7f, 0x38, 0x81, 0xa1, 0x7d, 0x00, 0x2b, 0x2e, 0x42, 0x53, 0xfd, + 0x8d, 0xe4, 0xa1, 0x9c, 0x52, 0x17, 0x5d, 0xdf, 0xdc, 0x04, 0x17, 0x25, 0x3e, 0x73, 0xa1, 0xe7, + 0x69, 0x34, 0xd5, 0xd4, 0x1a, 0xcf, 0x06, 0xb7, 0x67, 0xb3, 0x09, 0xd0, 0xb1, 0xe1, 0x7f, 0xc9, + 0x91, 0xc1, 0x45, 0xac, 0x11, 0xfa, 0x6f, 0xcf, 0xbe, 0x49, 0x9c, 0x31, 0x62, 0x23, 0x79, 0x73, + 0x7a, 0x27, 0x4a, 0x88, 0xd5, 0x66, 0x09, 0x41, 0xc2, 0xec, 0x52, 0x09, 0xb1, 0xc8, 0x49, 0x42, + 0xc0, 0x5b, 0x1e, 0x7a, 0x42, 0xa7, 0x72, 0x62, 0x2d, 0xbd, 0x43, 0x01, 0xd1, 0x80, 0xcf, 0xea, + 0xf4, 0x0e, 0xa5, 0xc2, 0xb1, 0x17, 0xfd, 0x3a, 0x84, 0xef, 0x0e, 0xae, 0x54, 0x56, 0xa3, 0x42, + 0x78, 0xc6, 0x5b, 0x57, 0x4b, 0xcf, 0x48, 0xa0, 0xc0, 0xb3, 0x42, 0xb6, 0x35, 0x40, 0x7f, 0x50, + 0xaa, 0x0f, 0xcc, 0xa7, 0x83, 0x89, 0xbf, 0x41, 0x53, 0x43, 0x61, 0x2c, 0xd1, 0xa9, 0x8a, 0x4e, + 0xb3, 0xd1, 0x90, 0xe1, 0x99, 0x6b, 0xf4, 0x4b, 0x95, 0x6b, 0x97, 0xb4, 0xf6, 0x0b, 0xf4, 0xb5, + 0x12, 0x17, 0xb0, 0x87, 0x62, 0xdc, 0xdc, 0xc8, 0x5e, 0x3a, 0x16, 0x4e, 0x44, 0x3a, 0xc2, 0x50, + 0xe1, 0x4b, 0xe3, 0x94, 0x8e, 0xe2, 0xb3, 0x94, 0xf1, 0x8a, 0x58, 0x64, 0xaa, 0xe5, 0x34, 0x60, + 0xc8, 0x43, 0x3c, 0xae, 0x29, 0x5a, 0x49, 0x2f, 0x5a, 0x57, 0xbb, 0x76, 0xf8, 0x43, 0x0c, 0x63, + 0x60, 0x89, 0x34, 0xa9, 0x7a, 0x46, 0x95, 0x57, 0xa2, 0x27, 0xbc, 0x22, 0x26, 0x65, 0x33, 0x15, + 0x4b, 0xf7, 0x1b, 0xe6, 0x42, 0x6e, 0x85, 0xca, 0x47, 0x5b, 0xf7, 0x8e, 0xb6, 0x1f, 0x4c, 0x0e, + 0x1e, 0xd4, 0x0e, 0x77, 0x25, 0x87, 0x8e, 0x78, 0xfe, 0x9e, 0xb7, 0xae, 0xe8, 0x5d, 0xdc, 0x19, + 0xe2, 0x76, 0xb3, 0x49, 0xdc, 0xce, 0xb1, 0x84, 0x87, 0x21, 0xb3, 0x71, 0x7c, 0x5a, 0xc8, 0xa3, + 0xc5, 0xee, 0x4d, 0xd4, 0x5d, 0x26, 0xa4, 0x9a, 0x8d, 0xb0, 0x7c, 0x5b, 0x27, 0x8d, 0xa6, 0xbb, + 0x00, 0x4d, 0x82, 0xe6, 0xe2, 0x83, 0x8c, 0x4d, 0x41, 0x9e, 0xcc, 0x54, 0xe5, 0x69, 0x8c, 0x4d, + 0xe1, 0x1f, 0xc6, 0x87, 0xcb, 0x39, 0xce, 0x71, 0x19, 0x06, 0x18, 0x83, 0x73, 0x0a, 0xe1, 0xcb, + 0x75, 0xb5, 0x1c, 0x9b, 0xac, 0x44, 0x88, 0xbe, 0x9a, 0x37, 0x5e, 0xfd, 0x83, 0x67, 0xab, 0x51, + 0x2c, 0x15, 0xf3, 0x04, 0xe5, 0xe3, 0x6a, 0xc4, 0xa7, 0x50, 0x11, 0x16, 0x8b, 0x3e, 0x7f, 0xd8, + 0xfc, 0xee, 0xc9, 0x28, 0x95, 0x66, 0x40, 0x63, 0x77, 0x5d, 0x7d, 0xcb, 0x0a, 0x77, 0x4d, 0x5d, + 0xad, 0xcf, 0x67, 0x54, 0x8a, 0xcf, 0xa2, 0xa9, 0x4c, 0xe4, 0x43, 0x1f, 0x05, 0xc6, 0x2d, 0xaa, + 0xb9, 0x86, 0xef, 0xe7, 0x11, 0xe8, 0xc7, 0x0c, 0xa0, 0x07, 0x3d, 0x98, 0x64, 0x0c, 0x03, 0xe4, + 0xd0, 0x6c, 0x83, 0xa7, 0x7b, 0x2f, 0x19, 0x9e, 0xa1, 0x20, 0x6f, 0x14, 0x74, 0xb7, 0xbf, 0xc5, + 0x1f, 0x6a, 0xf4, 0x6f, 0x6b, 0x54, 0xea, 0xea, 0xe5, 0x60, 0x30, 0xa6, 0xc4, 0xe3, 0x90, 0x02, + 0x09, 0x4b, 0x8c, 0x7c, 0xf0, 0x53, 0x75, 0x82, 0x91, 0xa6, 0x6a, 0x9d, 0xef, 0x27, 0x6f, 0x9e, + 0x74, 0xd7, 0xd5, 0xbb, 0x53, 0xc7, 0xae, 0xf8, 0x9c, 0xe0, 0x4c, 0x37, 0xc5, 0x85, 0xb6, 0x37, + 0xc5, 0xf6, 0x83, 0x34, 0x6e, 0x8a, 0x5f, 0x46, 0x2c, 0x14, 0x14, 0xe1, 0xfe, 0x31, 0xac, 0x1e, + 0x84, 0x70, 0x59, 0x03, 0x69, 0x2e, 0xed, 0x9c, 0xc8, 0xb9, 0xcc, 0x3b, 0xf4, 0x55, 0x39, 0x58, + 0x62, 0xf5, 0x08, 0x53, 0x55, 0x78, 0xe3, 0x40, 0x73, 0xbc, 0x94, 0xf0, 0xd8, 0xaa, 0x1b, 0x11, + 0x0f, 0x17, 0xd6, 0xec, 0x50, 0x02, 0x3b, 0x31, 0xc2, 0x6b, 0x22, 0xe1, 0xed, 0x8d, 0xa1, 0x40, + 0x62, 0x75, 0x2c, 0xd2, 0xb4, 0x25, 0x1a, 0xf8, 0xfa, 0x9b, 0x5f, 0x99, 0x49, 0x79, 0xa8, 0x16, + 0x55, 0x79, 0x3a, 0x7b, 0x84, 0x3a, 0x29, 0x39, 0x74, 0xa4, 0x25, 0x1a, 0x60, 0x0a, 0x85, 0x44, + 0x37, 0x6b, 0x2e, 0x40, 0x05, 0x29, 0x90, 0xee, 0x82, 0xcc, 0x2a, 0xe9, 0x9e, 0x36, 0xfc, 0x93, + 0x49, 0x3a, 0xb2, 0x99, 0x1b, 0x57, 0x66, 0xf9, 0x13, 0x77, 0xb0, 0x34, 0xed, 0xb0, 0x05, 0x13, + 0x3a, 0x2d, 0x52, 0x5d, 0x76, 0x2c, 0xbc, 0x49, 0x73, 0x60, 0x5b, 0x24, 0xe3, 0xde, 0xf7, 0x51, + 0xfa, 0x83, 0x3d, 0x30, 0x15, 0x4f, 0xca, 0x85, 0xdc, 0xce, 0x6d, 0xef, 0x0c, 0x39, 0x5b, 0x67, + 0xba, 0x4e, 0xb6, 0x1e, 0x1e, 0xe9, 0xac, 0x08, 0xd1, 0x12, 0x79, 0x05, 0xd2, 0xb6, 0x18, 0x10, + 0x41, 0x3b, 0x03, 0xd9, 0x4a, 0x03, 0xc6, 0x8f, 0x89, 0x12, 0x69, 0x01, 0x90, 0x0c, 0x8f, 0x4b, + 0x7e, 0x6c, 0x56, 0x71, 0xbb, 0x08, 0x15, 0xf3, 0x03, 0xc1, 0xba, 0x2c, 0x68, 0x9f, 0x60, 0xc6, + 0x80, 0x1f, 0x1e, 0x35, 0x8f, 0x7b, 0x59, 0xbf, 0x51, 0x09, 0x34, 0xc7, 0x42, 0x89, 0x5d, 0xdf, + 0x54, 0xfc, 0xaa, 0xaf, 0xa6, 0xfe, 0xbd, 0x6c, 0x55, 0xff, 0xaa, 0x55, 0xf9, 0x69, 0x9e, 0x38, + 0x25, 0x8e, 0x38, 0xcb, 0x46, 0x4f, 0x9d, 0xd6, 0x6e, 0xb5, 0x27, 0x47, 0xce, 0x96, 0x6b, 0xed, + 0x23, 0x5a, 0xff, 0x8d, 0xf4, 0xf9, 0xcf, 0xb4, 0xae, 0xa1, 0x74, 0x67, 0x87, 0xa6, 0x76, 0x69, + 0xfb, 0xda, 0x47, 0x5f, 0xbf, 0x94, 0xee, 0xec, 0x58, 0xcc, 0x6b, 0x89, 0x8a, 0x73, 0x48, 0x04, + 0xe2, 0x31, 0x65, 0xa3, 0xe7, 0x2c, 0x24, 0x7a, 0x4e, 0x72, 0xb0, 0x6f, 0x02, 0xc7, 0x3e, 0xdc, + 0x17, 0x92, 0xc0, 0x24, 0x60, 0x8b, 0x5a, 0x66, 0x59, 0xd1, 0xfa, 0x3b, 0xb5, 0xf6, 0x4b, 0xe9, + 0xe1, 0x36, 0x7a, 0xde, 0xfb, 0xc2, 0x85, 0x16, 0x3a, 0x2e, 0xca, 0x9d, 0xc1, 0x22, 0xf5, 0x26, + 0x55, 0x64, 0xbe, 0x35, 0x52, 0x1d, 0x37, 0xa9, 0xf1, 0x1d, 0xff, 0x78, 0xaf, 0x3d, 0x7b, 0x9c, + 0xe8, 0x7e, 0x90, 0x66, 0x74, 0x3a, 0xe9, 0x23, 0x7b, 0xf2, 0x10, 0x51, 0x69, 0x9e, 0x53, 0x76, + 0xd5, 0xfb, 0x43, 0xb1, 0x9f, 0xe8, 0xfd, 0xeb, 0xd2, 0xfb, 0x32, 0x55, 0x5e, 0x82, 0xca, 0xbd, + 0x76, 0x48, 0xd5, 0x29, 0x7d, 0x60, 0xdf, 0xa8, 0x7a, 0x41, 0x1b, 0x60, 0xce, 0xa9, 0xff, 0x9b, + 0x0b, 0xac, 0x52, 0x06, 0xf8, 0x8f, 0xe2, 0x1e, 0x93, 0x4e, 0x67, 0xe2, 0x6f, 0xca, 0xb2, 0xf1, + 0xa0, 0xeb, 0xd7, 0x80, 0xb7, 0x9c, 0xf4, 0xfc, 0x2f, 0x04, 0x34, 0x99, 0xb6, 0x17, 0xbd, 0xa8, + 0xe0, 0x39, 0x65, 0x97, 0x4e, 0xc1, 0xe4, 0xb5, 0x00, 0x94, 0x48, 0x85, 0xd0, 0x17, 0xd6, 0xb1, + 0x49, 0x81, 0xb8, 0x82, 0x34, 0xe3, 0x1e, 0x90, 0xc1, 0x3b, 0x61, 0x5a, 0x26, 0x15, 0xd3, 0x6f, + 0xc3, 0xb2, 0xb3, 0xe2, 0xec, 0x20, 0xa9, 0x79, 0x4e, 0x41, 0x52, 0xa1, 0xb5, 0x29, 0x96, 0x93, + 0x29, 0x48, 0x2a, 0x8d, 0x24, 0xc7, 0x46, 0x2e, 0x4d, 0xd7, 0x49, 0x84, 0x2a, 0x69, 0xda, 0x14, + 0x38, 0x90, 0xf1, 0x2f, 0x8a, 0x75, 0x5e, 0x3d, 0x20, 0xd8, 0xc6, 0x55, 0x20, 0x21, 0x93, 0xcc, + 0xef, 0x39, 0x37, 0xf1, 0x8f, 0x35, 0xcb, 0xb9, 0x1b, 0x3f, 0x16, 0xa3, 0xd4, 0xcd, 0x12, 0x55, + 0x84, 0xc2, 0x0d, 0x11, 0x32, 0xb6, 0x72, 0x37, 0x61, 0x6c, 0xfa, 0x4f, 0x4b, 0x34, 0x50, 0xee, + 0x0e, 0x47, 0x82, 0x0a, 0xe1, 0x82, 0x72, 0x77, 0xc2, 0x1f, 0xdf, 0xf9, 0xcd, 0xc5, 0x67, 0xa8, + 0x47, 0x45, 0x24, 0xb5, 0x1a, 0x79, 0x75, 0x9d, 0x47, 0x94, 0x74, 0x49, 0x95, 0x2b, 0xbd, 0x46, + 0xa9, 0xe4, 0x81, 0xa4, 0xc5, 0x7a, 0x26, 0xb5, 0x35, 0xeb, 0x36, 0xb9, 0xe1, 0x47, 0xaa, 0xe3, + 0xda, 0xed, 0x91, 0xae, 0xf4, 0x45, 0xd5, 0x67, 0x80, 0x8b, 0xcf, 0xa2, 0xc9, 0x4a, 0x18, 0xb2, + 0x10, 0xe7, 0x93, 0xfe, 0x20, 0xe7, 0x10, 0x2d, 0x93, 0x3c, 0x98, 0xa2, 0x4f, 0x9d, 0xc9, 0xd9, + 0x1b, 0x03, 0x16, 0x1f, 0x46, 0x05, 0x8d, 0xa1, 0xa6, 0x50, 0x82, 0x7a, 0xf5, 0x2e, 0x24, 0x77, + 0xda, 0xa4, 0x44, 0x2a, 0x4e, 0x0d, 0x74, 0x8f, 0x9e, 0xfb, 0x84, 0xa5, 0x42, 0xcd, 0xf7, 0xba, + 0xdc, 0x3f, 0xf3, 0x41, 0x9d, 0x58, 0x8e, 0xf2, 0xa3, 0x98, 0x23, 0xc1, 0xb7, 0xb7, 0x04, 0x9f, + 0xf2, 0x48, 0x81, 0x34, 0x69, 0xf4, 0xdc, 0x27, 0xe9, 0xb3, 0x7b, 0x18, 0x38, 0x29, 0x14, 0x6b, + 0xd0, 0xa4, 0x78, 0xa8, 0x29, 0xda, 0xc8, 0x92, 0xec, 0x92, 0x43, 0x0a, 0x2d, 0x92, 0x16, 0x68, + 0xdd, 0x1f, 0x80, 0xd7, 0xa6, 0x3b, 0xc2, 0x13, 0x82, 0x9b, 0x09, 0x53, 0x80, 0x13, 0x5b, 0x05, + 0x84, 0xe0, 0xe9, 0xfd, 0xfa, 0xe6, 0xc6, 0x46, 0x9a, 0x21, 0x97, 0xbc, 0x61, 0xe1, 0x8a, 0xa5, + 0x0d, 0x10, 0x58, 0x65, 0xbb, 0xbf, 0x31, 0xae, 0x94, 0x83, 0x95, 0x01, 0x6a, 0xc1, 0x13, 0x56, + 0x4f, 0x51, 0xf2, 0x84, 0x5b, 0xbb, 0xf9, 0x26, 0x4d, 0x39, 0x9b, 0x3a, 0x71, 0xbd, 0x3c, 0x39, + 0x78, 0xd0, 0x16, 0xda, 0xc7, 0x75, 0x2e, 0xbe, 0xc4, 0xdf, 0x69, 0x16, 0x19, 0xcf, 0xe3, 0xb8, + 0x3b, 0xcd, 0x4a, 0x3d, 0x1b, 0x22, 0x79, 0x1a, 0x03, 0x7d, 0xd2, 0x47, 0x4d, 0xc3, 0x1f, 0xd3, + 0xbc, 0x79, 0x10, 0x66, 0x82, 0xbc, 0x96, 0xe7, 0xaf, 0x3e, 0x5f, 0xe2, 0x2f, 0x02, 0x10, 0xd7, + 0xbd, 0xe1, 0xa5, 0x62, 0xdf, 0x3d, 0xd8, 0x95, 0xed, 0xbb, 0x37, 0x6e, 0x12, 0x56, 0xe9, 0xd7, + 0xf0, 0x53, 0x38, 0x27, 0x64, 0x7a, 0x0d, 0xef, 0x36, 0x77, 0x0c, 0xa1, 0x0b, 0xe0, 0x52, 0x3e, + 0xdd, 0xf7, 0xf6, 0x68, 0x6b, 0xa7, 0x7e, 0x15, 0xff, 0x1c, 0x17, 0x7c, 0xa1, 0x98, 0xc5, 0xcf, + 0x2f, 0xf7, 0xea, 0x85, 0x0e, 0x5d, 0x11, 0xee, 0xa4, 0x5d, 0x19, 0xd1, 0x1a, 0x1e, 0x41, 0xae, + 0x16, 0x89, 0xfa, 0x10, 0x13, 0x0f, 0x71, 0x57, 0x8b, 0x24, 0xcd, 0x87, 0x93, 0x1f, 0x1c, 0xf8, + 0x5a, 0x24, 0xe2, 0x35, 0x8c, 0x45, 0x25, 0x8d, 0xf0, 0xe6, 0x6a, 0x91, 0xc4, 0x5a, 0xfd, 0x59, + 0xc6, 0x34, 0x23, 0x2e, 0x2c, 0x7b, 0x96, 0xb1, 0xd0, 0xf4, 0xe8, 0x02, 0x0a, 0x01, 0x53, 0x30, + 0x16, 0xf6, 0xfe, 0x42, 0xdc, 0xa4, 0xc7, 0x7d, 0x98, 0xce, 0xde, 0xf7, 0x3f, 0xae, 0xc7, 0x7d, + 0xb0, 0x45, 0x35, 0x9d, 0x8c, 0x2d, 0xaa, 0x59, 0x60, 0x88, 0x97, 0x01, 0x41, 0x44, 0xec, 0xce, + 0x20, 0xfd, 0xd6, 0x92, 0x00, 0xcb, 0xac, 0x50, 0x7a, 0xd8, 0xb9, 0x67, 0x90, 0xc5, 0xf6, 0xfd, + 0xeb, 0x1d, 0x88, 0x8d, 0x59, 0x31, 0x2e, 0x66, 0x92, 0xaf, 0xfc, 0x5c, 0x95, 0x57, 0x65, 0x05, + 0x21, 0xb1, 0xfd, 0x12, 0x1f, 0x98, 0xc4, 0xfe, 0x4b, 0xe6, 0x68, 0x25, 0xf4, 0x5e, 0xdd, 0x51, + 0x54, 0x33, 0x5b, 0x13, 0x1f, 0x0a, 0x02, 0xe2, 0x0f, 0x41, 0xda, 0x2b, 0xcf, 0xa8, 0x0b, 0x2c, + 0xd0, 0x5c, 0xc8, 0x0d, 0x5d, 0xcc, 0xaf, 0xce, 0x0a, 0xbd, 0x41, 0x02, 0x93, 0xb3, 0x25, 0xb8, + 0x77, 0xfc, 0x48, 0xf7, 0x59, 0xa2, 0x71, 0x10, 0x73, 0xa3, 0x11, 0x8d, 0xe3, 0x41, 0xbe, 0x2f, + 0x88, 0xc9, 0xe1, 0x80, 0x66, 0x3d, 0x44, 0x07, 0x13, 0x72, 0x79, 0xe3, 0x12, 0x72, 0xba, 0x24, + 0xcd, 0x9f, 0x88, 0x24, 0xad, 0x5a, 0xa7, 0xca, 0xcf, 0xa2, 0x9f, 0x7b, 0x9d, 0x10, 0x24, 0x2d, + 0xa2, 0xbe, 0x95, 0xdc, 0xb8, 0xad, 0x28, 0xfe, 0x5c, 0xa0, 0x78, 0xf0, 0x1c, 0xa7, 0x57, 0xb7, + 0x59, 0x0b, 0x75, 0x67, 0xe8, 0x5e, 0x2f, 0x98, 0x4e, 0xdf, 0x15, 0x76, 0x0e, 0x0c, 0xb6, 0xf3, + 0xaa, 0xf5, 0x27, 0xfc, 0xa6, 0xe3, 0x38, 0x7d, 0x34, 0x48, 0x9e, 0xe0, 0x82, 0x2e, 0xe6, 0xe9, + 0x13, 0xd0, 0x1c, 0x86, 0x63, 0x9f, 0x12, 0x88, 0xc4, 0x82, 0x3a, 0x0d, 0x6e, 0xca, 0xa2, 0xc1, + 0x6f, 0x44, 0x0c, 0xe8, 0x71, 0x69, 0xed, 0x3f, 0xaa, 0xfb, 0xcc, 0x92, 0x9e, 0xe8, 0xe3, 0x06, + 0x9e, 0x69, 0x0e, 0x71, 0x4c, 0xa3, 0x37, 0xbd, 0xd3, 0x02, 0x34, 0xe3, 0x65, 0x7c, 0x30, 0x7b, + 0x19, 0x6d, 0x66, 0x34, 0x9e, 0x05, 0xec, 0x75, 0xa1, 0xbb, 0x1d, 0x9a, 0x8a, 0x31, 0x7d, 0x6b, + 0x13, 0x8c, 0x2c, 0x4e, 0x6c, 0x6b, 0x5b, 0x47, 0x79, 0x07, 0x82, 0xea, 0x40, 0x94, 0xb6, 0x57, + 0xfc, 0xa1, 0x44, 0x28, 0xdc, 0x50, 0xee, 0x6e, 0x8c, 0xf8, 0x83, 0xe4, 0x8f, 0x78, 0x73, 0x20, + 0xa0, 0xc4, 0xe3, 0xe5, 0xee, 0x1d, 0xfe, 0xc6, 0xed, 0x1b, 0xd9, 0x8f, 0xed, 0xfe, 0x50, 0xa3, + 0x12, 0x2c, 0x77, 0xb3, 0x64, 0xcd, 0x8a, 0xe1, 0x92, 0xd6, 0x25, 0xa0, 0x7c, 0x2c, 0x2a, 0x4a, + 0x5c, 0xe4, 0xa4, 0xb0, 0xc0, 0x79, 0x9a, 0x98, 0xa5, 0xab, 0x7f, 0xa9, 0xca, 0x9b, 0xbd, 0xa4, + 0xc1, 0x37, 0x3d, 0x20, 0xd2, 0xa9, 0xe7, 0x0f, 0x2e, 0x34, 0xcd, 0xfc, 0x49, 0xf1, 0x21, 0xde, + 0xe5, 0x99, 0xa2, 0x97, 0x5c, 0xbf, 0x14, 0xf3, 0x9b, 0x0d, 0xbd, 0x10, 0x7d, 0x5a, 0x47, 0x61, + 0x9e, 0x11, 0x1c, 0x8b, 0xa1, 0xb0, 0xd4, 0x24, 0x36, 0x61, 0xc4, 0xda, 0xe1, 0xae, 0xe4, 0xe0, + 0x1b, 0x06, 0x3e, 0x6a, 0x78, 0x3d, 0x17, 0x2f, 0x7d, 0x1e, 0xbc, 0x4f, 0xe6, 0xf4, 0xdc, 0xd9, + 0xf4, 0xbb, 0x9c, 0xb6, 0x9b, 0xea, 0xb8, 0xc6, 0xab, 0xb6, 0x2b, 0x0d, 0xd5, 0xb6, 0x80, 0x74, + 0x41, 0xde, 0x6b, 0xe8, 0xaa, 0xed, 0x6c, 0xc6, 0x78, 0x86, 0x82, 0x8b, 0x3b, 0xd0, 0xb5, 0x59, + 0x96, 0x27, 0x66, 0x12, 0x59, 0x12, 0x4f, 0xee, 0x25, 0x21, 0x44, 0x37, 0xae, 0xfe, 0x81, 0x00, + 0x6f, 0x0a, 0x48, 0xb4, 0xf6, 0x20, 0x3e, 0x84, 0xf2, 0x1a, 0x23, 0x0d, 0x7c, 0x9c, 0x6f, 0xfc, + 0x5b, 0x9a, 0xae, 0xdd, 0x7c, 0x53, 0xeb, 0x3c, 0x98, 0x39, 0x87, 0x4f, 0xee, 0x5a, 0xff, 0x0d, + 0x1f, 0x2e, 0x15, 0x1f, 0x45, 0x45, 0x89, 0x50, 0x93, 0x12, 0x4f, 0xf8, 0x9b, 0xa2, 0x64, 0x5d, + 0xf2, 0xa0, 0x89, 0x51, 0x2a, 0x15, 0x71, 0x88, 0xd1, 0x4b, 0x45, 0xd9, 0xfc, 0x6e, 0x9e, 0x68, + 0xd0, 0x34, 0x5c, 0xd4, 0x42, 0x6b, 0xb8, 0x28, 0xf7, 0x2f, 0x64, 0xdf, 0xfa, 0x72, 0xb7, 0x29, + 0x6a, 0x94, 0x67, 0x40, 0x80, 0x98, 0x2f, 0x8e, 0x22, 0x54, 0x5c, 0x81, 0x0a, 0x88, 0x61, 0x81, + 0x0a, 0x16, 0x08, 0x56, 0x41, 0x4a, 0xcc, 0x81, 0x9e, 0x58, 0x74, 0x44, 0x52, 0x25, 0xfe, 0x12, + 0x4d, 0x06, 0xc6, 0x8f, 0x53, 0x56, 0xb0, 0xe0, 0x9d, 0xff, 0x62, 0xad, 0x92, 0xf0, 0x87, 0x1a, + 0xe9, 0x49, 0x94, 0xb6, 0xcb, 0xe2, 0x77, 0x56, 0xec, 0xd9, 0x5b, 0x80, 0x44, 0x6b, 0xdb, 0x6f, + 0x26, 0xe2, 0x5e, 0x95, 0xcd, 0x89, 0x8e, 0x0c, 0x8a, 0x3f, 0xd1, 0x15, 0x41, 0x07, 0xee, 0xac, + 0x23, 0xdd, 0xca, 0xac, 0x90, 0x7b, 0xf0, 0x0e, 0x9f, 0x6e, 0x18, 0x25, 0x40, 0x43, 0x6e, 0x9b, + 0x67, 0x7c, 0x54, 0x57, 0xf9, 0x6a, 0xe1, 0xbb, 0xc6, 0x13, 0x76, 0x2f, 0xd3, 0xda, 0x3e, 0xd1, + 0xb0, 0x7b, 0xdd, 0x47, 0xd2, 0x47, 0xcf, 0xd8, 0x84, 0xdd, 0xdb, 0x82, 0xf2, 0xf1, 0x70, 0xc9, + 0x89, 0x6d, 0x8a, 0x34, 0xcb, 0x8e, 0x95, 0x40, 0xeb, 0x26, 0x60, 0xd2, 0xbd, 0x74, 0x23, 0x1b, + 0x78, 0x2f, 0x3d, 0xbc, 0xcf, 0xfa, 0xae, 0x93, 0x3c, 0x42, 0xc4, 0x80, 0x24, 0xaa, 0x0d, 0x3b, + 0x3e, 0x14, 0xf2, 0x51, 0x6d, 0xd8, 0xf1, 0xa1, 0x98, 0x3f, 0x30, 0x70, 0x47, 0x85, 0x65, 0xe6, + 0x60, 0x70, 0x74, 0x23, 0xa2, 0x02, 0xaa, 0x98, 0x3f, 0xb0, 0x70, 0x22, 0xc9, 0xac, 0x27, 0xa3, + 0xaf, 0x10, 0xac, 0xcf, 0x73, 0x94, 0x5e, 0x1b, 0x9b, 0x95, 0xb3, 0x3b, 0xf1, 0x75, 0x5c, 0xb9, + 0x9d, 0x42, 0x65, 0x37, 0xad, 0x71, 0xea, 0x53, 0xf3, 0x72, 0xb5, 0xff, 0x8a, 0xc2, 0xe4, 0x17, + 0xd9, 0xc2, 0xe4, 0x5e, 0x3b, 0xca, 0xa3, 0x1f, 0x9c, 0x88, 0x2c, 0xb9, 0xe6, 0x42, 0x33, 0x2d, + 0x4d, 0xc5, 0x8a, 0x2c, 0xd5, 0x6f, 0xb6, 0x2a, 0x8b, 0x3a, 0x27, 0x17, 0xb2, 0xc8, 0x7f, 0x3a, + 0xe7, 0x3e, 0x6a, 0x39, 0x65, 0x00, 0xf1, 0xea, 0xa7, 0x8c, 0x62, 0x87, 0x68, 0x7f, 0x5f, 0x5f, + 0x7c, 0x7f, 0xbb, 0x41, 0xff, 0x1c, 0xa4, 0x80, 0xe7, 0xef, 0xf2, 0xd0, 0x3d, 0x35, 0x8d, 0x8a, + 0x3f, 0x5c, 0xbb, 0xed, 0xe7, 0xa1, 0x78, 0x22, 0x12, 0xdb, 0x85, 0xd7, 0x96, 0x29, 0xce, 0x6d, + 0x02, 0x2a, 0xc4, 0xc4, 0xc0, 0x49, 0xe1, 0x1d, 0xaa, 0xbc, 0xd6, 0xab, 0x17, 0x4a, 0xcf, 0xd0, + 0x30, 0x38, 0x34, 0x83, 0x50, 0xfa, 0xed, 0x7e, 0xad, 0xf3, 0x60, 0x72, 0xb8, 0x1d, 0x42, 0x1f, + 0x61, 0xac, 0x96, 0xf3, 0x46, 0x9f, 0x74, 0x5f, 0x67, 0xe6, 0xdc, 0x25, 0xbe, 0x0d, 0xa4, 0x15, + 0xca, 0x07, 0x93, 0x9c, 0x0e, 0xda, 0x18, 0x69, 0xf0, 0xe9, 0x1f, 0x11, 0x57, 0xf2, 0x9a, 0x87, + 0x8b, 0x58, 0xc4, 0x08, 0x8f, 0x73, 0x9a, 0xc7, 0xf4, 0x1c, 0x3a, 0xc7, 0xa3, 0x86, 0xce, 0x01, + 0xe6, 0x39, 0x82, 0x1f, 0x5d, 0x27, 0x98, 0xee, 0xa4, 0x6d, 0x54, 0x0d, 0x0a, 0xaa, 0xfc, 0xb1, + 0x80, 0xae, 0x0a, 0x5e, 0x67, 0x1c, 0x49, 0x6f, 0x0a, 0x10, 0xd3, 0x24, 0x75, 0xea, 0x5c, 0x72, + 0xf8, 0x3a, 0xa4, 0xc2, 0x85, 0x09, 0x6a, 0x43, 0x6f, 0xc2, 0x1f, 0xe5, 0x6e, 0x1a, 0x5b, 0x9d, + 0xa4, 0x6a, 0x85, 0xb7, 0x46, 0xf4, 0x73, 0xfd, 0x9f, 0xa4, 0x7b, 0xda, 0xe0, 0x74, 0x50, 0xee, + 0x86, 0xc6, 0x99, 0xae, 0xd7, 0xb5, 0xb7, 0x3f, 0x4e, 0x0e, 0x1e, 0xd4, 0xda, 0xf7, 0x64, 0xfa, + 0x07, 0x21, 0xd5, 0xf9, 0x32, 0xed, 0xc6, 0xc7, 0x5f, 0xb4, 0xee, 0x4d, 0x0e, 0x1e, 0xd5, 0x2b, + 0xe8, 0xa7, 0x7a, 0x5b, 0x33, 0xb7, 0x8e, 0x2c, 0xc7, 0x3d, 0xf6, 0x76, 0xe0, 0xa3, 0x0a, 0xf9, + 0xa2, 0x67, 0x58, 0x40, 0xa5, 0x76, 0x63, 0xbe, 0x23, 0xc4, 0x9a, 0xe7, 0x8c, 0x0b, 0x4d, 0x35, + 0x5d, 0x14, 0x89, 0xcf, 0xa1, 0xe9, 0x71, 0xbe, 0x40, 0x67, 0x68, 0x12, 0x93, 0x33, 0xbb, 0x4e, + 0x9a, 0xa2, 0x5f, 0x24, 0xd5, 0xd5, 0xfa, 0xb2, 0x6b, 0xc5, 0xcd, 0x68, 0xa6, 0xa9, 0x88, 0x63, + 0x77, 0xa2, 0x15, 0x5b, 0x6b, 0xa5, 0xe9, 0xc6, 0xcd, 0x14, 0xbd, 0x44, 0xb1, 0xc0, 0x88, 0x35, + 0x76, 0x76, 0x75, 0x32, 0x3e, 0x93, 0x5d, 0xdd, 0xe8, 0xca, 0x2e, 0xf3, 0x18, 0x56, 0x35, 0x90, + 0xdb, 0x6b, 0x9e, 0x3e, 0xd7, 0x86, 0x9a, 0xd6, 0x8f, 0x09, 0xe8, 0xae, 0xf5, 0x91, 0xa0, 0xa2, + 0x6b, 0x4f, 0x34, 0xf2, 0xff, 0x13, 0x28, 0x1f, 0x9f, 0x20, 0xc8, 0x4d, 0xb1, 0xcd, 0xd1, 0xcc, + 0xa6, 0x09, 0x71, 0xbc, 0x27, 0x8d, 0x44, 0x19, 0x4d, 0xa6, 0x87, 0x12, 0x2a, 0x9b, 0xc7, 0xdd, + 0x9e, 0xb5, 0xf3, 0x6c, 0x40, 0x77, 0x3b, 0xc0, 0x88, 0xa5, 0x10, 0x27, 0x8f, 0x7b, 0x8d, 0xa2, + 0xff, 0xe6, 0xc3, 0xd2, 0xba, 0x4c, 0x61, 0x69, 0x3d, 0xff, 0xa1, 0x00, 0xcd, 0xa8, 0x8d, 0xf9, + 0x43, 0x24, 0x72, 0x00, 0x93, 0x4b, 0xaf, 0xa1, 0x42, 0x1a, 0x7b, 0x81, 0xde, 0x89, 0x57, 0x6f, + 0x55, 0xe5, 0x5f, 0x7b, 0xf5, 0x42, 0xa9, 0x9e, 0x8f, 0xb7, 0x51, 0x57, 0x6f, 0x84, 0x5e, 0x54, + 0xbb, 0x68, 0x0d, 0x78, 0xa3, 0x81, 0xc7, 0xd4, 0x50, 0xd7, 0x68, 0x6b, 0x67, 0x72, 0xb0, 0xf5, + 0xf6, 0x48, 0x17, 0x24, 0xce, 0xb7, 0xc2, 0xf8, 0xf4, 0xbe, 0xc5, 0x2d, 0xd6, 0x9c, 0x8c, 0x8f, + 0x91, 0xec, 0x20, 0x86, 0x91, 0xf8, 0xde, 0x68, 0x24, 0x98, 0xb9, 0xb5, 0x27, 0x7d, 0x71, 0x38, + 0x2b, 0xa0, 0x85, 0x0e, 0x42, 0x2e, 0x20, 0xdd, 0x02, 0x6f, 0x1d, 0x8e, 0xa1, 0x02, 0x8c, 0x0f, + 0x7c, 0x3e, 0xc3, 0x33, 0xfa, 0xb5, 0x2a, 0xff, 0xca, 0x0b, 0x25, 0xfa, 0x74, 0xb8, 0x01, 0x99, + 0x26, 0x63, 0x9a, 0xe6, 0xb8, 0xa6, 0x03, 0x1d, 0x8b, 0xb3, 0x50, 0xc1, 0x76, 0x92, 0x72, 0x1c, + 0xef, 0x38, 0x85, 0x3e, 0xf8, 0x21, 0x2e, 0x41, 0x62, 0x43, 0xcc, 0x1f, 0x50, 0xea, 0x95, 0x58, + 0x28, 0x12, 0xdc, 0xa8, 0x04, 0x22, 0xe1, 0x60, 0x9c, 0xbe, 0x82, 0xb5, 0xa9, 0x11, 0x97, 0xa2, + 0xbb, 0x42, 0x0d, 0xe1, 0x48, 0x4c, 0x91, 0x1b, 0x1b, 0x6b, 0xfd, 0x4a, 0x53, 0x24, 0xbc, 0x51, + 0x49, 0xc4, 0xc9, 0x66, 0x54, 0xe8, 0xb3, 0xab, 0xc2, 0xeb, 0x8d, 0x8f, 0x3e, 0x91, 0x66, 0x70, + 0x6b, 0x9a, 0xea, 0x63, 0x3f, 0xc5, 0x32, 0x34, 0x3d, 0x48, 0xf2, 0x7a, 0xaf, 0x8d, 0x04, 0xfc, + 0x8d, 0x58, 0x68, 0xc1, 0x4d, 0x80, 0x2f, 0xbb, 0x18, 0xd3, 0x53, 0x5c, 0x69, 0x54, 0x02, 0x89, + 0x08, 0x8d, 0x31, 0xea, 0xd3, 0x7f, 0x13, 0xa7, 0x7a, 0x3c, 0x3e, 0x5a, 0x8d, 0xa8, 0x53, 0xbd, + 0x51, 0x44, 0xbe, 0x13, 0x8a, 0xfb, 0xb7, 0x35, 0x2a, 0xab, 0x5a, 0x42, 0x01, 0xc2, 0xb0, 0x53, + 0xe8, 0x77, 0xcc, 0xc5, 0xe2, 0xcf, 0xd1, 0xc2, 0xf8, 0xce, 0x50, 0xf4, 0x17, 0xfe, 0x50, 0x62, + 0x75, 0x24, 0x06, 0x49, 0xc7, 0x37, 0xc1, 0x68, 0x19, 0x6a, 0x8a, 0xc9, 0x1c, 0xc6, 0x02, 0x13, + 0xe7, 0xa0, 0x49, 0xc1, 0xd8, 0x2e, 0x5f, 0x73, 0x18, 0x0c, 0xe2, 0x3e, 0xfa, 0xcb, 0xd3, 0xe6, + 0x42, 0x33, 0x39, 0x1a, 0xbf, 0xd3, 0xdc, 0x04, 0xb0, 0xea, 0x79, 0xdf, 0x38, 0x24, 0xc5, 0x58, + 0x1a, 0x67, 0xa7, 0x0b, 0x4d, 0xc3, 0xcd, 0x8c, 0x3c, 0x94, 0xe2, 0x53, 0xd9, 0x32, 0x03, 0x52, + 0x68, 0xe8, 0x85, 0x52, 0x31, 0x4f, 0xdb, 0x8c, 0xa9, 0x0c, 0xb9, 0xf2, 0x0a, 0x9a, 0xc2, 0x67, + 0xcf, 0x04, 0xa9, 0x56, 0x69, 0x37, 0x56, 0xe3, 0xa3, 0x4b, 0xb8, 0x3c, 0x98, 0xf0, 0x62, 0x0a, + 0xee, 0x46, 0xf9, 0x44, 0x9a, 0x34, 0x24, 0x4e, 0xea, 0xda, 0xa5, 0xcc, 0xc5, 0x77, 0xd9, 0xdd, + 0x28, 0x07, 0x50, 0xfa, 0x14, 0x9a, 0x91, 0xdd, 0x8d, 0xcd, 0x33, 0xaa, 0x59, 0xfc, 0x33, 0xaa, + 0x22, 0xee, 0x99, 0x94, 0xe7, 0x1f, 0x08, 0x68, 0x1e, 0x24, 0x4a, 0x35, 0x0f, 0x4e, 0xb7, 0x69, + 0x6e, 0xb4, 0x3e, 0xbf, 0x7b, 0x58, 0x95, 0x1f, 0xe2, 0xa5, 0xd0, 0x02, 0x9a, 0xd7, 0x78, 0xfc, + 0x22, 0x68, 0x3d, 0x13, 0x41, 0x0e, 0x26, 0x2f, 0xf3, 0x58, 0xe8, 0x03, 0x59, 0x10, 0x51, 0xc5, + 0x7c, 0x98, 0x0d, 0x2a, 0x5e, 0x3c, 0x7f, 0x70, 0xa1, 0xf9, 0x0e, 0xb3, 0xf8, 0x23, 0x25, 0x72, + 0x76, 0x1d, 0x90, 0x1b, 0x2d, 0xd2, 0x1c, 0x7e, 0xe9, 0x0c, 0xba, 0xb2, 0x7a, 0x0e, 0xa4, 0x04, + 0x54, 0x84, 0x3b, 0x59, 0xeb, 0xdf, 0xa6, 0x34, 0x7e, 0x6d, 0x76, 0xf9, 0x0d, 0x9a, 0xd4, 0x88, + 0x3b, 0x62, 0x04, 0x70, 0xbf, 0xdd, 0x84, 0xc9, 0xa7, 0x96, 0x90, 0xff, 0x53, 0xfe, 0x80, 0x37, + 0xc7, 0xd0, 0x52, 0x67, 0x8d, 0xb3, 0xfb, 0xd3, 0x7d, 0x9f, 0xb1, 0x2b, 0x5e, 0xa8, 0x2b, 0x7d, + 0x1c, 0x4d, 0xe1, 0xda, 0x4d, 0x88, 0x21, 0x6e, 0x08, 0xe8, 0x6e, 0x03, 0x67, 0xd0, 0x0b, 0xe3, + 0x85, 0x3a, 0x46, 0xb6, 0x82, 0x7d, 0xa8, 0x31, 0xbd, 0xc5, 0x98, 0x14, 0x6b, 0x66, 0x2b, 0xd7, + 0x37, 0xc3, 0x56, 0x9e, 0xbf, 0x75, 0xa1, 0x12, 0xeb, 0xd8, 0xff, 0x58, 0x39, 0xa0, 0x46, 0x95, + 0x9f, 0x41, 0x4f, 0x79, 0x1d, 0x31, 0x22, 0xcd, 0xe4, 0x11, 0x4c, 0x28, 0xc7, 0x4a, 0xf7, 0x6f, + 0x53, 0xba, 0xdf, 0xe4, 0x0f, 0x85, 0x13, 0x5f, 0x9b, 0xee, 0xd7, 0xa3, 0x49, 0x09, 0xdc, 0x11, + 0xa3, 0xfb, 0xd9, 0x56, 0x9b, 0x44, 0x28, 0x9c, 0xa0, 0x74, 0x0e, 0x90, 0x3a, 0x9d, 0x5f, 0x3d, + 0xa7, 0x07, 0xac, 0xf2, 0xd1, 0xba, 0x2c, 0x62, 0x25, 0x8d, 0x27, 0x44, 0xac, 0xf0, 0xb9, 0xef, + 0x87, 0x58, 0xff, 0x99, 0x89, 0x58, 0xd9, 0xd8, 0xff, 0x58, 0x89, 0x95, 0xe6, 0x66, 0x72, 0xc4, + 0x88, 0x24, 0xf2, 0x08, 0x86, 0xe5, 0xb7, 0x52, 0xeb, 0xd3, 0x68, 0xea, 0xcf, 0x15, 0x7f, 0x63, + 0x62, 0x07, 0x25, 0x02, 0x96, 0xa5, 0xd6, 0x5c, 0x2a, 0x95, 0x68, 0x7b, 0x2e, 0x68, 0x43, 0x9f, + 0xa6, 0xde, 0x6d, 0x4d, 0x9d, 0xb9, 0x90, 0x3a, 0x74, 0x41, 0xeb, 0x7e, 0x97, 0xe6, 0xf9, 0xd9, + 0xe7, 0x42, 0xd3, 0x18, 0xec, 0xf7, 0xb0, 0x14, 0xab, 0x51, 0x91, 0xfe, 0x92, 0x80, 0x9e, 0x6b, 0x49, 0xc8, 0x0a, 0xa3, 0x54, 0x2a, 0xe1, 0x17, 0xa4, 0x2c, 0x11, 0x6b, 0x56, 0x2a, 0x89, 0x8f, - 0xce, 0x22, 0x9f, 0x01, 0xc4, 0xde, 0xf8, 0x64, 0x4d, 0xc5, 0x76, 0xde, 0x0e, 0x9e, 0x72, 0x07, - 0x04, 0x30, 0x7f, 0xb3, 0x14, 0xae, 0x1b, 0x02, 0xdb, 0x95, 0x26, 0x5d, 0x5f, 0xb5, 0x38, 0xdb, - 0xff, 0x93, 0x78, 0xcf, 0xe9, 0xfe, 0x9f, 0x93, 0x92, 0x43, 0x87, 0x49, 0xc0, 0x0f, 0x16, 0x51, - 0x80, 0x8e, 0xc7, 0xb9, 0x47, 0x69, 0x3e, 0x7d, 0x89, 0x0e, 0xf1, 0x9c, 0x2f, 0x9e, 0x35, 0xc2, - 0xa7, 0xc2, 0xc2, 0x5c, 0x32, 0xa7, 0x0f, 0xfe, 0x52, 0xc3, 0xc9, 0x61, 0xcf, 0x33, 0xa9, 0xaf, - 0xe1, 0xbd, 0xd4, 0x32, 0x55, 0x5e, 0x82, 0x16, 0x7b, 0x1d, 0xbf, 0xce, 0xdc, 0x16, 0xf9, 0xa1, - 0x7b, 0xfe, 0x20, 0x0f, 0x95, 0x3e, 0xd7, 0xac, 0xc4, 0x76, 0xd6, 0x2b, 0xb1, 0xa6, 0xea, 0x9d, - 0x32, 0xb9, 0xe1, 0xd4, 0xd5, 0xfa, 0x94, 0x5f, 0x93, 0x2b, 0xd5, 0xa3, 0x08, 0x51, 0x77, 0xa2, - 0x2d, 0x2c, 0xb6, 0x12, 0xf5, 0x82, 0x33, 0x8a, 0xa5, 0x42, 0x6b, 0xda, 0x9c, 0x20, 0x6e, 0x49, - 0x89, 0x0d, 0xb7, 0xe4, 0xfd, 0xe7, 0x8c, 0x62, 0xbb, 0x78, 0x10, 0x41, 0x71, 0x29, 0x9d, 0x34, - 0xf7, 0xd8, 0x07, 0x26, 0x2d, 0x6a, 0x87, 0x6f, 0xe0, 0x19, 0xbf, 0x3b, 0x34, 0x7a, 0xfc, 0x43, - 0x93, 0x29, 0xf3, 0x49, 0x34, 0x25, 0x41, 0xe3, 0xe5, 0xe2, 0xaf, 0xe5, 0x1b, 0x2d, 0xf9, 0x72, - 0x69, 0x4a, 0xea, 0xe2, 0xd9, 0xd4, 0xc9, 0x9b, 0xa3, 0x6f, 0xee, 0xad, 0xab, 0xf5, 0x21, 0x56, - 0x53, 0x17, 0x14, 0x1f, 0x47, 0x88, 0x7a, 0xd8, 0xe2, 0xe6, 0x05, 0x86, 0xc3, 0x2f, 0x57, 0x4c, - 0x5e, 0x51, 0x40, 0x70, 0x31, 0xfe, 0x15, 0x05, 0x6e, 0x5c, 0x08, 0x6a, 0xca, 0x48, 0x8c, 0xaa, - 0x5b, 0x89, 0x27, 0x88, 0x5e, 0xc8, 0x99, 0x6a, 0x58, 0xb8, 0x33, 0xbd, 0x8e, 0xc5, 0x23, 0xcb, - 0xb1, 0x06, 0xd2, 0x7c, 0xc8, 0xc8, 0x0f, 0xfb, 0x2b, 0xdd, 0xd3, 0x96, 0x1c, 0x7c, 0x2d, 0x39, - 0xb8, 0x3f, 0x75, 0x8c, 0x66, 0x82, 0xf0, 0x1c, 0x71, 0x39, 0x2d, 0x21, 0xd9, 0x73, 0x8f, 0xa1, - 0x42, 0x3f, 0x2d, 0xa2, 0x0b, 0x48, 0x10, 0xa3, 0x17, 0x4a, 0xd3, 0xa0, 0x7f, 0xf6, 0xdb, 0xa7, - 0xd7, 0x88, 0xdb, 0x51, 0x61, 0x54, 0x89, 0x35, 0x6d, 0x09, 0x24, 0x5e, 0xa6, 0x71, 0x1d, 0xbc, - 0xd9, 0x1c, 0xd4, 0x79, 0xdc, 0x34, 0x39, 0x0e, 0xeb, 0x40, 0x12, 0xf9, 0x69, 0x30, 0x5d, 0x3d, - 0xae, 0xad, 0x49, 0xbc, 0x5c, 0xf5, 0x9c, 0x2a, 0xaf, 0x43, 0x6b, 0xbc, 0x39, 0xe6, 0xc1, 0xbc, - 0x67, 0x21, 0x96, 0x1d, 0xdf, 0xd7, 0xa7, 0x82, 0x3e, 0xe2, 0x4f, 0x05, 0xfd, 0x7b, 0x9e, 0xc3, - 0x02, 0x2a, 0xc0, 0x3d, 0xc5, 0xc5, 0x87, 0x51, 0x01, 0x2e, 0x65, 0x07, 0xac, 0x25, 0x64, 0x20, - 0x81, 0x82, 0xff, 0x13, 0x31, 0xd4, 0x07, 0xe0, 0xa5, 0xf5, 0x08, 0x19, 0x85, 0x36, 0xb2, 0x69, - 0xb9, 0x39, 0xe6, 0xc5, 0xec, 0xc5, 0x0d, 0x91, 0x48, 0x43, 0xa3, 0xb2, 0x38, 0x1a, 0x8b, 0x24, - 0x22, 0x5b, 0x9b, 0xb7, 0x2d, 0xde, 0x8c, 0x6b, 0x79, 0x99, 0xf5, 0xb0, 0x80, 0xe6, 0xd8, 0x4e, - 0xf1, 0x0b, 0xb2, 0xf0, 0x6a, 0x7a, 0xbc, 0xc1, 0x00, 0x66, 0xd9, 0x4e, 0xcc, 0xe6, 0x40, 0xe3, - 0x5f, 0xad, 0x78, 0x54, 0x17, 0x42, 0x35, 0x91, 0xa6, 0xa6, 0x48, 0x18, 0x0f, 0xe3, 0xbb, 0x7e, - 0xa0, 0xd7, 0x9a, 0x0e, 0xf4, 0xbb, 0x2c, 0x28, 0xdf, 0x90, 0x88, 0x35, 0x07, 0x12, 0x63, 0x1d, - 0xe2, 0x2c, 0xe5, 0xb5, 0x31, 0x6f, 0xa9, 0x78, 0xb4, 0xb5, 0x27, 0x7d, 0x84, 0x3a, 0x64, 0x7b, - 0xde, 0x76, 0xa1, 0x69, 0x50, 0x49, 0x4f, 0x82, 0xef, 0x3c, 0x62, 0x56, 0x9b, 0x10, 0x53, 0x6a, - 0x41, 0x0c, 0x9e, 0x07, 0xd9, 0x8f, 0x63, 0xe1, 0x66, 0x91, 0x2a, 0xdf, 0x8f, 0x16, 0x7a, 0xb3, - 0xa6, 0x2f, 0x89, 0x80, 0x1f, 0xde, 0x6d, 0xdd, 0xb3, 0x06, 0x91, 0xc7, 0xb9, 0xd5, 0xcf, 0xd2, - 0xf4, 0x7a, 0x20, 0xca, 0xd0, 0x18, 0x24, 0x36, 0x55, 0x2c, 0xa1, 0x7a, 0x72, 0xe8, 0x30, 0x84, - 0xe4, 0x35, 0x9d, 0x9c, 0x27, 0xf2, 0x69, 0x64, 0x84, 0x9a, 0x8d, 0x91, 0x68, 0xa4, 0x31, 0xd2, - 0xb0, 0x93, 0xb1, 0xb0, 0x1b, 0x82, 0x55, 0xb7, 0x71, 0x4a, 0x50, 0xe5, 0x56, 0x81, 0x97, 0x6c, - 0xe3, 0xec, 0x30, 0x29, 0x07, 0x07, 0xae, 0xd4, 0xfe, 0x4e, 0xed, 0xe0, 0x30, 0x4d, 0x89, 0x39, - 0x70, 0x5d, 0x1b, 0x3a, 0x42, 0x98, 0x67, 0x8f, 0xf6, 0xda, 0xd9, 0xd4, 0xfe, 0xd7, 0x53, 0x9d, - 0x87, 0x3f, 0x6b, 0xdd, 0x03, 0x2e, 0xc1, 0xa9, 0xe3, 0x67, 0x52, 0x47, 0x3b, 0x58, 0xf3, 0xd4, - 0xf1, 0x6b, 0xc9, 0x91, 0x1e, 0xdc, 0xba, 0xfb, 0x18, 0xb8, 0x66, 0x91, 0x14, 0x46, 0xb6, 0x5d, - 0x7c, 0x5e, 0x7d, 0x57, 0x6c, 0xd6, 0x0c, 0xa1, 0x24, 0x28, 0x4d, 0xff, 0xe5, 0xf3, 0x4b, 0x2a, - 0x1e, 0xf3, 0x57, 0xec, 0x92, 0x2b, 0x7e, 0x5e, 0xf1, 0xc2, 0x83, 0x0b, 0x79, 0x2d, 0x0a, 0x66, - 0x45, 0x90, 0x55, 0x09, 0x76, 0xc2, 0x2b, 0xaa, 0xfc, 0x32, 0xcb, 0xaa, 0x14, 0x09, 0x34, 0x05, - 0xb7, 0xb2, 0xcc, 0x4a, 0x65, 0xa9, 0xd3, 0x87, 0x92, 0x43, 0x6f, 0x82, 0xc3, 0x72, 0x72, 0x70, - 0x3f, 0x24, 0x84, 0x60, 0xd9, 0x7c, 0xae, 0x25, 0x87, 0x8f, 0x31, 0xc8, 0x74, 0x4f, 0x1b, 0x8c, - 0x40, 0xcf, 0x2c, 0x49, 0xd9, 0x63, 0x4f, 0x5b, 0xea, 0x8d, 0x01, 0x3a, 0x69, 0x12, 0x43, 0x0a, - 0x5a, 0x68, 0x87, 0xdf, 0x00, 0x78, 0x96, 0x90, 0x69, 0x3b, 0x9a, 0xb2, 0x2d, 0xd4, 0x48, 0x9e, - 0x63, 0x26, 0x14, 0x78, 0xae, 0x68, 0xb7, 0x6d, 0xaa, 0x23, 0x91, 0x46, 0xd8, 0x36, 0xe4, 0x99, - 0x3b, 0xdf, 0x46, 0x2a, 0x01, 0xaf, 0x5d, 0xed, 0x4a, 0x77, 0xe6, 0xc8, 0x0d, 0x72, 0x2a, 0x7f, - 0x90, 0xea, 0x1d, 0x4a, 0x5d, 0x39, 0xe3, 0xe3, 0xc1, 0xaa, 0xaa, 0x55, 0xf9, 0x29, 0xb4, 0xc2, - 0x6b, 0xbf, 0xb6, 0xba, 0xb7, 0x23, 0x19, 0x65, 0x72, 0x70, 0x18, 0xf7, 0x70, 0xf1, 0xac, 0x76, - 0xf2, 0x38, 0x0c, 0x97, 0xee, 0x8d, 0x77, 0x0b, 0xd0, 0xdc, 0xd5, 0x4a, 0xa2, 0x7a, 0xc7, 0x86, - 0x48, 0x34, 0xce, 0x42, 0xe3, 0xc3, 0xde, 0x64, 0xa7, 0x1c, 0xda, 0xda, 0x1c, 0x0f, 0x85, 0x95, - 0x78, 0x5c, 0xdf, 0x22, 0x20, 0x6e, 0x18, 0xc5, 0x52, 0x21, 0xc3, 0x9e, 0x8f, 0x2b, 0x15, 0x7f, - 0xc9, 0x9d, 0xdf, 0x2e, 0xe3, 0xc9, 0x8e, 0x71, 0x7e, 0x2f, 0xcb, 0x0c, 0x9c, 0x87, 0x63, 0x47, - 0xeb, 0xbd, 0x08, 0x4e, 0x3e, 0x6c, 0xb8, 0xfb, 0x53, 0xbd, 0x9d, 0x70, 0x16, 0x61, 0xc4, 0x13, - 0xe9, 0x82, 0x99, 0x07, 0x58, 0x73, 0xb1, 0x57, 0x40, 0xd3, 0x98, 0xac, 0xb1, 0x81, 0x88, 0x65, - 0x54, 0xb4, 0x49, 0xa8, 0xf2, 0x4f, 0xbd, 0x59, 0x55, 0xd2, 0x2a, 0xe8, 0x25, 0x75, 0xf2, 0x7c, - 0x6a, 0xe8, 0x50, 0xb9, 0x9b, 0x8d, 0x33, 0xd5, 0x71, 0x2c, 0xd3, 0xda, 0x1e, 0x20, 0x34, 0x09, - 0x99, 0x2e, 0x40, 0xe8, 0x4a, 0x7d, 0xb4, 0x3b, 0x7d, 0x71, 0x7f, 0xaa, 0xe3, 0x18, 0x5e, 0x0b, - 0x12, 0xe2, 0x0c, 0x4a, 0xc0, 0x8a, 0x5a, 0xc8, 0x9a, 0xfb, 0x26, 0x41, 0x53, 0xdf, 0x8f, 0x7c, - 0x59, 0x1f, 0x14, 0xff, 0x59, 0x40, 0x05, 0xf1, 0x40, 0x44, 0x0f, 0x3d, 0xf7, 0x77, 0x82, 0x2a, - 0x8f, 0x08, 0x5e, 0x28, 0x93, 0x3e, 0x10, 0xb6, 0xee, 0xd8, 0xb2, 0x35, 0xb4, 0x6b, 0x4b, 0x28, - 0xe8, 0x4e, 0xbd, 0xdd, 0x9a, 0xfe, 0x10, 0xef, 0xb0, 0xe4, 0x8d, 0x5e, 0xcc, 0x0a, 0x4e, 0x9f, - 0x5e, 0x6c, 0x78, 0x7e, 0xe3, 0x6d, 0x8c, 0x01, 0xcb, 0x53, 0x7d, 0xe7, 0x52, 0xc7, 0xaf, 0xe9, - 0xb0, 0xa9, 0x37, 0x06, 0xd2, 0xc3, 0x87, 0x21, 0x3a, 0xab, 0xbb, 0x66, 0x6d, 0x6d, 0xb5, 0x1b, - 0x70, 0xe7, 0xae, 0xab, 0x75, 0x27, 0x07, 0x87, 0xdc, 0x46, 0xf7, 0x7a, 0xfe, 0xc5, 0x72, 0x8c, - 0xe3, 0xd6, 0x11, 0x5c, 0x4b, 0xe5, 0x49, 0x77, 0xea, 0xf8, 0x35, 0xad, 0xe3, 0x04, 0x74, 0x0a, - 0x40, 0x39, 0xda, 0x13, 0xa2, 0xf4, 0x15, 0xb2, 0x11, 0xf9, 0x26, 0xd3, 0x5e, 0x7c, 0x3f, 0xf2, - 0xc1, 0xac, 0xaa, 0x9e, 0x57, 0xe5, 0x9f, 0xa2, 0xcd, 0xde, 0x9c, 0x5b, 0x4a, 0x77, 0x72, 0xe6, - 0x56, 0x15, 0x76, 0x23, 0x70, 0xeb, 0x4f, 0x05, 0x6e, 0x13, 0x7d, 0x2a, 0xe8, 0xeb, 0xed, 0xb9, - 0xee, 0x42, 0xf3, 0x1c, 0x3a, 0xfe, 0x16, 0x6e, 0x6a, 0x2c, 0x8e, 0x40, 0x9e, 0x7d, 0x70, 0x24, - 0x36, 0x3e, 0xf2, 0xbe, 0x95, 0x0f, 0x95, 0x6c, 0x9a, 0xb6, 0x45, 0x6a, 0xa8, 0xda, 0xa4, 0xca, - 0x3e, 0x54, 0xef, 0xcd, 0x3d, 0x51, 0x5b, 0x14, 0x92, 0xbe, 0x18, 0x0a, 0x6d, 0xb4, 0x97, 0xc5, - 0xfc, 0x90, 0x44, 0x0f, 0x2a, 0x66, 0xfb, 0x95, 0xb3, 0x13, 0x9a, 0xca, 0xc4, 0xf9, 0xc8, 0x90, - 0xe5, 0xf5, 0xd4, 0x97, 0x46, 0x09, 0xae, 0xe7, 0x78, 0x03, 0xf1, 0xed, 0x36, 0x31, 0x00, 0x0f, - 0x2a, 0x66, 0xbf, 0x8c, 0xd7, 0x74, 0x3e, 0x53, 0x99, 0x58, 0x82, 0x26, 0x13, 0x27, 0x89, 0x08, - 0xcb, 0x86, 0xc9, 0x7e, 0x8a, 0xb3, 0xd1, 0x24, 0x25, 0x18, 0xd2, 0x85, 0x7f, 0x1f, 0xfd, 0x65, - 0x0e, 0xf2, 0x34, 0x39, 0x2b, 0xd1, 0xa5, 0x27, 0x69, 0xc7, 0xd0, 0xf8, 0x68, 0x7a, 0x5f, 0x82, - 0xa1, 0x3d, 0x66, 0xc5, 0x07, 0x6d, 0x6a, 0x14, 0x4b, 0x85, 0xb0, 0x28, 0xa6, 0x8b, 0x90, 0x99, - 0x17, 0xe6, 0x7d, 0x33, 0xbc, 0x30, 0xff, 0x3b, 0xc9, 0x0b, 0x0b, 0x7e, 0xe0, 0x85, 0x7c, 0x14, - 0x45, 0x33, 0x21, 0x13, 0xa1, 0x68, 0x5c, 0xbc, 0xf0, 0xaf, 0xec, 0x78, 0xe1, 0xb7, 0x16, 0x61, - 0xf1, 0x57, 0x3a, 0x2f, 0x14, 0x6c, 0x9d, 0x85, 0xe9, 0xf8, 0xc0, 0x53, 0x8c, 0x70, 0x44, 0xf2, - 0x6e, 0x0f, 0x38, 0xe2, 0x03, 0x30, 0x79, 0xe8, 0x33, 0xdd, 0xd3, 0xa6, 0xb5, 0x5f, 0xd4, 0xae, - 0xb4, 0x52, 0x5c, 0x58, 0x19, 0x24, 0x45, 0x6b, 0xee, 0xd9, 0x33, 0xe9, 0x87, 0xe2, 0xd5, 0xd2, - 0xa3, 0x13, 0x9b, 0x6c, 0x42, 0xa2, 0x75, 0xb0, 0xa2, 0xdb, 0xd0, 0x82, 0x6c, 0x8a, 0x35, 0xb2, - 0x00, 0x9f, 0x5c, 0x91, 0xf8, 0x10, 0x9a, 0x44, 0x2e, 0xa3, 0x4c, 0xad, 0x3d, 0xcf, 0x26, 0xdc, - 0x01, 0x89, 0x3b, 0x05, 0x37, 0x57, 0x0a, 0xec, 0xd9, 0x82, 0xa6, 0x9a, 0x2a, 0x6c, 0xee, 0xc2, - 0x76, 0xc1, 0xb6, 0xef, 0x44, 0x05, 0xa1, 0x70, 0x50, 0x79, 0x99, 0xb2, 0x5c, 0xf8, 0x81, 0x21, - 0x83, 0x4a, 0x3c, 0x40, 0xb9, 0x2c, 0xf9, 0xdb, 0x93, 0x11, 0xc8, 0x36, 0xa9, 0x0b, 0x87, 0x95, - 0x18, 0x9b, 0x18, 0xf9, 0x52, 0xfc, 0xcb, 0x06, 0x17, 0x7d, 0xc4, 0x22, 0xdc, 0x81, 0xff, 0x9e, - 0xce, 0xd0, 0x8a, 0x69, 0xe0, 0x54, 0xc2, 0xd3, 0x38, 0xc5, 0x0c, 0x8d, 0x48, 0x9c, 0x7b, 0x58, - 0xd2, 0x12, 0xba, 0x7e, 0x24, 0xfc, 0x7e, 0xe6, 0xe6, 0xa1, 0xf4, 0xf0, 0x87, 0xc4, 0xf7, 0xa2, - 0x3f, 0x35, 0xf8, 0x41, 0xea, 0xf4, 0xeb, 0x8c, 0x5e, 0xde, 0x18, 0xdd, 0xd7, 0x4d, 0x25, 0xd9, - 0x7f, 0xef, 0x42, 0xf3, 0x9d, 0xfa, 0xfc, 0x16, 0x48, 0x62, 0xb3, 0x49, 0x3c, 0x98, 0xe7, 0x44, - 0x12, 0x70, 0x05, 0xb0, 0x91, 0x0f, 0x60, 0x6a, 0xd6, 0xed, 0xaf, 0xa8, 0xf2, 0x56, 0xf4, 0xa2, - 0x77, 0x8c, 0xa9, 0x4a, 0x15, 0xe3, 0xc7, 0x9f, 0xd6, 0x3a, 0x62, 0x25, 0x84, 0x9d, 0x68, 0xaa, - 0xa9, 0x67, 0xdb, 0xc8, 0x6f, 0x6c, 0xc7, 0xb9, 0x8c, 0x1d, 0x87, 0xf7, 0x66, 0x4c, 0xd9, 0xa6, - 0xb0, 0xa0, 0x6f, 0xf0, 0x03, 0x97, 0x26, 0x62, 0xfe, 0x30, 0x8b, 0xfd, 0x0e, 0x3f, 0x0c, 0x1b, - 0x64, 0x01, 0x67, 0x83, 0xf4, 0xfc, 0x45, 0x01, 0x9a, 0x5d, 0xab, 0x6c, 0x6d, 0x6e, 0xa0, 0xe4, - 0x4d, 0xde, 0x09, 0xc0, 0x66, 0x7d, 0xda, 0xe6, 0xec, 0x76, 0x3b, 0x9e, 0xdd, 0x4c, 0x29, 0xc8, - 0x1f, 0xe1, 0x4f, 0xdb, 0x1c, 0xe1, 0x6e, 0xc7, 0x23, 0x5c, 0xef, 0x81, 0x3b, 0xc9, 0x37, 0x5b, - 0x4e, 0xf2, 0x2a, 0x55, 0x5e, 0xc2, 0x6d, 0xfc, 0x85, 0xfa, 0x71, 0x9d, 0xea, 0xbc, 0x90, 0x39, - 0xdb, 0x95, 0x19, 0x38, 0x0f, 0xfd, 0xa5, 0x7b, 0xda, 0x62, 0x89, 0x97, 0x81, 0x20, 0x2c, 0x0a, - 0xcb, 0xef, 0xfa, 0x09, 0xde, 0x21, 0xa0, 0xc2, 0x00, 0xe5, 0x55, 0x34, 0x36, 0xdf, 0x72, 0x4b, - 0x22, 0x47, 0xdb, 0x55, 0xd3, 0x79, 0x1f, 0x98, 0xb0, 0xe1, 0x31, 0x21, 0xeb, 0x4a, 0x7a, 0x80, - 0xdf, 0xa2, 0xd4, 0xf5, 0xdc, 0x38, 0x03, 0xc8, 0xfe, 0x24, 0x7c, 0xdb, 0xa7, 0x37, 0x29, 0x7d, - 0xdc, 0xe0, 0x9a, 0x13, 0xb6, 0x6e, 0x57, 0xc5, 0x55, 0x39, 0x8a, 0xc2, 0x5e, 0x87, 0x1d, 0x26, - 0x2d, 0xcc, 0x5c, 0x7e, 0x35, 0x33, 0x70, 0xd4, 0x3a, 0x28, 0xf3, 0x1b, 0x41, 0xd3, 0xa9, 0xcc, - 0xed, 0x0e, 0xee, 0x88, 0xfe, 0x54, 0xd0, 0x47, 0xec, 0xf9, 0x73, 0x17, 0xba, 0xcb, 0xf2, 0xc1, - 0x6f, 0x81, 0x29, 0x6d, 0x37, 0x9d, 0xd3, 0xf7, 0x8e, 0xb1, 0x7e, 0xe4, 0xa0, 0x26, 0x2f, 0x92, - 0x81, 0x35, 0x39, 0xe3, 0x86, 0x3b, 0x53, 0x29, 0x9b, 0xfa, 0xa5, 0x2a, 0x3f, 0x8f, 0x7e, 0xe6, - 0x75, 0x9a, 0xf5, 0x97, 0xe6, 0x4f, 0x4f, 0xa1, 0x3b, 0x6c, 0x46, 0x2b, 0x96, 0xd1, 0xa7, 0x16, - 0x82, 0xf3, 0x53, 0x0b, 0xf0, 0x80, 0xf6, 0xdc, 0x9a, 0x82, 0xa6, 0x13, 0x15, 0xda, 0xda, 0x48, - 0xb0, 0xb9, 0x51, 0x59, 0xd5, 0xe8, 0x6f, 0x10, 0x37, 0x65, 0x5b, 0x91, 0x1e, 0x57, 0xe5, 0x47, - 0x0d, 0x2b, 0x52, 0x45, 0x75, 0xcd, 0x06, 0x48, 0x6a, 0xa0, 0xa7, 0x9b, 0x4d, 0x0e, 0x1d, 0xd6, - 0xb3, 0xc6, 0x64, 0xf6, 0x5f, 0x49, 0x1d, 0xdb, 0xa7, 0x67, 0x0b, 0x33, 0x8c, 0x4d, 0x7e, 0x23, - 0x3a, 0x32, 0xac, 0xd8, 0x6a, 0x55, 0xae, 0xf5, 0xb2, 0x32, 0xe9, 0x31, 0xbd, 0x13, 0x78, 0x95, - 0x5d, 0xa6, 0xbd, 0xb3, 0x67, 0xe3, 0xb3, 0x2b, 0xab, 0xdc, 0x4b, 0x17, 0x4b, 0x4b, 0x16, 0x3f, - 0x5c, 0xbe, 0x74, 0xf1, 0xd2, 0x47, 0x17, 0x2f, 0xc7, 0xff, 0x2c, 0x5f, 0xbc, 0xac, 0x22, 0xb1, - 0xe3, 0xd1, 0x38, 0xfe, 0xfb, 0xe1, 0xc5, 0xcb, 0x16, 0xe9, 0x61, 0x96, 0xc5, 0x76, 0x01, 0x15, - 0x36, 0x91, 0x89, 0xe8, 0x2f, 0x69, 0x48, 0xfa, 0x1b, 0xbd, 0x50, 0xfa, 0x79, 0x7a, 0xb8, 0x2d, - 0x39, 0x7c, 0x0d, 0xac, 0x3b, 0x65, 0xcf, 0x36, 0x6f, 0x55, 0xe4, 0xfa, 0xba, 0x0d, 0x4a, 0xac, - 0x45, 0x89, 0xdd, 0x1a, 0xe9, 0xc2, 0xbf, 0x6b, 0x22, 0xe1, 0x44, 0x2c, 0xd2, 0xd8, 0x48, 0x0a, - 0x56, 0x26, 0x02, 0x41, 0x5a, 0xbe, 0x21, 0xb0, 0x5d, 0xc1, 0x9d, 0xe0, 0xe2, 0x1d, 0xcd, 0x5b, - 0x95, 0x46, 0x25, 0xf1, 0x59, 0xeb, 0xee, 0x18, 0x04, 0x93, 0x4e, 0xf7, 0x75, 0x2e, 0xf2, 0xe9, - 0x5f, 0x11, 0x97, 0xa3, 0xc2, 0x6d, 0x8d, 0xfe, 0x06, 0x2e, 0x76, 0x0a, 0x11, 0x26, 0xf4, 0x42, - 0xa9, 0x08, 0x28, 0x48, 0x3b, 0x74, 0xc0, 0xa7, 0x17, 0x62, 0x59, 0x02, 0xff, 0x5d, 0x8b, 0xcf, - 0x12, 0x2e, 0xd0, 0x96, 0x5e, 0x28, 0x15, 0x43, 0x2b, 0xea, 0xc5, 0xab, 0x97, 0x8b, 0xab, 0x50, - 0x71, 0x50, 0xd9, 0xe6, 0x6f, 0x6e, 0x04, 0xf1, 0x89, 0x5a, 0x89, 0x3c, 0xaa, 0xbc, 0xc0, 0x6b, - 0xaa, 0x90, 0xa6, 0x43, 0x07, 0x70, 0x91, 0xd0, 0x5a, 0x47, 0x7c, 0xa6, 0x6a, 0xb1, 0x0a, 0x4d, - 0x52, 0xc2, 0xc4, 0xe4, 0x0a, 0x51, 0x15, 0x48, 0x0f, 0xb4, 0x48, 0x9a, 0x45, 0xb5, 0x71, 0x87, - 0x48, 0xb2, 0xdf, 0x81, 0xf3, 0x94, 0x1f, 0xd1, 0x6a, 0xf1, 0x11, 0xe3, 0x02, 0x5b, 0x68, 0x58, - 0x81, 0x58, 0x99, 0x34, 0x9d, 0x45, 0xd4, 0x7e, 0x53, 0x1b, 0x1e, 0xca, 0xb4, 0xb6, 0x1b, 0xf7, - 0xdb, 0x47, 0xd0, 0xe4, 0x66, 0x62, 0xeb, 0x66, 0x89, 0xdb, 0xa1, 0x21, 0x2d, 0x63, 0x0d, 0xa9, - 0xd1, 0x1b, 0x37, 0xa4, 0x35, 0x62, 0x15, 0x2a, 0x22, 0x7d, 0x10, 0x3f, 0x7b, 0x64, 0xd8, 0xd4, - 0x8c, 0x52, 0xa9, 0x18, 0xbe, 0x47, 0x9f, 0x21, 0x18, 0x15, 0xe2, 0x0a, 0x84, 0xa0, 0x1b, 0xd2, - 0x78, 0x0a, 0xf7, 0x88, 0xc1, 0x28, 0x96, 0x8a, 0xe1, 0xa3, 0xec, 0x11, 0x83, 0x51, 0x23, 0x26, - 0x60, 0xa5, 0xb8, 0x88, 0x05, 0xe4, 0x31, 0xa6, 0x5e, 0x28, 0xd5, 0xa5, 0xce, 0xec, 0xcb, 0x0c, - 0xec, 0x05, 0x1c, 0xd1, 0x64, 0x4b, 0xa1, 0x70, 0x62, 0x99, 0x54, 0xb9, 0x35, 0x12, 0x69, 0xac, - 0x8c, 0x27, 0x62, 0xa1, 0x70, 0x43, 0x65, 0xb0, 0x19, 0x3c, 0x03, 0x2a, 0x9b, 0xfc, 0x51, 0x5a, - 0x16, 0x4f, 0xf7, 0x75, 0x6a, 0xa7, 0x87, 0xd2, 0x67, 0x5b, 0xa1, 0xd5, 0x22, 0x9f, 0xde, 0xa9, - 0xe8, 0x43, 0x53, 0xf1, 0xdf, 0x64, 0xad, 0x48, 0xa4, 0x82, 0xa9, 0xc4, 0x6f, 0x97, 0xbc, 0x99, - 0x32, 0xd7, 0x48, 0x25, 0x74, 0x7f, 0x91, 0xd0, 0x25, 0xf8, 0x20, 0x69, 0x1d, 0xa1, 0x77, 0x65, - 0x33, 0xa0, 0xf8, 0x33, 0x2c, 0xa7, 0x34, 0x28, 0x2f, 0x93, 0xa8, 0x07, 0x53, 0xa4, 0xd2, 0x6c, - 0x56, 0x41, 0x4e, 0x0c, 0x1f, 0x86, 0x00, 0x4f, 0x75, 0x80, 0x96, 0xe6, 0xd0, 0x9d, 0xd8, 0xdb, - 0x99, 0x3a, 0xda, 0x91, 0x6a, 0xbd, 0x90, 0x3a, 0x73, 0x76, 0xf4, 0xbd, 0xae, 0xcc, 0x85, 0x36, - 0xad, 0xe3, 0x84, 0x0f, 0x60, 0xc4, 0x08, 0x2a, 0x88, 0x91, 0x98, 0x86, 0xd3, 0xed, 0xc3, 0xf5, - 0xad, 0x6b, 0x6e, 0xda, 0xaa, 0x40, 0xec, 0x42, 0x78, 0x20, 0x0d, 0xe0, 0xd2, 0x92, 0xcc, 0x7e, - 0xba, 0xb9, 0x92, 0x83, 0x43, 0x78, 0x12, 0xad, 0x23, 0x06, 0x73, 0x81, 0x2c, 0xdb, 0x70, 0x85, - 0x21, 0xcf, 0x16, 0xf0, 0x2e, 0x86, 0x86, 0xe2, 0x67, 0x82, 0x39, 0xfb, 0x0e, 0x84, 0x4a, 0xf8, - 0x03, 0xb8, 0x63, 0xf3, 0x35, 0xd2, 0x25, 0x41, 0xbb, 0xf1, 0x3a, 0xa3, 0xd6, 0x15, 0x94, 0x86, - 0x49, 0x8a, 0x64, 0xbc, 0xb1, 0x49, 0x62, 0xfc, 0xf4, 0x91, 0xd3, 0xa9, 0xa3, 0x1d, 0x9f, 0xb5, - 0xee, 0xa1, 0x52, 0x7f, 0xbd, 0x3e, 0x06, 0xae, 0xa3, 0x2a, 0x77, 0x28, 0xda, 0xb2, 0xbc, 0x32, - 0x14, 0x6d, 0x79, 0xb8, 0x32, 0xd8, 0xec, 0x6f, 0x74, 0xc3, 0xf8, 0x80, 0x81, 0xe9, 0xdc, 0x91, - 0x4f, 0xab, 0x85, 0x3b, 0x24, 0xb1, 0x24, 0x80, 0x41, 0x3e, 0x5f, 0xfe, 0x02, 0xc4, 0x94, 0xd0, - 0x93, 0xdf, 0x42, 0x0f, 0xfa, 0x83, 0x16, 0xdc, 0xbf, 0x29, 0x81, 0x10, 0x0b, 0xaa, 0x97, 0xcd, - 0xb5, 0xa5, 0xfb, 0x21, 0x75, 0x5d, 0xba, 0xff, 0x6c, 0xfa, 0xd0, 0x5e, 0x88, 0x51, 0x4a, 0x38, - 0x2f, 0x1e, 0x00, 0xf0, 0x3c, 0x78, 0x06, 0xfe, 0x99, 0x0b, 0x36, 0x2f, 0x73, 0x91, 0xd7, 0x19, - 0x15, 0x75, 0x91, 0xd7, 0xd9, 0x51, 0x29, 0xc7, 0x8e, 0x5c, 0x46, 0x1d, 0xe1, 0x38, 0x9e, 0x2c, - 0x8e, 0x03, 0x52, 0xae, 0x99, 0x9b, 0x48, 0x3a, 0x37, 0xc9, 0x1f, 0x4b, 0xf9, 0xaf, 0x73, 0x91, - 0x52, 0x8e, 0xb0, 0x0a, 0x8c, 0x6f, 0x92, 0xed, 0xbf, 0x30, 0x7b, 0xfb, 0x4f, 0x22, 0xc1, 0xe9, - 0xb2, 0x36, 0xf4, 0x12, 0xb6, 0xa1, 0x27, 0x8f, 0xb5, 0xa1, 0xd9, 0x3e, 0x5d, 0xca, 0xf6, 0x69, - 0xe1, 0x98, 0xfb, 0x94, 0xed, 0xb4, 0xac, 0x34, 0x4f, 0x45, 0x96, 0x34, 0x4f, 0x9e, 0x5a, 0x84, - 0x8c, 0x2f, 0x89, 0x73, 0x51, 0x51, 0x8b, 0xbf, 0x31, 0x14, 0x24, 0xec, 0x11, 0xf0, 0x6c, 0x14, - 0xe4, 0x78, 0x8b, 0xb0, 0x14, 0x4d, 0xe1, 0xbe, 0x8e, 0x05, 0xbc, 0xa6, 0x50, 0x98, 0x74, 0x50, - 0xe0, 0xc3, 0x7f, 0x92, 0x12, 0xff, 0xcb, 0x34, 0x42, 0x33, 0xfe, 0xd3, 0x93, 0xca, 0x47, 0x73, - 0x6b, 0xc8, 0x73, 0xab, 0xac, 0x0d, 0xc2, 0x2e, 0x0f, 0xb7, 0xef, 0xe9, 0xbe, 0xc7, 0x7a, 0xba, - 0x6f, 0x23, 0xaf, 0x30, 0xf4, 0xd3, 0xbd, 0xfe, 0xab, 0x3c, 0xdd, 0x21, 0xb7, 0x37, 0xbd, 0x9f, - 0xe8, 0x47, 0xfb, 0x16, 0xd8, 0xa1, 0x34, 0x81, 0xaf, 0x6d, 0xa8, 0x72, 0x46, 0x5d, 0xd5, 0x8b, - 0x88, 0x87, 0x02, 0x03, 0x97, 0x44, 0x9e, 0x0e, 0x81, 0x1d, 0x7f, 0x5e, 0x5d, 0xa0, 0x0a, 0xae, - 0x42, 0xc1, 0xa7, 0x43, 0x89, 0x4f, 0x73, 0x17, 0x2b, 0x2e, 0x1a, 0xac, 0x71, 0xb1, 0x9a, 0x65, - 0xee, 0x86, 0x1d, 0xa8, 0x86, 0x6a, 0x21, 0xa8, 0xca, 0x7e, 0xb4, 0xc5, 0x9b, 0x73, 0x1b, 0x48, - 0xb3, 0xa0, 0x25, 0x5e, 0x16, 0xae, 0xbb, 0x4f, 0x05, 0xb6, 0xa0, 0x9f, 0x0a, 0x0c, 0xef, 0x9f, - 0x0a, 0xfa, 0xec, 0x79, 0xd5, 0x9b, 0x26, 0xa0, 0x79, 0x0e, 0x5f, 0xf8, 0xe6, 0x45, 0x7a, 0x16, - 0x1b, 0x33, 0xf7, 0x88, 0xa4, 0x7b, 0x6c, 0x27, 0x9d, 0x3b, 0x36, 0xe6, 0x3f, 0xe4, 0x33, 0xc7, - 0xf8, 0xef, 0x1d, 0x41, 0xbd, 0x62, 0xa1, 0xa7, 0x2d, 0x5f, 0x33, 0x3d, 0x7d, 0x77, 0x09, 0xc9, - 0x10, 0x30, 0xad, 0x84, 0x94, 0x6b, 0xf9, 0xa5, 0x59, 0xd0, 0xf2, 0x8b, 0x13, 0xd2, 0x6f, 0x05, - 0xf6, 0x66, 0xe1, 0xbb, 0x40, 0x48, 0x3e, 0x55, 0x5e, 0x8f, 0xd6, 0x7a, 0x73, 0x8f, 0x48, 0x9a, - 0x63, 0x3b, 0x69, 0x27, 0x1f, 0xca, 0xff, 0x90, 0x8f, 0xe6, 0xc2, 0xfb, 0xa4, 0x1f, 0x48, 0xe8, - 0xab, 0x24, 0xa1, 0xf5, 0xa8, 0x98, 0x49, 0x6b, 0x3a, 0x19, 0xd1, 0xa7, 0xe0, 0xa6, 0x0a, 0xa9, - 0xc4, 0x44, 0x30, 0xfc, 0xb3, 0x3c, 0x13, 0xdc, 0x84, 0xcf, 0x9e, 0x33, 0xa3, 0x27, 0xce, 0xd9, - 0x93, 0x4c, 0xae, 0xe5, 0xc6, 0x67, 0x0f, 0x6e, 0xf9, 0xe5, 0x48, 0xc6, 0xe1, 0x0b, 0xdf, 0x22, - 0xc9, 0xe4, 0x1c, 0x91, 0x34, 0xc7, 0x76, 0xd2, 0x4e, 0x24, 0xf3, 0x27, 0xf9, 0x5c, 0x26, 0xfe, - 0x1f, 0x08, 0xe6, 0xfb, 0x4b, 0x30, 0x5b, 0x55, 0x79, 0x0b, 0x7a, 0xc1, 0x9b, 0x63, 0xb1, 0xa5, - 0x59, 0xba, 0x57, 0xdb, 0x17, 0x24, 0x97, 0x01, 0x17, 0x97, 0x59, 0xef, 0xdb, 0x25, 0x16, 0xd1, - 0x67, 0x32, 0x08, 0x2d, 0xb0, 0x4d, 0xf3, 0x63, 0x0c, 0xd1, 0x1c, 0x15, 0x97, 0x73, 0x26, 0xb4, - 0xcd, 0xab, 0x9d, 0x63, 0x8e, 0x9c, 0x6b, 0xe0, 0x78, 0xc8, 0xef, 0xb7, 0x2e, 0xe2, 0x3e, 0xb1, - 0xf2, 0xe5, 0x84, 0x12, 0x0b, 0xfb, 0x1b, 0xd7, 0x45, 0x82, 0xca, 0x06, 0xf2, 0x62, 0x9e, 0x11, - 0xe0, 0x0b, 0x68, 0x4a, 0x38, 0x12, 0x54, 0xcc, 0xa1, 0x01, 0xbe, 0x14, 0x11, 0xf2, 0xfd, 0x89, - 0xcb, 0x2d, 0x66, 0xc5, 0x12, 0x5b, 0x9f, 0xef, 0xe4, 0xd0, 0x10, 0x67, 0x3b, 0xf9, 0x39, 0x2a, - 0x0c, 0x85, 0x61, 0xc4, 0xd4, 0xb1, 0xf3, 0x49, 0x55, 0x7e, 0xdc, 0xab, 0x17, 0x4a, 0x95, 0x34, - 0xb0, 0x30, 0x79, 0xbe, 0x9d, 0xea, 0x38, 0xa6, 0x9d, 0x3b, 0x96, 0xbe, 0x71, 0x38, 0xd3, 0xd6, - 0x93, 0xea, 0xbd, 0xc4, 0xfc, 0xfc, 0xf8, 0x32, 0x9f, 0xde, 0x94, 0xe5, 0x2c, 0xcb, 0x89, 0x15, - 0x86, 0xe4, 0xf4, 0xa5, 0x4b, 0xc9, 0xc1, 0xce, 0xd4, 0xb1, 0xeb, 0xd0, 0x0b, 0xdb, 0xaf, 0xfc, - 0x0c, 0x3d, 0x7f, 0x96, 0x47, 0x4c, 0xb2, 0x76, 0x7d, 0xdd, 0x1e, 0x4f, 0x7f, 0x96, 0x73, 0x0e, - 0xb1, 0x2c, 0xdd, 0x06, 0xd9, 0xa7, 0xb3, 0xb6, 0xfa, 0xe3, 0xca, 0xc3, 0xcb, 0xd3, 0x23, 0xc7, - 0xd2, 0x67, 0xf0, 0xa2, 0x53, 0x54, 0x92, 0x4a, 0x7c, 0x87, 0x9d, 0xfe, 0x92, 0xb2, 0x75, 0x0b, - 0xff, 0x48, 0xb8, 0xc0, 0x3e, 0xd3, 0xfc, 0x4f, 0x94, 0xad, 0xdc, 0x4b, 0xcd, 0xcd, 0x12, 0xc4, - 0xdf, 0xce, 0x6e, 0x2d, 0xdd, 0x43, 0x3d, 0xd6, 0xcd, 0x09, 0xc1, 0x40, 0x6b, 0x05, 0xf6, 0x37, - 0xdf, 0xb4, 0x97, 0x4c, 0x5d, 0xe9, 0x07, 0x56, 0x4e, 0xfc, 0x3b, 0x2c, 0xa6, 0x13, 0xc5, 0xb4, - 0x0b, 0xa8, 0x68, 0xad, 0x3f, 0x0a, 0xfe, 0xd1, 0xe2, 0x0a, 0xdd, 0x11, 0x40, 0xb0, 0x7f, 0xd7, - 0xa9, 0x83, 0x82, 0x13, 0x3b, 0x75, 0x8c, 0xa7, 0x8d, 0x4a, 0x1f, 0x43, 0x53, 0xb8, 0xe2, 0x09, - 0x3d, 0xdb, 0xfc, 0x93, 0x3c, 0x70, 0x7c, 0xf2, 0x27, 0x02, 0xdb, 0x21, 0x71, 0xed, 0x06, 0x25, - 0x91, 0x08, 0x85, 0xf5, 0xa3, 0xd3, 0x8f, 0x8a, 0x88, 0x63, 0x0a, 0x17, 0x62, 0xa6, 0x46, 0x95, - 0x9f, 0xf6, 0x1a, 0xa5, 0xd2, 0x32, 0x78, 0xc2, 0x02, 0x0a, 0x46, 0xaa, 0xbd, 0xdd, 0x1a, 0xda, - 0x55, 0xb9, 0x35, 0xb4, 0x6b, 0x4b, 0x5c, 0x49, 0x2c, 0xb2, 0x84, 0x9d, 0xd9, 0x1a, 0xda, 0xe5, - 0x33, 0xda, 0x8b, 0x2f, 0xa2, 0xc9, 0xe4, 0x87, 0x9e, 0xcf, 0x83, 0x64, 0x44, 0x62, 0x65, 0xd2, - 0xa3, 0x7c, 0xf7, 0x75, 0xb5, 0x65, 0xcc, 0x50, 0x5b, 0x09, 0x7f, 0x90, 0xe7, 0x23, 0xf6, 0xdf, - 0x60, 0x5d, 0x88, 0x6f, 0x09, 0x08, 0x01, 0xa7, 0x27, 0xe7, 0x18, 0x04, 0x70, 0xd8, 0x2d, 0xa8, - 0xf2, 0xef, 0x7b, 0xb9, 0x72, 0x29, 0x6a, 0xfc, 0x0d, 0x8b, 0x39, 0xda, 0x7e, 0x20, 0x7d, 0xa3, - 0x1f, 0xef, 0x12, 0xe2, 0x42, 0xa5, 0x9d, 0x3c, 0xae, 0x07, 0x77, 0x48, 0x0e, 0x1e, 0x48, 0x8e, - 0x9c, 0x01, 0xf5, 0x23, 0xb5, 0x4a, 0x91, 0xd4, 0xd7, 0x00, 0x56, 0x96, 0x35, 0x1a, 0x77, 0x28, - 0xba, 0x85, 0x05, 0x3f, 0xd8, 0xb2, 0x3d, 0x12, 0x4f, 0x6c, 0x69, 0x0c, 0xc5, 0x13, 0x8b, 0x7c, - 0xdc, 0xd7, 0xd9, 0x63, 0xa7, 0x9c, 0xcb, 0xc1, 0xe2, 0xf0, 0xeb, 0x03, 0x83, 0xd8, 0x76, 0xd4, - 0x99, 0x61, 0x84, 0xba, 0xf7, 0xd8, 0xb4, 0xfe, 0x82, 0x4c, 0x62, 0x39, 0x1f, 0x71, 0x04, 0x53, - 0x3a, 0xc4, 0x3c, 0xa2, 0x65, 0x52, 0x31, 0x4d, 0x85, 0xd5, 0x71, 0x48, 0x7b, 0xed, 0xb4, 0x1e, - 0x64, 0x44, 0x7c, 0x04, 0x15, 0x2a, 0xb1, 0x58, 0x24, 0xb6, 0x36, 0xde, 0xc0, 0x27, 0x19, 0xd3, - 0x0b, 0xa5, 0x62, 0x13, 0x5b, 0xd1, 0xcb, 0xc5, 0x87, 0x51, 0x51, 0x0c, 0x26, 0x5a, 0x17, 0xe4, - 0x2d, 0x41, 0x46, 0xa9, 0x54, 0x08, 0x73, 0xad, 0xab, 0xf5, 0x19, 0x85, 0xfa, 0x33, 0x84, 0x82, - 0x89, 0x3e, 0x43, 0x30, 0x3d, 0xbd, 0xa8, 0x41, 0x45, 0x1b, 0xc8, 0x86, 0x09, 0x6f, 0x8b, 0x88, - 0x73, 0x2d, 0xfb, 0x9e, 0xdf, 0xb2, 0x25, 0x59, 0x5b, 0x56, 0xdf, 0x6a, 0x9e, 0x77, 0xf2, 0xd1, - 0xdd, 0x78, 0x0d, 0x42, 0xbb, 0x98, 0x6b, 0xf5, 0x8f, 0x23, 0x86, 0x5f, 0xf4, 0xf7, 0x82, 0x9a, - 0x42, 0xa8, 0xd0, 0xdf, 0xd8, 0x48, 0x50, 0x45, 0xf9, 0x3f, 0xc9, 0xe5, 0xae, 0x17, 0x4a, 0x4f, - 0xd2, 0xcc, 0x41, 0x1c, 0x59, 0x98, 0x26, 0xc5, 0x9c, 0xe5, 0x09, 0xf6, 0xdb, 0x6e, 0x8d, 0x74, - 0xe9, 0xae, 0x7a, 0xe4, 0x49, 0xa2, 0x4f, 0xef, 0x49, 0x3c, 0x26, 0x50, 0x84, 0x71, 0x7a, 0x0f, - 0xcb, 0x8b, 0x5c, 0x7d, 0xd1, 0xaa, 0x5f, 0x50, 0xe5, 0x9f, 0x7b, 0x8d, 0x06, 0xd2, 0xda, 0xcc, - 0x3b, 0xbb, 0xe9, 0x28, 0xb8, 0x0f, 0xe2, 0x43, 0x86, 0x1b, 0x4e, 0xea, 0xe8, 0xe5, 0xf4, 0x70, - 0x5b, 0x99, 0x75, 0xc6, 0x46, 0x78, 0x59, 0x70, 0xed, 0xf7, 0x19, 0x3d, 0x7f, 0x35, 0xc4, 0x5a, - 0x6a, 0xb7, 0x51, 0xbe, 0xdf, 0x94, 0xba, 0xda, 0x44, 0xa9, 0x13, 0x7b, 0x17, 0x63, 0x22, 0xd6, - 0x55, 0xa8, 0x10, 0x1f, 0xc2, 0x2c, 0xd2, 0x4c, 0x64, 0x2b, 0x3c, 0x74, 0x64, 0x66, 0x19, 0xf6, - 0x5b, 0x9c, 0x8f, 0x50, 0x88, 0xf8, 0x53, 0x04, 0x18, 0x45, 0xe4, 0xfb, 0xb8, 0x12, 0xcf, 0xdf, - 0x4e, 0x42, 0x77, 0xad, 0x56, 0x12, 0x6c, 0x0d, 0x70, 0x9f, 0xf1, 0xef, 0x15, 0xb5, 0x6e, 0x81, - 0xb7, 0xf7, 0xfa, 0xc1, 0x67, 0xa3, 0x38, 0x64, 0x88, 0xa4, 0x8a, 0x43, 0x06, 0x2e, 0x89, 0xf4, - 0xd1, 0x07, 0x3c, 0x4e, 0x27, 0x64, 0x62, 0x28, 0x0e, 0x19, 0x14, 0x3e, 0x5c, 0xa7, 0xc6, 0x15, - 0x7f, 0x2c, 0xb0, 0x1d, 0xdf, 0x34, 0x95, 0x70, 0x82, 0xee, 0x87, 0xdf, 0x53, 0xe5, 0x9d, 0x5e, - 0x73, 0x8d, 0xb4, 0x3d, 0x75, 0xf1, 0x6c, 0xfa, 0xea, 0x6b, 0xa9, 0x43, 0xbd, 0xe9, 0x0f, 0xdf, - 0x02, 0x72, 0xb8, 0x35, 0xd2, 0x41, 0xa3, 0xaf, 0x1d, 0xea, 0x4a, 0x1d, 0xbf, 0xa6, 0x0d, 0x5c, - 0x87, 0x67, 0x27, 0x75, 0xf5, 0x95, 0xf0, 0x87, 0x76, 0xe8, 0x40, 0x25, 0x9f, 0x4e, 0xbd, 0xd2, - 0x78, 0xaf, 0x44, 0x6e, 0x9a, 0x99, 0x9b, 0x6f, 0x66, 0xce, 0x76, 0xf1, 0x1d, 0xdf, 0x1a, 0xe9, - 0xf4, 0x99, 0x3f, 0x2c, 0x76, 0x09, 0xa8, 0xc0, 0xdf, 0x18, 0x6a, 0x51, 0xe8, 0xce, 0x9b, 0x63, - 0xd9, 0x79, 0x75, 0xe1, 0xc4, 0x32, 0x09, 0xb6, 0xde, 0xcf, 0x54, 0x79, 0xb3, 0x17, 0xc0, 0xa5, - 0xb5, 0x10, 0x32, 0x1f, 0xa2, 0xc7, 0xdd, 0x1a, 0xe9, 0x21, 0xa5, 0xb7, 0x46, 0x7a, 0x96, 0x24, - 0x07, 0x87, 0xe4, 0x06, 0x25, 0x9c, 0xd0, 0x46, 0xf6, 0x68, 0x83, 0x83, 0xb7, 0x46, 0xba, 0x96, - 0xb2, 0x12, 0xc8, 0x9d, 0xaf, 0xcb, 0x08, 0x5a, 0xc7, 0x89, 0xe4, 0xe0, 0x01, 0x1a, 0x79, 0x1f, - 0x7a, 0x15, 0x57, 0xa3, 0x02, 0x12, 0xff, 0x8e, 0xf8, 0x1e, 0xe4, 0x57, 0x2f, 0x55, 0xe5, 0xc5, - 0x5e, 0x28, 0x91, 0xee, 0x83, 0x1b, 0x5b, 0xe6, 0xa3, 0x8f, 0xb5, 0x0b, 0xfb, 0x93, 0x37, 0x30, - 0xeb, 0xd0, 0xbb, 0xd2, 0xf9, 0xe4, 0x12, 0x1f, 0x40, 0x8b, 0x2f, 0xa0, 0xc2, 0xa8, 0xbf, 0x41, - 0xd9, 0x10, 0xda, 0x05, 0x5e, 0x08, 0x05, 0xd5, 0xb2, 0x2a, 0x3f, 0xe9, 0xd5, 0x0b, 0x25, 0x09, - 0x5e, 0x4e, 0x41, 0xa7, 0x10, 0xea, 0xf1, 0xd6, 0x48, 0x57, 0xaa, 0xb7, 0x55, 0x3b, 0x77, 0xe1, - 0xa1, 0x25, 0x4b, 0xac, 0x5d, 0x4b, 0x4b, 0x7c, 0x7a, 0xeb, 0x2a, 0x7c, 0x45, 0x43, 0x0f, 0x7b, - 0x9d, 0x28, 0x44, 0xcf, 0xae, 0x09, 0xdc, 0xb5, 0xa7, 0x8d, 0xae, 0x18, 0x64, 0xa0, 0xf9, 0x23, - 0x17, 0x79, 0x7b, 0x9d, 0xd5, 0xf0, 0xfb, 0xcd, 0xdf, 0x9e, 0x33, 0xf1, 0xb7, 0x85, 0xd9, 0x94, - 0x96, 0x8d, 0x0e, 0x87, 0x40, 0x9f, 0x26, 0x4e, 0xd7, 0x25, 0xa0, 0x3b, 0xed, 0xda, 0x61, 0xa9, - 0x1e, 0x36, 0x11, 0xe4, 0xac, 0xa6, 0x3b, 0xa2, 0x94, 0xdb, 0x11, 0x34, 0x15, 0x2d, 0xfb, 0x4d, - 0x1c, 0x2a, 0x23, 0x09, 0x7a, 0xdd, 0xcd, 0xf7, 0xc1, 0x0f, 0xb1, 0x3c, 0x77, 0x2a, 0x61, 0x7c, - 0x2c, 0x91, 0xe0, 0x84, 0x30, 0x9c, 0x3f, 0x13, 0x50, 0x21, 0x2b, 0x12, 0x67, 0xa3, 0x49, 0x58, - 0x9a, 0xa5, 0x7c, 0x37, 0xdf, 0x47, 0x7f, 0x89, 0xd3, 0x90, 0x2b, 0x14, 0xa5, 0xa2, 0x91, 0x2b, - 0x14, 0x15, 0x45, 0x94, 0x1f, 0x8a, 0xb6, 0x3c, 0x4c, 0x0d, 0xdf, 0xe4, 0x6f, 0x3c, 0x50, 0x0c, - 0xcd, 0xbd, 0xf1, 0xd0, 0x7f, 0xe3, 0x81, 0x1a, 0xd4, 0x3a, 0x95, 0x51, 0xcd, 0x6c, 0x34, 0x29, - 0x02, 0x6f, 0x42, 0xe8, 0xdb, 0x0e, 0xf8, 0x25, 0x3e, 0x8e, 0x8a, 0x88, 0x16, 0x41, 0x8e, 0x29, - 0x7e, 0x6a, 0xc8, 0x9e, 0x67, 0x37, 0x8b, 0x1a, 0x06, 0xe4, 0x33, 0xe0, 0x3d, 0xcb, 0xd0, 0x54, - 0x53, 0x1d, 0x19, 0x3b, 0xcc, 0x67, 0xaa, 0xcf, 0x15, 0x0a, 0xda, 0xf9, 0x52, 0x7b, 0x3e, 0x9b, - 0x44, 0xdc, 0x86, 0xf9, 0x93, 0xbb, 0x2e, 0x18, 0xff, 0xe1, 0xf0, 0xf8, 0xe1, 0xf0, 0xb8, 0x9d, - 0x0e, 0x8f, 0x9f, 0x5a, 0x0e, 0x0f, 0xe2, 0x58, 0x64, 0x1c, 0x1e, 0x15, 0xb6, 0x87, 0x07, 0xdf, - 0x1d, 0x05, 0x20, 0x32, 0x3e, 0x77, 0x6e, 0xd0, 0xb0, 0x2c, 0x63, 0xd0, 0x88, 0x34, 0xcf, 0xf6, - 0xf8, 0xa8, 0xab, 0xa5, 0x07, 0xc8, 0xa7, 0x2e, 0xb4, 0xc0, 0xb1, 0x87, 0xef, 0xf7, 0x39, 0xf2, - 0x53, 0xd3, 0x39, 0xf2, 0x60, 0x8e, 0x73, 0x84, 0xc7, 0xca, 0x78, 0x8e, 0x93, 0x1e, 0x01, 0xcd, - 0xc9, 0xd1, 0xfc, 0x2b, 0x3b, 0x55, 0x96, 0x99, 0x4e, 0x95, 0x05, 0x76, 0xfc, 0xb8, 0xae, 0x36, - 0xce, 0xb8, 0x07, 0x1d, 0xdc, 0x06, 0x34, 0x3d, 0xab, 0xc2, 0xf1, 0x88, 0x29, 0x43, 0xf9, 0x4d, - 0x8a, 0x1e, 0x6c, 0xc1, 0xe2, 0xb4, 0xbb, 0x56, 0xc1, 0x9d, 0x62, 0x08, 0xcf, 0x2f, 0x50, 0x3e, - 0xfe, 0x25, 0xce, 0x43, 0x88, 0xf0, 0xb5, 0x2d, 0x09, 0xdb, 0x3b, 0xfd, 0xdd, 0xa8, 0x10, 0xaa, - 0x43, 0xd9, 0x97, 0x7a, 0xb1, 0x14, 0x15, 0xe9, 0x8f, 0xb9, 0xe8, 0x19, 0x36, 0x79, 0xeb, 0x8e, - 0xea, 0xd0, 0xae, 0xba, 0xa0, 0xa7, 0x35, 0x0f, 0xcd, 0x5e, 0xad, 0x24, 0xf0, 0xb0, 0xe3, 0xf0, - 0xfa, 0xe7, 0xfb, 0x75, 0x04, 0xfc, 0x0c, 0x8e, 0x69, 0xee, 0x08, 0x18, 0x6b, 0x2d, 0xc1, 0xaf, - 0x54, 0x6f, 0x25, 0x4d, 0x85, 0x15, 0x8b, 0xb3, 0xe7, 0x87, 0xac, 0x82, 0xa5, 0xe7, 0x73, 0x40, - 0x9f, 0xf4, 0x00, 0x04, 0x6e, 0x66, 0x4c, 0x21, 0x4e, 0x6f, 0xf2, 0xbd, 0x43, 0xda, 0x89, 0x8b, - 0x99, 0x81, 0x77, 0x52, 0xaf, 0xb6, 0xd3, 0x90, 0x2b, 0x37, 0x5d, 0xe4, 0x0e, 0x67, 0xee, 0xe3, - 0xfb, 0xcd, 0x1f, 0xd6, 0xea, 0xfc, 0xc1, 0x36, 0x86, 0x0a, 0x13, 0xd0, 0x7e, 0x12, 0x4a, 0x6c, - 0xc7, 0x7b, 0x7f, 0x2c, 0xa6, 0xf0, 0xff, 0x0a, 0x68, 0x46, 0x76, 0x9b, 0xef, 0x81, 0x70, 0xa7, - 0x33, 0x89, 0xc2, 0x31, 0x99, 0xc4, 0x50, 0x3e, 0xb9, 0xac, 0x10, 0x5d, 0x12, 0xe9, 0x6e, 0xbb, - 0x12, 0xd8, 0xf1, 0xbd, 0x22, 0xe4, 0x4d, 0x7a, 0xca, 0x36, 0xd0, 0x7f, 0xaf, 0x50, 0xe5, 0x2a, - 0x3d, 0x65, 0xdb, 0x92, 0xba, 0xfa, 0x96, 0xe5, 0x20, 0xa5, 0xe9, 0xd1, 0xd0, 0x07, 0xae, 0xeb, - 0xc2, 0x12, 0x2f, 0x26, 0x69, 0x5d, 0xd7, 0x47, 0xdb, 0x0f, 0xe8, 0x39, 0xdc, 0x9e, 0x47, 0x85, - 0x78, 0xc5, 0x39, 0x03, 0x31, 0xc9, 0x99, 0xa7, 0x17, 0x92, 0xae, 0x1f, 0x9e, 0x50, 0xd7, 0x7a, - 0x5b, 0xb1, 0x01, 0x4d, 0xde, 0xa1, 0xec, 0x24, 0x7d, 0x17, 0x90, 0xbe, 0x89, 0xa6, 0x91, 0x95, - 0x49, 0x4f, 0x69, 0xed, 0x57, 0x47, 0x8f, 0xf4, 0x6b, 0x7d, 0xc7, 0x59, 0xff, 0x99, 0x0b, 0x6f, - 0xa7, 0x4e, 0x1d, 0xd2, 0xf6, 0x0d, 0x19, 0x97, 0xd1, 0x43, 0x07, 0x2a, 0x61, 0xe3, 0xa6, 0xfb, - 0x3a, 0x75, 0x78, 0x66, 0xd1, 0xa2, 0x3d, 0x55, 0x61, 0xc1, 0x07, 0x3d, 0xe2, 0x75, 0xdc, 0x02, - 0xd2, 0x1c, 0x48, 0x3c, 0x65, 0x7f, 0xd3, 0xbd, 0xee, 0x22, 0x4a, 0xdf, 0xec, 0x96, 0xdf, 0x6f, - 0x16, 0xb4, 0xd2, 0xc4, 0x82, 0x1c, 0xaf, 0x8d, 0x63, 0xb1, 0x9e, 0x3f, 0x11, 0x50, 0xf1, 0xba, - 0x48, 0x22, 0xb4, 0x6d, 0x67, 0x4d, 0x24, 0xbc, 0x2d, 0xd4, 0x20, 0xae, 0x41, 0x93, 0xe2, 0xc4, - 0x7f, 0x81, 0x52, 0xda, 0x72, 0x55, 0x5e, 0xea, 0xa5, 0x45, 0xd2, 0x03, 0xe0, 0xaa, 0x3d, 0xda, - 0xda, 0x93, 0x3e, 0x7d, 0x1e, 0x44, 0x7a, 0x48, 0x53, 0x08, 0xe5, 0xe9, 0x9e, 0x36, 0x00, 0xf4, - 0xd1, 0x06, 0xe2, 0x83, 0x68, 0x12, 0xfe, 0x0c, 0xd3, 0xfd, 0x55, 0xdf, 0xa1, 0xca, 0x33, 0xbc, - 0xb4, 0x48, 0xa2, 0xff, 0xfa, 0xe8, 0xbf, 0xe2, 0x53, 0x68, 0x8a, 0x9f, 0x60, 0x73, 0x63, 0x64, - 0x87, 0x12, 0xe6, 0x43, 0x9e, 0xf1, 0xe5, 0x12, 0xff, 0xc3, 0xc7, 0xff, 0xf0, 0x1c, 0x70, 0x21, - 0x04, 0x93, 0x21, 0xb2, 0xcb, 0x0a, 0xdd, 0xa7, 0x5b, 0x20, 0x0b, 0x09, 0x79, 0x6a, 0xe8, 0x0b, - 0x91, 0x12, 0x9a, 0x84, 0x03, 0xde, 0x89, 0x8c, 0xb4, 0x6a, 0x87, 0x06, 0x60, 0x5a, 0xba, 0x7b, - 0xf7, 0x13, 0xa8, 0x20, 0x11, 0x4a, 0x34, 0x32, 0x03, 0x2d, 0xc9, 0xcf, 0x08, 0x25, 0x52, 0x29, - 0x80, 0x92, 0x1f, 0xda, 0x81, 0xab, 0xc9, 0xa1, 0xfd, 0xba, 0x13, 0x88, 0x0f, 0x40, 0xc4, 0xdd, - 0x02, 0x9a, 0x1c, 0xa0, 0x97, 0xaa, 0x3c, 0x23, 0x77, 0x2b, 0x2b, 0x93, 0x7e, 0x06, 0x5d, 0xc0, - 0x45, 0x0a, 0x9e, 0x4e, 0x95, 0xbb, 0xe1, 0xc8, 0x05, 0x1b, 0xe9, 0x68, 0x6f, 0x6b, 0xea, 0xca, - 0x1e, 0x78, 0x5a, 0x05, 0xe8, 0x05, 0xd8, 0xcf, 0x5a, 0xf7, 0xe8, 0xfe, 0xf7, 0xf8, 0x3a, 0x40, - 0xf0, 0x4f, 0xaf, 0x03, 0x17, 0xcf, 0xa6, 0x3b, 0x3b, 0x7c, 0xec, 0x1b, 0x9e, 0xfe, 0x69, 0x68, - 0x1a, 0xe0, 0x83, 0xbd, 0x0b, 0x15, 0x9f, 0x43, 0x33, 0xc2, 0xa6, 0x12, 0xdd, 0x1f, 0x80, 0x60, - 0xc7, 0x52, 0x29, 0x4d, 0x83, 0x71, 0x42, 0xd7, 0x75, 0xb5, 0x3e, 0x0b, 0x84, 0x1e, 0xa2, 0xce, - 0x65, 0x09, 0x51, 0xc7, 0x37, 0x35, 0x85, 0xa8, 0xfb, 0x15, 0x1f, 0x0e, 0x02, 0xb0, 0xb3, 0x46, - 0x95, 0xeb, 0xf8, 0x54, 0x9f, 0x4f, 0xf0, 0x8d, 0x53, 0x9d, 0xad, 0x10, 0xbf, 0x47, 0x7f, 0xca, - 0x7f, 0x6b, 0xa4, 0x2b, 0x33, 0x70, 0x1e, 0xfe, 0x4e, 0x0e, 0x0e, 0x65, 0x5e, 0x3f, 0x39, 0xfa, - 0xc1, 0xa0, 0x5e, 0xcb, 0xe7, 0xfd, 0x3c, 0x2b, 0x20, 0x44, 0xc7, 0xbc, 0x53, 0x8f, 0xeb, 0xd2, - 0x2a, 0xa8, 0xf2, 0x6f, 0xbc, 0x5c, 0xb9, 0x14, 0xa1, 0x9b, 0xda, 0x3e, 0x55, 0xc7, 0xd6, 0x1d, - 0x5b, 0x9a, 0x22, 0xe1, 0x50, 0x22, 0x12, 0xdb, 0xa2, 0xb4, 0x28, 0xe1, 0xc4, 0x67, 0xad, 0x7c, - 0x51, 0x93, 0x92, 0x88, 0x85, 0x02, 0xf1, 0xc5, 0xee, 0x54, 0xef, 0x7b, 0xa9, 0x93, 0xe7, 0xb5, - 0xcb, 0x7b, 0xa1, 0x55, 0x2c, 0xf1, 0xf2, 0x67, 0xad, 0xbb, 0x95, 0x26, 0x7f, 0xa8, 0xf1, 0xb3, - 0xd6, 0xdd, 0x2d, 0x91, 0x50, 0x40, 0x49, 0xf7, 0x75, 0xa6, 0x8e, 0x5d, 0xd7, 0x46, 0xba, 0x7d, - 0xdc, 0xc7, 0xc5, 0x47, 0xe8, 0xa3, 0x5c, 0xf0, 0xca, 0xa1, 0x2f, 0x8b, 0x95, 0x78, 0x40, 0x2a, - 0xd1, 0xb1, 0x90, 0x3a, 0x79, 0xd3, 0x94, 0x6b, 0x18, 0x5e, 0xee, 0x3e, 0xa2, 0x6f, 0x71, 0x12, - 0x4e, 0x9e, 0xc6, 0x60, 0xa5, 0x5b, 0x5c, 0xcc, 0xb1, 0xb9, 0x0f, 0x0a, 0x68, 0x52, 0x80, 0x50, - 0x3c, 0x3d, 0xd5, 0xe7, 0x5a, 0x35, 0x0b, 0x06, 0x57, 0x80, 0x17, 0x43, 0xb4, 0x81, 0xf4, 0x2c, - 0x4f, 0xff, 0x60, 0x5e, 0xd1, 0x37, 0xa2, 0xce, 0x08, 0xe8, 0xc0, 0xc9, 0x5c, 0x21, 0x72, 0x13, - 0x40, 0xea, 0x00, 0xd0, 0x99, 0x8f, 0x76, 0x2a, 0x6e, 0x47, 0x53, 0x03, 0xd4, 0x1d, 0x9a, 0x0c, - 0x83, 0x0a, 0x0d, 0xa5, 0xf6, 0xc3, 0x22, 0xac, 0x8d, 0x50, 0xa4, 0xb9, 0x95, 0x24, 0x82, 0xd3, - 0x34, 0x78, 0x14, 0xd0, 0x39, 0x9b, 0x41, 0xf0, 0x97, 0x82, 0xd4, 0xf9, 0x0d, 0xbe, 0x54, 0x34, - 0xce, 0x2f, 0x99, 0x5a, 0xe1, 0x2f, 0x9d, 0x19, 0x3d, 0x71, 0xce, 0xfc, 0x25, 0x13, 0x88, 0xf8, - 0x6b, 0x34, 0x1d, 0x3e, 0xbd, 0x8e, 0xf9, 0x92, 0x90, 0xa7, 0x5f, 0xb9, 0xbf, 0x45, 0x1c, 0xbc, - 0xb2, 0xdb, 0x49, 0xb3, 0x58, 0x3c, 0xdd, 0x33, 0xa9, 0x63, 0x97, 0xb5, 0xb7, 0x4e, 0xd1, 0x0f, - 0x66, 0xc3, 0xe1, 0x4f, 0xc2, 0x18, 0x8c, 0x4f, 0x4e, 0x19, 0xe7, 0x27, 0xb3, 0xda, 0x71, 0x9f, - 0xa4, 0x33, 0xa5, 0x9f, 0xcc, 0x82, 0xc3, 0x9f, 0x6c, 0xd6, 0xe3, 0xbf, 0xc2, 0x27, 0x8b, 0xc7, - 0xf9, 0xc9, 0xac, 0x76, 0xfc, 0x2c, 0x89, 0xcb, 0x2e, 0xfb, 0x64, 0x16, 0x9c, 0xf8, 0x1b, 0x34, - 0x93, 0x24, 0xab, 0xde, 0x10, 0xf0, 0x37, 0x2a, 0xeb, 0x9b, 0x13, 0xb8, 0x86, 0x64, 0x0d, 0xc8, - 0xfd, 0xd1, 0x65, 0xaa, 0xbc, 0xc4, 0x6b, 0x6d, 0x29, 0xcd, 0x31, 0x3e, 0xdb, 0xf9, 0xae, 0xd6, - 0x7f, 0x1d, 0x7e, 0xd2, 0x8f, 0x5b, 0xe1, 0xc5, 0x57, 0xd0, 0x0c, 0xa3, 0xb0, 0x8e, 0xe4, 0x25, - 0x70, 0x7a, 0x92, 0x36, 0xa1, 0xaf, 0xa7, 0x47, 0x2c, 0x5f, 0xb7, 0x7c, 0x48, 0x6c, 0x15, 0xb0, - 0xc4, 0x10, 0x50, 0x42, 0x2d, 0x4a, 0x2c, 0x4e, 0x33, 0xf7, 0x6e, 0x55, 0xe5, 0x2d, 0x5e, 0xa3, - 0x54, 0xf2, 0x51, 0xea, 0x3b, 0x78, 0x3e, 0x75, 0xe4, 0x5a, 0xa6, 0xb5, 0xbd, 0x5c, 0xeb, 0x1e, - 0x48, 0x75, 0xed, 0xd3, 0xfa, 0x7b, 0x6e, 0x8d, 0xbc, 0x99, 0xd9, 0x7f, 0x3e, 0x75, 0xfc, 0x0c, - 0xfc, 0x2c, 0x77, 0x6b, 0xdd, 0x03, 0xf4, 0x08, 0x21, 0x1b, 0xb9, 0x92, 0x5b, 0x74, 0xf2, 0x1a, - 0x51, 0xf7, 0x34, 0x37, 0xba, 0xe7, 0xe3, 0xff, 0xcc, 0x30, 0xc7, 0xff, 0x29, 0x31, 0xde, 0x47, - 0xce, 0x84, 0x1a, 0xf6, 0x00, 0x72, 0xbe, 0x29, 0x13, 0x93, 0x08, 0x71, 0x89, 0xb8, 0x84, 0x6b, - 0xf3, 0x4d, 0x8f, 0x1c, 0xef, 0x80, 0x7a, 0xa3, 0xa4, 0x2a, 0xa0, 0xca, 0x2f, 0xa2, 0x5f, 0x7a, - 0xb3, 0xce, 0x33, 0x69, 0x0d, 0x7f, 0x4c, 0x94, 0xbb, 0x93, 0x83, 0xc3, 0x99, 0x77, 0x76, 0xc3, - 0xe3, 0x32, 0x6d, 0xe0, 0x3a, 0x9c, 0xa4, 0x20, 0xe3, 0x02, 0x60, 0x19, 0x4c, 0xf3, 0xb3, 0xd6, - 0xdd, 0x06, 0xd6, 0xfb, 0x3a, 0x41, 0x16, 0x58, 0xe4, 0xf9, 0xeb, 0xa9, 0x68, 0x4e, 0x0d, 0xa5, - 0x28, 0xfe, 0x33, 0xec, 0x26, 0xb2, 0x8d, 0x3f, 0xb7, 0x04, 0x96, 0x76, 0xd8, 0xcb, 0x9f, 0x5b, - 0xf3, 0x4c, 0x1c, 0x9b, 0x85, 0x94, 0x66, 0x41, 0x61, 0x3f, 0xaf, 0x2e, 0x89, 0xcd, 0x9e, 0x21, - 0x94, 0xb4, 0xce, 0xb0, 0x89, 0x91, 0x67, 0x9c, 0x59, 0x8f, 0x9a, 0x8e, 0xd4, 0x85, 0x76, 0x47, - 0x6a, 0xea, 0xe4, 0x4d, 0x2e, 0x5e, 0xf7, 0x0c, 0x81, 0x9e, 0xac, 0xec, 0x24, 0xc9, 0x9b, 0xe8, - 0x49, 0xf2, 0xa7, 0x76, 0xc7, 0xe4, 0xfb, 0xdf, 0xfa, 0x31, 0xf9, 0x79, 0x75, 0x59, 0xec, 0x7e, - 0xdf, 0x8c, 0xec, 0x8e, 0x7d, 0xa2, 0xb5, 0x5f, 0xd3, 0x89, 0xba, 0x41, 0x3f, 0x18, 0x0b, 0xc6, - 0x0c, 0xe6, 0x37, 0xee, 0x43, 0xd3, 0x72, 0x46, 0x4d, 0xfa, 0xc6, 0xce, 0xa8, 0xc9, 0xdf, 0xe0, - 0x19, 0x55, 0xf8, 0xcd, 0x9f, 0x51, 0x45, 0xdf, 0xfc, 0x19, 0x85, 0xbe, 0x8d, 0x33, 0x6a, 0xca, - 0xb7, 0x7a, 0x46, 0x15, 0x7f, 0x53, 0x67, 0x14, 0x27, 0x5d, 0x4e, 0xfd, 0x4e, 0x48, 0x97, 0xe6, - 0x43, 0x73, 0xda, 0xb7, 0x7c, 0x68, 0x4e, 0x37, 0x1d, 0x9a, 0x55, 0x2f, 0xaa, 0xf2, 0x0b, 0xe8, - 0x79, 0x6f, 0xae, 0x93, 0x47, 0xe7, 0x19, 0x1c, 0x13, 0xff, 0x54, 0x30, 0x4e, 0x8c, 0x4f, 0x05, - 0xc2, 0xfe, 0x3f, 0x15, 0x38, 0x1e, 0xf8, 0xa9, 0xc0, 0xbe, 0xe0, 0x19, 0x74, 0xb1, 0x77, 0xb6, - 0xd9, 0xbd, 0xdf, 0x1e, 0xee, 0xcb, 0x3b, 0xad, 0x7e, 0xc8, 0xf9, 0xe3, 0xf4, 0x43, 0x26, 0x19, - 0xf5, 0x2d, 0x7e, 0xc8, 0x25, 0x56, 0x3f, 0x64, 0x7b, 0xf7, 0x63, 0xcf, 0x6b, 0x2e, 0x34, 0xa7, - 0x96, 0x72, 0x13, 0x3b, 0x91, 0xa0, 0xc6, 0x2a, 0x12, 0x40, 0xde, 0x67, 0x43, 0x24, 0x98, 0x95, - 0x25, 0x06, 0x50, 0x84, 0x70, 0xe7, 0xbd, 0xdd, 0xad, 0xdc, 0xf5, 0xa5, 0x6e, 0xe5, 0x55, 0x1b, - 0x54, 0xb9, 0x1e, 0xad, 0xf3, 0xe6, 0x1a, 0xbb, 0x7e, 0x3c, 0x70, 0x7d, 0x99, 0x37, 0xd5, 0xb4, - 0x70, 0x24, 0xa8, 0x18, 0x9d, 0x92, 0x7d, 0x64, 0xdf, 0xe1, 0x0f, 0xfb, 0x68, 0x8c, 0x7d, 0xf4, - 0x37, 0x2e, 0x48, 0xcd, 0x60, 0xbf, 0x8b, 0x1e, 0xb6, 0xee, 0x22, 0xd0, 0x02, 0x1a, 0xbb, 0xc8, - 0x26, 0xb1, 0xc0, 0xd7, 0xb2, 0x71, 0xfa, 0x05, 0x55, 0x7e, 0x4f, 0x40, 0x17, 0x04, 0xaf, 0xf3, - 0x78, 0xa5, 0xdf, 0xa7, 0xbe, 0x95, 0x1c, 0x3b, 0x02, 0x25, 0xe5, 0xad, 0x91, 0x2e, 0xed, 0x9d, - 0x3d, 0xa9, 0x53, 0xbd, 0xda, 0xd9, 0xf7, 0xb5, 0xbd, 0x27, 0x92, 0x43, 0x7b, 0x31, 0x4a, 0xce, - 0xec, 0x83, 0x38, 0x15, 0xb8, 0xb6, 0xe3, 0x04, 0x49, 0x13, 0xd9, 0x01, 0xe5, 0x34, 0x60, 0x0a, - 0xe9, 0xcd, 0x68, 0xdb, 0x7e, 0x11, 0xf4, 0x5b, 0xc4, 0xfe, 0x3e, 0xc4, 0x42, 0x3e, 0x5f, 0x1c, - 0xdd, 0xd7, 0xcd, 0x82, 0x00, 0x72, 0xd1, 0x43, 0xff, 0x77, 0x17, 0xbc, 0x3e, 0xbb, 0x3d, 0xb7, - 0xe4, 0x73, 0x26, 0x43, 0xed, 0x7c, 0xfb, 0x73, 0x92, 0x4d, 0xca, 0xf4, 0xc2, 0xc8, 0x74, 0x15, - 0x00, 0xe3, 0x1e, 0xbc, 0x30, 0x5a, 0xa3, 0xca, 0x75, 0x68, 0xb5, 0x37, 0x07, 0x52, 0x58, 0xfe, - 0x00, 0xd3, 0xfa, 0x39, 0xbd, 0x2e, 0x2a, 0x20, 0x6e, 0x00, 0xf5, 0xb1, 0x48, 0x4b, 0x28, 0xa8, - 0xc4, 0x58, 0x36, 0x8d, 0x4d, 0xb8, 0x92, 0x6d, 0xdf, 0x5f, 0x93, 0xcc, 0x18, 0xa4, 0x5e, 0xdf, - 0xbf, 0xcf, 0xa9, 0xf2, 0x3a, 0x2f, 0x57, 0x2c, 0x3d, 0x4d, 0x73, 0x6d, 0x5c, 0x39, 0xc3, 0x0a, - 0x6f, 0x8d, 0x74, 0xc1, 0x05, 0x82, 0xba, 0xe9, 0xef, 0x6c, 0x0e, 0x27, 0x42, 0x95, 0x71, 0xa5, - 0x71, 0x5b, 0x65, 0x20, 0x56, 0xb9, 0x35, 0x10, 0xdf, 0xc2, 0x52, 0x51, 0x6f, 0x89, 0x46, 0x22, - 0x8d, 0x3e, 0xae, 0x37, 0xb1, 0x0a, 0xa3, 0xba, 0xc1, 0x78, 0xfc, 0x07, 0xe1, 0x7f, 0xa0, 0x48, - 0x9a, 0x95, 0xea, 0x1d, 0xd2, 0x4e, 0xed, 0xc7, 0x64, 0xd9, 0x7b, 0x31, 0xdd, 0xd3, 0xa6, 0xf5, - 0x5e, 0xd6, 0x4e, 0x9f, 0xf6, 0xd1, 0x6a, 0x71, 0x05, 0x2a, 0x66, 0x3e, 0xa8, 0xe4, 0xb2, 0x93, - 0x67, 0x44, 0x85, 0x35, 0x55, 0x48, 0x93, 0xa0, 0x1f, 0x9f, 0xa9, 0x54, 0x7c, 0x55, 0x40, 0x05, - 0x24, 0x16, 0x0e, 0x65, 0x1e, 0x73, 0x2d, 0x77, 0x8b, 0x4d, 0x9c, 0x47, 0xca, 0x7a, 0x55, 0xae, - 0xf1, 0x02, 0xbc, 0x54, 0x05, 0x81, 0xc1, 0xd3, 0x07, 0xf7, 0x95, 0xbb, 0x75, 0x6c, 0xe8, 0x65, - 0xda, 0xe5, 0xee, 0xe4, 0xd0, 0xc1, 0x74, 0x5f, 0x67, 0x72, 0xe8, 0x20, 0x81, 0xd7, 0x5d, 0xa5, - 0x53, 0x57, 0xce, 0x7c, 0x5e, 0x3d, 0xc9, 0x9b, 0x5f, 0x12, 0x2c, 0xfb, 0x91, 0x0f, 0xfa, 0x12, - 0x4f, 0x08, 0x7c, 0xda, 0x99, 0x82, 0x71, 0x8c, 0x04, 0xfc, 0xb3, 0x8d, 0xa4, 0x34, 0x6b, 0xe1, - 0xcb, 0xc9, 0xc1, 0xf7, 0x52, 0x47, 0x2f, 0x73, 0x03, 0xd2, 0xba, 0x07, 0xd2, 0x47, 0x30, 0xda, - 0x28, 0x16, 0x8f, 0x5e, 0xc6, 0xab, 0xc4, 0x0d, 0x4e, 0xef, 0x82, 0x1f, 0x20, 0x9f, 0xc9, 0x06, - 0xdf, 0x1b, 0x2f, 0x08, 0xe8, 0x9c, 0xe0, 0x1d, 0x6b, 0xeb, 0x48, 0xcd, 0xa6, 0x3c, 0x2c, 0x57, - 0xce, 0x40, 0x64, 0x79, 0xf8, 0x32, 0x89, 0x28, 0x0b, 0x72, 0x1f, 0x89, 0x0c, 0x7b, 0xbf, 0x9b, - 0xd9, 0xa4, 0x89, 0x3a, 0x1c, 0xe2, 0x15, 0x11, 0xe7, 0x1c, 0x6d, 0xdf, 0x50, 0xfa, 0xd2, 0x3b, - 0xda, 0xa1, 0x0e, 0x70, 0xf6, 0xe1, 0xc7, 0x65, 0x84, 0xaa, 0xe7, 0xba, 0x32, 0x31, 0x90, 0x3d, - 0x79, 0xc8, 0xed, 0x3c, 0xcc, 0xdb, 0x31, 0xd5, 0xb9, 0xe3, 0x1b, 0x0c, 0x48, 0x59, 0x4f, 0xf8, - 0xc7, 0x3d, 0x14, 0xc7, 0xcc, 0xcd, 0x9e, 0x46, 0x2e, 0x26, 0x48, 0x4a, 0xbd, 0xda, 0xae, 0xed, - 0xfd, 0x88, 0xb2, 0x13, 0xfa, 0x4a, 0x7a, 0x4c, 0x14, 0x49, 0x5e, 0x53, 0x36, 0xa0, 0x2b, 0x67, - 0x6c, 0x3b, 0x75, 0x62, 0x33, 0xff, 0x36, 0x1f, 0x15, 0x57, 0xb3, 0x00, 0x7d, 0xf4, 0x09, 0x88, - 0x9e, 0x40, 0x87, 0xb9, 0x8b, 0x18, 0x19, 0x75, 0xdc, 0x68, 0x0a, 0xfd, 0x61, 0xa4, 0x27, 0xf6, - 0xf1, 0x45, 0x1c, 0x44, 0x0d, 0x5e, 0xb7, 0x3c, 0x13, 0x04, 0x2e, 0x12, 0x3d, 0xa8, 0x98, 0xfe, - 0xdc, 0x14, 0xc7, 0xd7, 0x02, 0x1a, 0xea, 0x9a, 0x2f, 0x13, 0xef, 0x84, 0x64, 0x05, 0x41, 0x16, - 0xee, 0x92, 0xfc, 0xc0, 0xb2, 0xfc, 0xd6, 0xd0, 0x2e, 0xce, 0x5c, 0xce, 0x7e, 0x8a, 0xa5, 0xa8, - 0x70, 0x6b, 0x68, 0x17, 0xf4, 0x07, 0x71, 0xae, 0xf5, 0xdf, 0x78, 0x46, 0x7a, 0x62, 0x1f, 0x88, - 0x3b, 0xc6, 0x67, 0xfa, 0x71, 0xa3, 0x29, 0xf4, 0x07, 0xe9, 0x97, 0x86, 0xe9, 0xe1, 0x8a, 0xc4, - 0x85, 0x68, 0x2a, 0xfd, 0xe9, 0x03, 0xce, 0x07, 0x89, 0x5b, 0xcd, 0x85, 0x78, 0x56, 0xb4, 0x00, - 0x46, 0x31, 0x05, 0x66, 0xc5, 0x97, 0xe1, 0xf1, 0x93, 0x3b, 0x5b, 0x5d, 0x10, 0x22, 0x82, 0xf9, - 0xd8, 0x4f, 0x3c, 0xc6, 0x06, 0x3d, 0xe9, 0xf3, 0x54, 0x18, 0xa3, 0x5e, 0x80, 0xfb, 0x36, 0x31, - 0xce, 0x69, 0xd0, 0xb7, 0x89, 0x3b, 0xde, 0x89, 0x0a, 0x76, 0x45, 0xc2, 0x0a, 0x55, 0x4d, 0xfa, - 0xe0, 0x07, 0x51, 0xff, 0x45, 0xc2, 0xf1, 0xe6, 0x26, 0x32, 0xf9, 0x19, 0x54, 0xfd, 0xa7, 0x97, - 0x88, 0xb3, 0xd1, 0x24, 0xcc, 0xe2, 0xeb, 0x82, 0x54, 0x6f, 0x48, 0x7f, 0xe1, 0x76, 0xe4, 0xf3, - 0x30, 0x17, 0xaa, 0x36, 0x34, 0x4a, 0xc4, 0x19, 0x28, 0xaf, 0x39, 0xd6, 0x48, 0xf5, 0x85, 0xf8, - 0x4f, 0xe9, 0xca, 0x29, 0x17, 0x9a, 0x46, 0xb5, 0x1b, 0x6b, 0xe1, 0x14, 0x15, 0xff, 0x54, 0x40, - 0x53, 0x6b, 0x4c, 0x0a, 0x16, 0x8b, 0xc0, 0x67, 0xaa, 0xf6, 0x29, 0xbf, 0x2e, 0xbd, 0x67, 0x0c, - 0x88, 0x78, 0xd4, 0xd3, 0xa2, 0xca, 0xeb, 0xc4, 0xa9, 0x70, 0x33, 0xa3, 0xe5, 0xa5, 0x2b, 0x4c, - 0x3f, 0x6f, 0x8d, 0x74, 0xc1, 0x15, 0x11, 0x14, 0x66, 0x5a, 0xfb, 0x08, 0xbe, 0x3c, 0xef, 0x3e, - 0x32, 0xba, 0xe7, 0x1d, 0x9a, 0x96, 0x42, 0xed, 0x4a, 0xef, 0xbf, 0x94, 0x7e, 0x7f, 0x3f, 0xfc, - 0xdc, 0xf3, 0x97, 0xc9, 0xd7, 0x5d, 0x0b, 0x3c, 0xa5, 0x95, 0xe6, 0x6f, 0x57, 0xb6, 0x2c, 0x65, - 0x25, 0x55, 0x82, 0x57, 0x6c, 0x75, 0xa1, 0xd9, 0x3e, 0x25, 0x11, 0xdb, 0x69, 0x1a, 0xd2, 0x46, - 0x7f, 0x7c, 0x87, 0x68, 0x79, 0xbb, 0x68, 0x85, 0xc3, 0x93, 0xbb, 0x7f, 0x3c, 0x60, 0xf1, 0xa8, - 0xe7, 0x98, 0xa0, 0xca, 0xbf, 0x10, 0xef, 0x1e, 0xdd, 0x77, 0x20, 0x33, 0x70, 0xd4, 0x34, 0x33, - 0x88, 0x22, 0x59, 0xfa, 0xd4, 0xa8, 0xda, 0x81, 0x39, 0x2c, 0xa7, 0xd1, 0xd2, 0xce, 0x5d, 0xc9, - 0x7c, 0x78, 0x1e, 0xd2, 0x76, 0xe0, 0xf9, 0xef, 0x3b, 0x90, 0x3a, 0x76, 0x39, 0x39, 0xb8, 0x5f, - 0xeb, 0x3e, 0xcc, 0x83, 0x41, 0x07, 0x64, 0xc2, 0x4b, 0x3d, 0xe5, 0xce, 0x13, 0xae, 0x7c, 0x45, - 0x0f, 0x60, 0xfc, 0x9b, 0xca, 0x18, 0x1e, 0x26, 0x46, 0xc1, 0x9f, 0x08, 0xe8, 0x4e, 0x62, 0xe7, - 0x27, 0x8e, 0x27, 0xf4, 0xa1, 0x3d, 0xbe, 0xe9, 0x5b, 0xbc, 0x53, 0x8c, 0x3a, 0x3c, 0xf1, 0xf9, - 0xb9, 0xaa, 0xe3, 0x51, 0x4f, 0x5c, 0x95, 0xab, 0xc5, 0xbb, 0x77, 0xe8, 0x85, 0x70, 0x16, 0xa6, - 0x5a, 0x2f, 0xa4, 0xde, 0x6e, 0x4d, 0x7d, 0xb4, 0xbf, 0xf4, 0x3e, 0xa3, 0x2a, 0x73, 0xf3, 0x54, - 0xea, 0xe0, 0x79, 0x3a, 0x67, 0x33, 0x18, 0x99, 0x55, 0x59, 0xe9, 0xbd, 0xb6, 0xb3, 0x8a, 0x34, - 0x07, 0x2b, 0x8d, 0x5e, 0xf0, 0x64, 0xf6, 0xb8, 0xd0, 0x1c, 0xbb, 0xc9, 0xd4, 0x44, 0xc2, 0x61, - 0x25, 0x90, 0x10, 0x17, 0x3a, 0x0f, 0x9a, 0x82, 0xe0, 0xa9, 0xdd, 0x37, 0x0e, 0xa8, 0x78, 0xd4, - 0x73, 0x54, 0x50, 0xe5, 0x67, 0x44, 0x37, 0x37, 0xc5, 0xbd, 0xed, 0x95, 0xf4, 0x1d, 0x75, 0xff, - 0xcd, 0xd1, 0xe3, 0xfd, 0xe9, 0xd7, 0xae, 0xa5, 0x5a, 0x77, 0x97, 0xde, 0xcf, 0xcd, 0x94, 0x94, - 0xd3, 0x99, 0xea, 0xd0, 0x00, 0x47, 0xa6, 0x5a, 0x2d, 0x3e, 0xed, 0x34, 0xd5, 0x38, 0x5e, 0x3f, - 0xf2, 0xc6, 0xfc, 0x37, 0x0c, 0x24, 0x6e, 0x5a, 0xd2, 0x00, 0x9d, 0xe4, 0x7f, 0x15, 0xd0, 0xd4, - 0xba, 0xa6, 0x68, 0x24, 0x96, 0x70, 0xa4, 0x51, 0x53, 0xb5, 0x2d, 0x8d, 0x66, 0x41, 0xc4, 0xa3, - 0x9e, 0xd7, 0x05, 0x55, 0x0e, 0x8a, 0x77, 0x6b, 0x03, 0x23, 0x5a, 0x3b, 0x0d, 0xd6, 0x6f, 0xde, - 0xc1, 0xab, 0xf9, 0x2a, 0x98, 0x63, 0x19, 0xf5, 0x93, 0x39, 0xd7, 0x93, 0x1c, 0x3a, 0xcc, 0x72, - 0xe6, 0x60, 0x20, 0xed, 0xb5, 0xd3, 0x99, 0x57, 0x6f, 0x54, 0xb9, 0x59, 0x70, 0x6d, 0x6e, 0x1d, - 0x17, 0x11, 0x44, 0xdc, 0xef, 0xb9, 0x27, 0xc7, 0x4e, 0x0e, 0x91, 0xd1, 0xe1, 0x15, 0xdf, 0xeb, - 0x42, 0x53, 0x59, 0xd0, 0x1a, 0x87, 0xc9, 0x9a, 0xaa, 0x6d, 0x27, 0x9b, 0x05, 0x11, 0x8f, 0x7a, - 0x06, 0x04, 0x55, 0x7e, 0x45, 0x9c, 0x0a, 0xfa, 0x27, 0xc6, 0x91, 0x7e, 0x65, 0xfa, 0x09, 0xb2, - 0x06, 0x98, 0xcf, 0x21, 0x99, 0x60, 0x72, 0xb8, 0x1d, 0x0c, 0x26, 0x34, 0x4c, 0x0e, 0x03, 0x20, - 0x8e, 0xc6, 0x3d, 0x99, 0x0b, 0xef, 0x68, 0xdd, 0x87, 0x93, 0xc3, 0xc3, 0xc9, 0x1b, 0x47, 0x29, - 0x2b, 0x23, 0x41, 0xfb, 0xb0, 0x88, 0xb5, 0xef, 0x3d, 0xed, 0xb5, 0x8b, 0x5a, 0xd7, 0x31, 0xed, - 0xb5, 0x8b, 0xc9, 0x1b, 0xbd, 0x9f, 0xb5, 0xee, 0x21, 0x38, 0x78, 0xb0, 0xf4, 0xfe, 0xf1, 0x51, - 0x33, 0x46, 0x44, 0x97, 0x0b, 0xcd, 0x94, 0x83, 0x41, 0xe2, 0x00, 0xbb, 0x31, 0xc2, 0x90, 0x61, - 0xf1, 0x71, 0x64, 0x20, 0x54, 0x6a, 0x2c, 0x75, 0x3b, 0x03, 0x80, 0x30, 0xe2, 0xb9, 0x2a, 0xa8, - 0xf2, 0x2e, 0x51, 0x4c, 0x0e, 0xbe, 0x96, 0x3a, 0x75, 0x0d, 0x06, 0x0e, 0x5a, 0xba, 0xd2, 0x20, - 0x68, 0xf1, 0xea, 0xea, 0xf1, 0xf5, 0x63, 0xf8, 0x04, 0x5d, 0xdf, 0xb7, 0x4e, 0x69, 0xaf, 0x9d, - 0x01, 0x88, 0xb2, 0xe4, 0xd0, 0xe1, 0x9a, 0xcd, 0x6b, 0x69, 0x4e, 0x51, 0xb5, 0xab, 0xae, 0xb6, - 0xc6, 0x78, 0x57, 0x4e, 0x0a, 0x17, 0x91, 0xe4, 0xf1, 0x14, 0x37, 0xe9, 0x37, 0x07, 0xb5, 0xf6, - 0xab, 0x3a, 0x32, 0x20, 0x48, 0x33, 0xc1, 0xc4, 0x12, 0xcf, 0x83, 0xe3, 0xe4, 0x6b, 0xe1, 0x48, - 0x50, 0xc1, 0xe8, 0xf8, 0x3f, 0x04, 0x34, 0xbb, 0x56, 0xd7, 0x5d, 0xc7, 0x57, 0xc5, 0x22, 0x4d, - 0x0c, 0x27, 0x1e, 0x6b, 0xe4, 0x5f, 0x1d, 0x8e, 0xa1, 0xe5, 0xde, 0x9c, 0x30, 0x14, 0x33, 0xfb, - 0x04, 0x55, 0x7e, 0x0e, 0x63, 0x66, 0x7f, 0x36, 0x66, 0x1e, 0x67, 0x98, 0xc1, 0xf7, 0xa5, 0x93, - 0xad, 0xa0, 0xea, 0x05, 0x08, 0x3c, 0x40, 0xe6, 0x3f, 0x96, 0x1c, 0x3a, 0x8c, 0x8f, 0x2d, 0x33, - 0x4a, 0xc8, 0x84, 0x2b, 0xbc, 0x13, 0x99, 0xb0, 0x38, 0xe8, 0x42, 0x73, 0xc8, 0xfb, 0x4d, 0x87, - 0x29, 0x2f, 0xce, 0x9e, 0x0e, 0x07, 0x4c, 0x61, 0x4c, 0xd3, 0xaf, 0x1c, 0x37, 0x3c, 0x45, 0xc5, - 0xc7, 0x82, 0x2a, 0xbf, 0x24, 0x96, 0xa4, 0x3a, 0xaf, 0x8f, 0xee, 0xeb, 0xb6, 0x41, 0xc8, 0xf3, - 0x4e, 0x35, 0x65, 0x5a, 0x57, 0x7b, 0x6a, 0xff, 0x25, 0x1a, 0xb8, 0xa0, 0x73, 0x3f, 0xa6, 0x00, - 0xc8, 0x44, 0x78, 0xea, 0x1a, 0x40, 0x7c, 0xd6, 0xba, 0xbb, 0x46, 0xd6, 0xff, 0xcc, 0x42, 0x56, - 0xba, 0xaf, 0x13, 0xf8, 0xc5, 0x23, 0xde, 0x87, 0x9c, 0x11, 0x16, 0xb7, 0x60, 0x2c, 0x5e, 0x59, - 0x51, 0xb9, 0x15, 0xcf, 0x49, 0xfc, 0x3f, 0x05, 0x74, 0xc7, 0x6a, 0x85, 0x71, 0xba, 0xf8, 0x5a, - 0x25, 0xe1, 0x27, 0x3e, 0x4f, 0x5e, 0x1b, 0x5f, 0xf5, 0x6c, 0x20, 0x86, 0xae, 0x07, 0xc7, 0x05, - 0x4b, 0x51, 0xf5, 0x7b, 0xaa, 0xbc, 0x46, 0x5c, 0x48, 0x55, 0x31, 0xe7, 0x7a, 0xb4, 0x63, 0x27, - 0x29, 0x37, 0xe8, 0x69, 0xd3, 0xda, 0x5f, 0xe5, 0xe3, 0x9c, 0x94, 0x1a, 0x50, 0xc9, 0xc1, 0xf7, - 0x9c, 0xa0, 0xc8, 0xf4, 0x1f, 0xf0, 0x78, 0x72, 0x4d, 0xbf, 0xa2, 0xb2, 0x49, 0x49, 0xf8, 0x31, - 0x5d, 0x1c, 0x75, 0x41, 0x76, 0x35, 0xb2, 0x7c, 0x75, 0x61, 0xb6, 0x41, 0x16, 0x65, 0xcf, 0xc0, - 0x0a, 0xc3, 0x26, 0xeb, 0x1d, 0x0f, 0x28, 0x9d, 0xeb, 0x05, 0x41, 0x95, 0x7f, 0x2d, 0x7a, 0x60, - 0x1a, 0x8c, 0x6f, 0x0e, 0xee, 0xa7, 0x6f, 0xa9, 0xb9, 0x54, 0xc3, 0xa5, 0xcf, 0x52, 0x3d, 0x0a, - 0x48, 0x34, 0x76, 0x20, 0xba, 0x52, 0x2b, 0x75, 0xfa, 0x10, 0x5c, 0x4e, 0x75, 0xd7, 0x2d, 0xad, - 0xe3, 0x84, 0x76, 0xf3, 0x46, 0xfa, 0xe8, 0xf9, 0xcc, 0xc0, 0x79, 0xad, 0x75, 0x04, 0x28, 0x48, - 0x9c, 0x10, 0x05, 0xbd, 0xeb, 0x42, 0x77, 0xe2, 0x89, 0xac, 0xf5, 0x13, 0x8c, 0x19, 0x98, 0x79, - 0xd0, 0x6e, 0xba, 0xd9, 0x50, 0x0c, 0x37, 0xe5, 0xe3, 0x03, 0xa6, 0xd8, 0xf9, 0x48, 0x50, 0xe5, - 0xdf, 0x88, 0x65, 0xf6, 0xd8, 0x69, 0x22, 0xad, 0x4c, 0x38, 0x7a, 0xce, 0x16, 0x47, 0x56, 0xc0, - 0x09, 0x62, 0xaa, 0x52, 0xac, 0x18, 0x27, 0xa6, 0xe0, 0x53, 0xe2, 0xfb, 0x02, 0x9a, 0x6a, 0xe2, - 0x05, 0xd6, 0x33, 0xd7, 0x54, 0x6d, 0x7b, 0xe6, 0x66, 0x41, 0xc4, 0xa3, 0x9e, 0x4d, 0xaa, 0xbc, - 0x10, 0x5f, 0x02, 0xce, 0x8c, 0x9e, 0x38, 0xc7, 0x8e, 0xdc, 0x3b, 0xe0, 0x67, 0xba, 0xf3, 0xba, - 0xd6, 0xdf, 0x43, 0x0b, 0x41, 0x26, 0xf4, 0x8e, 0xf3, 0x6c, 0x14, 0xaf, 0x0a, 0x08, 0x19, 0xf4, - 0x68, 0x15, 0x6b, 0x8d, 0x3a, 0x5b, 0xb1, 0x96, 0xaf, 0x8e, 0x47, 0x3d, 0xdb, 0x54, 0xf9, 0x21, - 0x71, 0xaa, 0x69, 0xc9, 0x18, 0x99, 0x02, 0xcf, 0xaf, 0x61, 0x5f, 0xd6, 0xc3, 0xb1, 0x70, 0x64, - 0x5a, 0x26, 0x8e, 0x77, 0xd4, 0xfb, 0x28, 0x9d, 0xd6, 0xd3, 0x6b, 0x36, 0x1d, 0xfd, 0x7d, 0x76, - 0x1b, 0xcc, 0x0c, 0x63, 0x7b, 0x2b, 0xb1, 0x03, 0x8b, 0x47, 0x3d, 0x67, 0x05, 0x55, 0xde, 0x26, - 0xde, 0x47, 0xc7, 0x7f, 0xfa, 0x10, 0x66, 0x33, 0xd4, 0x13, 0x70, 0x7f, 0xba, 0xa7, 0x8d, 0x82, - 0xd2, 0xed, 0xb7, 0x82, 0x6e, 0x3f, 0x0e, 0x80, 0x1e, 0xf9, 0xa4, 0x1e, 0xa6, 0x99, 0x1d, 0x7f, - 0x80, 0xe9, 0xda, 0x81, 0x4b, 0x4b, 0xe2, 0x12, 0x9b, 0xf9, 0x53, 0x3d, 0x41, 0xbc, 0xf2, 0x15, - 0x5d, 0x95, 0x64, 0x88, 0xb8, 0xe2, 0xdb, 0x2e, 0x34, 0x05, 0x42, 0x3c, 0x01, 0x0a, 0xe6, 0xdb, - 0xcd, 0x8d, 0x9b, 0xfb, 0x82, 0x9c, 0xf5, 0xf1, 0xa8, 0xe7, 0x53, 0x41, 0x95, 0x2f, 0x09, 0xe2, - 0x1d, 0xa6, 0x45, 0xa4, 0x73, 0x3c, 0x22, 0x80, 0x62, 0x8c, 0x62, 0x84, 0x10, 0x0f, 0x78, 0x4c, - 0x9b, 0xe0, 0x78, 0x0a, 0x1b, 0x3d, 0x7b, 0x1d, 0xe0, 0x20, 0xa1, 0x52, 0x16, 0x9d, 0xa5, 0xfa, - 0xce, 0x41, 0xed, 0x67, 0xad, 0x7b, 0x68, 0x13, 0x88, 0xaf, 0x42, 0x0a, 0x47, 0x5f, 0xbd, 0xc1, - 0x37, 0xe1, 0x53, 0x2e, 0x02, 0x18, 0x77, 0x99, 0x9d, 0x2b, 0xe6, 0xb8, 0xcc, 0x8a, 0x7f, 0x2b, - 0xa0, 0x99, 0x64, 0xa2, 0x24, 0x85, 0x05, 0xc3, 0xd5, 0x42, 0x5b, 0x5c, 0xf0, 0x20, 0xb6, 0xf7, - 0x1d, 0x1b, 0x28, 0xb8, 0xa4, 0x3f, 0x23, 0xde, 0xcd, 0x6c, 0x08, 0x97, 0xb4, 0xf6, 0x2b, 0x66, - 0xdc, 0x55, 0xf0, 0x55, 0xec, 0x36, 0xf7, 0x1a, 0xff, 0x13, 0xac, 0x3b, 0x60, 0xd7, 0x21, 0x73, - 0xba, 0x57, 0xb4, 0x93, 0xf2, 0xe3, 0xdb, 0xfd, 0x31, 0x25, 0xa8, 0x6f, 0x80, 0x7f, 0x15, 0x90, - 0x28, 0x07, 0x83, 0x1b, 0x9a, 0xb7, 0x86, 0x95, 0x84, 0x21, 0xda, 0xde, 0x67, 0x23, 0xb9, 0x66, - 0xc1, 0xd8, 0x92, 0x82, 0x1d, 0x58, 0x3c, 0xea, 0x79, 0x43, 0x50, 0xe5, 0xe7, 0xc5, 0x12, 0x3a, - 0xd0, 0x8f, 0x87, 0xb5, 0xd7, 0xce, 0x68, 0x7d, 0x87, 0xf0, 0x5d, 0x8e, 0x68, 0xe1, 0x4a, 0x9f, - 0x72, 0xaa, 0x29, 0x77, 0x67, 0xda, 0x3f, 0xc9, 0xf4, 0x0f, 0x24, 0x87, 0x0e, 0x6f, 0xae, 0xaf, - 0xa9, 0xa8, 0x59, 0x57, 0x97, 0xba, 0x78, 0x56, 0x1b, 0x21, 0xb2, 0x0e, 0x07, 0x4c, 0xe6, 0xbb, - 0xdc, 0x53, 0x39, 0x5e, 0x29, 0x25, 0x4e, 0xc6, 0x18, 0xc7, 0x67, 0xf6, 0x1f, 0xbb, 0xd0, 0xdc, - 0x0d, 0x2f, 0x85, 0x12, 0x81, 0xed, 0x74, 0xc0, 0x9b, 0xc2, 0x41, 0x25, 0xd6, 0xe8, 0xdf, 0xb9, - 0x0e, 0x42, 0x4f, 0x8b, 0x16, 0x71, 0x2d, 0x17, 0x34, 0x46, 0xca, 0x92, 0x89, 0x35, 0x88, 0x47, - 0x3d, 0x7f, 0x48, 0x6e, 0x01, 0x73, 0xb4, 0x8e, 0x7d, 0xa9, 0x03, 0x6f, 0xe9, 0xa2, 0x08, 0xc4, - 0x38, 0x87, 0xf9, 0x96, 0x3e, 0x0f, 0x95, 0xa0, 0x53, 0xd6, 0xef, 0x7b, 0x59, 0x50, 0xd4, 0x40, - 0xd1, 0x4c, 0x3f, 0xe1, 0xe6, 0xeb, 0xca, 0x74, 0x44, 0x02, 0x54, 0x4b, 0x34, 0x50, 0x11, 0x08, - 0x87, 0x74, 0x19, 0xef, 0x49, 0xcf, 0x63, 0xe3, 0x96, 0xf1, 0x60, 0xe8, 0xf1, 0x4a, 0xf6, 0x21, - 0x8c, 0xc7, 0xbf, 0x10, 0xd0, 0x9d, 0xa0, 0x99, 0xd9, 0x1c, 0x8a, 0x25, 0x9a, 0xfd, 0x8d, 0x6c, - 0x2b, 0x3d, 0x60, 0xaf, 0xa1, 0x32, 0x43, 0x61, 0xbc, 0x95, 0x8d, 0x0f, 0x30, 0x1e, 0xf5, 0x28, - 0xaa, 0xfc, 0x84, 0x48, 0x7d, 0x0d, 0x32, 0x27, 0x7a, 0x52, 0xfb, 0x4f, 0x03, 0x3a, 0x4a, 0xef, - 0xb7, 0x96, 0x95, 0x27, 0x3f, 0x39, 0x99, 0xea, 0x7c, 0x23, 0x39, 0x74, 0x70, 0x7b, 0x24, 0x9e, - 0xe0, 0x48, 0xde, 0xed, 0x99, 0x63, 0x33, 0xe1, 0x16, 0x4e, 0x81, 0xf5, 0xc7, 0x02, 0xba, 0x13, - 0x4e, 0xd2, 0xb1, 0xa6, 0x64, 0x07, 0x65, 0x3b, 0x25, 0x7b, 0xc0, 0x78, 0xd4, 0xf3, 0x73, 0x55, - 0x2e, 0x13, 0xa9, 0xa5, 0xdb, 0x34, 0x25, 0x9b, 0x32, 0x32, 0xfc, 0x45, 0xde, 0x07, 0x72, 0x0c, - 0xdf, 0x74, 0xdc, 0xfd, 0x67, 0x01, 0xdd, 0x0d, 0xb7, 0x70, 0xf3, 0x87, 0x9f, 0x6b, 0x8e, 0x24, - 0xfc, 0x62, 0xb9, 0xfd, 0x85, 0xdd, 0x06, 0x14, 0xcf, 0xa8, 0x62, 0x02, 0xd0, 0xf1, 0xa8, 0x27, - 0x80, 0xa7, 0x45, 0x93, 0x3e, 0x8c, 0xb6, 0x1f, 0x18, 0x7d, 0xeb, 0x64, 0x69, 0x09, 0xf5, 0x3b, - 0xe1, 0x26, 0x04, 0x35, 0x70, 0x88, 0x95, 0x56, 0x8c, 0x73, 0x5a, 0x95, 0xbf, 0xc6, 0x5f, 0xc1, - 0xeb, 0x74, 0x51, 0x40, 0x93, 0x57, 0x2b, 0xe0, 0x50, 0x64, 0x27, 0x62, 0xe0, 0x0a, 0x26, 0x44, - 0x2e, 0x70, 0xac, 0xa7, 0x72, 0xe3, 0x2f, 0x54, 0x79, 0x89, 0x88, 0x80, 0xdb, 0xe2, 0x8a, 0x52, - 0x0f, 0x2f, 0x80, 0x90, 0xc4, 0x58, 0x75, 0xf5, 0xe9, 0x9e, 0x36, 0x90, 0x09, 0x39, 0xf1, 0xc3, - 0x9e, 0xdd, 0x62, 0xf9, 0xb7, 0xf2, 0x95, 0x10, 0x34, 0xfb, 0x8d, 0xf8, 0xcf, 0x02, 0x9a, 0x42, - 0xbf, 0x08, 0xb9, 0x32, 0x1d, 0x86, 0xc3, 0x25, 0xf2, 0xb3, 0x5e, 0x97, 0x4d, 0x30, 0x74, 0xd8, - 0x98, 0xc3, 0x36, 0x88, 0xb3, 0x8d, 0x71, 0xf3, 0x8f, 0x1f, 0x4b, 0xd7, 0xe6, 0x9a, 0x03, 0x0f, - 0x59, 0x9e, 0xe5, 0x9a, 0x9a, 0x3a, 0x78, 0x5e, 0xeb, 0x3c, 0x90, 0x7e, 0x7f, 0x00, 0x1c, 0x9d, - 0xa0, 0x9b, 0x1c, 0xd2, 0x96, 0x79, 0xba, 0x95, 0x21, 0x3c, 0xc7, 0x8b, 0x02, 0x9a, 0xe6, 0x53, - 0x02, 0x91, 0x58, 0x50, 0x9f, 0xb6, 0x8d, 0xfe, 0x97, 0xaf, 0x67, 0x33, 0x2f, 0xb5, 0xe6, 0xba, - 0x63, 0xc9, 0xbf, 0x3d, 0x1b, 0x54, 0x79, 0xb1, 0x58, 0xa2, 0xdd, 0x38, 0xaa, 0xb5, 0x9f, 0xb7, - 0xce, 0xa3, 0x54, 0xe4, 0x6b, 0xe0, 0x46, 0x07, 0x07, 0xbd, 0xe7, 0x2e, 0x87, 0x61, 0xe3, 0x9d, - 0xf4, 0x7f, 0x0b, 0x08, 0x6d, 0xd2, 0x3d, 0xe4, 0x44, 0x07, 0x5d, 0x16, 0xbf, 0x9f, 0x3c, 0xb9, - 0x40, 0xe8, 0xda, 0x9c, 0x21, 0xfa, 0xae, 0x19, 0xb0, 0xef, 0xf1, 0xa7, 0xe8, 0x18, 0x1b, 0xb2, - 0x4b, 0xbe, 0x4e, 0x7d, 0xd7, 0xdc, 0xd2, 0x5c, 0x13, 0xff, 0x3b, 0x17, 0xba, 0xc3, 0xa4, 0xa8, - 0x83, 0x70, 0x9f, 0xd6, 0x8b, 0xba, 0x0d, 0x90, 0xe3, 0x45, 0xdd, 0x16, 0x96, 0xe2, 0x64, 0x14, - 0xe4, 0xc4, 0xc5, 0x94, 0x35, 0x90, 0x29, 0xc0, 0x0d, 0x48, 0x53, 0xbb, 0xf0, 0xa8, 0xf0, 0x4c, - 0x6e, 0x5c, 0x4a, 0x5f, 0x18, 0x86, 0x60, 0x79, 0x14, 0x65, 0xbb, 0x26, 0x06, 0x5f, 0xee, 0x4e, - 0x0e, 0x0e, 0x25, 0x87, 0xf6, 0x82, 0x45, 0x43, 0xeb, 0x7b, 0x63, 0x74, 0x5f, 0xb7, 0xe1, 0xac, - 0x37, 0xd2, 0xa3, 0x1d, 0xea, 0x4a, 0xf5, 0x9d, 0x87, 0x3e, 0xfd, 0xcd, 0x89, 0x48, 0x3c, 0xe0, - 0x6f, 0x0c, 0x85, 0x1b, 0xd6, 0x47, 0x13, 0xa1, 0x48, 0x58, 0x8f, 0xe7, 0xc7, 0x11, 0xf9, 0xb2, - 0xd2, 0xc5, 0xe3, 0x3d, 0x25, 0x21, 0x6a, 0x1f, 0x46, 0xee, 0x3f, 0x09, 0x48, 0x24, 0x8a, 0x73, - 0xd8, 0xdf, 0xec, 0x14, 0xb1, 0x9a, 0x6e, 0x18, 0x4c, 0xdc, 0x71, 0x77, 0xf1, 0x20, 0x14, 0x93, - 0xdd, 0x82, 0x2a, 0xbf, 0x28, 0xde, 0x07, 0x06, 0x6a, 0x63, 0x2f, 0x51, 0x07, 0xe1, 0xbe, 0x37, - 0xb4, 0xde, 0x8b, 0x5b, 0x03, 0x34, 0xd1, 0x7a, 0xe9, 0x23, 0xa9, 0xb7, 0x5b, 0x31, 0x11, 0x03, - 0x59, 0xd8, 0x81, 0x94, 0x8f, 0xbe, 0xf1, 0x41, 0xaa, 0xef, 0xad, 0xcc, 0xc0, 0x80, 0xf6, 0xe6, - 0xa9, 0xd4, 0x91, 0x6b, 0x9c, 0xde, 0xcc, 0x5e, 0x6d, 0x4c, 0x48, 0xde, 0x30, 0xaa, 0x0b, 0x5e, - 0x71, 0x50, 0x40, 0xa8, 0x26, 0x12, 0x0b, 0x46, 0xc2, 0xf6, 0x54, 0x64, 0xd4, 0x39, 0xcf, 0x93, - 0x03, 0xa1, 0xf3, 0x0c, 0xa8, 0xf2, 0x23, 0x22, 0x75, 0x6b, 0xc5, 0x62, 0x50, 0xf7, 0x40, 0xe6, - 0xf2, 0xab, 0xda, 0xd0, 0x3b, 0xa9, 0xd6, 0xdd, 0xa5, 0xf3, 0x29, 0x07, 0xe8, 0xff, 0x84, 0x7a, - 0x57, 0xb2, 0x4a, 0x4e, 0xfb, 0x7f, 0x6f, 0xe9, 0x7c, 0xa7, 0xd1, 0x07, 0xc8, 0xd7, 0xf0, 0xd0, - 0x87, 0x04, 0x54, 0xbc, 0x29, 0xcc, 0x0d, 0xde, 0xc2, 0x7c, 0xf9, 0x5a, 0x36, 0xfc, 0x85, 0xb9, - 0x81, 0xe8, 0x04, 0xb6, 0xa8, 0xf2, 0x52, 0x51, 0xa4, 0xba, 0x04, 0x7e, 0xf4, 0x73, 0xf8, 0xd1, - 0xdb, 0x0d, 0xfd, 0xbe, 0x52, 0xb7, 0xd3, 0xd0, 0x9b, 0xc3, 0xa6, 0xc1, 0x17, 0xd5, 0xc6, 0xfc, - 0x21, 0x18, 0xb9, 0x55, 0x6d, 0xc0, 0xaa, 0xd8, 0xb0, 0xef, 0xc9, 0x01, 0x41, 0xc7, 0xbc, 0x5d, - 0x95, 0x57, 0x88, 0x5e, 0x18, 0x5f, 0x34, 0x12, 0xcc, 0xdc, 0xdc, 0x9d, 0xbe, 0x30, 0x5c, 0xae, - 0x5d, 0xde, 0xcb, 0xd6, 0xe1, 0xb5, 0x74, 0x4f, 0x9b, 0xbb, 0x3e, 0x12, 0x74, 0x8f, 0xbe, 0x7b, - 0x65, 0xb4, 0xf5, 0x50, 0xe9, 0xf4, 0x2c, 0x58, 0x32, 0x7e, 0x8f, 0x67, 0x9e, 0xd3, 0xf8, 0x83, - 0xf8, 0x93, 0x78, 0xf0, 0xc3, 0x02, 0x9a, 0x61, 0xf0, 0xce, 0x35, 0xfe, 0xad, 0x4a, 0x63, 0xdc, - 0x2a, 0x68, 0x65, 0x43, 0xb0, 0xa9, 0x94, 0x8d, 0x0d, 0x48, 0x67, 0xb4, 0x91, 0x08, 0x5a, 0x54, - 0x06, 0x01, 0x32, 0x38, 0xb3, 0x2f, 0xdd, 0xf7, 0x49, 0xa9, 0x4d, 0xd9, 0x58, 0xfb, 0xa6, 0x91, - 0x74, 0x8d, 0x47, 0xff, 0xe7, 0x02, 0x9a, 0x65, 0x7c, 0x92, 0xf3, 0xa8, 0x73, 0x12, 0xaf, 0xb2, - 0xc0, 0xd8, 0x3c, 0x2a, 0xc6, 0x09, 0x4d, 0x27, 0xf3, 0x33, 0xeb, 0x64, 0xae, 0x5e, 0xcc, 0x5c, - 0x78, 0xbb, 0xd4, 0xa6, 0x2c, 0x87, 0xb5, 0x0f, 0x48, 0x98, 0x8b, 0x66, 0x6b, 0x59, 0x8f, 0x8d, - 0xfe, 0x50, 0x38, 0x91, 0x73, 0x3d, 0x00, 0x62, 0x1c, 0xeb, 0xc1, 0x00, 0x9d, 0xd7, 0xe3, 0xca, - 0xd9, 0xf4, 0x9e, 0xeb, 0xa5, 0x36, 0x65, 0x63, 0xad, 0x47, 0x82, 0x74, 0x8d, 0x47, 0xff, 0x2f, - 0x10, 0x0f, 0x8b, 0xb2, 0xda, 0x9a, 0x98, 0x12, 0x54, 0xc2, 0x89, 0x90, 0xbf, 0xd1, 0x3a, 0x03, - 0x3b, 0x28, 0x5b, 0xd1, 0xdd, 0x1e, 0x30, 0x1e, 0xf5, 0x1c, 0x16, 0x54, 0x79, 0xb3, 0x38, 0xcf, - 0xa4, 0xf1, 0x30, 0x40, 0x40, 0x2a, 0x29, 0x7d, 0x88, 0xaa, 0x3e, 0xba, 0x0f, 0x25, 0x3f, 0x79, - 0x33, 0xdd, 0xd3, 0x06, 0xd1, 0xd7, 0x9f, 0x55, 0x76, 0xe6, 0x6c, 0x96, 0x43, 0xaf, 0x43, 0x4b, - 0x02, 0x7a, 0x8b, 0xca, 0x57, 0xe2, 0xac, 0xcf, 0xdf, 0x88, 0xff, 0x4d, 0x40, 0x77, 0x99, 0x8e, - 0x5f, 0x0e, 0x05, 0xb9, 0xcf, 0x74, 0x33, 0x16, 0x1e, 0x1c, 0x37, 0x6c, 0x3c, 0xea, 0xf9, 0x3d, - 0x55, 0x7e, 0x52, 0x9c, 0x67, 0xb2, 0xe3, 0x59, 0xf0, 0x30, 0x0f, 0x64, 0x50, 0x07, 0x20, 0x32, - 0xdf, 0x87, 0x4a, 0x27, 0x3c, 0x5f, 0xbc, 0xe4, 0xff, 0x45, 0x40, 0x77, 0x99, 0xf4, 0x9e, 0xb9, - 0xa6, 0xec, 0x00, 0x68, 0x3b, 0x65, 0x47, 0xd8, 0x78, 0xd4, 0xd3, 0xa4, 0xca, 0x92, 0x78, 0x97, - 0x49, 0xad, 0x6a, 0x40, 0x94, 0x3a, 0x55, 0xc0, 0xb2, 0x7a, 0x27, 0xbe, 0xac, 0xff, 0x24, 0xa0, - 0x59, 0x9c, 0xc6, 0x8d, 0x9b, 0x61, 0x59, 0x0e, 0xc5, 0x9c, 0x79, 0x7e, 0x8b, 0xc6, 0x09, 0x19, - 0x8f, 0x7a, 0xfe, 0x7f, 0xaa, 0x5c, 0xef, 0xb8, 0xb1, 0xa9, 0x62, 0xaa, 0xd2, 0xaa, 0xd3, 0xcb, - 0xd9, 0x00, 0x24, 0x09, 0x71, 0xe1, 0x78, 0xe6, 0x2e, 0xfe, 0x99, 0x80, 0x66, 0xd5, 0x85, 0x43, - 0x89, 0x55, 0x4a, 0x50, 0x81, 0xbc, 0x7e, 0x4c, 0x78, 0xb2, 0xcc, 0xd7, 0x16, 0xcc, 0x76, 0xbe, - 0x0e, 0x90, 0xf1, 0x28, 0x3e, 0xa1, 0x97, 0x88, 0xb3, 0xb5, 0x8e, 0x93, 0xda, 0x85, 0xfd, 0x5a, - 0xd7, 0x31, 0xf0, 0x80, 0x61, 0x8a, 0x68, 0x87, 0xf2, 0x1c, 0x92, 0x51, 0x28, 0x1c, 0x4a, 0x6c, - 0xd3, 0x75, 0x6d, 0x44, 0xcc, 0x16, 0xd0, 0x1d, 0x72, 0x30, 0x48, 0xbf, 0xae, 0x04, 0xd9, 0x6c, - 0xec, 0xf4, 0x68, 0xd9, 0x40, 0x78, 0x2e, 0x0f, 0x8c, 0x0b, 0x2e, 0x1e, 0xf5, 0xc4, 0x08, 0x29, - 0x6a, 0x97, 0xf7, 0x32, 0x2d, 0xe2, 0x6b, 0x67, 0xf0, 0x6d, 0xc8, 0x34, 0xa1, 0xdc, 0xd5, 0x60, - 0x24, 0xf7, 0xd8, 0x5d, 0xf2, 0xfc, 0xc1, 0xe0, 0x36, 0xf6, 0x51, 0x6e, 0x72, 0x97, 0x04, 0x34, - 0x85, 0xcb, 0x15, 0x65, 0xbd, 0xdb, 0x72, 0x95, 0x8e, 0x77, 0x5b, 0x13, 0x8c, 0x71, 0x44, 0x2c, - 0x16, 0xa7, 0xeb, 0x79, 0xa6, 0xc0, 0x11, 0xb8, 0x74, 0x4e, 0x56, 0x01, 0xcd, 0xd2, 0x67, 0xc8, - 0xea, 0xf3, 0x3c, 0x25, 0x4e, 0xee, 0x1e, 0x78, 0xb8, 0x97, 0x05, 0x34, 0x85, 0xcb, 0xc8, 0x23, - 0x7a, 0x9c, 0x58, 0x5d, 0xae, 0xe1, 0x9a, 0x60, 0xe8, 0x70, 0x7f, 0x8a, 0x4f, 0xb4, 0xe9, 0x7a, - 0x36, 0x1f, 0x3a, 0xdc, 0x59, 0x59, 0x05, 0xbc, 0x7d, 0xb1, 0xd4, 0xe3, 0xe8, 0x82, 0xa3, 0xbb, - 0xa5, 0xe0, 0x21, 0x7f, 0x2c, 0xa0, 0x29, 0x5c, 0x46, 0x14, 0x27, 0x63, 0x7b, 0xee, 0x21, 0x9b, - 0x60, 0x0c, 0xd1, 0x54, 0x12, 0x67, 0x32, 0x6e, 0x15, 0x69, 0x0e, 0xd2, 0x41, 0xcf, 0xe3, 0x2d, - 0x44, 0x01, 0xa3, 0x82, 0x1b, 0xfc, 0x42, 0xef, 0x38, 0x06, 0x2f, 0xbe, 0x27, 0xa0, 0x42, 0x72, - 0x80, 0xe2, 0x61, 0x2f, 0xb0, 0x3d, 0x5a, 0xb9, 0x31, 0xbb, 0x9d, 0x01, 0xe8, 0x80, 0x9f, 0xc7, - 0x5b, 0x62, 0x0a, 0x63, 0x34, 0x91, 0xe6, 0x60, 0xe9, 0x02, 0x5e, 0xc5, 0x41, 0xbf, 0x6b, 0x1d, - 0xac, 0x38, 0x9e, 0xc1, 0x9e, 0x76, 0xa1, 0x22, 0x3d, 0xef, 0x85, 0x55, 0x8e, 0xd6, 0xab, 0x1c, - 0xe5, 0x68, 0x0e, 0x82, 0x8e, 0xf7, 0x4f, 0x05, 0x55, 0xbe, 0x28, 0x88, 0x33, 0xb9, 0x11, 0x53, - 0xfe, 0xa9, 0xe6, 0x30, 0x8a, 0xe8, 0x50, 0xdf, 0x86, 0x49, 0xa4, 0x54, 0x74, 0x24, 0x1f, 0x7c, - 0xc3, 0x9b, 0xc6, 0x51, 0xea, 0xe6, 0xfa, 0x1a, 0xab, 0x4a, 0xc7, 0x5c, 0xcf, 0x70, 0x75, 0xff, - 0x58, 0x60, 0x14, 0x61, 0x3f, 0xc1, 0x0b, 0x2c, 0xea, 0x24, 0xbe, 0xb9, 0xbe, 0x86, 0x6a, 0x00, - 0x4a, 0xf8, 0x32, 0x0b, 0xcd, 0xdb, 0x2b, 0x75, 0xc9, 0xa0, 0x5b, 0xa2, 0x01, 0x4c, 0x43, 0x9f, - 0x08, 0x68, 0x1a, 0x47, 0xb5, 0xb6, 0x43, 0x37, 0xd7, 0x3b, 0x0e, 0x3d, 0x1b, 0x8c, 0x0e, 0xfd, - 0x05, 0x55, 0xf6, 0x30, 0x9d, 0x67, 0x72, 0xe8, 0x70, 0x4b, 0x34, 0xc0, 0x64, 0x59, 0xf8, 0xc5, - 0x0d, 0xd7, 0x5e, 0xdb, 0xc9, 0x86, 0xcb, 0xf9, 0xa4, 0xbd, 0xd2, 0x12, 0x0d, 0x50, 0x26, 0xf0, - 0x67, 0x02, 0x9a, 0xc6, 0xd1, 0xb0, 0xed, 0x04, 0xcc, 0xf5, 0x8e, 0x13, 0xc8, 0x06, 0xa3, 0x13, - 0x68, 0x54, 0xe5, 0xe5, 0xe2, 0x2c, 0x8e, 0x1b, 0xb8, 0xf5, 0x51, 0x97, 0xce, 0xb1, 0x70, 0x04, - 0xb7, 0x79, 0x4a, 0x95, 0xde, 0x89, 0x4d, 0x49, 0xbc, 0xea, 0x42, 0xc5, 0x3a, 0xc1, 0xe0, 0xd9, - 0xdc, 0xeb, 0x48, 0x4e, 0xdc, 0x5c, 0x16, 0xe6, 0x06, 0xa2, 0x33, 0xf9, 0x1b, 0x41, 0x95, 0x2f, - 0x0b, 0xe2, 0x2c, 0x8e, 0xec, 0xdc, 0x9b, 0xeb, 0x6b, 0x28, 0xe9, 0x1d, 0xcb, 0x4d, 0x7a, 0x06, - 0xe4, 0xb7, 0x41, 0x7e, 0xf3, 0xc4, 0x5c, 0x3b, 0x59, 0xfc, 0x4c, 0x40, 0x33, 0x38, 0x36, 0xd3, - 0x40, 0xee, 0x9a, 0x0f, 0xe4, 0x60, 0x44, 0x0d, 0xfc, 0x35, 0xb3, 0x6c, 0x6c, 0x40, 0xc3, 0xa1, - 0xa6, 0x4e, 0x2c, 0xe1, 0xf1, 0x07, 0xaf, 0x53, 0x74, 0xb3, 0x24, 0xc1, 0x20, 0x5d, 0x54, 0x3d, - 0x98, 0xbf, 0x76, 0xe5, 0x14, 0x4b, 0x94, 0x0b, 0x8f, 0x5a, 0xb8, 0x0d, 0xe2, 0x15, 0xcb, 0x9c, - 0x26, 0x06, 0x5d, 0x73, 0x9c, 0xf8, 0x0f, 0xc1, 0xbd, 0x60, 0x73, 0x7d, 0x4d, 0x4d, 0x28, 0x68, - 0xa3, 0x31, 0x33, 0xea, 0x1c, 0x35, 0x49, 0x3c, 0x88, 0xb1, 0xbf, 0x9f, 0x12, 0xef, 0x84, 0x39, - 0xb5, 0x44, 0x03, 0xee, 0x40, 0x28, 0xc8, 0xcc, 0xac, 0x34, 0x9c, 0x20, 0xd9, 0x9a, 0xfc, 0x6c, - 0x5a, 0xa2, 0x81, 0x74, 0x4f, 0x1b, 0x06, 0x1c, 0xf3, 0x34, 0x69, 0x89, 0x06, 0x30, 0x9c, 0xbe, - 0xbf, 0xff, 0x83, 0x80, 0xa6, 0xd7, 0x64, 0xbd, 0x2d, 0x77, 0xe0, 0x82, 0x3a, 0x00, 0x9b, 0xcd, - 0x03, 0x63, 0xc2, 0xd1, 0x29, 0xfd, 0x4a, 0x95, 0x9f, 0x66, 0x22, 0x12, 0x75, 0xde, 0x1a, 0x6e, - 0x2b, 0xad, 0xc8, 0x2a, 0x00, 0x9b, 0xea, 0xad, 0x91, 0x2e, 0xaa, 0xdf, 0x1f, 0xb9, 0x9e, 0x6a, - 0xbd, 0x90, 0x1c, 0x19, 0x4c, 0x8f, 0xbc, 0xcb, 0xd4, 0xc4, 0xf7, 0x78, 0xe6, 0x3a, 0xdc, 0xae, - 0x89, 0x3b, 0x3b, 0x66, 0x40, 0x7f, 0x24, 0xa0, 0xe9, 0x9b, 0xb2, 0x9e, 0x91, 0xdf, 0xef, 0x7c, - 0xdf, 0xcf, 0x3d, 0x21, 0x0b, 0x1c, 0x9d, 0xd0, 0x8b, 0x9c, 0x10, 0xa5, 0xd7, 0x32, 0x21, 0x4a, - 0x2f, 0xe0, 0xf9, 0x4e, 0xa9, 0x37, 0xd7, 0xc0, 0x2b, 0x5f, 0xe1, 0x32, 0x25, 0x11, 0x3e, 0xfa, - 0x47, 0x2e, 0x34, 0xbd, 0x36, 0xeb, 0x01, 0xfe, 0xfd, 0xce, 0x9e, 0x89, 0xb9, 0xa7, 0x61, 0x81, - 0xa3, 0xd3, 0xf8, 0xad, 0xa0, 0xca, 0xef, 0x0a, 0x78, 0x65, 0x30, 0xd7, 0x34, 0x26, 0x72, 0x54, - 0xe0, 0xf9, 0xa8, 0x5e, 0x8e, 0xb9, 0xc6, 0x8d, 0xd7, 0xf5, 0x9f, 0xa9, 0xde, 0xce, 0xf4, 0xd1, - 0x13, 0x5a, 0xdf, 0x1b, 0xe9, 0x9e, 0x36, 0x5c, 0x98, 0x3a, 0x7e, 0x0d, 0x2c, 0x00, 0x5a, 0xfb, - 0xee, 0x4c, 0xff, 0x60, 0xfa, 0xcd, 0x0f, 0x53, 0x07, 0xcf, 0x43, 0x47, 0x3a, 0xbf, 0xc9, 0xbc, - 0xb3, 0x1b, 0x4a, 0x52, 0xbd, 0x9d, 0xeb, 0xa8, 0x5e, 0x9c, 0xad, 0x3f, 0xb1, 0x2f, 0x7c, 0x4c, - 0xf5, 0x8c, 0x23, 0x43, 0x5a, 0xc7, 0x35, 0x0a, 0xca, 0x58, 0x16, 0xc1, 0x64, 0xb9, 0x77, 0x02, - 0x98, 0x14, 0xff, 0x40, 0x40, 0xc5, 0xd4, 0x20, 0x05, 0x38, 0x74, 0x32, 0x57, 0x99, 0x10, 0xb8, - 0x30, 0x37, 0x10, 0xc5, 0x9e, 0x82, 0xef, 0x63, 0xd3, 0x0d, 0x9b, 0x16, 0xe0, 0x6e, 0x1e, 0x2f, - 0xe9, 0xad, 0x33, 0xc6, 0xc2, 0x6d, 0x86, 0x72, 0x71, 0x22, 0x53, 0xf8, 0x27, 0x01, 0xdc, 0xd3, - 0x38, 0xe7, 0x4b, 0x98, 0xca, 0x83, 0x39, 0xae, 0xca, 0x96, 0x29, 0x95, 0x8f, 0x0f, 0x98, 0x4e, - 0x6d, 0x97, 0x2a, 0xaf, 0x10, 0xe7, 0xf3, 0x3e, 0x67, 0x74, 0x8d, 0x09, 0x18, 0xe5, 0x46, 0x34, - 0x5d, 0x14, 0xef, 0xd2, 0x49, 0x5e, 0xef, 0xeb, 0xf7, 0xe8, 0xe5, 0xa2, 0x34, 0x11, 0xc7, 0x4c, - 0x32, 0xf9, 0xb8, 0xf8, 0xb1, 0x0b, 0x4d, 0x65, 0x7e, 0x85, 0x30, 0xd1, 0x85, 0x4e, 0x6e, 0x87, - 0xa6, 0x19, 0xde, 0x37, 0x06, 0x14, 0x9d, 0xda, 0xdf, 0x9a, 0x0e, 0xdd, 0xec, 0x39, 0x39, 0x1f, - 0xba, 0x59, 0x90, 0xdf, 0xc6, 0xa1, 0x3b, 0x5f, 0xcc, 0xc9, 0xfd, 0xc4, 0xff, 0x2e, 0xa0, 0x19, - 0x6b, 0x23, 0x2d, 0x0a, 0x75, 0x04, 0x07, 0xe4, 0x59, 0x98, 0x41, 0x36, 0x84, 0xe3, 0xa9, 0x6b, - 0x05, 0xa4, 0x28, 0xec, 0x12, 0x54, 0x79, 0x3d, 0x33, 0x76, 0xa4, 0x2f, 0x0c, 0x1b, 0x96, 0xcc, - 0x2b, 0x67, 0x4a, 0x1f, 0xd6, 0x2e, 0xef, 0xa5, 0x1e, 0x40, 0x1f, 0x7f, 0x80, 0x59, 0x84, 0x4e, - 0xe1, 0x1c, 0x20, 0xe6, 0xf6, 0x24, 0xa0, 0x50, 0x7a, 0xe8, 0x6a, 0xba, 0xff, 0x2c, 0xa3, 0x6d, - 0x7b, 0x1f, 0x19, 0x07, 0xc2, 0xd0, 0xad, 0x83, 0x87, 0x5d, 0xe8, 0x4e, 0x9f, 0xd2, 0xc4, 0x46, - 0xbb, 0x2a, 0x16, 0x69, 0x72, 0x20, 0x10, 0x3b, 0x28, 0x47, 0x02, 0xb1, 0x07, 0xa6, 0x28, 0x38, - 0x49, 0xcc, 0x5a, 0xb3, 0xf4, 0xd9, 0xa4, 0x2f, 0x0c, 0x8f, 0x9e, 0x60, 0x1e, 0xcf, 0xab, 0xcd, - 0x2e, 0xe0, 0xc9, 0xe1, 0x83, 0x3a, 0x5c, 0x72, 0xb0, 0x0f, 0x40, 0x49, 0x38, 0x8e, 0xbd, 0xa9, - 0x37, 0x06, 0x32, 0x03, 0x14, 0x27, 0xc9, 0xe1, 0x03, 0xe9, 0xb6, 0x6b, 0x5a, 0xef, 0x45, 0xe6, - 0xe4, 0xd9, 0x07, 0x38, 0xf1, 0x7e, 0x11, 0x9c, 0x7c, 0x9e, 0x87, 0x66, 0xd6, 0x34, 0x2a, 0xfe, - 0x30, 0xf5, 0xce, 0x05, 0x84, 0x58, 0x7d, 0x58, 0xb2, 0x41, 0x18, 0x36, 0x16, 0x8d, 0x03, 0x92, - 0x59, 0xf8, 0xf2, 0x54, 0xf9, 0x4f, 0x5d, 0xe2, 0x1c, 0xde, 0x20, 0x47, 0x67, 0xca, 0x96, 0xbe, - 0xf4, 0x92, 0x6b, 0x9c, 0x28, 0xb9, 0x7e, 0x3a, 0x39, 0x7c, 0x50, 0x47, 0x80, 0x5e, 0xae, 0x5d, - 0xbf, 0x96, 0x1a, 0x6c, 0x4f, 0x1f, 0xda, 0x0b, 0x32, 0x02, 0xff, 0xa9, 0xcf, 0x5a, 0xf7, 0x18, - 0x56, 0xe9, 0xc1, 0x21, 0x6d, 0x64, 0x4f, 0xaa, 0x8f, 0xfe, 0xc4, 0x0d, 0x6f, 0xbc, 0xae, 0xd7, - 0x42, 0x5c, 0x7a, 0x9a, 0x53, 0x12, 0xce, 0xaa, 0xe1, 0xf6, 0xcc, 0xab, 0x37, 0xd2, 0x67, 0xfb, - 0x31, 0xcd, 0x91, 0xfe, 0xe1, 0x3d, 0x0b, 0x40, 0x82, 0x78, 0x02, 0x47, 0x5a, 0xe6, 0xd5, 0x1b, - 0xc9, 0x9b, 0x27, 0x33, 0x03, 0x2c, 0xe2, 0x15, 0x01, 0xd6, 0x3e, 0xfe, 0x20, 0x3d, 0xdc, 0xad, - 0xf5, 0x77, 0xa5, 0x3a, 0x0e, 0xe9, 0xfc, 0x00, 0x22, 0xa9, 0x40, 0x9f, 0x99, 0x9b, 0x6f, 0x6a, - 0x43, 0xef, 0xdc, 0x1a, 0xe9, 0xa2, 0xe1, 0x55, 0x5a, 0x7b, 0x32, 0x37, 0xf7, 0xd1, 0xa7, 0xa7, - 0x3d, 0x6d, 0x1b, 0xfd, 0xf1, 0x1d, 0x40, 0x05, 0x99, 0x81, 0x77, 0xd2, 0xc3, 0x7b, 0x81, 0xea, - 0x19, 0x2d, 0x3c, 0xe6, 0x5d, 0x3e, 0x81, 0x75, 0x27, 0x65, 0x6c, 0xf1, 0x2f, 0xe5, 0xa3, 0x3b, - 0x2c, 0xeb, 0xb5, 0x59, 0xb2, 0xea, 0x99, 0x6d, 0x80, 0x1c, 0xcd, 0xe5, 0xb6, 0xb0, 0x74, 0x0b, - 0x0c, 0xe7, 0xa9, 0xf2, 0xff, 0x74, 0x89, 0xcf, 0xe4, 0xd8, 0x02, 0x7a, 0xf8, 0x99, 0x5f, 0x37, - 0x2b, 0xb1, 0x9d, 0x34, 0x03, 0x37, 0xd9, 0x13, 0x80, 0x1b, 0xc0, 0xe8, 0x0f, 0x3b, 0xe6, 0x4b, - 0xec, 0x98, 0x87, 0x6d, 0x76, 0x8c, 0x34, 0xf6, 0x8e, 0x11, 0xff, 0x13, 0xbd, 0xac, 0x99, 0x58, - 0xc5, 0xb8, 0xe4, 0xa4, 0xb2, 0x1c, 0xef, 0x01, 0xcc, 0x4c, 0x22, 0xae, 0xca, 0x8f, 0x89, 0x33, - 0x60, 0xbc, 0xf8, 0xa3, 0xf4, 0xb8, 0xa5, 0xee, 0xc7, 0xda, 0x95, 0x53, 0xc9, 0xa1, 0x83, 0x3a, - 0x27, 0xc4, 0xfc, 0x14, 0xc4, 0x0d, 0x4e, 0x98, 0x58, 0x2a, 0x4e, 0x94, 0x0f, 0x8a, 0xff, 0x28, - 0x98, 0x1e, 0x3c, 0x30, 0x32, 0x58, 0x34, 0xd6, 0xa8, 0x0d, 0x2a, 0xf0, 0x8e, 0x07, 0xf4, 0x6b, - 0x9d, 0xa2, 0x34, 0xc6, 0x14, 0xf3, 0xd0, 0x6c, 0xb8, 0xa4, 0x90, 0xf2, 0x5a, 0x25, 0x1e, 0x8a, - 0x29, 0xc4, 0x53, 0x49, 0x74, 0x30, 0xd6, 0x66, 0xc3, 0xb1, 0xa9, 0x2e, 0x1e, 0x2f, 0x38, 0x9d, - 0x6e, 0xca, 0xa5, 0xca, 0x67, 0x5d, 0xe2, 0x5d, 0x70, 0xe7, 0xe1, 0x20, 0xa8, 0x2a, 0xa6, 0xdd, - 0x95, 0x7d, 0x1b, 0x1a, 0xec, 0xb3, 0x40, 0x51, 0x97, 0x22, 0x50, 0x3f, 0x8d, 0xf4, 0x68, 0x03, - 0x23, 0x99, 0x7d, 0x1f, 0xea, 0x2d, 0xe8, 0xee, 0xd7, 0x83, 0x10, 0x8c, 0x1c, 0xd5, 0xda, 0xcf, - 0xd3, 0xe0, 0xf9, 0x84, 0x0a, 0x74, 0x9b, 0x87, 0x76, 0xfd, 0x1a, 0x18, 0x09, 0x58, 0x64, 0x42, - 0x83, 0xc2, 0xe1, 0x3e, 0x91, 0xee, 0x69, 0x0b, 0x1a, 0x1f, 0xd7, 0xba, 0xdf, 0xcb, 0xbc, 0x7a, - 0x23, 0x35, 0x70, 0x44, 0xbb, 0xf1, 0xba, 0xd6, 0x79, 0x20, 0x73, 0x81, 0xb8, 0xd2, 0x9c, 0xbb, - 0xa0, 0x53, 0x6e, 0x6a, 0xe0, 0x48, 0xf2, 0xfa, 0x7e, 0xad, 0xf3, 0x80, 0x76, 0xb9, 0xfb, 0xd6, - 0xc8, 0x9b, 0xc6, 0xdd, 0x65, 0x5f, 0xb7, 0x76, 0xb9, 0x9b, 0x5f, 0x42, 0x68, 0x9b, 0x19, 0xf8, - 0x18, 0xb8, 0x9b, 0x85, 0x4b, 0x92, 0x85, 0x7d, 0xdc, 0xf3, 0xf0, 0x04, 0xf6, 0x2e, 0x1d, 0x28, - 0xe3, 0xe6, 0x43, 0x2e, 0xbb, 0x25, 0x26, 0x69, 0x2b, 0xc6, 0xb1, 0xc4, 0x18, 0x6e, 0x02, 0x4b, - 0x0c, 0xe0, 0x74, 0x89, 0xff, 0x40, 0x50, 0xe5, 0xdf, 0xcb, 0x5a, 0x61, 0x0c, 0x40, 0x57, 0xd8, - 0x6f, 0x5d, 0x60, 0xce, 0x4b, 0x09, 0x80, 0xd2, 0x3d, 0x6d, 0x5c, 0x43, 0xdd, 0xdf, 0x8d, 0x20, - 0x7a, 0x18, 0xb3, 0xfd, 0x37, 0x06, 0x92, 0x37, 0xfb, 0x53, 0x7d, 0x6f, 0xd3, 0x67, 0x4d, 0x83, - 0x07, 0x92, 0x83, 0xad, 0x99, 0x7d, 0x1f, 0x42, 0x9c, 0x83, 0x2f, 0x8e, 0xbc, 0x78, 0x68, 0x17, - 0x41, 0xde, 0x87, 0x2e, 0xe6, 0xf9, 0x40, 0x20, 0xd6, 0x86, 0xc2, 0x6b, 0xfd, 0x2f, 0x13, 0xdc, - 0x95, 0xe7, 0x40, 0x86, 0x01, 0x36, 0x86, 0xe7, 0x83, 0x05, 0x9a, 0x62, 0xee, 0x06, 0xf1, 0xa9, - 0x9b, 0x03, 0x08, 0x6a, 0x0a, 0x85, 0x71, 0x65, 0x65, 0x13, 0x00, 0x51, 0xec, 0xfd, 0x62, 0x7c, - 0xd8, 0x83, 0x34, 0x67, 0xf8, 0xff, 0x97, 0xbb, 0x47, 0x4f, 0x1c, 0x1a, 0x7d, 0xeb, 0x24, 0x8f, - 0x3b, 0xed, 0x40, 0x77, 0xe6, 0xf2, 0xab, 0xda, 0xb9, 0x1e, 0x1d, 0x07, 0x40, 0x2d, 0x20, 0x41, - 0x78, 0x26, 0x22, 0x41, 0x6c, 0x8d, 0x34, 0x87, 0x75, 0xb4, 0x75, 0x98, 0xf7, 0x9c, 0x1c, 0xdf, - 0x18, 0x6a, 0x52, 0x7c, 0xfe, 0x70, 0x43, 0xee, 0x3d, 0xc7, 0xc1, 0x8d, 0x67, 0xcf, 0x99, 0xc0, - 0x29, 0xe6, 0x0e, 0x0a, 0xf0, 0x46, 0xce, 0xe4, 0x5d, 0x71, 0x46, 0xeb, 0xef, 0x49, 0x1d, 0xbf, - 0x96, 0xea, 0x7c, 0x17, 0x9e, 0x53, 0xa6, 0xfb, 0x8e, 0xa5, 0x8f, 0x9e, 0x2f, 0x1d, 0x17, 0xd4, - 0x17, 0x40, 0x45, 0x22, 0xd4, 0xa4, 0xc4, 0xf0, 0xa8, 0x88, 0xa7, 0x89, 0x8b, 0xe4, 0xc9, 0xb2, - 0xa6, 0x4d, 0xae, 0xde, 0xc9, 0x72, 0x77, 0x97, 0xdb, 0x9c, 0x95, 0x8e, 0x29, 0xb3, 0xad, 0x5b, - 0x29, 0x67, 0x52, 0x66, 0xcf, 0xb0, 0xa0, 0xca, 0xbf, 0x2f, 0x56, 0xd0, 0x08, 0x2f, 0x1c, 0xe7, - 0xc9, 0x7a, 0x0e, 0x09, 0x8f, 0x74, 0x21, 0x65, 0x73, 0xe9, 0x5a, 0xc3, 0xdf, 0x0e, 0x54, 0x35, - 0x44, 0x4d, 0x98, 0x1c, 0x3a, 0x6c, 0x6d, 0xc7, 0x72, 0x81, 0x67, 0x3d, 0xde, 0x49, 0x28, 0xe1, - 0x80, 0x12, 0x06, 0xad, 0x6b, 0x8e, 0xcb, 0xbc, 0x71, 0x6f, 0xcf, 0xc2, 0x61, 0x9c, 0xcc, 0x42, - 0x3c, 0xe4, 0x42, 0x73, 0x37, 0xc6, 0xfc, 0xe1, 0xb8, 0xbe, 0xcf, 0x37, 0x46, 0xd6, 0x71, 0xf1, - 0xd0, 0xc4, 0x65, 0xd9, 0xd8, 0xc8, 0x05, 0xcd, 0x50, 0xb8, 0x7c, 0x62, 0x8d, 0x28, 0x26, 0xdb, - 0x04, 0x55, 0x5e, 0x25, 0xce, 0xd7, 0xb7, 0x4b, 0xe6, 0xc6, 0x25, 0xf2, 0x66, 0x81, 0x6a, 0x20, - 0xa9, 0x51, 0x71, 0x61, 0x8e, 0xfa, 0x74, 0x67, 0x07, 0xe7, 0xf9, 0xf2, 0x90, 0x67, 0xd9, 0x44, - 0x36, 0x15, 0x9b, 0xf1, 0x51, 0x17, 0x2a, 0x59, 0x49, 0x62, 0xa1, 0xea, 0x03, 0x96, 0x9b, 0x13, - 0x11, 0x12, 0xfa, 0xd1, 0xfa, 0x9c, 0xc3, 0x09, 0x92, 0xa1, 0x62, 0xc9, 0xf8, 0x1b, 0x50, 0x34, - 0x1c, 0x05, 0x0a, 0x83, 0xe0, 0xac, 0xc6, 0x64, 0x61, 0x33, 0x10, 0xef, 0x5c, 0x9d, 0x82, 0x4a, - 0x4d, 0x50, 0xf4, 0xc0, 0x23, 0x20, 0xa0, 0x96, 0x85, 0xa7, 0xfc, 0x04, 0x19, 0x4f, 0x7b, 0x1e, - 0x9f, 0x00, 0x32, 0x18, 0xa7, 0x53, 0x2a, 0x21, 0x2a, 0x2c, 0x26, 0xb4, 0x13, 0x2e, 0x74, 0x77, - 0x6d, 0x28, 0xee, 0x80, 0x18, 0xcb, 0x3c, 0x1d, 0x41, 0x19, 0x66, 0x96, 0x4e, 0xa0, 0x05, 0x45, - 0xcd, 0x31, 0x8a, 0x9a, 0xf6, 0xab, 0xa3, 0xc7, 0xfb, 0xc6, 0x44, 0x0d, 0x07, 0x95, 0x13, 0x35, - 0xb2, 0xe7, 0x89, 0x2f, 0x84, 0x9a, 0x20, 0x8c, 0x17, 0xe3, 0xe6, 0x6d, 0xc8, 0x43, 0x69, 0x1b, - 0x3a, 0xc8, 0xba, 0x67, 0xc6, 0x08, 0x17, 0x65, 0xdd, 0x33, 0x63, 0x45, 0x25, 0xf2, 0xbc, 0x4d, - 0xd4, 0x1d, 0x25, 0x7c, 0x98, 0x29, 0x3e, 0x1e, 0x51, 0x29, 0xb5, 0x46, 0xb0, 0xd0, 0x62, 0xc0, - 0x6e, 0xc0, 0xb6, 0x42, 0xe3, 0x5f, 0x75, 0x1c, 0xcb, 0xb4, 0xb6, 0xeb, 0xa2, 0x1c, 0x34, 0xd6, - 0x63, 0x1b, 0x71, 0xa7, 0x7d, 0x95, 0xf8, 0xa8, 0xfd, 0x33, 0x41, 0xd2, 0x31, 0xbc, 0x13, 0xa4, - 0xe1, 0xcb, 0x7e, 0x53, 0xa9, 0x47, 0x36, 0x6b, 0x26, 0x88, 0xe8, 0x17, 0x10, 0x02, 0x13, 0x04, - 0x09, 0xe3, 0xe2, 0x10, 0x7c, 0x06, 0xd7, 0x39, 0x7b, 0xf6, 0x72, 0x20, 0x86, 0x17, 0xe3, 0x72, - 0xb1, 0x98, 0xda, 0x75, 0x21, 0xdc, 0xc5, 0x42, 0x1a, 0x83, 0xe5, 0xe8, 0xcd, 0xd4, 0xf1, 0x6b, - 0xa3, 0xc7, 0x3f, 0xcc, 0xdc, 0x3c, 0x94, 0x39, 0xdb, 0x95, 0xee, 0x69, 0xd3, 0x0e, 0x1d, 0xd4, - 0xba, 0x2f, 0x73, 0x51, 0x59, 0xec, 0x1d, 0xfa, 0x13, 0xfe, 0xf8, 0x0e, 0xbc, 0xac, 0xaf, 0xba, - 0x50, 0x11, 0x09, 0x1a, 0x43, 0xc6, 0xeb, 0xb6, 0x8d, 0x27, 0xc3, 0x0f, 0xf7, 0x9e, 0x1c, 0x10, - 0x74, 0xb4, 0x97, 0x89, 0xcc, 0x36, 0x83, 0x06, 0x9b, 0x21, 0x51, 0x64, 0x70, 0x7d, 0xe9, 0x76, - 0x1a, 0x63, 0x86, 0x94, 0x60, 0xc4, 0x93, 0x31, 0x96, 0xbb, 0x69, 0x5c, 0x6f, 0x02, 0x0e, 0x11, - 0xbc, 0x17, 0xbb, 0xe1, 0x57, 0x72, 0xb8, 0x7d, 0xf4, 0xc4, 0xa1, 0xe4, 0xd0, 0x41, 0x68, 0x03, - 0x0d, 0x92, 0x83, 0x47, 0x92, 0xc3, 0x07, 0x41, 0x6c, 0x86, 0xf2, 0x78, 0x42, 0x89, 0x62, 0x2e, - 0x71, 0x61, 0x7f, 0xaa, 0xf3, 0x42, 0xe6, 0x6c, 0x57, 0x8e, 0xf0, 0x15, 0x78, 0xda, 0x95, 0xaf, - 0xe0, 0xff, 0x9b, 0xc2, 0xd0, 0x0c, 0xba, 0x50, 0xe1, 0x86, 0x1d, 0xa1, 0x28, 0x41, 0x82, 0xc5, - 0xfb, 0x82, 0xd5, 0x38, 0x7a, 0x5f, 0x18, 0x00, 0x14, 0x05, 0x19, 0x41, 0x95, 0x3f, 0x14, 0xc4, - 0xd9, 0x99, 0x8f, 0xaf, 0x66, 0x6e, 0xee, 0xe3, 0xc7, 0x4a, 0x30, 0x71, 0x42, 0xc8, 0x89, 0x0a, - 0x68, 0xc5, 0x50, 0xc1, 0xff, 0xc2, 0x67, 0x23, 0xf9, 0x83, 0xef, 0x92, 0x47, 0x4b, 0x72, 0x70, - 0x7f, 0x72, 0xb0, 0x35, 0xd5, 0x77, 0x9e, 0xc7, 0x47, 0xb9, 0x9b, 0x82, 0x5c, 0xdf, 0x3f, 0x7a, - 0xfc, 0xc3, 0x54, 0x6f, 0x67, 0xfa, 0xcd, 0xc1, 0xe4, 0x90, 0x9a, 0xfc, 0xe4, 0x64, 0xe6, 0xa3, - 0x63, 0xc9, 0xc1, 0x03, 0xda, 0xf0, 0x50, 0xa6, 0xbf, 0x1f, 0xbe, 0x03, 0x16, 0xc8, 0xd2, 0xfb, - 0xc6, 0xc4, 0x5d, 0x7c, 0x47, 0x88, 0x18, 0xbb, 0xce, 0xea, 0x2f, 0x42, 0xec, 0x77, 0xbc, 0x51, - 0x37, 0xc6, 0x8b, 0x10, 0x13, 0x02, 0xd7, 0xa8, 0xf2, 0x7c, 0x11, 0x81, 0x70, 0x45, 0x50, 0x36, - 0xc3, 0xf8, 0x9b, 0x33, 0x63, 0xd8, 0xfb, 0x7d, 0x9b, 0x06, 0x8a, 0xc7, 0x78, 0x4a, 0x40, 0x08, - 0x0c, 0x50, 0xf6, 0x63, 0x34, 0xea, 0x1c, 0xc7, 0xc8, 0x83, 0xd0, 0x31, 0xd6, 0x91, 0x31, 0x82, - 0x81, 0x08, 0xc6, 0xc8, 0x9b, 0xac, 0x70, 0x09, 0xf8, 0x76, 0x7b, 0xc7, 0x1c, 0xa3, 0x78, 0x12, - 0x1e, 0x68, 0x91, 0xd1, 0xd9, 0x3d, 0xd0, 0xe2, 0x87, 0xb6, 0xc0, 0xb1, 0x9e, 0x8e, 0xeb, 0x39, - 0x55, 0xbe, 0x9f, 0x3d, 0xd0, 0x22, 0xe3, 0x2a, 0xe1, 0xed, 0x41, 0x1b, 0xc9, 0x27, 0x39, 0x1c, - 0x7a, 0xc4, 0xb1, 0xc7, 0x77, 0xc2, 0x85, 0x0a, 0xd7, 0x84, 0xfe, 0x3f, 0xee, 0xae, 0x36, 0x36, - 0x8e, 0xe2, 0xfc, 0xff, 0xf7, 0xd0, 0x1f, 0x55, 0x2b, 0x95, 0xd0, 0x09, 0x21, 0xc9, 0x42, 0x83, - 0xb9, 0x56, 0x24, 0x31, 0x49, 0x2e, 0x09, 0x21, 0xa4, 0x11, 0x29, 0xac, 0x63, 0x70, 0x8c, 0x79, - 0x71, 0x63, 0x9a, 0xd2, 0x7c, 0x3b, 0xdf, 0x2d, 0xf6, 0xe1, 0xf3, 0xed, 0xf5, 0x76, 0xed, 0xd4, - 0x58, 0xae, 0x48, 0x13, 0x3b, 0x38, 0x6f, 0x8e, 0xcf, 0x49, 0x53, 0x50, 0x5a, 0xec, 0x0a, 0x83, - 0x6b, 0x20, 0x09, 0x2f, 0x0d, 0xae, 0xd3, 0x90, 0xf2, 0xa1, 0x1f, 0x50, 0x11, 0x15, 0x95, 0x8a, - 0xd4, 0xf6, 0x43, 0xd5, 0xf6, 0xf6, 0x6c, 0xf7, 0x03, 0xfd, 0x80, 0x2a, 0x55, 0xa8, 0x54, 0xd5, - 0xce, 0x33, 0xb3, 0x3b, 0x7b, 0x3b, 0x33, 0x7b, 0xe7, 0x44, 0xa4, 0xea, 0x27, 0x9f, 0x77, 0x7e, - 0x7b, 0x37, 0xbf, 0x67, 0xde, 0x9e, 0x99, 0x79, 0x5e, 0x2c, 0x9b, 0x3f, 0x3e, 0x68, 0x89, 0x70, - 0x7c, 0xf8, 0x00, 0x52, 0xc5, 0xf7, 0x94, 0xa2, 0xfe, 0x92, 0x42, 0x8f, 0x2a, 0xdc, 0x22, 0x72, - 0x54, 0x31, 0x2a, 0xbc, 0xfc, 0xf0, 0x41, 0xd7, 0xe2, 0xde, 0x63, 0x25, 0x12, 0x4d, 0xa2, 0xae, - 0x7e, 0xb9, 0x1c, 0xe6, 0x6c, 0xba, 0x9a, 0x7b, 0x0e, 0x32, 0xe1, 0xc8, 0x27, 0x02, 0xa0, 0x30, - 0xf2, 0x89, 0x10, 0x4f, 0x04, 0x39, 0xa6, 0x14, 0xf5, 0x24, 0x5a, 0x15, 0x08, 0xe9, 0x15, 0x42, - 0x6b, 0xf7, 0xc9, 0xcb, 0xbd, 0xfb, 0x6e, 0xf2, 0xe3, 0xeb, 0x3d, 0x05, 0xa0, 0x00, 0xbe, 0x40, - 0xe0, 0x4f, 0x19, 0xe7, 0x99, 0xa4, 0x32, 0x1b, 0x46, 0x13, 0x7f, 0x99, 0x3b, 0xde, 0x4a, 0x31, - 0x6a, 0x5c, 0x5d, 0x85, 0x48, 0x04, 0x40, 0xa1, 0x48, 0x84, 0x78, 0x22, 0x92, 0x39, 0xb0, 0x24, - 0xdb, 0x16, 0xb0, 0xa0, 0x0e, 0xc1, 0xd7, 0xd5, 0x05, 0x0e, 0x60, 0x71, 0x50, 0x5a, 0x78, 0x43, - 0xcb, 0x86, 0xde, 0xb4, 0x2a, 0xa4, 0x55, 0x9a, 0x79, 0xa6, 0x34, 0x33, 0x2d, 0xfa, 0x6a, 0x88, - 0x54, 0x09, 0x18, 0xe8, 0x42, 0xae, 0x80, 0xdf, 0xfa, 0x89, 0xf3, 0x8b, 0x53, 0x30, 0xec, 0x4a, - 0x33, 0xb3, 0xde, 0xbd, 0xa3, 0xc4, 0xa0, 0x3b, 0x24, 0xda, 0xca, 0xa0, 0x4b, 0x7f, 0xb8, 0x4e, - 0xbd, 0x95, 0x48, 0xc3, 0x82, 0x9f, 0x6e, 0x34, 0x7a, 0x33, 0x29, 0x83, 0x2a, 0x52, 0xe1, 0x9d, - 0x8d, 0x0c, 0x2d, 0xdc, 0xd9, 0xc8, 0x5f, 0x22, 0x52, 0xff, 0x20, 0x56, 0xd4, 0x3f, 0x55, 0x50, - 0xbf, 0x5c, 0x76, 0x9e, 0xd2, 0xe5, 0xa9, 0x61, 0xde, 0x51, 0x82, 0x33, 0x7b, 0x12, 0x3a, 0xe1, - 0xfc, 0xa1, 0xe9, 0xb9, 0xf1, 0x93, 0xa5, 0xd9, 0xd1, 0xd2, 0x3b, 0x97, 0x4b, 0xb3, 0xc7, 0x4b, - 0xb3, 0x2f, 0x3b, 0x63, 0xfb, 0xe7, 0xcf, 0x9e, 0x77, 0x2e, 0x0f, 0xb9, 0x1b, 0xcc, 0x57, 0x27, - 0x20, 0xc4, 0x57, 0xf8, 0xab, 0xb4, 0x6b, 0xf9, 0xe3, 0xb8, 0x1d, 0x1f, 0xd2, 0x1e, 0xa8, 0xb5, - 0x1d, 0x79, 0x7a, 0x25, 0x6e, 0xdc, 0x43, 0x31, 0x6a, 0xad, 0x5f, 0xc5, 0x18, 0x12, 0x00, 0x85, - 0x63, 0x48, 0x88, 0x27, 0xad, 0x79, 0x18, 0x5f, 0xaf, 0xae, 0x0a, 0x58, 0xe7, 0x87, 0xa7, 0x95, - 0xf5, 0xc4, 0x38, 0x02, 0xee, 0x50, 0xe8, 0x1d, 0xbd, 0x08, 0x2e, 0xb1, 0xe9, 0x97, 0x4a, 0xc8, - 0x95, 0xc4, 0x4d, 0x4d, 0x86, 0x1d, 0x16, 0x03, 0x2f, 0xf0, 0x91, 0x50, 0x06, 0xeb, 0xaa, 0x03, - 0x33, 0xf3, 0xea, 0x13, 0xd4, 0xfc, 0x40, 0x28, 0x80, 0xad, 0xec, 0xc2, 0xea, 0x07, 0x1c, 0x10, - 0xcb, 0x80, 0xb5, 0x6c, 0x44, 0xb5, 0x4b, 0xe2, 0x1f, 0x31, 0xf0, 0x6e, 0x08, 0x8b, 0x82, 0x6b, - 0x5b, 0x21, 0x94, 0xc5, 0xfa, 0x2a, 0xd1, 0x44, 0x18, 0xff, 0x56, 0x8a, 0xfa, 0x07, 0x0a, 0x8d, - 0x1a, 0x25, 0x9c, 0xf6, 0x60, 0x05, 0x9f, 0x8c, 0x8a, 0x61, 0x22, 0x78, 0xf1, 0x5a, 0xac, 0xea, - 0x7c, 0x2f, 0x8b, 0x50, 0x1b, 0xa0, 0xc3, 0xbc, 0xf5, 0xac, 0xcd, 0x4e, 0xda, 0x3d, 0x56, 0x15, - 0xeb, 0x19, 0x00, 0xab, 0x5f, 0xcf, 0x28, 0x9e, 0x48, 0xff, 0x98, 0x52, 0xd4, 0x77, 0xa1, 0x38, - 0x1c, 0x83, 0x24, 0x60, 0xcb, 0x4f, 0xac, 0x1b, 0xb0, 0x79, 0x9a, 0x7f, 0x1e, 0x50, 0x05, 0x06, - 0xd3, 0xbe, 0x57, 0xbb, 0xa7, 0xe6, 0x69, 0xca, 0xc2, 0x95, 0x72, 0x27, 0xa6, 0xc3, 0x31, 0x75, - 0x59, 0x5b, 0x5f, 0x2e, 0x55, 0x45, 0x27, 0xe4, 0xc2, 0x84, 0x9d, 0x50, 0x80, 0x66, 0x46, 0x64, - 0x2b, 0xba, 0x63, 0xa7, 0x4e, 0x78, 0x9d, 0xfd, 0xf1, 0xc2, 0x73, 0x83, 0x70, 0x89, 0x0b, 0x4e, - 0xca, 0xf3, 0x87, 0xde, 0x9c, 0x3b, 0x3b, 0x51, 0x3e, 0xfe, 0xf2, 0xdc, 0x2b, 0xe7, 0xb4, 0x2a, - 0x71, 0xb0, 0xdf, 0xd7, 0xee, 0xae, 0x5d, 0x1c, 0x7d, 0x39, 0x6c, 0x2c, 0xfd, 0x89, 0xa2, 0x22, - 0xdf, 0xe4, 0xd0, 0x3b, 0x52, 0x5c, 0x2b, 0x36, 0x4b, 0xac, 0x3c, 0x48, 0xac, 0xaf, 0x06, 0x4a, - 0x64, 0x30, 0xa8, 0x14, 0xf5, 0x06, 0xb4, 0x82, 0x0d, 0xbf, 0xca, 0x1e, 0x0c, 0xd2, 0xe8, 0x1e, - 0xe1, 0x92, 0x35, 0x10, 0x08, 0x09, 0x82, 0x44, 0x43, 0x38, 0x93, 0xed, 0xf1, 0xbb, 0xab, 0x0d, - 0x86, 0x94, 0x33, 0xd3, 0x06, 0x3d, 0x3b, 0xc4, 0x5d, 0xe0, 0x5f, 0x8a, 0x8a, 0x18, 0x7f, 0x45, - 0x21, 0xeb, 0x30, 0x46, 0xc8, 0x9a, 0x07, 0x65, 0xce, 0xe3, 0xb7, 0xa3, 0x55, 0xc4, 0xb1, 0x1d, - 0x13, 0x61, 0xb9, 0x51, 0xb3, 0xf7, 0xc0, 0x49, 0x3c, 0x53, 0x82, 0xd9, 0xb6, 0x68, 0x0f, 0x2e, - 0x8a, 0x2d, 0x9c, 0x8c, 0xf9, 0x69, 0x15, 0x06, 0x68, 0xa3, 0xfb, 0xf6, 0x8c, 0x62, 0xfa, 0x61, - 0x8c, 0x90, 0x3e, 0x0f, 0xca, 0x34, 0xfa, 0x16, 0xb7, 0xd1, 0xc7, 0x3d, 0xf3, 0x1e, 0xd6, 0x6d, - 0x43, 0x5b, 0xc1, 0xee, 0x3a, 0x59, 0xfa, 0x98, 0xf8, 0xae, 0xfa, 0xab, 0x44, 0x1c, 0x7d, 0x1a, - 0xf3, 0xef, 0xe8, 0x3d, 0xce, 0xab, 0x45, 0xb7, 0xd3, 0x95, 0x8c, 0xd7, 0x44, 0x03, 0x09, 0xdf, - 0x62, 0xac, 0xa8, 0x7f, 0xe8, 0xad, 0x36, 0x6c, 0xbc, 0x2f, 0x96, 0x1c, 0x59, 0x6d, 0xa6, 0x84, - 0xab, 0x0d, 0x2b, 0xa9, 0xcf, 0x6d, 0x85, 0xf1, 0x6a, 0xcb, 0x06, 0x10, 0x64, 0x5a, 0xe3, 0x1e, - 0xb4, 0xb8, 0x41, 0xe7, 0x8e, 0xb8, 0x25, 0xc4, 0xfc, 0xc1, 0x93, 0xfd, 0x1d, 0x02, 0xfb, 0x88, - 0x4a, 0xd1, 0xaf, 0x8e, 0xc4, 0x11, 0xc9, 0x9f, 0xc6, 0xb7, 0x13, 0xf5, 0x61, 0xc1, 0x3b, 0x83, - 0x6f, 0x97, 0x2e, 0x8d, 0x85, 0xef, 0x20, 0xb4, 0x15, 0xec, 0x9d, 0x50, 0xe8, 0x76, 0x62, 0x17, - 0xba, 0x5a, 0x7d, 0xef, 0x63, 0x2f, 0x76, 0x52, 0x45, 0x1e, 0xdc, 0x3b, 0x45, 0xb3, 0x27, 0x27, - 0xdb, 0x49, 0x58, 0x05, 0x94, 0xe5, 0x52, 0x8a, 0xf7, 0x17, 0xf5, 0xad, 0xa8, 0x32, 0x5f, 0x93, - 0x3b, 0xcb, 0xd6, 0x85, 0x9f, 0x71, 0xe6, 0xd7, 0x7b, 0xe3, 0xf7, 0x54, 0x4f, 0xde, 0xad, 0x40, - 0x60, 0x86, 0xfd, 0xcc, 0x8b, 0xac, 0x14, 0x45, 0x58, 0x92, 0x18, 0x28, 0x4c, 0x58, 0x96, 0xf4, - 0x27, 0x3e, 0xcc, 0x4e, 0x34, 0x6c, 0x4a, 0x11, 0xde, 0x44, 0xc3, 0xb2, 0xc7, 0x7c, 0x1f, 0xae, - 0x7f, 0x68, 0x91, 0x7c, 0xdd, 0xe6, 0x0e, 0x26, 0xaf, 0x19, 0x40, 0xdf, 0xbf, 0x8e, 0xda, 0xcd, - 0x04, 0xd8, 0x0b, 0xec, 0x66, 0x78, 0xdc, 0xeb, 0xab, 0x81, 0x12, 0xe6, 0x27, 0xff, 0x87, 0xa7, - 0x9c, 0xaf, 0xa1, 0xc5, 0xf6, 0x43, 0xf4, 0x3b, 0x4f, 0xb9, 0xc1, 0x77, 0xb0, 0x7a, 0x2a, 0x65, - 0xf6, 0xe4, 0x6c, 0x91, 0x72, 0xc3, 0x62, 0x22, 0x94, 0x9b, 0x20, 0xd4, 0x8f, 0xa4, 0xb1, 0x01, - 0x2d, 0xf3, 0x9c, 0xd7, 0xe6, 0xdf, 0x7a, 0xc9, 0x19, 0x79, 0x9b, 0x74, 0x3d, 0xfe, 0x63, 0x69, - 0xd0, 0xf9, 0x8a, 0x98, 0xe5, 0x49, 0xf8, 0x35, 0x3c, 0xb8, 0xfe, 0xe8, 0xa9, 0x2f, 0x72, 0x5e, - 0x61, 0x4c, 0x84, 0xfa, 0xc2, 0xe5, 0x95, 0x0b, 0x7a, 0xbb, 0x02, 0x01, 0xc6, 0xdb, 0x35, 0xc4, - 0x68, 0x87, 0xb6, 0xad, 0x16, 0x46, 0x89, 0x7e, 0xf2, 0x89, 0x68, 0x27, 0x27, 0x63, 0xea, 0xd2, - 0x47, 0x32, 0x1d, 0x85, 0x4a, 0x7a, 0xa1, 0x3a, 0x73, 0x40, 0x42, 0xd3, 0x4b, 0x2e, 0x96, 0xb9, - 0x99, 0xcb, 0xa0, 0x25, 0x10, 0xce, 0xc4, 0x67, 0xb8, 0x07, 0x1e, 0x38, 0x87, 0xc7, 0x9d, 0x73, - 0x43, 0x15, 0x3c, 0x69, 0x64, 0xf6, 0x63, 0xa7, 0x4a, 0x33, 0xd3, 0x50, 0x00, 0xe8, 0xbf, 0x3e, - 0xb3, 0xdf, 0x79, 0xf1, 0x79, 0x78, 0xe2, 0x7e, 0x1e, 0x9c, 0x5a, 0x38, 0x30, 0xc5, 0x02, 0x60, - 0x72, 0xdd, 0xa4, 0xd5, 0xdc, 0xe8, 0x7f, 0xf3, 0x94, 0x36, 0x79, 0xa3, 0x87, 0x31, 0x11, 0x4a, - 0x1b, 0x57, 0x26, 0x03, 0xae, 0xca, 0xba, 0x82, 0xf5, 0x10, 0x0c, 0xf4, 0xe7, 0x55, 0x61, 0x27, - 0xc1, 0x50, 0x37, 0xd8, 0x5e, 0xbf, 0xe8, 0x6e, 0x80, 0x3e, 0x8a, 0x31, 0xce, 0x6f, 0x94, 0xaa, - 0xd8, 0xf9, 0xad, 0x82, 0xe8, 0x9a, 0x68, 0x20, 0xa1, 0xf9, 0xb1, 0x52, 0xd4, 0x2f, 0x28, 0x41, - 0xf7, 0x37, 0x20, 0x42, 0x26, 0xcb, 0xe7, 0x22, 0x3c, 0x08, 0x59, 0xf0, 0xe7, 0x76, 0x02, 0x00, - 0x3f, 0x8a, 0x85, 0xbc, 0x01, 0xd5, 0xd4, 0x91, 0xd0, 0x27, 0x31, 0xf5, 0xe6, 0x4a, 0x69, 0x3c, - 0x6e, 0xb6, 0x1a, 0x85, 0x6e, 0x91, 0x2f, 0x8c, 0x8f, 0x73, 0x51, 0x11, 0xbe, 0x30, 0x95, 0x60, - 0x22, 0xe6, 0xcf, 0x94, 0xa2, 0xfe, 0x91, 0x82, 0xb6, 0x89, 0xc4, 0x1c, 0x4c, 0x98, 0x0c, 0x11, - 0x4e, 0xc9, 0xc9, 0x24, 0x7e, 0xe3, 0xbf, 0xbe, 0x19, 0xf8, 0xbe, 0x9c, 0x9e, 0xd4, 0x1d, 0x45, - 0x45, 0x7b, 0x8c, 0x42, 0xe6, 0xc9, 0x3e, 0xf9, 0xd8, 0x0d, 0x63, 0x84, 0x63, 0x97, 0x07, 0x25, - 0xd2, 0xfe, 0x2e, 0x56, 0x83, 0x20, 0x0e, 0x98, 0x37, 0x6f, 0x79, 0x99, 0x41, 0x34, 0x61, 0x89, - 0xc4, 0x54, 0x50, 0x3c, 0x6a, 0x03, 0x71, 0xc1, 0xca, 0xa0, 0xe5, 0xb7, 0x19, 0x85, 0xde, 0x4c, - 0xca, 0xd8, 0x6d, 0x66, 0x0d, 0x8b, 0xab, 0xe5, 0xb3, 0x00, 0x99, 0x96, 0x1f, 0xc4, 0x11, 0x7a, - 0xfb, 0xb1, 0x96, 0x7f, 0x3b, 0xb4, 0x44, 0x72, 0x9f, 0x05, 0x3d, 0xc0, 0x02, 0x68, 0x5d, 0xc1, - 0xcc, 0x52, 0xb3, 0xe1, 0x68, 0x88, 0x34, 0xfa, 0x4e, 0x05, 0x63, 0xf2, 0x76, 0x01, 0x93, 0xfa, - 0xb3, 0xa2, 0x7e, 0xa9, 0xc9, 0xb0, 0xa9, 0xa5, 0x47, 0x13, 0xb8, 0x5d, 0xf1, 0x22, 0x0a, 0x05, - 0x21, 0x42, 0xdf, 0x10, 0x0e, 0x92, 0xd0, 0xdd, 0xe7, 0xce, 0xc4, 0xb7, 0x00, 0x15, 0x6a, 0xac, - 0x51, 0x07, 0xf6, 0x62, 0xd4, 0x89, 0x4c, 0x52, 0x28, 0x75, 0x22, 0xab, 0x60, 0x48, 0xbf, 0x80, - 0x38, 0x91, 0xbd, 0x0f, 0x8d, 0x19, 0xf0, 0x3f, 0xbe, 0x43, 0x1c, 0xb7, 0x21, 0xe0, 0x7e, 0xbc, - 0x3a, 0x12, 0xe7, 0x2b, 0x4d, 0x9b, 0xd1, 0x72, 0x20, 0x80, 0x2b, 0x02, 0x16, 0x2f, 0x84, 0x99, - 0xa8, 0x40, 0x1a, 0xa2, 0x3e, 0xc4, 0x0a, 0xaa, 0x3e, 0x4f, 0x33, 0x15, 0x78, 0xb5, 0xd8, 0x8b, - 0x33, 0x42, 0xd5, 0xcb, 0xab, 0x8a, 0x41, 0xf2, 0x4c, 0x05, 0x95, 0x58, 0x7f, 0x18, 0x36, 0xa2, - 0xba, 0x30, 0x03, 0x3c, 0xdc, 0x9c, 0xa3, 0xb3, 0x84, 0x63, 0x24, 0x02, 0xac, 0x41, 0xd0, 0xda, - 0x6a, 0xc8, 0x42, 0x92, 0xab, 0x8f, 0x15, 0x66, 0x92, 0x87, 0xaa, 0xd1, 0x38, 0x34, 0xeb, 0x23, - 0xfc, 0xc2, 0x2b, 0x22, 0xf2, 0x6f, 0xa8, 0x16, 0x4e, 0x38, 0xf7, 0x40, 0x80, 0xa8, 0x4a, 0x46, - 0x6c, 0xa0, 0x73, 0x4d, 0x5e, 0x5c, 0xcb, 0xaa, 0xe6, 0xc5, 0xb8, 0xfe, 0x50, 0x01, 0x7f, 0x47, - 0x08, 0x0f, 0x90, 0x4f, 0x59, 0x48, 0x12, 0x3d, 0x20, 0x9f, 0xb2, 0xa4, 0xfe, 0x8e, 0x0c, 0xca, - 0x77, 0x4b, 0xb8, 0x1f, 0xad, 0x82, 0xa3, 0x82, 0xd2, 0xec, 0x28, 0x6b, 0x9a, 0xd5, 0x9b, 0x4f, - 0x11, 0x5a, 0x11, 0xe5, 0x51, 0x9e, 0xf1, 0x2c, 0xaf, 0x5e, 0x97, 0xc1, 0x67, 0x8a, 0xba, 0x02, - 0x92, 0x31, 0x65, 0xd2, 0x85, 0x9d, 0x66, 0xee, 0xc9, 0x6c, 0x26, 0x65, 0x3f, 0x58, 0x30, 0xbb, - 0xf7, 0xe4, 0x53, 0x61, 0x7b, 0x35, 0x11, 0x52, 0x68, 0xaf, 0x26, 0x7e, 0x81, 0x90, 0xfe, 0x5e, - 0x51, 0xdf, 0x8a, 0x56, 0x92, 0x80, 0x16, 0x33, 0x47, 0xb0, 0x0b, 0xfd, 0xd0, 0x1b, 0x73, 0xd3, - 0xfb, 0x49, 0x06, 0x2a, 0x71, 0x11, 0xa6, 0x7a, 0x1f, 0xda, 0x51, 0x2d, 0x55, 0x70, 0xa4, 0x4f, - 0x0f, 0x24, 0xdc, 0x2f, 0x4a, 0x91, 0xea, 0xa0, 0x3f, 0xb1, 0xf1, 0x0f, 0x20, 0xe4, 0xb8, 0x2c, - 0xfe, 0x01, 0x41, 0x44, 0xab, 0x80, 0x1e, 0xd0, 0x1f, 0xa6, 0x0d, 0xd4, 0x95, 0xd5, 0x6d, 0x2d, - 0x1c, 0x6e, 0x9c, 0xb4, 0xe9, 0x5a, 0x69, 0xb0, 0x00, 0x80, 0x32, 0x1a, 0x6f, 0x95, 0x33, 0x12, - 0x89, 0x4d, 0x8e, 0xe6, 0x14, 0x75, 0xb9, 0x5f, 0x2d, 0x23, 0xd5, 0x53, 0xc8, 0xd8, 0x7d, 0x64, - 0x29, 0x11, 0x0f, 0xbc, 0x20, 0x50, 0x78, 0x2b, 0x23, 0xc4, 0x13, 0xda, 0x5d, 0x78, 0xb7, 0x4a, - 0x1c, 0x6b, 0xce, 0x0e, 0x3b, 0x83, 0x53, 0x73, 0x17, 0x0f, 0x12, 0xda, 0xfc, 0xc7, 0xb5, 0x2c, - 0x25, 0x16, 0xf9, 0x51, 0xb2, 0x94, 0xfc, 0x52, 0x81, 0x08, 0x20, 0x2d, 0x46, 0x5f, 0x3e, 0x99, - 0x29, 0x58, 0xfc, 0x08, 0x20, 0x2d, 0x46, 0x5f, 0xab, 0x5b, 0x2a, 0x8d, 0x00, 0xe2, 0x83, 0x7c, - 0x17, 0x72, 0x9f, 0xc8, 0xb9, 0xa1, 0x85, 0xe2, 0x24, 0xce, 0x03, 0x17, 0x20, 0x12, 0x7c, 0x5c, - 0xcb, 0x14, 0xd3, 0x45, 0x6b, 0xfc, 0x77, 0x76, 0x4e, 0x6d, 0x66, 0x12, 0x0d, 0x5a, 0x48, 0xac, - 0x0b, 0xb3, 0x38, 0xe9, 0xdd, 0x25, 0x07, 0xed, 0x77, 0xcf, 0x7b, 0xa9, 0x9d, 0x11, 0x8e, 0x10, - 0x80, 0x6d, 0x41, 0xb5, 0x35, 0xd0, 0x33, 0x21, 0xeb, 0x28, 0x1b, 0x94, 0xcd, 0xc7, 0x30, 0x64, - 0xef, 0x42, 0x9b, 0xaa, 0x21, 0x4b, 0xf3, 0x27, 0xda, 0x98, 0xd6, 0x64, 0x4c, 0xd5, 0x9a, 0x0c, - 0x92, 0x7f, 0xa5, 0xad, 0xa7, 0xa3, 0xc3, 0xb0, 0x6c, 0x23, 0xfd, 0x48, 0x32, 0xd5, 0x99, 0x71, - 0x17, 0x99, 0x4d, 0x9c, 0xb5, 0x50, 0x80, 0xa5, 0xd4, 0x37, 0xd7, 0xf2, 0x0a, 0xe1, 0xff, 0x82, - 0x72, 0x35, 0x04, 0xb0, 0x17, 0x3d, 0x51, 0x83, 0xae, 0x90, 0xe8, 0x87, 0x0f, 0xde, 0x0a, 0x93, - 0x35, 0x7a, 0x8d, 0xac, 0x95, 0xe8, 0xc7, 0x7f, 0x2b, 0xe5, 0xf4, 0x1b, 0x9a, 0x3b, 0xc2, 0xfd, - 0x16, 0x92, 0x25, 0xc4, 0x42, 0xe2, 0x09, 0x88, 0x42, 0x84, 0xba, 0x20, 0x07, 0x19, 0xe8, 0xeb, - 0xde, 0x42, 0x03, 0x47, 0x67, 0xb4, 0xaf, 0x73, 0x1f, 0xd7, 0xd2, 0xd7, 0xe9, 0x99, 0x1a, 0xfa, - 0x27, 0x3b, 0xf5, 0x3e, 0x66, 0x35, 0x77, 0x27, 0x3b, 0x0c, 0xc9, 0xd4, 0x4b, 0x10, 0xd1, 0x53, - 0xaf, 0x07, 0x24, 0x74, 0x4e, 0x28, 0x45, 0x7d, 0x2f, 0xcd, 0x6f, 0x84, 0xdb, 0x0d, 0xdb, 0x86, - 0x42, 0x24, 0xf2, 0x85, 0x53, 0x67, 0x9c, 0x03, 0x23, 0x84, 0xdc, 0x16, 0x69, 0x6b, 0x0b, 0xde, - 0xaa, 0x65, 0x4e, 0x36, 0xad, 0x0c, 0x66, 0xb9, 0x40, 0xfc, 0x1d, 0x03, 0x03, 0xd2, 0x42, 0x6b, - 0x23, 0x07, 0xad, 0x25, 0x3d, 0xb7, 0xad, 0x84, 0xfa, 0xb1, 0x77, 0x1a, 0xd9, 0xbe, 0x4d, 0xd8, - 0x6e, 0x14, 0xb1, 0x75, 0x4e, 0x1c, 0x2c, 0xcd, 0x4c, 0x83, 0x0f, 0x0a, 0x9b, 0xb2, 0x48, 0x9a, - 0x88, 0x48, 0x30, 0xc8, 0x2d, 0xf4, 0x17, 0x46, 0x23, 0xa6, 0x47, 0x01, 0x7d, 0x79, 0x43, 0xac, - 0x11, 0x33, 0xa0, 0x48, 0x8d, 0x38, 0x80, 0x25, 0x74, 0x0b, 0x45, 0x7d, 0x1b, 0x9d, 0xaa, 0xbd, - 0xed, 0x27, 0x64, 0x24, 0xd5, 0x6e, 0x03, 0xce, 0x7a, 0x4b, 0x5b, 0x0b, 0x17, 0x20, 0x71, 0x60, - 0x15, 0x6d, 0x4e, 0xdd, 0xe1, 0xe9, 0x36, 0xe8, 0x4a, 0x5a, 0xa7, 0x86, 0x64, 0x2e, 0xbd, 0x2f, - 0x93, 0xb6, 0x3b, 0x5b, 0x93, 0xa9, 0xae, 0x64, 0x87, 0x61, 0xa1, 0x8d, 0xa2, 0xea, 0x87, 0xa0, - 0x42, 0x97, 0x08, 0xc9, 0x1b, 0x84, 0x76, 0x07, 0xec, 0xc7, 0x29, 0x2b, 0x67, 0xf0, 0xf5, 0xd2, - 0xec, 0x2b, 0xce, 0xcc, 0x4b, 0xce, 0xd9, 0x4b, 0xce, 0xd1, 0x41, 0x4d, 0x58, 0x52, 0x8b, 0xca, - 0xd8, 0xbe, 0x2f, 0x8f, 0x2f, 0xd9, 0x6e, 0xf2, 0x15, 0xf4, 0x9e, 0x9c, 0x9d, 0xe9, 0x86, 0x68, - 0xfc, 0xe2, 0xa3, 0x1d, 0x06, 0x15, 0x7d, 0xb4, 0x13, 0x00, 0x13, 0x72, 0xcf, 0x2a, 0x45, 0xfd, - 0x51, 0x74, 0xab, 0xdf, 0x87, 0xdd, 0xae, 0x89, 0x6d, 0xf9, 0xcb, 0xa7, 0x2f, 0x90, 0xfe, 0xbc, - 0x41, 0x36, 0x7a, 0xc3, 0xf8, 0x5a, 0x9a, 0xba, 0x00, 0x55, 0xc2, 0x69, 0x08, 0xde, 0x23, 0x13, - 0xf1, 0x63, 0x79, 0x12, 0xf9, 0xf3, 0x61, 0xb3, 0x43, 0x30, 0x11, 0x07, 0x20, 0xd2, 0x89, 0xb8, - 0x02, 0xe9, 0x87, 0x53, 0xf4, 0x9a, 0x14, 0xa6, 0x9f, 0xf2, 0xe9, 0x49, 0xe7, 0xf2, 0x69, 0x42, - 0x58, 0x58, 0x22, 0x31, 0x58, 0x36, 0xe9, 0x0f, 0x65, 0xdd, 0x5a, 0x7f, 0x48, 0xa6, 0xe0, 0xc7, - 0x93, 0x56, 0x57, 0x9b, 0x6d, 0xe4, 0x31, 0x95, 0xd5, 0x22, 0xbb, 0x64, 0x8a, 0x90, 0x4e, 0xc1, - 0x41, 0x20, 0x1b, 0x56, 0x8a, 0x98, 0x89, 0x51, 0x37, 0xfc, 0xc9, 0x85, 0xe9, 0x17, 0x03, 0x74, - 0x22, 0xca, 0x21, 0xac, 0x14, 0xba, 0x4d, 0x60, 0x60, 0x6c, 0xd9, 0x46, 0x1e, 0x73, 0x7a, 0x57, - 0x51, 0x97, 0xf8, 0x96, 0xd4, 0x29, 0xb3, 0x90, 0xe6, 0x1c, 0x28, 0x54, 0x00, 0x84, 0x07, 0x0a, - 0x21, 0x9c, 0x1f, 0x9b, 0xcf, 0x1f, 0x6c, 0xb8, 0xc2, 0xf3, 0x67, 0xcf, 0x3b, 0x97, 0x4e, 0x05, - 0x5b, 0x26, 0x5c, 0x02, 0xc1, 0x05, 0xd1, 0x2a, 0x01, 0x89, 0x02, 0xa9, 0xef, 0x81, 0x98, 0x8a, - 0xb0, 0x83, 0x72, 0x63, 0xfb, 0xae, 0x8c, 0x65, 0x9b, 0x85, 0x3e, 0x9c, 0xee, 0x90, 0x1f, 0xeb, - 0x23, 0x80, 0x11, 0x5f, 0x29, 0x71, 0xa0, 0x8c, 0x9f, 0x99, 0x81, 0xee, 0x24, 0x81, 0x0f, 0x8e, - 0x0f, 0x39, 0x23, 0x6f, 0x40, 0xcd, 0x13, 0xd0, 0xb5, 0x80, 0x00, 0xb4, 0x05, 0x7c, 0xd6, 0xb6, - 0x92, 0x83, 0x52, 0xec, 0x54, 0x03, 0x63, 0xad, 0x0e, 0x3c, 0x87, 0xea, 0xca, 0xc7, 0x8b, 0xce, - 0xec, 0x08, 0x9c, 0xdc, 0xc3, 0x97, 0xe5, 0xca, 0x3f, 0x9a, 0x60, 0x52, 0x67, 0xac, 0xae, 0xe7, - 0xb9, 0x4d, 0xa4, 0xdb, 0xd3, 0x49, 0x3b, 0x69, 0x25, 0xfa, 0xdd, 0x3f, 0xee, 0x7c, 0x3e, 0x80, - 0x7e, 0x4d, 0x56, 0x49, 0x7a, 0x64, 0xd5, 0x96, 0xea, 0x34, 0xba, 0x93, 0xfc, 0x55, 0x32, 0x88, - 0xa1, 0x52, 0x58, 0xc5, 0x4f, 0xfc, 0x41, 0x5e, 0xc8, 0xbb, 0xfd, 0xd2, 0x6b, 0x46, 0x72, 0x12, - 0x3c, 0x35, 0xe1, 0xe9, 0x74, 0x9a, 0xb0, 0x44, 0xb2, 0xe6, 0xd3, 0xe3, 0x2d, 0x0b, 0x57, 0x84, - 0x89, 0x41, 0xf7, 0x7e, 0xf0, 0x30, 0x8f, 0x90, 0x91, 0x1d, 0xe6, 0x05, 0xb9, 0xc8, 0x92, 0x98, - 0x7c, 0x47, 0xc0, 0x83, 0xda, 0x1f, 0x88, 0x4a, 0x24, 0x9b, 0x2d, 0x11, 0x8f, 0x44, 0x7f, 0x2e, - 0xd9, 0x6d, 0x0c, 0xa0, 0x1f, 0xc4, 0xd4, 0xa5, 0xdf, 0xe8, 0x31, 0x0a, 0x7d, 0xad, 0x46, 0xa1, - 0xbb, 0xa1, 0x4f, 0x4f, 0xb9, 0x93, 0x4a, 0x73, 0x63, 0x78, 0x59, 0xe7, 0x80, 0x84, 0xcb, 0x3a, - 0x17, 0x4b, 0x7a, 0xe9, 0xa4, 0x52, 0xd4, 0xb3, 0x68, 0x4b, 0x79, 0x7c, 0x62, 0x61, 0xfa, 0x28, - 0xd8, 0x17, 0xc3, 0x11, 0xfe, 0x3a, 0xe7, 0xd2, 0x58, 0xf9, 0xf4, 0x38, 0xfc, 0x53, 0x3e, 0x7d, - 0x81, 0x46, 0x01, 0x21, 0x4f, 0xbe, 0xb9, 0xfb, 0x61, 0x6d, 0x51, 0x6f, 0x49, 0x92, 0xda, 0xe6, - 0x8d, 0x42, 0xb7, 0x95, 0x48, 0xe2, 0x2a, 0xe2, 0x2b, 0x25, 0xa8, 0xeb, 0x00, 0x0d, 0x5f, 0xec, - 0x76, 0xb0, 0x86, 0x16, 0x41, 0x70, 0x5d, 0xa6, 0xb0, 0xda, 0x7e, 0xfa, 0x6d, 0x66, 0xf7, 0xe9, - 0xae, 0xe0, 0x47, 0x67, 0xfd, 0xd3, 0x4b, 0xfe, 0x63, 0xc9, 0x12, 0x90, 0x33, 0xd3, 0x46, 0x77, - 0x32, 0x47, 0x42, 0xb0, 0xfe, 0x56, 0x51, 0x6f, 0xc0, 0x4b, 0xef, 0xce, 0xc7, 0xcd, 0xbc, 0x99, - 0x35, 0x3b, 0xfa, 0xf8, 0xf9, 0x0b, 0xfd, 0xf2, 0x6a, 0x3a, 0xe4, 0x00, 0x3b, 0xe1, 0x63, 0xcf, - 0xc1, 0xd2, 0xcc, 0xc5, 0xf2, 0x99, 0x59, 0x48, 0x84, 0x52, 0x3e, 0x32, 0x56, 0x1e, 0x1e, 0xd5, - 0x22, 0xca, 0xa3, 0x23, 0x93, 0x05, 0x33, 0x6b, 0xa7, 0x12, 0x36, 0x65, 0x30, 0x15, 0x53, 0x97, - 0x35, 0x19, 0x76, 0x43, 0x57, 0x9b, 0x99, 0xb7, 0xa8, 0x1d, 0x83, 0xcb, 0x82, 0xeb, 0x01, 0x1e, - 0x86, 0xc9, 0x3c, 0xc0, 0x79, 0x68, 0xd2, 0x45, 0x5f, 0x57, 0x8a, 0x7a, 0x37, 0x5a, 0x4d, 0x96, - 0xe5, 0xf1, 0x43, 0xce, 0xa1, 0xa1, 0xf9, 0xcb, 0x27, 0xe6, 0x2e, 0xbe, 0x05, 0xd3, 0x29, 0x24, - 0x82, 0xf1, 0xac, 0x1e, 0xb4, 0x06, 0x00, 0x92, 0x5e, 0x79, 0x66, 0x18, 0x7a, 0x9e, 0xe7, 0x6b, - 0x59, 0x9a, 0x39, 0x12, 0xf9, 0x1d, 0x70, 0x99, 0x82, 0x78, 0x29, 0xd7, 0xda, 0xbb, 0x2c, 0x33, - 0x6f, 0x25, 0xda, 0x7b, 0x2c, 0x77, 0xa7, 0x6b, 0x25, 0xfa, 0xe9, 0x27, 0xd6, 0xc7, 0xd9, 0x42, - 0x3f, 0xe3, 0x89, 0x0a, 0xab, 0x73, 0xd1, 0xa2, 0x62, 0xf5, 0xb9, 0xf5, 0x55, 0xa2, 0x89, 0xa8, - 0xde, 0xb9, 0x36, 0xa2, 0xe2, 0xdb, 0x5a, 0x55, 0x27, 0xaa, 0x44, 0xbf, 0xcd, 0x98, 0xde, 0xbc, - 0x1c, 0x53, 0x6f, 0x6e, 0x32, 0x6c, 0x9c, 0x04, 0x8b, 0x32, 0xdc, 0x93, 0xcc, 0xf6, 0x18, 0x16, - 0xe2, 0x89, 0x82, 0x83, 0x13, 0x9e, 0x7e, 0x8b, 0xe0, 0x44, 0x74, 0xaf, 0xe1, 0x2c, 0x7f, 0xc4, - 0x0a, 0xa7, 0x61, 0x67, 0x9b, 0xf3, 0xf3, 0x37, 0x9d, 0x91, 0xf3, 0xce, 0xd0, 0x20, 0x44, 0x4f, - 0x21, 0x9c, 0x47, 0x7e, 0xb8, 0x70, 0x68, 0x44, 0xdb, 0x5d, 0x0d, 0x6a, 0x1d, 0xb9, 0x10, 0x9d, - 0x79, 0xa3, 0xfc, 0xc2, 0x18, 0x88, 0xd8, 0x45, 0x84, 0x04, 0x0a, 0xe6, 0xc1, 0x92, 0xfd, 0x02, - 0x91, 0x23, 0x15, 0x53, 0x2f, 0x88, 0xe3, 0x57, 0x8a, 0xba, 0xa4, 0xd1, 0x68, 0xef, 0xe9, 0x20, - 0xdd, 0x21, 0x69, 0x75, 0xf1, 0x02, 0x64, 0x06, 0x00, 0x92, 0x00, 0x99, 0x15, 0x38, 0x22, 0x94, - 0x24, 0x5e, 0x01, 0xe7, 0xcf, 0x1f, 0x98, 0x3f, 0x77, 0x2a, 0x5c, 0x73, 0x4d, 0x58, 0x02, 0x01, - 0x58, 0xe3, 0xb7, 0x89, 0xd9, 0xa4, 0xdd, 0x5f, 0x74, 0x27, 0xf6, 0x31, 0x32, 0x52, 0x92, 0x76, - 0xaa, 0x73, 0x67, 0x8f, 0x65, 0x9b, 0xdd, 0x6d, 0x86, 0x6d, 0x67, 0x72, 0x1d, 0xfc, 0x91, 0x12, - 0x82, 0x49, 0x47, 0x0a, 0x07, 0x4d, 0x98, 0x9d, 0x51, 0xf0, 0x0d, 0x0f, 0x9c, 0xbb, 0x34, 0xb7, - 0xba, 0x7b, 0x9b, 0x23, 0x3f, 0x75, 0x9e, 0x9b, 0x02, 0x9f, 0xb3, 0x85, 0x09, 0x92, 0x3b, 0x4e, - 0x8b, 0x44, 0x60, 0xaa, 0x8f, 0xc5, 0x79, 0xf6, 0x67, 0xfb, 0x8c, 0xf6, 0x44, 0x8a, 0xfd, 0x75, - 0x2b, 0x61, 0xa5, 0xcc, 0xbc, 0x91, 0xe8, 0xc7, 0x7f, 0xb0, 0x3a, 0x46, 0x3e, 0x37, 0xa7, 0x07, - 0x20, 0x29, 0x77, 0x93, 0x81, 0x73, 0xfb, 0x9f, 0x8b, 0xa9, 0xc8, 0x25, 0x90, 0x79, 0x9a, 0xae, - 0x0f, 0xbb, 0x4c, 0x8b, 0x73, 0xe9, 0x1c, 0xc6, 0x08, 0x55, 0x55, 0x1e, 0x94, 0x08, 0xe3, 0x5d, - 0xa5, 0xa8, 0xe7, 0xd0, 0xdd, 0xe4, 0x10, 0x0a, 0x8f, 0x7d, 0xb7, 0xab, 0xe2, 0xf5, 0xa2, 0x3c, - 0x3e, 0x1a, 0x0a, 0x8e, 0x41, 0x20, 0xd8, 0xe0, 0x50, 0x5b, 0xdc, 0x6b, 0xe0, 0xb2, 0x14, 0x7f, - 0x40, 0x20, 0x36, 0x99, 0x9c, 0xe8, 0x7a, 0x94, 0xe8, 0x34, 0x2d, 0x7b, 0xa7, 0xd9, 0x93, 0xb3, - 0x49, 0x88, 0x80, 0x1b, 0x9b, 0x0c, 0x9b, 0xf2, 0xc3, 0x31, 0x88, 0xb8, 0xf9, 0x64, 0x02, 0x08, - 0xe1, 0xa6, 0x2b, 0x0c, 0x64, 0xe2, 0x91, 0x3c, 0x89, 0x10, 0xb9, 0x51, 0xc0, 0x5c, 0x61, 0x91, - 0xd5, 0x5a, 0xd9, 0x67, 0x78, 0x12, 0x75, 0x1f, 0x4b, 0xa5, 0x40, 0x2d, 0x5c, 0x2f, 0x94, 0x2e, - 0x92, 0x38, 0xa2, 0xa0, 0xee, 0xc3, 0x82, 0x0d, 0xa6, 0x8d, 0xf1, 0xa6, 0x2b, 0x95, 0x91, 0x05, - 0x79, 0xdf, 0x71, 0x7c, 0xf5, 0x98, 0xba, 0x9c, 0xa1, 0xe6, 0xf6, 0x82, 0xe6, 0xb4, 0x05, 0xc2, - 0xda, 0x20, 0x91, 0x01, 0x0b, 0x14, 0x5e, 0x5b, 0x08, 0xf1, 0x4c, 0x37, 0x7b, 0x0a, 0xdd, 0x14, - 0x16, 0x5d, 0x73, 0xa3, 0xb6, 0x9b, 0x2b, 0xbc, 0xe6, 0xc6, 0x2b, 0x15, 0xdf, 0xa3, 0xf1, 0xe6, - 0x2b, 0x15, 0x5f, 0x26, 0xcd, 0x08, 0x70, 0x30, 0x86, 0x2f, 0xd6, 0x5d, 0x7e, 0x56, 0xa3, 0x61, - 0x27, 0x33, 0x59, 0xfe, 0xc5, 0x3a, 0x0b, 0x90, 0x5d, 0xac, 0x07, 0x71, 0x4c, 0x4a, 0xc2, 0xdd, - 0x88, 0x44, 0xbb, 0xa6, 0x92, 0xb0, 0x88, 0x84, 0x20, 0xfe, 0x17, 0x9b, 0x4d, 0xb1, 0x5a, 0x20, - 0x16, 0xc8, 0x03, 0xf1, 0xfb, 0x17, 0x21, 0x10, 0xe8, 0x46, 0x69, 0xa8, 0x27, 0x89, 0xcf, 0xec, - 0xee, 0xbb, 0xda, 0x5c, 0x80, 0xcb, 0x01, 0x5f, 0x49, 0x72, 0xf7, 0x5d, 0x41, 0x88, 0xcc, 0x88, - 0xa2, 0x12, 0x49, 0xa4, 0xf1, 0x7b, 0xa5, 0xa8, 0x1f, 0x53, 0xd0, 0x66, 0x60, 0xd9, 0xdc, 0x9a, - 0x68, 0x6e, 0xed, 0xdd, 0x9a, 0x00, 0xb6, 0xce, 0x89, 0x63, 0x73, 0xaf, 0x0d, 0x03, 0x3d, 0x3a, - 0x0f, 0xe1, 0xe7, 0xa0, 0xe0, 0x7c, 0x8b, 0x88, 0x02, 0xa7, 0xf7, 0xf6, 0x94, 0x9a, 0x3a, 0xa2, - 0xf0, 0x0c, 0x1f, 0x71, 0x0e, 0x4f, 0xcd, 0xbf, 0x33, 0xe6, 0x0c, 0x4e, 0xce, 0x3d, 0x7f, 0xb0, - 0xba, 0x2f, 0x66, 0x24, 0xd9, 0x10, 0xdf, 0xb1, 0x48, 0x49, 0x26, 0x52, 0x2e, 0x41, 0x57, 0x8c, - 0x07, 0x63, 0xea, 0x32, 0xc6, 0x2c, 0x15, 0xd2, 0x30, 0x3e, 0x98, 0x4d, 0x72, 0x56, 0x3f, 0x2e, - 0x4c, 0xb8, 0xfa, 0x09, 0xd0, 0x8c, 0x5b, 0x97, 0x8e, 0x96, 0x41, 0x16, 0xce, 0xd2, 0xec, 0xe8, - 0xdc, 0xc5, 0x83, 0xa5, 0x8b, 0x17, 0x40, 0x13, 0xd1, 0xd6, 0x78, 0x8f, 0x69, 0xa2, 0x0e, 0xec, - 0x62, 0x38, 0x37, 0xfc, 0x6c, 0xf9, 0xcc, 0xab, 0x30, 0xb4, 0x18, 0x9d, 0x65, 0x67, 0xfc, 0xeb, - 0x55, 0xdd, 0x15, 0x1b, 0x05, 0x0b, 0xb6, 0x75, 0xe4, 0x13, 0x4d, 0xc1, 0x88, 0x7b, 0xd3, 0x11, - 0x2f, 0x4c, 0x59, 0xa4, 0x18, 0xb8, 0xb0, 0x88, 0x30, 0x65, 0x22, 0x31, 0x9c, 0x54, 0x8a, 0xfa, - 0x0e, 0xe4, 0x5b, 0xc3, 0x06, 0xc4, 0xf0, 0x55, 0x3f, 0x25, 0x0c, 0xc3, 0x7f, 0xee, 0xf9, 0x83, - 0x2c, 0x0a, 0xe6, 0x18, 0xad, 0xf9, 0xca, 0x44, 0x90, 0xe8, 0x87, 0x0f, 0x64, 0xaf, 0xfb, 0x6c, - 0x4c, 0x5d, 0xc6, 0x98, 0x77, 0xca, 0xa4, 0xc1, 0x85, 0x09, 0xa5, 0x21, 0x40, 0x13, 0x69, 0x8c, - 0x82, 0x34, 0xe0, 0x8c, 0x29, 0x24, 0x0d, 0xef, 0x71, 0x94, 0x34, 0x5a, 0xea, 0xaf, 0x9e, 0x34, - 0xdc, 0xe9, 0x76, 0xa9, 0x77, 0x84, 0xcd, 0x08, 0x42, 0x7c, 0x51, 0x13, 0x16, 0xc3, 0x9d, 0x55, - 0x61, 0x99, 0x2e, 0x71, 0x3f, 0x73, 0x28, 0x10, 0x10, 0xc2, 0x6a, 0x91, 0x21, 0x63, 0x05, 0x10, - 0xe4, 0x80, 0xae, 0xa2, 0x1c, 0x26, 0x14, 0xf5, 0xfa, 0x5d, 0x46, 0x32, 0x6b, 0x77, 0xa2, 0x2f, - 0x57, 0xd2, 0x81, 0xe7, 0xc2, 0x43, 0x0f, 0x5a, 0xec, 0xe7, 0x3f, 0xda, 0x82, 0x56, 0x94, 0xcf, - 0x1c, 0x73, 0xb7, 0x1e, 0xfb, 0x27, 0x9d, 0xd9, 0xb7, 0xc1, 0xa4, 0x10, 0xc2, 0x11, 0x68, 0xc2, - 0x12, 0xcc, 0xe9, 0x16, 0xb4, 0x92, 0xc3, 0xa9, 0x13, 0xff, 0x42, 0xc3, 0x09, 0xa5, 0xa8, 0x1f, - 0x55, 0x50, 0x9d, 0xba, 0x9c, 0x58, 0x16, 0xd5, 0x3d, 0x02, 0x98, 0x3a, 0xbd, 0xb5, 0xb9, 0xae, - 0xd1, 0x4c, 0x6d, 0xfe, 0xff, 0x8d, 0x1b, 0x36, 0x6d, 0xd8, 0x18, 0x57, 0x13, 0xed, 0x29, 0x2b, - 0x99, 0xcf, 0x24, 0x7a, 0xb7, 0xd4, 0x2b, 0xb1, 0xcd, 0x37, 0x26, 0xf3, 0xf9, 0x6c, 0x26, 0x85, - 0xcf, 0xcf, 0x13, 0x4f, 0x59, 0x66, 0x6e, 0x7b, 0xe8, 0xc9, 0xde, 0xaf, 0xa8, 0xb7, 0xab, 0xaa, - 0x9e, 0xcf, 0xb4, 0x18, 0x7d, 0x7a, 0x8f, 0xdd, 0x89, 0x96, 0x7e, 0x21, 0xa6, 0x7d, 0xd1, 0xfd, - 0x64, 0x16, 0x32, 0x4f, 0x63, 0x5c, 0x5d, 0xac, 0xfd, 0x46, 0xf5, 0x86, 0x00, 0xe8, 0xff, 0xda, - 0xaf, 0xcf, 0x17, 0x4c, 0xdb, 0xbc, 0xeb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x52, 0xf8, 0x12, - 0xa4, 0x2a, 0x86, 0x04, 0x00, + 0xce, 0x62, 0x9f, 0x01, 0xc4, 0xde, 0xf8, 0x64, 0x4d, 0xc5, 0x76, 0xde, 0x0e, 0x9e, 0x72, 0x07, + 0x05, 0xb8, 0xfe, 0x66, 0x29, 0x5c, 0x37, 0x06, 0x76, 0x28, 0x4d, 0xba, 0xbd, 0x6a, 0x49, 0xb6, + 0xff, 0x27, 0xf1, 0x9e, 0xd3, 0xfd, 0x3f, 0x27, 0x25, 0x87, 0x8e, 0x90, 0x80, 0x1f, 0x2c, 0xa2, + 0x00, 0x1d, 0x8f, 0x73, 0x8f, 0xd2, 0x02, 0xfa, 0x12, 0x1d, 0xe2, 0x39, 0x5f, 0x3a, 0x67, 0x84, + 0x4f, 0x85, 0x85, 0xb9, 0x6c, 0x4e, 0x1f, 0xfc, 0xb5, 0x86, 0x93, 0xe3, 0x3e, 0xcf, 0x64, 0xbe, + 0x86, 0xf7, 0x52, 0xcb, 0x55, 0x79, 0x29, 0x5a, 0xe2, 0x75, 0xfc, 0x3a, 0x73, 0x5b, 0xe4, 0x87, + 0xee, 0xf9, 0xb3, 0x3c, 0x54, 0xfa, 0x7c, 0xb3, 0x12, 0xdb, 0x55, 0xaf, 0xc4, 0x9a, 0xaa, 0x77, + 0xc9, 0xe4, 0x84, 0x53, 0x57, 0xeb, 0x53, 0x7e, 0x47, 0x8e, 0x54, 0x8f, 0x21, 0x44, 0xdd, 0x89, + 0xb6, 0xb2, 0xd8, 0x4a, 0xd4, 0x0b, 0xce, 0x28, 0x96, 0x0a, 0xad, 0x69, 0x73, 0x82, 0xb8, 0x25, + 0x65, 0x36, 0xdc, 0x92, 0xf7, 0x9f, 0x33, 0x8a, 0xed, 0xe2, 0x41, 0x04, 0xc5, 0x65, 0x74, 0xd2, + 0xdc, 0x63, 0x1f, 0x98, 0xb4, 0xa8, 0x1d, 0xb9, 0x89, 0x67, 0xfc, 0xfe, 0xd0, 0xe8, 0x89, 0x8f, + 0x4d, 0x57, 0x99, 0x4f, 0xa1, 0x29, 0x09, 0x1a, 0x2f, 0x17, 0x7f, 0x2d, 0xdf, 0x68, 0xc9, 0x97, + 0x4b, 0x53, 0x52, 0x97, 0xce, 0xa5, 0x4e, 0xdd, 0x1a, 0x7d, 0x7b, 0x5f, 0x5d, 0xad, 0x0f, 0xb1, + 0x9a, 0xba, 0xa0, 0xf8, 0x04, 0x42, 0xd4, 0xc3, 0x16, 0x37, 0x2f, 0x30, 0x1c, 0x7e, 0xb9, 0x62, + 0xf2, 0x8a, 0x02, 0x82, 0x8b, 0xf1, 0xaf, 0x28, 0x70, 0xe3, 0x42, 0x30, 0x53, 0x46, 0x62, 0xd4, + 0xdc, 0x4a, 0x3c, 0x41, 0xf4, 0x42, 0xee, 0xaa, 0x86, 0x85, 0x3b, 0xd3, 0xeb, 0x58, 0x3c, 0xb2, + 0x1c, 0x6b, 0x20, 0x2d, 0x80, 0x8c, 0xfc, 0x40, 0x5f, 0xe9, 0x9e, 0xb6, 0xe4, 0xe0, 0x1b, 0xc9, + 0xc1, 0x03, 0xa9, 0xe3, 0x34, 0x13, 0x84, 0xe7, 0xa8, 0xcb, 0x69, 0x09, 0x09, 0xcd, 0x3d, 0x8e, + 0x0a, 0xfd, 0xb4, 0x88, 0x2e, 0x20, 0x41, 0x8c, 0x5e, 0x28, 0x4d, 0x83, 0xfe, 0xd9, 0x6f, 0x9f, + 0x5e, 0x23, 0xee, 0x40, 0x85, 0x51, 0x25, 0xd6, 0xb4, 0x35, 0x90, 0x78, 0x95, 0xc6, 0x75, 0xf0, + 0x66, 0x4b, 0x50, 0xe7, 0x71, 0xd3, 0xe4, 0x38, 0xac, 0x03, 0x49, 0xe4, 0xa7, 0xc1, 0x6c, 0xf5, + 0xb8, 0xb6, 0x26, 0xf1, 0x6a, 0xd5, 0xf3, 0xaa, 0xbc, 0x1e, 0xad, 0xf5, 0xe6, 0x98, 0x07, 0xf3, + 0x9e, 0x85, 0x58, 0x76, 0x7c, 0x5f, 0x9f, 0x0b, 0xfa, 0x88, 0x3f, 0x17, 0xf4, 0xef, 0x79, 0x8e, + 0x08, 0xa8, 0x00, 0xf7, 0x14, 0x17, 0x1f, 0x41, 0x05, 0xb8, 0x94, 0x6d, 0xb0, 0x96, 0x90, 0x81, + 0x04, 0x0a, 0xfe, 0x4f, 0xd4, 0x50, 0x1f, 0x80, 0x97, 0xd6, 0x23, 0x64, 0x14, 0xda, 0xe8, 0xa6, + 0xe5, 0xe6, 0x98, 0x17, 0x73, 0x96, 0x34, 0x44, 0x22, 0x0d, 0x8d, 0xca, 0x92, 0x68, 0x2c, 0x92, + 0x88, 0x6c, 0x6b, 0xde, 0xbe, 0x64, 0x0b, 0xae, 0xe5, 0x75, 0xd6, 0x23, 0x02, 0x9a, 0x6b, 0x3b, + 0xc5, 0xaf, 0x28, 0xc2, 0xab, 0xe9, 0xf6, 0x06, 0x03, 0x98, 0x6d, 0x3b, 0x31, 0x9b, 0x0d, 0x8d, + 0x7f, 0xb5, 0xe2, 0x51, 0x5d, 0x08, 0xd5, 0x44, 0x9a, 0x9a, 0x22, 0x61, 0x3c, 0x8c, 0x1f, 0xfa, + 0x86, 0x5e, 0x6b, 0xda, 0xd0, 0xef, 0xb6, 0xa0, 0x7c, 0x63, 0x22, 0xd6, 0x1c, 0x48, 0x8c, 0xb5, + 0x89, 0xb3, 0x94, 0xd7, 0xc6, 0xbc, 0xa5, 0xe2, 0xd1, 0xd6, 0x9e, 0xf4, 0x51, 0xea, 0x90, 0xed, + 0x79, 0xd7, 0x85, 0xa6, 0x41, 0x25, 0xdd, 0x09, 0x7e, 0xf0, 0x88, 0x59, 0x63, 0x42, 0x4c, 0xa9, + 0x05, 0x31, 0x78, 0x1e, 0x84, 0x1e, 0xc7, 0xc2, 0xcd, 0x62, 0x55, 0x7e, 0x00, 0x2d, 0xf2, 0x66, + 0x4d, 0x5f, 0x12, 0x01, 0x3f, 0xbc, 0xdb, 0xba, 0x67, 0x2d, 0x22, 0x8f, 0x73, 0xab, 0x9f, 0xa3, + 0xe9, 0xf5, 0x40, 0x95, 0xa1, 0x31, 0x48, 0x6c, 0xaa, 0x58, 0x42, 0xf5, 0xe4, 0xd0, 0x11, 0x08, + 0xc9, 0x6b, 0xda, 0x39, 0x4f, 0xe6, 0xd3, 0xc8, 0x08, 0x35, 0x9b, 0x22, 0xd1, 0x48, 0x63, 0xa4, + 0x61, 0x17, 0x13, 0x61, 0x37, 0x05, 0xab, 0x6d, 0xe3, 0xb4, 0xa0, 0xca, 0xad, 0x02, 0xaf, 0xd9, + 0xc6, 0xd9, 0x66, 0x52, 0x0e, 0x0e, 0x5c, 0xa9, 0x03, 0x9d, 0xda, 0xa1, 0x61, 0x9a, 0x12, 0x73, + 0xe0, 0x86, 0x36, 0x74, 0x94, 0x08, 0xcf, 0x1e, 0xed, 0x8d, 0x73, 0xa9, 0x03, 0x6f, 0xa6, 0x3a, + 0x8f, 0x7c, 0xd1, 0xba, 0x17, 0x5c, 0x82, 0x53, 0x27, 0xce, 0xa6, 0x8e, 0x75, 0xb0, 0xe6, 0xa9, + 0x13, 0xd7, 0x93, 0x23, 0x3d, 0xb8, 0x75, 0xf7, 0x71, 0x70, 0xcd, 0x22, 0x29, 0x8c, 0x6c, 0xbb, + 0xf8, 0xb2, 0xfa, 0xee, 0xd8, 0xec, 0x19, 0x42, 0x49, 0x50, 0x9a, 0xfe, 0x9b, 0x17, 0x97, 0x56, + 0x3c, 0xee, 0xaf, 0xd8, 0x2d, 0x57, 0xbc, 0x50, 0xf1, 0xd2, 0x43, 0x8b, 0x78, 0x2b, 0x0a, 0x16, + 0x45, 0x90, 0x55, 0x09, 0x28, 0xe1, 0x35, 0x55, 0x7e, 0x95, 0x65, 0x55, 0x8a, 0x04, 0x9a, 0x82, + 0xdb, 0x58, 0x66, 0xa5, 0xb2, 0xd4, 0x99, 0xc3, 0xc9, 0xa1, 0xb7, 0xc1, 0x61, 0x39, 0x39, 0x78, + 0x00, 0x12, 0x42, 0xb0, 0x6c, 0x3e, 0xd7, 0x93, 0xc3, 0xc7, 0x19, 0x64, 0xba, 0xa7, 0x0d, 0x46, + 0xa0, 0x67, 0x96, 0xa4, 0xe2, 0xb1, 0xa7, 0x2d, 0xf5, 0xd6, 0x00, 0x9d, 0x34, 0x89, 0x21, 0x05, + 0x2d, 0xb4, 0x23, 0x6f, 0x01, 0x3c, 0x4b, 0xc8, 0xb4, 0x03, 0x4d, 0xd9, 0x1e, 0x6a, 0x24, 0xcf, + 0x31, 0x13, 0x0a, 0x3c, 0x57, 0xb4, 0x23, 0x9b, 0xea, 0x48, 0xa4, 0x11, 0xc8, 0x86, 0x3c, 0x73, + 0xe7, 0xdb, 0x48, 0x25, 0xe0, 0xb5, 0xab, 0x5d, 0xed, 0xce, 0x1c, 0xbd, 0x49, 0x76, 0xe5, 0x8f, + 0x52, 0xbd, 0x43, 0xa9, 0xab, 0x67, 0x7d, 0x3c, 0x58, 0x55, 0xb5, 0x2a, 0x3f, 0x8d, 0x56, 0x7a, + 0xed, 0xd7, 0x56, 0xf7, 0x76, 0x24, 0xa3, 0x4c, 0x0e, 0x0e, 0xe3, 0x1e, 0x2e, 0x9d, 0xd3, 0x4e, + 0x9d, 0x80, 0xe1, 0x52, 0xda, 0x78, 0xbf, 0x00, 0xcd, 0x5b, 0xa3, 0x24, 0xaa, 0x77, 0x6e, 0x8c, + 0x44, 0xe3, 0x2c, 0x34, 0x3e, 0xd0, 0x26, 0xdb, 0xe5, 0xd0, 0xb6, 0xe6, 0x78, 0x28, 0xac, 0xc4, + 0xe3, 0x3a, 0x89, 0x80, 0xba, 0x61, 0x14, 0x4b, 0x85, 0x0c, 0x7b, 0x3e, 0xae, 0x54, 0xfc, 0x0d, + 0xb7, 0x7f, 0xbb, 0x8c, 0x27, 0x3b, 0xc6, 0xfe, 0xbd, 0x3c, 0x33, 0x70, 0x01, 0xb6, 0x1d, 0xad, + 0xf7, 0x12, 0x38, 0xf9, 0xb0, 0xe1, 0x1e, 0x48, 0xf5, 0x76, 0xc2, 0x5e, 0x84, 0x11, 0x4f, 0xb4, + 0x0b, 0x76, 0x3d, 0xc0, 0x9a, 0x8b, 0xbd, 0x02, 0x9a, 0xc6, 0x74, 0x8d, 0x8d, 0x44, 0x2d, 0xa3, + 0xaa, 0x4d, 0x42, 0x95, 0x7f, 0xe9, 0xcd, 0xaa, 0x92, 0x56, 0x43, 0x2f, 0xa9, 0x53, 0x17, 0x52, + 0x43, 0x87, 0xcb, 0xdd, 0x6c, 0x9c, 0xa9, 0x8e, 0xe3, 0x99, 0xd6, 0xf6, 0x00, 0xe1, 0x49, 0xc8, + 0x74, 0x01, 0x4a, 0x57, 0xea, 0x93, 0x3d, 0xe9, 0x4b, 0x07, 0x52, 0x1d, 0xc7, 0xf1, 0x5a, 0x90, + 0x10, 0x67, 0x50, 0x02, 0xb7, 0xa8, 0x85, 0xac, 0xb9, 0x6f, 0x12, 0x34, 0xf5, 0xfd, 0xcc, 0x97, + 0xf5, 0x41, 0xf1, 0xbf, 0x08, 0xa8, 0x20, 0x1e, 0x88, 0xe8, 0xa1, 0xe7, 0xfe, 0xb5, 0xa0, 0xca, + 0x23, 0x82, 0x17, 0xca, 0xa4, 0x8f, 0x84, 0x6d, 0x3b, 0xb7, 0x6e, 0x0b, 0xed, 0xde, 0x1a, 0x0a, + 0xba, 0x53, 0xef, 0xb6, 0xa6, 0x3f, 0xc6, 0x14, 0x96, 0xbc, 0xd9, 0x8b, 0x45, 0xc1, 0x99, 0x33, + 0x4b, 0x0c, 0xcf, 0x6f, 0x4c, 0xc6, 0x18, 0xb0, 0x3c, 0xd5, 0x77, 0x3e, 0x75, 0xe2, 0xba, 0x0e, + 0x9b, 0x7a, 0x6b, 0x20, 0x3d, 0x7c, 0x04, 0xa2, 0xb3, 0xba, 0x6b, 0xd6, 0xd5, 0x56, 0xbb, 0x01, + 0x77, 0xee, 0xba, 0x5a, 0x77, 0x72, 0x70, 0xc8, 0x6d, 0x74, 0xaf, 0xe7, 0x5f, 0x2c, 0xc7, 0x38, + 0x6e, 0x1d, 0xc1, 0xb5, 0x54, 0x9f, 0x74, 0xa7, 0x4e, 0x5c, 0xd7, 0x3a, 0x4e, 0x42, 0xa7, 0x00, + 0x94, 0xa3, 0x3d, 0x61, 0x4a, 0x5f, 0x21, 0x1b, 0x91, 0x6f, 0x32, 0xed, 0xc5, 0xf7, 0x33, 0x1f, + 0xcc, 0xaa, 0xea, 0x45, 0x55, 0xfe, 0x25, 0xda, 0xe2, 0xcd, 0x49, 0x52, 0xba, 0x93, 0x33, 0xb7, + 0xaa, 0x40, 0x8d, 0x20, 0xad, 0x3f, 0x17, 0x38, 0x22, 0xfa, 0x5c, 0xd0, 0xd7, 0xdb, 0x73, 0xc3, + 0x85, 0xe6, 0x3b, 0x74, 0xfc, 0x3d, 0x9c, 0xd4, 0x58, 0x1c, 0x81, 0x3c, 0xfb, 0xe0, 0x48, 0x6c, + 0x7c, 0xe4, 0x7d, 0x2b, 0x1f, 0x2a, 0xd9, 0x34, 0x6d, 0x8b, 0xd6, 0x50, 0xb5, 0x59, 0x95, 0x7d, + 0xa8, 0xde, 0x9b, 0x7b, 0xa2, 0xb6, 0x28, 0x24, 0x7d, 0x31, 0x14, 0xda, 0x58, 0x2f, 0x8b, 0xf9, + 0x21, 0x89, 0x1e, 0x54, 0xcc, 0xe8, 0x95, 0xbb, 0x27, 0x34, 0x95, 0x89, 0x0b, 0x90, 0xa1, 0xcb, + 0xeb, 0xa9, 0x2f, 0x8d, 0x12, 0x5c, 0xcf, 0xc9, 0x06, 0xe2, 0xdb, 0x6d, 0x12, 0x00, 0x1e, 0x54, + 0xcc, 0x7e, 0x19, 0xaf, 0xe9, 0x7c, 0xa6, 0x32, 0xb1, 0x04, 0x4d, 0x26, 0x4e, 0x12, 0x11, 0x96, + 0x0d, 0x93, 0xfd, 0x14, 0xe7, 0xa0, 0x49, 0x4a, 0x30, 0xa4, 0x2b, 0xff, 0x3e, 0xfa, 0xcb, 0x1c, + 0xe4, 0x69, 0x72, 0x56, 0xa2, 0x4b, 0x4f, 0xd2, 0x4e, 0xa0, 0xf1, 0xd1, 0xf4, 0xbe, 0x86, 0x40, + 0x7b, 0xdc, 0x8a, 0x0f, 0xda, 0xd4, 0x28, 0x96, 0x0a, 0x61, 0x51, 0x4c, 0x07, 0x21, 0xb3, 0x2c, + 0xcc, 0xfb, 0x6e, 0x64, 0x61, 0xfe, 0x0f, 0x52, 0x16, 0x16, 0xfc, 0x24, 0x0b, 0xf9, 0x28, 0x8a, + 0x66, 0x46, 0x26, 0x4a, 0xd1, 0xb8, 0x64, 0xe1, 0xbf, 0xb0, 0x93, 0x85, 0xdf, 0x5b, 0x84, 0xc5, + 0xdf, 0xea, 0xb2, 0x50, 0xb0, 0x75, 0x16, 0xa6, 0xe3, 0x03, 0x4f, 0x31, 0x22, 0x11, 0xc9, 0xbb, + 0x3d, 0x90, 0x88, 0x0f, 0xc2, 0xe4, 0xa1, 0xcf, 0x74, 0x4f, 0x9b, 0xd6, 0x7e, 0x49, 0xbb, 0xda, + 0x4a, 0x71, 0x61, 0x15, 0x90, 0x14, 0xad, 0xb9, 0x67, 0xcf, 0xb4, 0x1f, 0x8a, 0x57, 0x4b, 0x8f, + 0x4e, 0x62, 0xb2, 0x09, 0x89, 0xd6, 0xc1, 0x8a, 0x6e, 0xc3, 0x0a, 0xb2, 0x39, 0xd6, 0xc8, 0x02, + 0x7c, 0x72, 0x45, 0xe2, 0xc3, 0x68, 0x12, 0x39, 0x8c, 0x32, 0xb3, 0xf6, 0x7c, 0x9b, 0x70, 0x07, + 0x24, 0xee, 0x14, 0x9c, 0x5c, 0x29, 0xb0, 0x67, 0x2b, 0x9a, 0x6a, 0xaa, 0xb0, 0x39, 0x0b, 0xdb, + 0x05, 0xdb, 0x9e, 0x85, 0x0a, 0x42, 0xe1, 0xa0, 0xf2, 0x2a, 0x15, 0xb9, 0xf0, 0x03, 0x43, 0x06, + 0x95, 0x78, 0x80, 0x4a, 0x59, 0xf2, 0xb7, 0x27, 0x23, 0x10, 0x32, 0xa9, 0x0b, 0x87, 0x95, 0x18, + 0x9b, 0x18, 0xf9, 0x52, 0xfc, 0xeb, 0x06, 0x17, 0x7d, 0xd4, 0xa2, 0xdc, 0x81, 0xff, 0x9e, 0x2e, + 0xd0, 0x8a, 0x69, 0xe0, 0x54, 0x22, 0xd3, 0x38, 0xc3, 0x0c, 0x8d, 0x48, 0x9c, 0x7b, 0x58, 0xd2, + 0x52, 0xba, 0x7e, 0x24, 0xfc, 0x7e, 0xe6, 0xd6, 0xe1, 0xf4, 0xf0, 0xc7, 0xc4, 0xf7, 0xa2, 0x3f, + 0x35, 0xf8, 0x51, 0xea, 0xcc, 0x9b, 0x8c, 0x5f, 0xde, 0x1a, 0xdd, 0xdf, 0x4d, 0x35, 0xd9, 0x7f, + 0xec, 0x42, 0x0b, 0x9c, 0xfa, 0xfc, 0x1e, 0x58, 0x62, 0x8b, 0x49, 0x3d, 0x98, 0xef, 0xc4, 0x12, + 0x70, 0x04, 0xb0, 0xd1, 0x0f, 0x60, 0x6a, 0x56, 0xf2, 0x57, 0x54, 0x79, 0x1b, 0x7a, 0xd9, 0x3b, + 0xc6, 0x54, 0xa5, 0x8a, 0xf1, 0xe3, 0x4f, 0x6b, 0x1d, 0xb1, 0x32, 0xc2, 0x2e, 0x34, 0xd5, 0xd4, + 0xb3, 0x6d, 0xe4, 0x37, 0x46, 0x71, 0x2e, 0x83, 0xe2, 0x30, 0x6d, 0xc6, 0x94, 0xed, 0x0a, 0x0b, + 0xfa, 0x06, 0x3f, 0x70, 0x69, 0x22, 0xe6, 0x0f, 0xb3, 0xd8, 0xef, 0xf0, 0xc3, 0xb8, 0x83, 0x2c, + 0xe0, 0xee, 0x20, 0x3d, 0x7f, 0x5b, 0x80, 0xe6, 0xd4, 0x2a, 0xdb, 0x9a, 0x1b, 0x28, 0x7b, 0x93, + 0x77, 0x02, 0x40, 0xac, 0xcf, 0xd8, 0xec, 0xdd, 0x6e, 0xc7, 0xbd, 0x9b, 0x19, 0x05, 0xf9, 0x2d, + 0xfc, 0x19, 0x9b, 0x2d, 0xdc, 0xed, 0xb8, 0x85, 0xeb, 0x3d, 0x70, 0x3b, 0xf9, 0x16, 0xcb, 0x4e, + 0x5e, 0xa5, 0xca, 0x4b, 0x39, 0xc2, 0x5f, 0xa4, 0x6f, 0xd7, 0xa9, 0xce, 0x8b, 0x99, 0x73, 0x5d, + 0x99, 0x81, 0x0b, 0xd0, 0x5f, 0xba, 0xa7, 0x2d, 0x96, 0x78, 0x15, 0x18, 0xc2, 0x62, 0xb0, 0xfc, + 0xa1, 0xef, 0xe0, 0x1d, 0x02, 0x2a, 0x0c, 0x50, 0x59, 0x45, 0x63, 0xf3, 0xad, 0xb0, 0x24, 0x72, + 0xb4, 0x5d, 0x35, 0x5d, 0xf6, 0xc1, 0x15, 0x36, 0x3c, 0x26, 0x64, 0x5d, 0x49, 0x0f, 0xf2, 0x24, + 0x4a, 0x5d, 0xcf, 0x8d, 0x3d, 0x80, 0xd0, 0x27, 0x91, 0xdb, 0x3e, 0xbd, 0x49, 0xe9, 0x13, 0x86, + 0xd4, 0x9c, 0xf0, 0xed, 0x76, 0x55, 0x5c, 0x95, 0xa3, 0x28, 0xec, 0x75, 0xa0, 0x30, 0x69, 0x51, + 0xe6, 0xca, 0xeb, 0x99, 0x81, 0x63, 0xd6, 0x41, 0x99, 0xdf, 0x08, 0x9a, 0x76, 0x65, 0x8e, 0x3a, + 0xb8, 0x2d, 0xfa, 0x73, 0x41, 0x1f, 0xb1, 0xe7, 0x9f, 0xba, 0xd0, 0xdd, 0x96, 0x0f, 0x7e, 0x0f, + 0x42, 0x69, 0x87, 0x69, 0x9f, 0xbe, 0x6f, 0x8c, 0xf5, 0x23, 0x1b, 0x35, 0x79, 0x91, 0x0c, 0xa2, + 0xc9, 0x19, 0x37, 0xdc, 0x9e, 0x4a, 0xc5, 0xd4, 0x6f, 0x54, 0xf9, 0x45, 0xf4, 0x2b, 0xaf, 0xd3, + 0xac, 0xbf, 0xb6, 0x7c, 0x7a, 0x1a, 0xdd, 0x65, 0x33, 0x5a, 0xb1, 0x8c, 0x3e, 0xb5, 0x10, 0x9c, + 0x9f, 0x5a, 0x80, 0x07, 0xb4, 0xe7, 0xf6, 0x14, 0x34, 0x9d, 0x98, 0xd0, 0xd6, 0x45, 0x82, 0xcd, + 0x8d, 0xca, 0xea, 0x46, 0x7f, 0x83, 0xb8, 0x39, 0xfb, 0x16, 0xe9, 0x09, 0x55, 0x7e, 0xcc, 0xb8, + 0x45, 0xaa, 0xa8, 0xae, 0xd9, 0x08, 0x49, 0x0d, 0xf4, 0x74, 0xb3, 0xc9, 0xa1, 0x23, 0x7a, 0xd6, + 0x98, 0xcc, 0x81, 0xab, 0xa9, 0xe3, 0xfb, 0xf5, 0x6c, 0x61, 0xc6, 0x65, 0x93, 0xdf, 0x88, 0x8e, + 0x0c, 0x2b, 0xb6, 0x46, 0x95, 0x6b, 0xbd, 0xac, 0x4c, 0x7a, 0x5c, 0xef, 0x04, 0x5e, 0x65, 0x97, + 0x69, 0xef, 0xed, 0xdd, 0xf4, 0xdc, 0xaa, 0x2a, 0xf7, 0xb2, 0x25, 0xd2, 0xd2, 0x25, 0x8f, 0x94, + 0x2f, 0x5b, 0xb2, 0xec, 0xb1, 0x25, 0x2b, 0xf0, 0x3f, 0x2b, 0x96, 0x2c, 0xaf, 0x48, 0xec, 0x7c, + 0x2c, 0x8e, 0xff, 0x7e, 0x64, 0xc9, 0xf2, 0xc5, 0x7a, 0x98, 0x65, 0xb1, 0x5d, 0x40, 0x85, 0x4d, + 0x64, 0x22, 0xfa, 0x4b, 0x1a, 0x92, 0xfe, 0x46, 0x2f, 0x94, 0x5e, 0x48, 0x0f, 0xb7, 0x25, 0x87, + 0xaf, 0xc3, 0xed, 0x4e, 0xd9, 0x73, 0xcd, 0xdb, 0x14, 0xb9, 0xbe, 0x6e, 0xa3, 0x12, 0x6b, 0x51, + 0x62, 0xb7, 0x47, 0xba, 0xf0, 0xef, 0x9a, 0x48, 0x38, 0x11, 0x8b, 0x34, 0x36, 0x92, 0x82, 0x55, + 0x89, 0x40, 0x90, 0x96, 0x6f, 0x0c, 0xec, 0x50, 0x70, 0x27, 0xb8, 0x78, 0x67, 0xf3, 0x36, 0xa5, + 0x51, 0x49, 0x7c, 0xd1, 0xba, 0x27, 0x06, 0xc1, 0xa4, 0xd3, 0x7d, 0x9d, 0x8b, 0x7d, 0xfa, 0x57, + 0xc4, 0x15, 0xa8, 0x70, 0x7b, 0xa3, 0xbf, 0x81, 0x8b, 0x9d, 0x42, 0x94, 0x09, 0xbd, 0x50, 0x2a, + 0x02, 0x0e, 0xd2, 0x0e, 0x1f, 0xf4, 0xe9, 0x85, 0x58, 0x97, 0xc0, 0x7f, 0xd7, 0xe2, 0xbd, 0x84, + 0x0b, 0xb4, 0xa5, 0x17, 0x4a, 0xc5, 0xd0, 0x8a, 0x7a, 0xf1, 0xea, 0xe5, 0xe2, 0x6a, 0x54, 0x1c, + 0x54, 0xb6, 0xfb, 0x9b, 0x1b, 0x41, 0x7d, 0xa2, 0xb7, 0x44, 0x1e, 0x55, 0x5e, 0xe8, 0x35, 0x55, + 0x48, 0xd3, 0xa1, 0x03, 0x38, 0x48, 0x68, 0xad, 0x23, 0x3e, 0x53, 0xb5, 0x58, 0x85, 0x26, 0x29, + 0x61, 0x72, 0xe5, 0x0a, 0x51, 0x15, 0x48, 0x0f, 0xb4, 0x48, 0x9a, 0x4d, 0xad, 0x71, 0x87, 0x49, + 0xb2, 0xdf, 0x81, 0x0b, 0x54, 0x1e, 0xd1, 0x6a, 0xf1, 0x51, 0xe3, 0x00, 0x5b, 0x68, 0xdc, 0x02, + 0xb1, 0x32, 0x69, 0x3a, 0x8b, 0xa8, 0xfd, 0xb6, 0x36, 0x3c, 0x94, 0x69, 0x6d, 0x37, 0xce, 0xb7, + 0x8f, 0xa2, 0xc9, 0xcd, 0xe4, 0xae, 0x9b, 0x25, 0x6e, 0x87, 0x86, 0xb4, 0x8c, 0x35, 0xa4, 0x97, + 0xde, 0xb8, 0x21, 0xad, 0x11, 0xab, 0x50, 0x11, 0xe9, 0x83, 0xf8, 0xd9, 0x23, 0xe3, 0x4e, 0xcd, + 0x28, 0x95, 0x8a, 0xe1, 0x7b, 0xf4, 0x19, 0x82, 0x51, 0x21, 0xae, 0x44, 0x08, 0xba, 0x21, 0x8d, + 0xa7, 0x70, 0x8f, 0x18, 0x8c, 0x62, 0xa9, 0x18, 0x3e, 0xca, 0x1e, 0x31, 0x18, 0x35, 0x62, 0x02, + 0x56, 0x8a, 0x8b, 0x58, 0x40, 0x1e, 0x63, 0xea, 0x85, 0x52, 0x5d, 0xea, 0xec, 0xfe, 0xcc, 0xc0, + 0x3e, 0xc0, 0x11, 0x4d, 0xb6, 0x14, 0x0a, 0x27, 0x96, 0x4b, 0x95, 0xdb, 0x22, 0x91, 0xc6, 0xca, + 0x78, 0x22, 0x16, 0x0a, 0x37, 0x54, 0x06, 0x9b, 0xc1, 0x33, 0xa0, 0xb2, 0xc9, 0x1f, 0xa5, 0x65, + 0xf1, 0x74, 0x5f, 0xa7, 0x76, 0x66, 0x28, 0x7d, 0xae, 0x15, 0x5a, 0x2d, 0xf6, 0xe9, 0x9d, 0x8a, + 0x3e, 0x34, 0x15, 0xff, 0x4d, 0xd6, 0x8a, 0x44, 0x2a, 0x98, 0x4a, 0xfc, 0x76, 0xc9, 0x9b, 0x29, + 0x73, 0x8d, 0x54, 0x42, 0xe9, 0x8b, 0x84, 0x2e, 0xc1, 0x1b, 0x49, 0xeb, 0x08, 0x3d, 0x2b, 0x9b, + 0x01, 0xc5, 0x5f, 0x61, 0x3d, 0xa5, 0x41, 0x79, 0x95, 0x44, 0x3d, 0x98, 0x22, 0x95, 0x66, 0x8b, + 0x0a, 0xb2, 0x63, 0xf8, 0x30, 0x04, 0x78, 0xaa, 0x03, 0xb4, 0x34, 0x97, 0x52, 0x62, 0x6f, 0x67, + 0xea, 0x58, 0x47, 0xaa, 0xf5, 0x62, 0xea, 0xec, 0xb9, 0xd1, 0x0f, 0xba, 0x32, 0x17, 0xdb, 0xb4, + 0x8e, 0x93, 0x3e, 0x80, 0x11, 0x23, 0xa8, 0x20, 0x46, 0x62, 0x1a, 0x4e, 0xb7, 0x0f, 0xd7, 0xb7, + 0xbe, 0xb9, 0x69, 0x9b, 0x02, 0xb1, 0x0b, 0xe1, 0x81, 0x34, 0x80, 0x4b, 0x4b, 0x33, 0x07, 0x28, + 0x71, 0x25, 0x07, 0x87, 0xf0, 0x24, 0x5a, 0x47, 0x0c, 0xe1, 0x02, 0x59, 0xb6, 0xe1, 0x08, 0x43, + 0x9e, 0x2d, 0x60, 0x2a, 0x86, 0x86, 0xe2, 0x17, 0x82, 0x39, 0xfb, 0x0e, 0x84, 0x4a, 0xf8, 0x33, + 0x38, 0x63, 0xf3, 0x35, 0xd2, 0x65, 0x41, 0xbb, 0xf9, 0x26, 0xe3, 0xd6, 0x95, 0x94, 0x87, 0x49, + 0x8a, 0x64, 0x4c, 0xd8, 0x24, 0x31, 0x7e, 0xfa, 0xe8, 0x99, 0xd4, 0xb1, 0x8e, 0x2f, 0x5a, 0xf7, + 0x52, 0xad, 0xbf, 0x5e, 0x1f, 0x03, 0xd7, 0x51, 0x95, 0x3b, 0x14, 0x6d, 0x59, 0x51, 0x19, 0x8a, + 0xb6, 0x3c, 0x52, 0x19, 0x6c, 0xf6, 0x37, 0xba, 0x61, 0x7c, 0x20, 0xc0, 0x74, 0xe9, 0xc8, 0xa7, + 0xd5, 0xc2, 0x1d, 0x92, 0x58, 0x12, 0x20, 0x20, 0x5f, 0x2c, 0x7f, 0x09, 0x62, 0x4a, 0xe8, 0xc9, + 0x6f, 0xa1, 0x07, 0xfd, 0x41, 0x0b, 0xee, 0xdf, 0x94, 0x40, 0x88, 0x05, 0xd5, 0xcb, 0x96, 0xda, + 0xd2, 0x03, 0x90, 0xba, 0x2e, 0xdd, 0x7f, 0x2e, 0x7d, 0x78, 0x1f, 0xc4, 0x28, 0x25, 0x92, 0x17, + 0x0f, 0x00, 0x64, 0x1e, 0x3c, 0x03, 0xff, 0xc2, 0x05, 0xc4, 0xcb, 0x5c, 0xe4, 0x75, 0x41, 0x45, + 0x5d, 0xe4, 0x75, 0x71, 0x54, 0xca, 0x89, 0x23, 0x97, 0x51, 0x47, 0x24, 0x8e, 0x27, 0x4b, 0xe2, + 0x80, 0x96, 0x6b, 0x96, 0x26, 0x92, 0x2e, 0x4d, 0xf2, 0xc7, 0x32, 0xfe, 0xeb, 0x52, 0xa4, 0x94, + 0x63, 0xac, 0x02, 0xe3, 0x9b, 0x84, 0xfc, 0x17, 0x65, 0x93, 0xff, 0x24, 0x12, 0x9c, 0x2e, 0x8b, + 0xa0, 0x97, 0x32, 0x82, 0x9e, 0x3c, 0x16, 0x41, 0x33, 0x3a, 0x5d, 0xc6, 0xe8, 0xb4, 0x70, 0x4c, + 0x3a, 0x65, 0x94, 0x96, 0x95, 0xe6, 0xa9, 0xc8, 0x92, 0xe6, 0xc9, 0x53, 0x8b, 0x90, 0xf1, 0x25, + 0x71, 0x1e, 0x2a, 0x6a, 0xf1, 0x37, 0x86, 0x82, 0x44, 0x3c, 0x02, 0x9e, 0x8d, 0x82, 0x1c, 0x6f, + 0x11, 0x96, 0xa1, 0x29, 0xdc, 0xd7, 0xb1, 0x82, 0xd7, 0x14, 0x0a, 0x93, 0x0e, 0x0a, 0x7c, 0xf8, + 0x4f, 0x52, 0xe2, 0x7f, 0x95, 0x46, 0x68, 0xc6, 0x7f, 0x7a, 0x52, 0xf9, 0x68, 0x5e, 0x0d, 0x79, + 0x6e, 0x95, 0x45, 0x20, 0xec, 0xf0, 0x70, 0xe7, 0xee, 0xee, 0x7b, 0xad, 0xbb, 0xfb, 0x76, 0xf2, + 0x0a, 0x43, 0xdf, 0xdd, 0xeb, 0xbf, 0xc9, 0xdd, 0x1d, 0x72, 0x7b, 0xd3, 0xf3, 0x89, 0xbe, 0xb5, + 0x6f, 0x05, 0x0a, 0xa5, 0x09, 0x7c, 0x6d, 0x43, 0x95, 0x33, 0xee, 0xaa, 0x5e, 0x4c, 0x3c, 0x14, + 0x18, 0xb8, 0x24, 0xf2, 0x7c, 0x08, 0xe2, 0xf8, 0xcb, 0xea, 0x02, 0x55, 0x70, 0x15, 0x0a, 0x3e, + 0x1d, 0x4a, 0x7c, 0x86, 0x3b, 0x58, 0x71, 0xd1, 0x60, 0x8d, 0x83, 0xd5, 0x6c, 0x73, 0x37, 0x6c, + 0x43, 0x35, 0x4c, 0x0b, 0x41, 0x55, 0xf6, 0xa3, 0xad, 0xde, 0x9c, 0x64, 0x20, 0xcd, 0x86, 0x96, + 0x78, 0x59, 0xb8, 0xee, 0x3e, 0x17, 0xd8, 0x82, 0x7e, 0x2e, 0x30, 0xbc, 0x7f, 0x2e, 0xe8, 0xb3, + 0xe7, 0x4d, 0x6f, 0x9a, 0x80, 0xe6, 0x3b, 0x7c, 0xe1, 0xbb, 0x57, 0xe9, 0x59, 0x6c, 0xcc, 0xdc, + 0x23, 0x92, 0xee, 0xb5, 0x9d, 0x74, 0xee, 0xd8, 0x98, 0xff, 0x2e, 0x9f, 0x39, 0xc6, 0xff, 0xe8, + 0x18, 0xea, 0x35, 0x0b, 0x3f, 0x6d, 0xfd, 0x96, 0xf9, 0xe9, 0x87, 0xcb, 0x48, 0x86, 0x82, 0x69, + 0x65, 0xa4, 0x5c, 0xcb, 0x2f, 0xcd, 0x86, 0x96, 0x5f, 0x9d, 0x91, 0xfe, 0x20, 0xb0, 0x37, 0x0b, + 0x3f, 0x04, 0x46, 0xf2, 0xa9, 0xf2, 0x06, 0xb4, 0xce, 0x9b, 0x7b, 0x44, 0xd2, 0x5c, 0xdb, 0x49, + 0x3b, 0xf9, 0x50, 0xfe, 0x93, 0x7c, 0x34, 0x0f, 0xde, 0x27, 0xfd, 0xc4, 0x42, 0xdf, 0x24, 0x0b, + 0x6d, 0x40, 0xc5, 0x4c, 0x5b, 0xd3, 0xd9, 0x88, 0x3e, 0x05, 0x37, 0x55, 0x48, 0x25, 0x26, 0x86, + 0xe1, 0x9f, 0xe5, 0x99, 0xe0, 0x26, 0xbc, 0xf7, 0x9c, 0x1d, 0x3d, 0x79, 0xde, 0x9e, 0x65, 0x72, + 0x2d, 0x37, 0xde, 0x7b, 0x70, 0xcb, 0xaf, 0xc7, 0x32, 0x0e, 0x5f, 0xf8, 0x1e, 0x59, 0x26, 0xe7, + 0x88, 0xa4, 0xb9, 0xb6, 0x93, 0x76, 0x62, 0x99, 0xbf, 0xca, 0xe7, 0x32, 0xf1, 0xff, 0xc4, 0x30, + 0x3f, 0x5e, 0x86, 0xd9, 0xa6, 0xca, 0x5b, 0xd1, 0x4b, 0xde, 0x1c, 0x8b, 0x2d, 0xcd, 0xd6, 0xbd, + 0xda, 0xbe, 0x22, 0xbb, 0x0c, 0xb8, 0xb8, 0xcc, 0x7a, 0xdf, 0x2f, 0xb3, 0x88, 0x3e, 0xd3, 0x85, + 0xd0, 0x42, 0xdb, 0x34, 0x3f, 0xc6, 0x10, 0xcd, 0x51, 0x71, 0x39, 0x67, 0x42, 0xdb, 0xbc, 0xda, + 0x39, 0xe6, 0xc8, 0xb9, 0x06, 0x8e, 0x87, 0xfd, 0xfe, 0xe0, 0x22, 0xee, 0x13, 0xab, 0x5e, 0x4d, + 0x28, 0xb1, 0xb0, 0xbf, 0x71, 0x7d, 0x24, 0xa8, 0x6c, 0x24, 0x2f, 0xe6, 0x19, 0x03, 0xbe, 0x84, + 0xa6, 0x84, 0x23, 0x41, 0xc5, 0x1c, 0x1a, 0xe0, 0x6b, 0x31, 0x21, 0xdf, 0x9f, 0xb8, 0xc2, 0x72, + 0xad, 0x58, 0x62, 0xeb, 0xf3, 0x9d, 0x1c, 0x1a, 0xe2, 0xee, 0x4e, 0x5e, 0x40, 0x85, 0xa1, 0x30, + 0x8c, 0x98, 0x3a, 0x76, 0x3e, 0xa5, 0xca, 0x4f, 0x78, 0xf5, 0x42, 0xa9, 0x92, 0x06, 0x16, 0x26, + 0xcf, 0xb7, 0x53, 0x1d, 0xc7, 0xb5, 0xf3, 0xc7, 0xd3, 0x37, 0x8f, 0x64, 0xda, 0x7a, 0x52, 0xbd, + 0x97, 0x99, 0x9f, 0x1f, 0x5f, 0xe6, 0xd3, 0x9b, 0xb2, 0x9c, 0x65, 0x39, 0xb1, 0xc2, 0x90, 0x9c, + 0xbe, 0x7c, 0x39, 0x39, 0xd8, 0x99, 0x3a, 0x7e, 0x03, 0x7a, 0x61, 0xf4, 0xca, 0xcf, 0xd0, 0xf3, + 0x37, 0x79, 0xe4, 0x4a, 0xd6, 0xae, 0xaf, 0x3b, 0xe3, 0xe9, 0xcf, 0x0a, 0xce, 0x21, 0x96, 0xa5, + 0xdb, 0x20, 0x74, 0x3a, 0x7b, 0x9b, 0x3f, 0xae, 0x3c, 0xb2, 0x22, 0x3d, 0x72, 0x3c, 0x7d, 0x16, + 0x2f, 0x3a, 0x45, 0x25, 0xa9, 0xc4, 0x67, 0xd8, 0xe9, 0xaf, 0x28, 0xdb, 0xb6, 0xf2, 0x8f, 0x84, + 0x0b, 0xec, 0x33, 0xcd, 0xff, 0x42, 0xd9, 0xc6, 0xbd, 0xd4, 0xdc, 0x22, 0x41, 0xfc, 0xed, 0xec, + 0xd6, 0xd2, 0xbd, 0xd4, 0x63, 0xdd, 0x9c, 0x10, 0x0c, 0xac, 0x56, 0x70, 0xff, 0xe6, 0x9b, 0xf6, + 0x8a, 0xa9, 0x2b, 0x7d, 0xc3, 0xca, 0x89, 0x7f, 0x87, 0xc5, 0x74, 0xe2, 0x98, 0x76, 0x01, 0x15, + 0xad, 0xf3, 0x47, 0xc1, 0x3f, 0x5a, 0x5c, 0xa9, 0x3b, 0x02, 0x08, 0xf6, 0xef, 0x3a, 0x75, 0x50, + 0x70, 0x62, 0xa7, 0x8e, 0xf1, 0xb4, 0x51, 0xe9, 0xe3, 0x68, 0x0a, 0x57, 0x3c, 0xa1, 0x67, 0x9b, + 0x7f, 0x95, 0x07, 0x8e, 0x4f, 0xfe, 0x44, 0x60, 0x07, 0x24, 0xae, 0xdd, 0xa8, 0x24, 0x12, 0xa1, + 0xb0, 0xbe, 0x75, 0xfa, 0x51, 0x11, 0x71, 0x4c, 0xe1, 0x42, 0xcc, 0xd4, 0xa8, 0xf2, 0x33, 0x5e, + 0xa3, 0x54, 0x5a, 0x0e, 0x4f, 0x58, 0xc0, 0xc0, 0x48, 0xad, 0xb7, 0xdb, 0x42, 0xbb, 0x2b, 0xb7, + 0x85, 0x76, 0x6f, 0x8d, 0x2b, 0x89, 0xc5, 0x96, 0xb0, 0x33, 0xdb, 0x42, 0xbb, 0x7d, 0x46, 0x7b, + 0xf1, 0x65, 0x34, 0x99, 0xfc, 0xd0, 0xf3, 0x79, 0x90, 0x8c, 0x48, 0xac, 0x4c, 0x7a, 0x8c, 0xef, + 0xbe, 0xae, 0xb6, 0x8c, 0x5d, 0xd4, 0x56, 0xc2, 0x1f, 0xe4, 0xf9, 0x88, 0xfd, 0x37, 0x58, 0x17, + 0xe2, 0x3b, 0x02, 0x42, 0x20, 0xe9, 0xc9, 0x3e, 0x06, 0x01, 0x1c, 0xf6, 0x08, 0xaa, 0xfc, 0xa7, + 0x5e, 0xae, 0x5c, 0x8a, 0x1a, 0x7f, 0xc3, 0x62, 0x8e, 0xb6, 0x1f, 0x4c, 0xdf, 0xec, 0xc7, 0x54, + 0x42, 0x5c, 0xa8, 0xb4, 0x53, 0x27, 0xf4, 0xe0, 0x0e, 0xc9, 0xc1, 0x83, 0xc9, 0x91, 0xb3, 0x60, + 0x7e, 0xa4, 0xb7, 0x52, 0x24, 0xf5, 0x35, 0x80, 0x95, 0x65, 0x8d, 0xc6, 0x1d, 0x8a, 0x6e, 0x65, + 0xc1, 0x0f, 0xb6, 0xee, 0x88, 0xc4, 0x13, 0x5b, 0x1b, 0x43, 0xf1, 0xc4, 0x62, 0x1f, 0xf7, 0x75, + 0xf6, 0xd8, 0x29, 0xe7, 0x72, 0xb0, 0x38, 0xfc, 0xfa, 0xc0, 0x20, 0xb6, 0x1d, 0x75, 0x66, 0x18, + 0xa1, 0xee, 0x3d, 0x36, 0xad, 0xbf, 0xa2, 0x90, 0x58, 0xc1, 0x47, 0x1c, 0xc1, 0x9c, 0x0e, 0x31, + 0x8f, 0x68, 0x99, 0x54, 0x4c, 0x53, 0x61, 0x75, 0x1c, 0xd6, 0xde, 0x38, 0xa3, 0x07, 0x19, 0x11, + 0x1f, 0x45, 0x85, 0x4a, 0x2c, 0x16, 0x89, 0xad, 0x8b, 0x37, 0xf0, 0x49, 0xc6, 0xf4, 0x42, 0xa9, + 0xd8, 0x24, 0x56, 0xf4, 0x72, 0xf1, 0x11, 0x54, 0x14, 0x83, 0x89, 0xd6, 0x05, 0xf9, 0x9b, 0x20, + 0xa3, 0x54, 0x2a, 0x84, 0xb9, 0xd6, 0xd5, 0xfa, 0x8c, 0x42, 0xfd, 0x19, 0x42, 0xc1, 0x44, 0x9f, + 0x21, 0x98, 0x9e, 0x5e, 0xd4, 0xa0, 0xa2, 0x8d, 0x84, 0x60, 0xc2, 0xdb, 0x23, 0xe2, 0x3c, 0x0b, + 0xdd, 0xf3, 0x24, 0x5b, 0x92, 0x45, 0xb2, 0x3a, 0xa9, 0x79, 0xde, 0xcb, 0x47, 0xf7, 0xe0, 0x35, + 0x08, 0xed, 0x66, 0xae, 0xd5, 0x3f, 0x8f, 0x18, 0x7e, 0xd1, 0x3f, 0x0a, 0x6e, 0x0a, 0xa1, 0x42, + 0x7f, 0x63, 0x23, 0x41, 0x15, 0x95, 0xff, 0x24, 0x97, 0xbb, 0x5e, 0x28, 0x3d, 0x45, 0x33, 0x07, + 0x71, 0x6c, 0x61, 0x9a, 0x14, 0x73, 0x96, 0x27, 0xd8, 0x6f, 0xbb, 0x3d, 0xd2, 0xa5, 0xbb, 0xea, + 0x91, 0x27, 0x89, 0x3e, 0xbd, 0x27, 0xf1, 0xb8, 0x40, 0x11, 0xc6, 0xd9, 0x3d, 0x2c, 0x2f, 0x72, + 0xf5, 0x45, 0xab, 0x7e, 0x49, 0x95, 0x5f, 0xf0, 0x1a, 0x0d, 0xa4, 0x75, 0x99, 0xf7, 0xf6, 0xd0, + 0x51, 0x70, 0x1f, 0xc4, 0x9b, 0x0c, 0x37, 0x9c, 0xd4, 0xb1, 0x2b, 0xe9, 0xe1, 0xb6, 0x32, 0xeb, + 0x8c, 0x8d, 0xf0, 0xb2, 0xe0, 0xda, 0xef, 0x33, 0x7a, 0xfe, 0x66, 0x98, 0xb5, 0xd4, 0x8e, 0x50, + 0x7e, 0xdc, 0x9c, 0xba, 0xc6, 0xc4, 0xa9, 0x13, 0x7b, 0x17, 0x63, 0x62, 0xd6, 0xd5, 0xa8, 0x10, + 0x6f, 0xc2, 0x2c, 0xd2, 0x4c, 0x64, 0x1b, 0x3c, 0x74, 0x64, 0xd7, 0x32, 0xec, 0xb7, 0xb8, 0x00, + 0xa1, 0x10, 0xf1, 0xa7, 0x08, 0x30, 0x8e, 0xc8, 0xf7, 0x71, 0x25, 0x9e, 0x7f, 0x35, 0x09, 0xdd, + 0xbd, 0x46, 0x49, 0xb0, 0x35, 0xc0, 0x7d, 0xc6, 0x7f, 0x54, 0xdc, 0xba, 0x15, 0xde, 0xde, 0xeb, + 0x1b, 0x9f, 0x8d, 0xe1, 0x90, 0x21, 0x92, 0x1a, 0x0e, 0x19, 0xb8, 0x24, 0xd2, 0x47, 0x1f, 0xf0, + 0x38, 0x9d, 0xb0, 0x89, 0x61, 0x38, 0x64, 0x50, 0x78, 0x73, 0x9d, 0x1a, 0x57, 0xfc, 0xb1, 0xc0, + 0x0e, 0x7c, 0xd2, 0x54, 0xc2, 0x09, 0x4a, 0x0f, 0x7f, 0xa2, 0xca, 0xbb, 0xbc, 0xe6, 0x1a, 0x69, + 0x47, 0xea, 0xd2, 0xb9, 0xf4, 0xb5, 0x37, 0x52, 0x87, 0x7b, 0xd3, 0x1f, 0xbf, 0x03, 0xec, 0x70, + 0x7b, 0xa4, 0x83, 0x46, 0x5f, 0x3b, 0xdc, 0x95, 0x3a, 0x71, 0x5d, 0x1b, 0xb8, 0x01, 0xcf, 0x4e, + 0xea, 0xea, 0x2b, 0xe1, 0x0f, 0xed, 0xf0, 0xc1, 0x4a, 0x3e, 0x9d, 0x7a, 0xa5, 0xf1, 0x5e, 0x89, + 0x9c, 0x34, 0x33, 0xb7, 0xde, 0xce, 0x9c, 0xeb, 0xe2, 0x3b, 0xbe, 0x3d, 0xd2, 0xe9, 0x33, 0x7f, + 0x58, 0xec, 0x12, 0x50, 0x81, 0xbf, 0x31, 0xd4, 0xa2, 0x50, 0xca, 0x9b, 0x6b, 0xa1, 0xbc, 0xba, + 0x70, 0x62, 0xb9, 0x04, 0xa4, 0xf7, 0x2b, 0x55, 0xde, 0xe2, 0x05, 0x70, 0x69, 0x1d, 0x84, 0xcc, + 0x87, 0xe8, 0x71, 0xb7, 0x47, 0x7a, 0x48, 0xe9, 0xed, 0x91, 0x9e, 0xa5, 0xc9, 0xc1, 0x21, 0xb9, + 0x41, 0x09, 0x27, 0xb4, 0x91, 0xbd, 0xda, 0xe0, 0xe0, 0xed, 0x91, 0xae, 0x65, 0xac, 0x04, 0x72, + 0xe7, 0xeb, 0x3a, 0x82, 0xd6, 0x71, 0x32, 0x39, 0x78, 0x90, 0x46, 0xde, 0x87, 0x5e, 0xc5, 0x35, + 0xa8, 0x80, 0xc4, 0xbf, 0x23, 0xbe, 0x07, 0xf9, 0xd5, 0xcb, 0x54, 0x79, 0x89, 0x17, 0x4a, 0xa4, + 0xfb, 0xe1, 0xc4, 0x96, 0xf9, 0xe4, 0x53, 0xed, 0xe2, 0x81, 0xe4, 0x4d, 0x2c, 0x3a, 0xf4, 0xae, + 0x74, 0x39, 0xb9, 0xd4, 0x07, 0xd0, 0xe2, 0x4b, 0xa8, 0x30, 0xea, 0x6f, 0x50, 0x36, 0x86, 0x76, + 0x83, 0x17, 0x42, 0x41, 0xb5, 0xac, 0xca, 0x4f, 0x79, 0xf5, 0x42, 0x49, 0x82, 0x97, 0x53, 0xd0, + 0x29, 0x84, 0x7a, 0xbc, 0x3d, 0xd2, 0x95, 0xea, 0x6d, 0xd5, 0xce, 0x5f, 0x7c, 0x78, 0xe9, 0x52, + 0x6b, 0xd7, 0xd2, 0x52, 0x9f, 0xde, 0xba, 0x0a, 0x1f, 0xd1, 0xd0, 0x23, 0x5e, 0x27, 0x0e, 0xd1, + 0xb3, 0x6b, 0x82, 0x74, 0xed, 0x69, 0xa3, 0x2b, 0x06, 0x19, 0x68, 0xfe, 0xc2, 0x45, 0xde, 0x5e, + 0x67, 0x35, 0xfc, 0x71, 0xcb, 0xb7, 0xe7, 0x4d, 0xf2, 0x6d, 0x51, 0x36, 0xa7, 0x65, 0xa3, 0xc3, + 0x21, 0xd0, 0xa7, 0x49, 0xd2, 0x75, 0x09, 0x68, 0x96, 0x5d, 0x3b, 0xac, 0xd5, 0x03, 0x11, 0x41, + 0xce, 0x6a, 0x4a, 0x11, 0xa5, 0x1c, 0x45, 0xd0, 0x54, 0xb4, 0xec, 0x37, 0x71, 0xa8, 0x8c, 0x24, + 0xe8, 0x71, 0x37, 0xdf, 0x07, 0x3f, 0xc4, 0xf2, 0xdc, 0xa9, 0x84, 0xf1, 0xb6, 0x44, 0x82, 0x13, + 0xc2, 0x70, 0xfe, 0x46, 0x40, 0x85, 0xac, 0x48, 0x9c, 0x83, 0x26, 0x61, 0x6d, 0x96, 0xca, 0xdd, + 0x7c, 0x1f, 0xfd, 0x25, 0x4e, 0x43, 0xae, 0x50, 0x94, 0xaa, 0x46, 0xae, 0x50, 0x54, 0x14, 0x51, + 0x7e, 0x28, 0xda, 0xf2, 0x08, 0xbd, 0xf8, 0x26, 0x7f, 0xe3, 0x81, 0x62, 0x68, 0xee, 0x8d, 0x87, + 0xfe, 0x1b, 0x0f, 0xd4, 0xe0, 0xd6, 0xa9, 0x8c, 0x6b, 0xe6, 0xa0, 0x49, 0x11, 0x78, 0x13, 0x42, + 0xdf, 0x76, 0xc0, 0x2f, 0xf1, 0x09, 0x54, 0x44, 0xac, 0x08, 0x72, 0x4c, 0xf1, 0xd3, 0x8b, 0xec, + 0xf9, 0x76, 0xb3, 0xa8, 0x61, 0x40, 0x3e, 0x03, 0xde, 0xb3, 0x1c, 0x4d, 0x35, 0xd5, 0x91, 0xb1, + 0xc3, 0x7c, 0xa6, 0xfa, 0x5c, 0xa1, 0xa0, 0x9d, 0x2f, 0xb5, 0xe7, 0x8b, 0x49, 0xc4, 0x6d, 0x98, + 0xdf, 0xb9, 0xeb, 0x82, 0xf1, 0x9f, 0x36, 0x8f, 0x9f, 0x36, 0x8f, 0x3b, 0x69, 0xf3, 0xf8, 0xa5, + 0x65, 0xf3, 0x20, 0x8e, 0x45, 0xc6, 0xe6, 0x51, 0x61, 0xbb, 0x79, 0xf0, 0xdd, 0x51, 0x00, 0xa2, + 0xe3, 0x73, 0xfb, 0x06, 0x0d, 0xcb, 0x32, 0x06, 0x8f, 0x48, 0xf3, 0x6d, 0xb7, 0x8f, 0xba, 0x5a, + 0xba, 0x81, 0x7c, 0xee, 0x42, 0x0b, 0x1d, 0x7b, 0xf8, 0x71, 0xef, 0x23, 0xbf, 0x34, 0xed, 0x23, + 0x0f, 0xe5, 0xd8, 0x47, 0x78, 0xac, 0x8c, 0x67, 0x3b, 0xe9, 0x11, 0xd0, 0xdc, 0x1c, 0xcd, 0xbf, + 0xb1, 0x5d, 0x65, 0xb9, 0x69, 0x57, 0x59, 0x68, 0x27, 0x8f, 0xeb, 0x6a, 0xe3, 0x4c, 0x7a, 0xd0, + 0xc1, 0x6d, 0x44, 0xd3, 0xb3, 0x2a, 0x1c, 0xb7, 0x98, 0x32, 0x94, 0xdf, 0xa4, 0xe8, 0xc1, 0x16, + 0x2c, 0x4e, 0xbb, 0xeb, 0x14, 0xdc, 0x29, 0x86, 0xf0, 0xfc, 0x1a, 0xe5, 0xe3, 0x5f, 0xe2, 0x7c, + 0x84, 0x88, 0x5c, 0xdb, 0x9a, 0xb0, 0x3d, 0xd3, 0xdf, 0x83, 0x0a, 0xa1, 0x3a, 0x94, 0x7d, 0xa8, + 0x17, 0x4b, 0x51, 0x91, 0xfe, 0x98, 0x8b, 0xee, 0x61, 0x93, 0xb7, 0xed, 0xac, 0x0e, 0xed, 0xae, + 0x0b, 0x7a, 0x5a, 0xf3, 0xd0, 0x9c, 0x35, 0x4a, 0x02, 0x0f, 0x3b, 0x0e, 0xaf, 0x7f, 0x7e, 0x5c, + 0x5b, 0xc0, 0xaf, 0x60, 0x9b, 0xe6, 0xb6, 0x80, 0xb1, 0xd6, 0x12, 0xfc, 0x4a, 0xf5, 0x56, 0xd2, + 0x54, 0x58, 0xb1, 0x38, 0x7b, 0x7e, 0xc8, 0x2a, 0x58, 0x7a, 0x3e, 0x07, 0xf4, 0x49, 0x0f, 0x42, + 0xe0, 0x66, 0x26, 0x14, 0xe2, 0xf4, 0x24, 0xdf, 0x3b, 0xa4, 0x9d, 0xbc, 0x94, 0x19, 0x78, 0x2f, + 0xf5, 0x7a, 0x3b, 0x0d, 0xb9, 0x72, 0xcb, 0x45, 0xce, 0x70, 0xe6, 0x3e, 0x7e, 0xdc, 0xf2, 0x61, + 0x9d, 0x2e, 0x1f, 0x6c, 0x63, 0xa8, 0x30, 0x05, 0xed, 0x17, 0xa1, 0xc4, 0x0e, 0x4c, 0xfb, 0x63, + 0x09, 0x85, 0xff, 0x57, 0x40, 0x33, 0xb2, 0xdb, 0xfc, 0x08, 0x94, 0x3b, 0x5d, 0x48, 0x14, 0x8e, + 0x29, 0x24, 0x86, 0xf2, 0xc9, 0x61, 0x85, 0xd8, 0x92, 0x48, 0x77, 0x3b, 0x94, 0xc0, 0xce, 0x1f, + 0x15, 0x23, 0x6f, 0xd6, 0x53, 0xb6, 0x81, 0xfd, 0x7b, 0xa5, 0x2a, 0x57, 0xe9, 0x29, 0xdb, 0x96, + 0xd6, 0xd5, 0xb7, 0xac, 0x00, 0x2d, 0x4d, 0x8f, 0x86, 0x3e, 0x70, 0x43, 0x57, 0x96, 0x78, 0x35, + 0x49, 0xeb, 0xba, 0x31, 0xda, 0x7e, 0x50, 0xcf, 0xe1, 0xf6, 0x22, 0x2a, 0xc4, 0x2b, 0xce, 0x5d, + 0x10, 0x93, 0x9c, 0x79, 0x7a, 0x21, 0xe9, 0xfa, 0x91, 0x09, 0x75, 0xad, 0xb7, 0x15, 0x1b, 0xd0, + 0xe4, 0x9d, 0xca, 0x2e, 0xd2, 0x77, 0x01, 0xe9, 0x9b, 0x58, 0x1a, 0x59, 0x99, 0xf4, 0xb4, 0xd6, + 0x7e, 0x6d, 0xf4, 0x68, 0xbf, 0xd6, 0x77, 0x82, 0xf5, 0x9f, 0xb9, 0xf8, 0x6e, 0xea, 0xf4, 0x61, + 0x6d, 0xff, 0x90, 0x71, 0x18, 0x3d, 0x7c, 0xb0, 0x12, 0x08, 0x37, 0xdd, 0xd7, 0xa9, 0xc3, 0xb3, + 0x1b, 0x2d, 0xda, 0x53, 0x15, 0x56, 0x7c, 0xd0, 0xa3, 0x5e, 0x47, 0x12, 0x90, 0xe6, 0x42, 0xe2, + 0x29, 0xfb, 0x93, 0xee, 0x0d, 0x17, 0x31, 0xfa, 0x66, 0xb7, 0xfc, 0x71, 0x8b, 0xa0, 0x55, 0x26, + 0x11, 0xe4, 0x78, 0x6c, 0x1c, 0x4b, 0xf4, 0xfc, 0x95, 0x80, 0x8a, 0xd7, 0x47, 0x12, 0xa1, 0xed, + 0xbb, 0x6a, 0x22, 0xe1, 0xed, 0xa1, 0x06, 0x71, 0x2d, 0x9a, 0x14, 0x27, 0xfe, 0x0b, 0x94, 0xd3, + 0x56, 0xa8, 0xf2, 0x32, 0x2f, 0x2d, 0x92, 0x1e, 0x04, 0x57, 0xed, 0xd1, 0xd6, 0x9e, 0xf4, 0x99, + 0x0b, 0xa0, 0xd2, 0x43, 0x9a, 0x42, 0x28, 0x4f, 0xf7, 0xb4, 0x01, 0xa0, 0x8f, 0x36, 0x10, 0x1f, + 0x42, 0x93, 0xf0, 0x67, 0x98, 0xed, 0xaf, 0xfa, 0x2e, 0x55, 0x9e, 0xe1, 0xa5, 0x45, 0x12, 0xfd, + 0xd7, 0x47, 0xff, 0x15, 0x9f, 0x46, 0x53, 0xfc, 0x04, 0x9b, 0x9b, 0x22, 0x3b, 0x95, 0x30, 0x1f, + 0xf2, 0x8c, 0x2f, 0x97, 0xf8, 0x1f, 0x3e, 0xfe, 0x87, 0xe7, 0xa0, 0x0b, 0x21, 0x98, 0x0c, 0xd1, + 0x5d, 0x56, 0xea, 0x3e, 0xdd, 0x02, 0x59, 0x48, 0xc8, 0x53, 0x43, 0x5f, 0x88, 0x94, 0xd0, 0x24, + 0x1c, 0xf0, 0x4e, 0x64, 0xa4, 0x55, 0x3b, 0x3c, 0x00, 0xd3, 0xd2, 0xdd, 0xbb, 0x9f, 0x44, 0x05, + 0x89, 0x50, 0xa2, 0x91, 0x5d, 0xd0, 0x92, 0xfc, 0x8c, 0x50, 0x22, 0x95, 0x02, 0x28, 0xf9, 0xa1, + 0x1d, 0xbc, 0x96, 0x1c, 0x3a, 0xa0, 0x3b, 0x81, 0xf8, 0x00, 0x44, 0xdc, 0x23, 0xa0, 0xc9, 0x01, + 0x7a, 0xa8, 0xca, 0x33, 0x72, 0xb7, 0xb2, 0x32, 0xe9, 0x57, 0xd0, 0x05, 0x1c, 0xa4, 0xe0, 0xe9, + 0x54, 0xb9, 0x1b, 0xb6, 0x5c, 0xb8, 0x23, 0x1d, 0xed, 0x6d, 0x4d, 0x5d, 0xdd, 0x0b, 0x4f, 0xab, + 0x00, 0xbd, 0x00, 0xfb, 0x45, 0xeb, 0x5e, 0xdd, 0xff, 0x1e, 0x1f, 0x07, 0x08, 0xfe, 0xe9, 0x71, + 0xe0, 0xd2, 0xb9, 0x74, 0x67, 0x87, 0x8f, 0x7d, 0xc3, 0xd3, 0x3f, 0x0d, 0x4d, 0x03, 0x7c, 0xb0, + 0x77, 0xa1, 0xe2, 0xf3, 0x68, 0x46, 0xd8, 0x54, 0xa2, 0xfb, 0x03, 0x10, 0xec, 0x58, 0x2a, 0xa5, + 0x69, 0x30, 0x4e, 0xe8, 0xba, 0xae, 0xd6, 0x67, 0x81, 0xd0, 0x43, 0xd4, 0xb9, 0x2c, 0x21, 0xea, + 0xf8, 0xa6, 0xa6, 0x10, 0x75, 0xbf, 0xe5, 0xc3, 0x41, 0x00, 0x76, 0xd6, 0xaa, 0x72, 0x1d, 0x9f, + 0xea, 0xf3, 0x49, 0xbe, 0x71, 0xaa, 0xb3, 0x15, 0xe2, 0xf7, 0xe8, 0x4f, 0xf9, 0x6f, 0x8f, 0x74, + 0x65, 0x06, 0x2e, 0xc0, 0xdf, 0xc9, 0xc1, 0xa1, 0xcc, 0x9b, 0xa7, 0x46, 0x3f, 0x1a, 0xd4, 0x6b, + 0xf9, 0xbc, 0x9f, 0xe7, 0x04, 0x84, 0xe8, 0x98, 0x77, 0xe9, 0x71, 0x5d, 0x5a, 0x05, 0x55, 0xfe, + 0xbd, 0x97, 0x2b, 0x97, 0x22, 0x94, 0xa8, 0xed, 0x53, 0x75, 0x6c, 0xdb, 0xb9, 0xb5, 0x29, 0x12, + 0x0e, 0x25, 0x22, 0xb1, 0xad, 0x4a, 0x8b, 0x12, 0x4e, 0x7c, 0xd1, 0xca, 0x17, 0x35, 0x29, 0x89, + 0x58, 0x28, 0x10, 0x5f, 0xe2, 0x4e, 0xf5, 0x7e, 0x90, 0x3a, 0x75, 0x41, 0xbb, 0xb2, 0x0f, 0x5a, + 0xc5, 0x12, 0xaf, 0x7e, 0xd1, 0xba, 0x47, 0x69, 0xf2, 0x87, 0x1a, 0xbf, 0x68, 0xdd, 0xd3, 0x12, + 0x09, 0x05, 0x94, 0x74, 0x5f, 0x67, 0xea, 0xf8, 0x0d, 0x6d, 0xa4, 0xdb, 0xc7, 0x7d, 0x5c, 0x7c, + 0x94, 0x3e, 0xca, 0x05, 0xaf, 0x1c, 0xfa, 0xb2, 0x58, 0x89, 0x07, 0xa4, 0x12, 0x1d, 0x0b, 0xa9, + 0x53, 0xb7, 0x4c, 0xb9, 0x86, 0xe1, 0xe5, 0xee, 0xa3, 0x3a, 0x89, 0x93, 0x70, 0xf2, 0x34, 0x06, + 0x2b, 0x25, 0x71, 0x31, 0x07, 0x71, 0x1f, 0x12, 0xd0, 0xa4, 0x00, 0xe1, 0x78, 0xba, 0xab, 0xcf, + 0xb3, 0x5a, 0x16, 0x0c, 0xa9, 0x00, 0x2f, 0x86, 0x68, 0x03, 0xe9, 0x39, 0x9e, 0xff, 0xe1, 0x7a, + 0x45, 0x27, 0x44, 0x5d, 0x10, 0xd0, 0x81, 0x93, 0xb9, 0x42, 0xe4, 0x26, 0x80, 0xd4, 0x01, 0xa0, + 0x33, 0x1f, 0xed, 0x54, 0xdc, 0x81, 0xa6, 0x06, 0xa8, 0x3b, 0x34, 0x19, 0x06, 0x55, 0x1a, 0x4a, + 0xed, 0x87, 0x45, 0x44, 0x1b, 0xe1, 0x48, 0x73, 0x2b, 0x49, 0x04, 0xa7, 0x69, 0xf0, 0x28, 0xa0, + 0x73, 0x36, 0x83, 0xe0, 0x2f, 0x05, 0xa9, 0xf3, 0x1b, 0x7c, 0xa9, 0x68, 0x9c, 0x5f, 0x32, 0xb5, + 0xc2, 0x5f, 0x3a, 0x3b, 0x7a, 0xf2, 0xbc, 0xf9, 0x4b, 0x26, 0x10, 0xf1, 0x77, 0x68, 0x3a, 0x7c, + 0x7a, 0x3d, 0xf3, 0x25, 0x21, 0x4f, 0xbf, 0x72, 0x7f, 0x8b, 0x38, 0x78, 0x65, 0xb7, 0x93, 0x66, + 0xb3, 0x78, 0xba, 0x67, 0x53, 0xc7, 0xaf, 0x68, 0xef, 0x9c, 0xa6, 0x1f, 0xcc, 0x86, 0xc3, 0x9f, + 0x84, 0x31, 0x18, 0x9f, 0x9c, 0x32, 0xce, 0x4f, 0x66, 0xb5, 0xe3, 0x3e, 0x49, 0x67, 0x4a, 0x3f, + 0x99, 0x05, 0x87, 0x3f, 0xd9, 0xac, 0xc7, 0x7f, 0x85, 0x4f, 0x16, 0x8f, 0xf3, 0x93, 0x59, 0xed, + 0xf8, 0x59, 0x12, 0x97, 0x5d, 0xf6, 0xc9, 0x2c, 0x38, 0xf1, 0xf7, 0x68, 0x26, 0x49, 0x56, 0xbd, + 0x31, 0xe0, 0x6f, 0x54, 0x36, 0x34, 0x27, 0x70, 0x0d, 0xc9, 0x1a, 0x90, 0xfb, 0xa3, 0xcb, 0x55, + 0x79, 0xa9, 0xd7, 0xda, 0x52, 0x9a, 0x6b, 0x7c, 0xb6, 0xf3, 0x7d, 0xad, 0xff, 0x06, 0xfc, 0xa4, + 0x1f, 0xb7, 0xc2, 0x8b, 0xaf, 0xa1, 0x19, 0x46, 0x61, 0x1d, 0xc9, 0x4b, 0xe0, 0xf4, 0x24, 0x6d, + 0x42, 0x5f, 0x4f, 0x8f, 0x58, 0xbe, 0x6e, 0xf9, 0x90, 0xd8, 0x2a, 0x60, 0x8d, 0x21, 0xa0, 0x84, + 0x5a, 0x94, 0x58, 0x9c, 0x66, 0xee, 0xdd, 0xa6, 0xca, 0x5b, 0xbd, 0x46, 0xa9, 0xe4, 0xa3, 0xdc, + 0x77, 0xe8, 0x42, 0xea, 0xe8, 0xf5, 0x4c, 0x6b, 0x7b, 0xb9, 0xd6, 0x3d, 0x90, 0xea, 0xda, 0xaf, + 0xf5, 0xf7, 0xdc, 0x1e, 0x79, 0x3b, 0x73, 0xe0, 0x42, 0xea, 0xc4, 0x59, 0xf8, 0x59, 0xee, 0xd6, + 0xba, 0x07, 0xe8, 0x16, 0x42, 0x08, 0xb9, 0x92, 0x5b, 0x74, 0xf2, 0x1a, 0x51, 0xf7, 0x34, 0x37, + 0xba, 0xe7, 0xe3, 0xff, 0xcc, 0x30, 0xc7, 0xff, 0x29, 0x31, 0xde, 0x47, 0xce, 0x84, 0x1a, 0xf6, + 0x00, 0x72, 0x81, 0x29, 0x13, 0x93, 0x08, 0x71, 0x89, 0xb8, 0x84, 0x6b, 0x0b, 0x4c, 0x8f, 0x1c, + 0xef, 0x82, 0x7a, 0xa3, 0xa4, 0x2a, 0xa0, 0xca, 0x2f, 0xa3, 0xdf, 0x78, 0xb3, 0xf6, 0x33, 0x69, + 0x2d, 0xbf, 0x4d, 0x94, 0xbb, 0x93, 0x83, 0xc3, 0x99, 0xf7, 0xf6, 0xc0, 0xe3, 0x32, 0x6d, 0xe0, + 0x06, 0xec, 0xa4, 0xa0, 0xe3, 0x02, 0x60, 0x19, 0x4c, 0xf3, 0x8b, 0xd6, 0x3d, 0x06, 0xd6, 0xfb, + 0x3a, 0x41, 0x17, 0x58, 0xec, 0xf9, 0xbb, 0xa9, 0x68, 0x6e, 0x0d, 0xe5, 0x28, 0xfe, 0x33, 0xec, + 0x24, 0xb2, 0x9d, 0xdf, 0xb7, 0x04, 0x96, 0x76, 0xd8, 0xcb, 0xef, 0x5b, 0xf3, 0x4d, 0x12, 0x9b, + 0x85, 0x94, 0x66, 0x41, 0x61, 0xbf, 0xac, 0x2e, 0x89, 0xcd, 0x99, 0x21, 0x94, 0xb4, 0xce, 0xb0, + 0x89, 0x91, 0x67, 0xec, 0x59, 0x8f, 0x99, 0xb6, 0xd4, 0x45, 0x76, 0x5b, 0x6a, 0xea, 0xd4, 0x2d, + 0x2e, 0x5e, 0xf7, 0x0c, 0x81, 0xee, 0xac, 0x6c, 0x27, 0xc9, 0x9b, 0xe8, 0x4e, 0xf2, 0xd7, 0x76, + 0xdb, 0xe4, 0x87, 0xdf, 0xfb, 0x36, 0xf9, 0x65, 0x75, 0x59, 0xec, 0x01, 0xdf, 0x8c, 0xec, 0x8e, + 0x7d, 0xa2, 0xb5, 0x5f, 0xd3, 0x8e, 0xba, 0x51, 0xdf, 0x18, 0x0b, 0xc6, 0x0c, 0xe6, 0x37, 0xee, + 0x4d, 0xd3, 0xb2, 0x47, 0x4d, 0xfa, 0xce, 0xf6, 0xa8, 0xc9, 0xdf, 0xe1, 0x1e, 0x55, 0xf8, 0xdd, + 0xef, 0x51, 0x45, 0xdf, 0xfd, 0x1e, 0x85, 0xbe, 0x8f, 0x3d, 0x6a, 0xca, 0xf7, 0xba, 0x47, 0x15, + 0x7f, 0x57, 0x7b, 0x14, 0xa7, 0x5d, 0x4e, 0xfd, 0x41, 0x68, 0x97, 0xe6, 0x4d, 0x73, 0xda, 0xf7, + 0xbc, 0x69, 0x4e, 0x37, 0x6d, 0x9a, 0x55, 0x2f, 0xab, 0xf2, 0x4b, 0xe8, 0x45, 0x6f, 0xae, 0x9d, + 0x47, 0x97, 0x19, 0x9c, 0x10, 0xff, 0x5c, 0x30, 0x76, 0x8c, 0xcf, 0x05, 0x22, 0xfe, 0x3f, 0x17, + 0x38, 0x19, 0xf8, 0xb9, 0xc0, 0xbe, 0xe0, 0x19, 0x74, 0xb1, 0x77, 0xb6, 0xd9, 0xbd, 0xdf, 0x19, + 0xee, 0xcb, 0xbb, 0xac, 0x7e, 0xc8, 0xf9, 0xe3, 0xf4, 0x43, 0x26, 0x19, 0xf5, 0x2d, 0x7e, 0xc8, + 0x25, 0x56, 0x3f, 0x64, 0x7b, 0xf7, 0x63, 0xcf, 0x1b, 0x2e, 0x34, 0xb7, 0x96, 0x4a, 0x13, 0x3b, + 0x95, 0xa0, 0xc6, 0xaa, 0x12, 0x40, 0xde, 0x67, 0x43, 0x25, 0x98, 0x9d, 0xa5, 0x06, 0x50, 0x84, + 0x70, 0xfb, 0xbd, 0xdd, 0xa9, 0xdc, 0xf5, 0xb5, 0x4e, 0xe5, 0x55, 0x1b, 0x55, 0xb9, 0x1e, 0xad, + 0xf7, 0xe6, 0x1a, 0xbb, 0xbe, 0x3d, 0x70, 0x7d, 0x99, 0x89, 0x6a, 0x5a, 0x38, 0x12, 0x54, 0x8c, + 0x4e, 0x09, 0x1d, 0xd9, 0x77, 0xf8, 0x13, 0x1d, 0x8d, 0x41, 0x47, 0x7f, 0xef, 0x82, 0xd4, 0x0c, + 0xf6, 0x54, 0xf4, 0x88, 0x95, 0x8a, 0xc0, 0x0a, 0x68, 0x50, 0x91, 0x4d, 0x62, 0x81, 0x6f, 0x85, + 0x70, 0xfa, 0x05, 0x55, 0xfe, 0x40, 0x40, 0x17, 0x05, 0xaf, 0xf3, 0x78, 0xa5, 0x3f, 0xa5, 0xbe, + 0x95, 0x9c, 0x38, 0x02, 0x23, 0xe5, 0xed, 0x91, 0x2e, 0xed, 0xbd, 0xbd, 0xa9, 0xd3, 0xbd, 0xda, + 0xb9, 0x0f, 0xb5, 0x7d, 0x27, 0x93, 0x43, 0xfb, 0x30, 0x4a, 0xce, 0xee, 0x87, 0x38, 0x15, 0xb8, + 0xb6, 0xe3, 0x24, 0x49, 0x13, 0xd9, 0x01, 0xe5, 0x34, 0x60, 0x0a, 0xe9, 0xcd, 0x68, 0xdb, 0x7e, + 0x09, 0xec, 0x5b, 0xe4, 0xfe, 0x7d, 0x88, 0x85, 0x7c, 0xbe, 0x34, 0xba, 0xbf, 0x9b, 0x05, 0x01, + 0xe4, 0xa2, 0x87, 0xfe, 0xef, 0x2e, 0x78, 0x7d, 0x76, 0x67, 0x92, 0xe4, 0xf3, 0xa6, 0x8b, 0xda, + 0x05, 0xf6, 0xfb, 0x24, 0x9b, 0x94, 0xe9, 0x85, 0x91, 0xe9, 0x28, 0x00, 0x97, 0x7b, 0xf0, 0xc2, + 0x68, 0xad, 0x2a, 0xd7, 0xa1, 0x35, 0xde, 0x1c, 0x48, 0x61, 0xf9, 0x03, 0x4c, 0xeb, 0xe7, 0xf4, + 0xba, 0xa8, 0x80, 0xb8, 0x01, 0xd4, 0xc7, 0x22, 0x2d, 0xa1, 0xa0, 0x12, 0x63, 0xd9, 0x34, 0x36, + 0xe3, 0x4a, 0x46, 0xbe, 0xbf, 0x23, 0x99, 0x31, 0x48, 0xbd, 0x4e, 0xbf, 0xcf, 0xab, 0xf2, 0x7a, + 0x2f, 0x57, 0x2c, 0x3d, 0x43, 0x73, 0x6d, 0x5c, 0x3d, 0xcb, 0x0a, 0x6f, 0x8f, 0x74, 0xc1, 0x01, + 0x82, 0xba, 0xe9, 0xef, 0x6a, 0x0e, 0x27, 0x42, 0x95, 0x71, 0xa5, 0x71, 0x7b, 0x65, 0x20, 0x56, + 0xb9, 0x2d, 0x10, 0xdf, 0xca, 0x52, 0x51, 0x6f, 0x8d, 0x46, 0x22, 0x8d, 0x3e, 0xae, 0x37, 0xb1, + 0x0a, 0xa3, 0xba, 0xc1, 0x78, 0xfc, 0x07, 0xe1, 0x7f, 0xa0, 0x48, 0x9a, 0x9d, 0xea, 0x1d, 0xd2, + 0x4e, 0x1f, 0xc0, 0x6c, 0xd9, 0x7b, 0x29, 0xdd, 0xd3, 0xa6, 0xf5, 0x5e, 0xd1, 0xce, 0x9c, 0xf1, + 0xd1, 0x6a, 0x71, 0x25, 0x2a, 0x66, 0x3e, 0xa8, 0xe4, 0xb0, 0x93, 0x67, 0x44, 0x85, 0x35, 0x55, + 0x48, 0x93, 0xa0, 0x1f, 0x9f, 0xa9, 0x54, 0x7c, 0x5d, 0x40, 0x05, 0x24, 0x16, 0x0e, 0x15, 0x1e, + 0xf3, 0x2c, 0x67, 0x8b, 0xcd, 0x9c, 0x47, 0xca, 0x06, 0x55, 0xae, 0xf1, 0x02, 0xbc, 0x54, 0x05, + 0x81, 0xc1, 0xd3, 0x87, 0xf6, 0x97, 0xbb, 0x75, 0x6c, 0xe8, 0x65, 0xda, 0x95, 0xee, 0xe4, 0xd0, + 0xa1, 0x74, 0x5f, 0x67, 0x72, 0xe8, 0x10, 0x81, 0xd7, 0x5d, 0xa5, 0x53, 0x57, 0xcf, 0x7e, 0x59, + 0x3d, 0xc9, 0x9b, 0x5f, 0x12, 0x2c, 0xfb, 0x99, 0x0f, 0xfa, 0x12, 0x4f, 0x0a, 0x7c, 0xda, 0x99, + 0x82, 0x71, 0x8c, 0x04, 0xfc, 0xb3, 0x8d, 0xa4, 0x34, 0xeb, 0xe0, 0xcb, 0xc9, 0xc1, 0x0f, 0x52, + 0xc7, 0xae, 0x70, 0x03, 0xd2, 0xba, 0x07, 0xd2, 0x47, 0x31, 0xda, 0x28, 0x16, 0x8f, 0x5d, 0xc1, + 0xab, 0xc4, 0x0d, 0x4e, 0xef, 0x82, 0x1f, 0x20, 0x9f, 0xc9, 0x06, 0x9f, 0x1b, 0x2f, 0x0a, 0xe8, + 0xbc, 0xe0, 0x1d, 0x8b, 0x74, 0xa4, 0x66, 0x53, 0x1e, 0x96, 0xab, 0x67, 0x21, 0xb2, 0x3c, 0x7c, + 0x99, 0x44, 0x94, 0x05, 0xbd, 0x8f, 0x44, 0x86, 0x7d, 0xc0, 0xcd, 0xee, 0xa4, 0x89, 0x39, 0x1c, + 0xe2, 0x15, 0x11, 0xe7, 0x1c, 0x6d, 0xff, 0x50, 0xfa, 0xf2, 0x7b, 0xda, 0xe1, 0x0e, 0x70, 0xf6, + 0xe1, 0xc7, 0x65, 0x84, 0xaa, 0xe7, 0xba, 0x32, 0x09, 0x90, 0xbd, 0x79, 0xc8, 0xed, 0x3c, 0xcc, + 0x3b, 0x31, 0xd5, 0xb9, 0xe3, 0x1b, 0x0c, 0x48, 0x59, 0x4f, 0xe4, 0xc7, 0xbd, 0x14, 0xc7, 0xcc, + 0xcd, 0x9e, 0x46, 0x2e, 0x26, 0x48, 0x4a, 0xbd, 0xde, 0xae, 0xed, 0xfb, 0x84, 0x8a, 0x13, 0xfa, + 0x4a, 0x7a, 0x4c, 0x14, 0x49, 0x5e, 0x53, 0x36, 0xa0, 0xab, 0x67, 0x6d, 0x3b, 0x75, 0x12, 0x33, + 0xff, 0x30, 0x1f, 0x15, 0x57, 0xb3, 0x00, 0x7d, 0xf4, 0x09, 0x88, 0x9e, 0x40, 0x87, 0xb9, 0x8b, + 0x18, 0x19, 0x75, 0xdc, 0x68, 0x0a, 0xfd, 0x61, 0xa4, 0x27, 0xf6, 0xf1, 0x45, 0x1c, 0x44, 0x0d, + 0x5e, 0xb7, 0x3c, 0x13, 0x04, 0x2e, 0x12, 0x3d, 0xa8, 0x98, 0xfe, 0xdc, 0x1c, 0xc7, 0xc7, 0x02, + 0x1a, 0xea, 0x9a, 0x2f, 0x13, 0x67, 0x41, 0xb2, 0x82, 0x20, 0x0b, 0x77, 0x49, 0x7e, 0x60, 0x5d, + 0x7e, 0x5b, 0x68, 0x37, 0x77, 0x5d, 0xce, 0x7e, 0x8a, 0xa5, 0xa8, 0x70, 0x5b, 0x68, 0x37, 0xf4, + 0x07, 0x71, 0xae, 0xf5, 0xdf, 0x78, 0x46, 0x7a, 0x62, 0x1f, 0x88, 0x3b, 0xc6, 0x67, 0xfa, 0x71, + 0xa3, 0x29, 0xf4, 0x07, 0xe9, 0x97, 0x86, 0xe9, 0xe1, 0x8a, 0xc4, 0x45, 0x68, 0x2a, 0xfd, 0xe9, + 0x03, 0xc9, 0x07, 0x89, 0x5b, 0xcd, 0x85, 0x78, 0x56, 0xb4, 0x00, 0x46, 0x31, 0x05, 0x66, 0xc5, + 0x97, 0xe1, 0xf1, 0x93, 0x33, 0x5b, 0x5d, 0x10, 0x22, 0x82, 0xf9, 0xd8, 0x4f, 0x3c, 0xc6, 0x06, + 0x3d, 0xe9, 0xf3, 0x54, 0x18, 0xa3, 0x5e, 0x80, 0xfb, 0x36, 0x09, 0xce, 0x69, 0xd0, 0xb7, 0x49, + 0x3a, 0xce, 0x42, 0x05, 0xbb, 0x23, 0x61, 0x85, 0x9a, 0x26, 0x7d, 0xf0, 0x83, 0x98, 0xff, 0x22, + 0xe1, 0x78, 0x73, 0x13, 0x99, 0xfc, 0x0c, 0x6a, 0xfe, 0xd3, 0x4b, 0xc4, 0x39, 0x68, 0x12, 0x16, + 0xf1, 0x75, 0x41, 0x6a, 0x37, 0xa4, 0xbf, 0x70, 0x3b, 0xf2, 0x79, 0x98, 0x0b, 0x35, 0x1b, 0x1a, + 0x25, 0xe2, 0x0c, 0x94, 0xd7, 0x1c, 0x6b, 0xa4, 0xf6, 0x42, 0xfc, 0xa7, 0x74, 0xf5, 0xb4, 0x0b, + 0x4d, 0xa3, 0xd6, 0x8d, 0x75, 0xb0, 0x8b, 0x8a, 0x7f, 0x2d, 0xa0, 0xa9, 0x35, 0x26, 0x03, 0x8b, + 0x45, 0xe1, 0x33, 0x55, 0xfb, 0x94, 0xdf, 0x95, 0xde, 0x3b, 0x06, 0x44, 0x3c, 0xea, 0x69, 0x51, + 0xe5, 0xf5, 0xe2, 0x54, 0x38, 0x99, 0xd1, 0xf2, 0xd2, 0x95, 0xa6, 0x9f, 0xb7, 0x47, 0xba, 0xe0, + 0x88, 0x08, 0x06, 0x33, 0xad, 0x7d, 0x04, 0x1f, 0x9e, 0xf7, 0x1c, 0x1d, 0xdd, 0xfb, 0x1e, 0x4d, + 0x4b, 0xa1, 0x76, 0xa5, 0x0f, 0x5c, 0x4e, 0x7f, 0x78, 0x00, 0x7e, 0xee, 0xfd, 0xe7, 0xc9, 0x37, + 0x5d, 0x0b, 0x3d, 0xa5, 0x95, 0xe6, 0x6f, 0x57, 0xb6, 0x2c, 0x63, 0x25, 0x55, 0x82, 0x57, 0x6c, + 0x75, 0xa1, 0x39, 0x3e, 0x25, 0x11, 0xdb, 0x65, 0x1a, 0xd2, 0x26, 0x7f, 0x7c, 0xa7, 0x68, 0x79, + 0xbb, 0x68, 0x85, 0xc3, 0x93, 0x7b, 0x60, 0x3c, 0x60, 0xf1, 0xa8, 0xe7, 0xb8, 0xa0, 0xca, 0xbf, + 0x16, 0xef, 0x19, 0xdd, 0x7f, 0x30, 0x33, 0x70, 0xcc, 0x34, 0x33, 0x88, 0x22, 0x59, 0xfa, 0xf4, + 0xa8, 0xda, 0x81, 0x25, 0x2c, 0x67, 0xd1, 0xd2, 0xce, 0x5f, 0xcd, 0x7c, 0x7c, 0x01, 0xd2, 0x76, + 0xe0, 0xf9, 0xef, 0x3f, 0x98, 0x3a, 0x7e, 0x25, 0x39, 0x78, 0x40, 0xeb, 0x3e, 0xc2, 0x83, 0x41, + 0x07, 0x64, 0xc2, 0xcb, 0x3c, 0xe5, 0xce, 0x13, 0xae, 0x7c, 0x4d, 0x0f, 0x60, 0xfc, 0xfb, 0xca, + 0x18, 0x1e, 0x26, 0x46, 0xc1, 0x5f, 0x09, 0x68, 0x16, 0xb9, 0xe7, 0x27, 0x8e, 0x27, 0xf4, 0xa1, + 0x3d, 0x3e, 0xe9, 0x5b, 0xbc, 0x53, 0x8c, 0x3a, 0x3c, 0xf1, 0x05, 0xb9, 0xaa, 0xe3, 0x51, 0x4f, + 0x5c, 0x95, 0xab, 0xc5, 0x7b, 0x76, 0xea, 0x85, 0xb0, 0x17, 0xa6, 0x5a, 0x2f, 0xa6, 0xde, 0x6d, + 0x4d, 0x7d, 0x72, 0xa0, 0xf4, 0x7e, 0xa3, 0x2a, 0x73, 0xeb, 0x74, 0xea, 0xd0, 0x05, 0x3a, 0x67, + 0x33, 0x18, 0x99, 0x55, 0x59, 0xe9, 0x7d, 0xb6, 0xb3, 0x8a, 0x34, 0x07, 0x2b, 0x8d, 0x5e, 0xf0, + 0x64, 0xf6, 0xba, 0xd0, 0x5c, 0xbb, 0xc9, 0xd4, 0x44, 0xc2, 0x61, 0x25, 0x90, 0x10, 0x17, 0x39, + 0x0f, 0x9a, 0x82, 0xe0, 0xa9, 0xdd, 0x3f, 0x0e, 0xa8, 0x78, 0xd4, 0x73, 0x4c, 0x50, 0xe5, 0x67, + 0x45, 0x37, 0x37, 0xc5, 0x7d, 0xed, 0x95, 0xf4, 0x1d, 0x75, 0xff, 0xad, 0xd1, 0x13, 0xfd, 0xe9, + 0x37, 0xae, 0xa7, 0x5a, 0xf7, 0x94, 0x3e, 0xc0, 0xcd, 0x94, 0x94, 0xd3, 0x99, 0xea, 0xd0, 0x00, + 0x47, 0xa6, 0x5a, 0x2d, 0x3e, 0xe3, 0x34, 0xd5, 0x38, 0x5e, 0x3f, 0xf2, 0xc6, 0xfc, 0xf7, 0x0c, + 0x24, 0x6e, 0x5a, 0xd2, 0x00, 0x9d, 0xe4, 0x7f, 0x14, 0xd0, 0xd4, 0xba, 0xa6, 0x68, 0x24, 0x96, + 0x70, 0xe4, 0x51, 0x53, 0xb5, 0x2d, 0x8f, 0x66, 0x41, 0xc4, 0xa3, 0x9e, 0x37, 0x05, 0x55, 0x0e, + 0x8a, 0xf7, 0x68, 0x03, 0x23, 0x5a, 0x3b, 0x0d, 0xd6, 0x6f, 0xa6, 0xe0, 0x35, 0x7c, 0x15, 0xcc, + 0xb1, 0x8c, 0xfa, 0xc9, 0x9c, 0xef, 0x49, 0x0e, 0x1d, 0x61, 0x39, 0x73, 0x30, 0x90, 0xf6, 0xc6, + 0x99, 0xcc, 0xeb, 0x37, 0xab, 0xdc, 0x2c, 0xb8, 0x36, 0xb7, 0x8e, 0x8b, 0x09, 0x22, 0x1e, 0xf0, + 0xdc, 0x9b, 0x83, 0x92, 0x43, 0x64, 0x74, 0x78, 0xc5, 0xf7, 0xb9, 0xd0, 0x54, 0x16, 0xb4, 0xc6, + 0x61, 0xb2, 0xa6, 0x6a, 0xdb, 0xc9, 0x66, 0x41, 0xc4, 0xa3, 0x9e, 0x01, 0x41, 0x95, 0x5f, 0x13, + 0xa7, 0x82, 0xfd, 0x89, 0x49, 0xa4, 0xdf, 0x9a, 0x7e, 0x82, 0xae, 0x01, 0xd7, 0xe7, 0x90, 0x4c, + 0x30, 0x39, 0xdc, 0x0e, 0x17, 0x26, 0x34, 0x4c, 0x0e, 0x03, 0x20, 0x8e, 0xc6, 0x3d, 0x99, 0x8b, + 0xef, 0x69, 0xdd, 0x47, 0x92, 0xc3, 0xc3, 0xc9, 0x9b, 0xc7, 0xa8, 0x28, 0x23, 0x41, 0xfb, 0xb0, + 0x8a, 0xb5, 0xff, 0x03, 0xed, 0x8d, 0x4b, 0x5a, 0xd7, 0x71, 0xed, 0x8d, 0x4b, 0xc9, 0x9b, 0xbd, + 0x5f, 0xb4, 0xee, 0x25, 0x38, 0x78, 0xa8, 0xf4, 0x81, 0xf1, 0x71, 0x33, 0x46, 0x44, 0x97, 0x0b, + 0xcd, 0x94, 0x83, 0x41, 0xe2, 0x00, 0xbb, 0x29, 0xc2, 0x90, 0x61, 0xf1, 0x71, 0x64, 0x20, 0x54, + 0x6b, 0x2c, 0x75, 0x3b, 0x03, 0x80, 0x32, 0xe2, 0xb9, 0x26, 0xa8, 0xf2, 0x6e, 0x51, 0x4c, 0x0e, + 0xbe, 0x91, 0x3a, 0x7d, 0x1d, 0x06, 0x0e, 0x56, 0xba, 0xd2, 0x20, 0x58, 0xf1, 0xea, 0xea, 0xf1, + 0xf1, 0x63, 0xf8, 0x24, 0x5d, 0xdf, 0x77, 0x4e, 0x6b, 0x6f, 0x9c, 0x05, 0x88, 0xb2, 0xe4, 0xd0, + 0x91, 0x9a, 0x2d, 0xeb, 0x68, 0x4e, 0x51, 0xb5, 0xab, 0xae, 0xb6, 0xc6, 0x78, 0x57, 0x4e, 0x0a, + 0x17, 0x93, 0xe4, 0xf1, 0x14, 0x37, 0xe9, 0xb7, 0x07, 0xb5, 0xf6, 0x6b, 0x3a, 0x32, 0x20, 0x48, + 0x33, 0xc1, 0xc4, 0x52, 0xcf, 0x43, 0xe3, 0x94, 0x6b, 0xe1, 0x48, 0x50, 0xc1, 0xe8, 0xf8, 0x3f, + 0x04, 0x34, 0xa7, 0x56, 0xb7, 0x5d, 0xc7, 0x57, 0xc7, 0x22, 0x4d, 0x0c, 0x27, 0x1e, 0x6b, 0xe4, + 0x5f, 0x1d, 0x8e, 0xa1, 0xe5, 0xbe, 0x9c, 0x30, 0x14, 0x33, 0xfb, 0x05, 0x55, 0x7e, 0x1e, 0x63, + 0xe6, 0x40, 0x36, 0x66, 0x9e, 0x60, 0x98, 0xc1, 0xe7, 0xa5, 0x53, 0xad, 0x60, 0xea, 0x05, 0x08, + 0x3c, 0x40, 0xe6, 0x3f, 0x96, 0x1c, 0x3a, 0x82, 0xb7, 0x2d, 0x33, 0x4a, 0xc8, 0x84, 0x2b, 0xbc, + 0x13, 0x99, 0xb0, 0x38, 0xe8, 0x42, 0x73, 0xc9, 0xfb, 0x4d, 0x87, 0x29, 0x2f, 0xc9, 0x9e, 0x0e, + 0x07, 0x4c, 0x61, 0x4c, 0xd3, 0xaf, 0x1c, 0x37, 0x3c, 0x45, 0xc5, 0xa7, 0x82, 0x2a, 0xbf, 0x22, + 0x96, 0xa4, 0x3a, 0x6f, 0x8c, 0xee, 0xef, 0xb6, 0x41, 0xc8, 0x8b, 0x4e, 0x35, 0x65, 0x5a, 0x57, + 0x7b, 0xea, 0xc0, 0x65, 0x1a, 0xb8, 0xa0, 0xf3, 0x00, 0xe6, 0x00, 0xc8, 0x44, 0x78, 0xfa, 0x3a, + 0x40, 0x7c, 0xd1, 0xba, 0xa7, 0x46, 0xd6, 0xff, 0xcc, 0x42, 0x56, 0xba, 0xaf, 0x13, 0xe4, 0xc5, + 0xa3, 0xde, 0x87, 0x9d, 0x11, 0x16, 0xb7, 0x60, 0x2c, 0x5e, 0x59, 0x51, 0xb9, 0x0d, 0xcf, 0x49, + 0xfc, 0x3f, 0x05, 0x74, 0xd7, 0x1a, 0x85, 0x49, 0xba, 0xf8, 0x3a, 0x25, 0xe1, 0x27, 0x3e, 0x4f, + 0x5e, 0x1b, 0x5f, 0xf5, 0x6c, 0x20, 0x86, 0xae, 0x87, 0xc6, 0x05, 0x4b, 0x51, 0xf5, 0x27, 0xaa, + 0xbc, 0x56, 0x5c, 0x44, 0x4d, 0x31, 0xe7, 0x7b, 0xb4, 0xe3, 0xa7, 0xa8, 0x34, 0xe8, 0x69, 0xd3, + 0xda, 0x5f, 0xe7, 0xe3, 0x9c, 0x94, 0x1a, 0x50, 0xc9, 0xc1, 0x0f, 0x9c, 0xa0, 0xc8, 0xf4, 0x1f, + 0xf4, 0x78, 0x72, 0x4d, 0xbf, 0xa2, 0xb2, 0x49, 0x49, 0xf8, 0x31, 0x5f, 0x1c, 0x73, 0x41, 0x76, + 0x35, 0xb2, 0x7c, 0x75, 0x61, 0x46, 0x20, 0x8b, 0xb3, 0x67, 0x60, 0x85, 0x61, 0x93, 0xf5, 0x8e, + 0x07, 0x94, 0xce, 0xf5, 0xa2, 0xa0, 0xca, 0xbf, 0x13, 0x3d, 0x30, 0x0d, 0x26, 0x37, 0x07, 0x0f, + 0xd0, 0xb7, 0xd4, 0x5c, 0xaa, 0xe1, 0xd2, 0xe7, 0xa8, 0x1d, 0x05, 0x34, 0x1a, 0x3b, 0x10, 0xdd, + 0xa8, 0x95, 0x3a, 0x73, 0x18, 0x0e, 0xa7, 0xba, 0xeb, 0x96, 0xd6, 0x71, 0x52, 0xbb, 0x75, 0x33, + 0x7d, 0xec, 0x42, 0x66, 0xe0, 0x82, 0xd6, 0x3a, 0x02, 0x1c, 0x24, 0x4e, 0x88, 0x83, 0xde, 0x77, + 0xa1, 0x59, 0x78, 0x22, 0xeb, 0xfc, 0x04, 0x63, 0x06, 0x66, 0x1e, 0xb2, 0x9b, 0x6e, 0x36, 0x14, + 0xc3, 0x4d, 0xf9, 0xf8, 0x80, 0x29, 0x76, 0x3e, 0x11, 0x54, 0xf9, 0xf7, 0x62, 0x99, 0x3d, 0x76, + 0x9a, 0x48, 0x2b, 0x13, 0x8e, 0x9e, 0xb7, 0xc5, 0x91, 0x15, 0x70, 0x82, 0x98, 0xaa, 0x14, 0x2b, + 0xc6, 0x89, 0x29, 0xf8, 0x94, 0xf8, 0xa1, 0x80, 0xa6, 0x9a, 0x64, 0x81, 0x75, 0xcf, 0x35, 0x55, + 0xdb, 0xee, 0xb9, 0x59, 0x10, 0xf1, 0xa8, 0x67, 0xb3, 0x2a, 0x2f, 0xc2, 0x87, 0x80, 0xb3, 0xa3, + 0x27, 0xcf, 0xb3, 0x2d, 0xf7, 0x2e, 0xf8, 0x99, 0xee, 0xbc, 0xa1, 0xf5, 0xf7, 0xd0, 0x42, 0xd0, + 0x09, 0xbd, 0xe3, 0xdc, 0x1b, 0xc5, 0x6b, 0x02, 0x42, 0x06, 0x3f, 0x5a, 0xd5, 0x5a, 0xa3, 0xce, + 0x56, 0xad, 0xe5, 0xab, 0xe3, 0x51, 0xcf, 0x76, 0x55, 0x7e, 0x58, 0x9c, 0x6a, 0x5a, 0x32, 0xc6, + 0xa6, 0x20, 0xf3, 0x6b, 0xd8, 0x97, 0xf5, 0x70, 0x2c, 0x1c, 0x9b, 0x96, 0x89, 0xe3, 0x1d, 0xf5, + 0x7e, 0xca, 0xa7, 0xf5, 0xf4, 0x98, 0x4d, 0x47, 0x7f, 0xbf, 0x1d, 0x81, 0x99, 0x61, 0x6c, 0x4f, + 0x25, 0x76, 0x60, 0xf1, 0xa8, 0xe7, 0x9c, 0xa0, 0xca, 0xdb, 0xc5, 0xfb, 0xe9, 0xf8, 0xcf, 0x1c, + 0xc6, 0x62, 0x86, 0x7a, 0x02, 0x1e, 0x48, 0xf7, 0xb4, 0x51, 0x50, 0x4a, 0x7e, 0x2b, 0x29, 0xf9, + 0x71, 0x00, 0x74, 0xcb, 0x27, 0xf5, 0x30, 0xcd, 0xec, 0xf8, 0x03, 0xcc, 0xd6, 0x0e, 0x52, 0x5a, + 0x12, 0x97, 0xda, 0xcc, 0x9f, 0xda, 0x09, 0xe2, 0x95, 0xaf, 0xe9, 0xa6, 0x24, 0x43, 0xc5, 0x15, + 0xdf, 0x75, 0xa1, 0x29, 0x10, 0xe2, 0x09, 0x50, 0xb0, 0xc0, 0x6e, 0x6e, 0xdc, 0xdc, 0x17, 0xe6, + 0xac, 0x8f, 0x47, 0x3d, 0x9f, 0x0b, 0xaa, 0x7c, 0x59, 0x10, 0xef, 0x32, 0x2d, 0x22, 0x9d, 0xe3, + 0x51, 0x01, 0x0c, 0x63, 0x14, 0x23, 0x84, 0x79, 0xc0, 0x63, 0xda, 0x04, 0xc7, 0x73, 0xd8, 0xe8, + 0xb9, 0x1b, 0x00, 0x07, 0x09, 0x95, 0xb2, 0xf8, 0x2c, 0xd5, 0x77, 0x1e, 0x6a, 0xbf, 0x68, 0xdd, + 0x4b, 0x9b, 0x40, 0x7c, 0x15, 0x52, 0x38, 0xfa, 0xfa, 0x4d, 0xbe, 0x09, 0x9f, 0x72, 0x11, 0xc0, + 0xb8, 0xc3, 0xec, 0x3c, 0x31, 0xc7, 0x61, 0x56, 0xfc, 0x57, 0x02, 0x9a, 0x49, 0x26, 0x4a, 0x52, + 0x58, 0x30, 0x5c, 0x2d, 0xb2, 0xc5, 0x05, 0x0f, 0x62, 0x7b, 0xde, 0xb1, 0x81, 0x82, 0x43, 0xfa, + 0xb3, 0xe2, 0x3d, 0xec, 0x0e, 0xe1, 0xb2, 0xd6, 0x7e, 0xd5, 0x8c, 0xbb, 0x0a, 0xbe, 0x8a, 0x9d, + 0xe6, 0xde, 0xe0, 0x7f, 0xc2, 0xed, 0x0e, 0xdc, 0xeb, 0x90, 0x39, 0xdd, 0x27, 0xda, 0x69, 0xf9, + 0xf1, 0x1d, 0xfe, 0x98, 0x12, 0xd4, 0x09, 0xe0, 0x7f, 0x09, 0x48, 0x94, 0x83, 0xc1, 0x8d, 0xcd, + 0xdb, 0xc2, 0x4a, 0xc2, 0x50, 0x6d, 0xef, 0xb7, 0xd1, 0x5c, 0xb3, 0x60, 0x6c, 0x59, 0xc1, 0x0e, + 0x2c, 0x1e, 0xf5, 0xbc, 0x25, 0xa8, 0xf2, 0x8b, 0x62, 0x09, 0x1d, 0xe8, 0xa7, 0xc3, 0xda, 0x1b, + 0x67, 0xb5, 0xbe, 0xc3, 0xf8, 0x2c, 0x47, 0xac, 0x70, 0xa5, 0x4f, 0x3b, 0xd5, 0x94, 0xbb, 0x33, + 0xed, 0x9f, 0x65, 0xfa, 0x07, 0x92, 0x43, 0x47, 0xb6, 0xd4, 0xd7, 0x54, 0xd4, 0xac, 0xaf, 0x4b, + 0x5d, 0x3a, 0xa7, 0x8d, 0x10, 0x5d, 0x87, 0x03, 0x26, 0xf3, 0x5d, 0xe1, 0xa9, 0x1c, 0xaf, 0x96, + 0x12, 0x27, 0x63, 0x8c, 0xe3, 0x3d, 0xfb, 0x2f, 0x5d, 0x68, 0xde, 0xc6, 0x57, 0x42, 0x89, 0xc0, + 0x0e, 0x3a, 0xe0, 0xcd, 0xe1, 0xa0, 0x12, 0x6b, 0xf4, 0xef, 0x5a, 0x0f, 0xa1, 0xa7, 0x45, 0x8b, + 0xba, 0x96, 0x0b, 0x1a, 0x23, 0x65, 0xe9, 0xc4, 0x1a, 0xc4, 0xa3, 0x9e, 0x3f, 0x27, 0xa7, 0x80, + 0xb9, 0x5a, 0xc7, 0xfe, 0xd4, 0xc1, 0x77, 0x74, 0x55, 0x04, 0x62, 0x9c, 0xc3, 0x7c, 0x4b, 0x5f, + 0x84, 0x4a, 0xb0, 0x29, 0xeb, 0xe7, 0xbd, 0x2c, 0x28, 0x7a, 0x41, 0xd1, 0x4c, 0x3f, 0xe1, 0xe6, + 0xeb, 0xca, 0x74, 0x44, 0x02, 0x54, 0x4b, 0x34, 0x50, 0x11, 0x08, 0x87, 0x74, 0x1d, 0xef, 0x29, + 0xcf, 0xe3, 0xe3, 0xd6, 0xf1, 0x60, 0xe8, 0xf1, 0x4a, 0xf6, 0x21, 0x8c, 0xc7, 0xbf, 0x15, 0xd0, + 0x2c, 0xb0, 0xcc, 0x6c, 0x09, 0xc5, 0x12, 0xcd, 0xfe, 0x46, 0x46, 0x4a, 0x0f, 0xda, 0x5b, 0xa8, + 0xcc, 0x50, 0x18, 0x6f, 0x65, 0xe3, 0x03, 0x8c, 0x47, 0x3d, 0x8a, 0x2a, 0x3f, 0x29, 0x52, 0x5f, + 0x83, 0xcc, 0xc9, 0x9e, 0xd4, 0x81, 0x33, 0x80, 0x8e, 0xd2, 0x07, 0xac, 0x65, 0xe5, 0xc9, 0xcf, + 0x4e, 0xa5, 0x3a, 0xdf, 0x4a, 0x0e, 0x1d, 0xda, 0x11, 0x89, 0x27, 0x38, 0x96, 0x77, 0x7b, 0xe6, + 0xda, 0x4c, 0xb8, 0x85, 0x33, 0x60, 0xfd, 0xa5, 0x80, 0x66, 0xc1, 0x4e, 0x3a, 0xd6, 0x94, 0xec, + 0xa0, 0x6c, 0xa7, 0x64, 0x0f, 0x18, 0x8f, 0x7a, 0x5e, 0x50, 0xe5, 0x32, 0x91, 0xde, 0x74, 0x9b, + 0xa6, 0x64, 0x53, 0x46, 0x86, 0xbf, 0xd8, 0xfb, 0x60, 0x8e, 0xe1, 0x9b, 0xb6, 0xbb, 0x7f, 0x2b, + 0xa0, 0x7b, 0xe0, 0x14, 0x6e, 0xfe, 0xf0, 0xf3, 0xcd, 0x91, 0x84, 0x5f, 0x2c, 0xb7, 0x3f, 0xb0, + 0xdb, 0x80, 0xe2, 0x19, 0x55, 0x4c, 0x00, 0x3a, 0x1e, 0xf5, 0x04, 0xf0, 0xb4, 0x68, 0xd2, 0x87, + 0xd1, 0xf6, 0x83, 0xa3, 0xef, 0x9c, 0x2a, 0x2d, 0xa1, 0x7e, 0x27, 0xdc, 0x84, 0xa0, 0x06, 0x36, + 0xb1, 0xd2, 0x8a, 0x71, 0x4e, 0xab, 0xf2, 0x77, 0xf8, 0x2b, 0x78, 0x9d, 0x2e, 0x09, 0x68, 0xf2, + 0x1a, 0x05, 0x1c, 0x8a, 0xec, 0x54, 0x0c, 0x5c, 0xc1, 0x94, 0xc8, 0x85, 0x8e, 0xf5, 0x54, 0x6f, + 0xfc, 0xb5, 0x2a, 0x2f, 0x15, 0x11, 0x48, 0x5b, 0x5c, 0x51, 0xea, 0xe1, 0x15, 0x10, 0x92, 0x18, + 0xab, 0xae, 0x3e, 0xdd, 0xd3, 0x06, 0x3a, 0x21, 0xa7, 0x7e, 0xd8, 0x8b, 0x5b, 0xac, 0xff, 0x56, + 0xbe, 0x16, 0x82, 0x66, 0xbf, 0x17, 0xff, 0x8b, 0x80, 0xa6, 0xd0, 0x2f, 0x42, 0xae, 0x4c, 0x87, + 0xe1, 0x70, 0x89, 0xfc, 0xac, 0xc7, 0x65, 0x13, 0x0c, 0x1d, 0x36, 0x96, 0xb0, 0x0d, 0xe2, 0x1c, + 0x63, 0xdc, 0xfc, 0xe3, 0xc7, 0xd2, 0x75, 0xb9, 0xe6, 0xc0, 0x43, 0x96, 0x67, 0xb9, 0xa6, 0xa6, + 0x0e, 0x5d, 0xd0, 0x3a, 0x0f, 0xa6, 0x3f, 0x1c, 0x00, 0x47, 0x27, 0xe8, 0x26, 0x87, 0xb6, 0x65, + 0x9e, 0x6e, 0x65, 0x08, 0xcf, 0xf1, 0x92, 0x80, 0xa6, 0xf9, 0x94, 0x40, 0x24, 0x16, 0xd4, 0xa7, + 0x6d, 0x63, 0xff, 0xe5, 0xeb, 0xd9, 0xcc, 0x4b, 0xad, 0xb9, 0xee, 0x58, 0xf2, 0x6f, 0xcf, 0x46, + 0x55, 0x5e, 0x22, 0x96, 0x68, 0x37, 0x8f, 0x69, 0xed, 0x17, 0xac, 0xf3, 0x28, 0x15, 0xf9, 0x1a, + 0x38, 0xd1, 0xc1, 0x46, 0xef, 0xb9, 0xdb, 0x61, 0xd8, 0x98, 0x92, 0xfe, 0x6f, 0x01, 0xa1, 0xcd, + 0xba, 0x87, 0x9c, 0xe8, 0x60, 0xcb, 0xe2, 0xe9, 0xc9, 0x93, 0x0b, 0x84, 0xae, 0xcd, 0x59, 0x62, + 0xef, 0x9a, 0x01, 0x74, 0x8f, 0x3f, 0x45, 0xc7, 0xd8, 0x90, 0x5d, 0xf2, 0x6d, 0xda, 0xbb, 0xe6, + 0x95, 0xe6, 0x9a, 0xf8, 0xbf, 0x76, 0xa1, 0xbb, 0x4c, 0x86, 0x3a, 0x08, 0xf7, 0x69, 0x3d, 0xa8, + 0xdb, 0x00, 0x39, 0x1e, 0xd4, 0x6d, 0x61, 0x29, 0x4e, 0x46, 0x41, 0x4f, 0x5c, 0x42, 0x45, 0x03, + 0x99, 0x02, 0x9c, 0x80, 0x34, 0xb5, 0x0b, 0x8f, 0x0a, 0xcf, 0xe4, 0xe6, 0xe5, 0xf4, 0xc5, 0x61, + 0x08, 0x96, 0x47, 0x51, 0xb6, 0x7b, 0x62, 0xf0, 0xe5, 0xee, 0xe4, 0xe0, 0x50, 0x72, 0x68, 0x1f, + 0xdc, 0x68, 0x68, 0x7d, 0x6f, 0x8d, 0xee, 0xef, 0x36, 0x9c, 0xf5, 0x46, 0x7a, 0xb4, 0xc3, 0x5d, + 0xa9, 0xbe, 0x0b, 0xd0, 0xa7, 0xbf, 0x39, 0x11, 0x89, 0x07, 0xfc, 0x8d, 0xa1, 0x70, 0xc3, 0x86, + 0x68, 0x22, 0x14, 0x09, 0xeb, 0xf1, 0xfc, 0x38, 0x26, 0x5f, 0x5e, 0xba, 0x64, 0xbc, 0xbb, 0x24, + 0x44, 0xed, 0xc3, 0xc8, 0xfd, 0x4f, 0x02, 0x12, 0x89, 0xe1, 0x1c, 0xe8, 0x9b, 0xed, 0x22, 0xd6, + 0xab, 0x1b, 0x06, 0x13, 0x77, 0xa4, 0x2e, 0x1e, 0x84, 0x62, 0xb2, 0x5b, 0x50, 0xe5, 0x97, 0xc5, + 0xfb, 0xe1, 0x82, 0xda, 0xa0, 0x25, 0xea, 0x20, 0xdc, 0xf7, 0x96, 0xd6, 0x7b, 0x69, 0x5b, 0x80, + 0x26, 0x5a, 0x2f, 0x7d, 0x34, 0xf5, 0x6e, 0x2b, 0x66, 0x62, 0x60, 0x0b, 0x3b, 0x90, 0xf2, 0xd1, + 0xb7, 0x3e, 0x4a, 0xf5, 0xbd, 0x93, 0x19, 0x18, 0xd0, 0xde, 0x3e, 0x9d, 0x3a, 0x7a, 0x9d, 0xb3, + 0x9b, 0xd9, 0x9b, 0x8d, 0x09, 0xcb, 0x1b, 0x97, 0xea, 0x82, 0x57, 0x1c, 0x14, 0x10, 0xaa, 0x89, + 0xc4, 0x82, 0x91, 0xb0, 0x3d, 0x17, 0x19, 0x75, 0xce, 0xf3, 0xe4, 0x40, 0xe8, 0x3c, 0x03, 0xaa, + 0xfc, 0xa8, 0x48, 0xdd, 0x5a, 0xb1, 0x1a, 0xd4, 0x3d, 0x90, 0xb9, 0xf2, 0xba, 0x36, 0xf4, 0x5e, + 0xaa, 0x75, 0x4f, 0xe9, 0x02, 0x2a, 0x01, 0xfa, 0x3f, 0xa3, 0xde, 0x95, 0xac, 0x92, 0xb3, 0xfe, + 0xdf, 0x57, 0xba, 0xc0, 0x69, 0xf4, 0x01, 0xf2, 0x35, 0x3c, 0xf4, 0x21, 0x01, 0x15, 0x6f, 0x0e, + 0x73, 0x83, 0xb7, 0x08, 0x5f, 0xbe, 0x96, 0x0d, 0x7f, 0x51, 0x6e, 0x20, 0x3a, 0x81, 0xad, 0xaa, + 0xbc, 0x4c, 0x14, 0xa9, 0x2d, 0x81, 0x1f, 0xfd, 0x5c, 0x7e, 0xf4, 0x76, 0x43, 0xbf, 0xbf, 0xd4, + 0xed, 0x34, 0xf4, 0xe6, 0xb0, 0x69, 0xf0, 0x45, 0xb5, 0x31, 0x7f, 0x08, 0x46, 0x6e, 0x35, 0x1b, + 0xb0, 0x2a, 0x36, 0xec, 0x7b, 0x73, 0x40, 0xd0, 0x31, 0xef, 0x50, 0xe5, 0x95, 0xa2, 0x17, 0xc6, + 0x17, 0x8d, 0x04, 0x33, 0xb7, 0xf6, 0xa4, 0x2f, 0x0e, 0x97, 0x6b, 0x57, 0xf6, 0xb1, 0x75, 0x78, + 0x23, 0xdd, 0xd3, 0xe6, 0xae, 0x8f, 0x04, 0xdd, 0xa3, 0xef, 0x5f, 0x1d, 0x6d, 0x3d, 0x5c, 0x3a, + 0x3d, 0x0b, 0x96, 0x8c, 0xdf, 0xe3, 0x99, 0xef, 0x34, 0xfe, 0x20, 0xfe, 0x24, 0x1e, 0xfc, 0xb0, + 0x80, 0x66, 0x18, 0xb2, 0x73, 0xad, 0x7f, 0x9b, 0xd2, 0x18, 0xb7, 0x2a, 0x5a, 0xd9, 0x10, 0x6c, + 0x2a, 0x65, 0x63, 0x03, 0xd2, 0x19, 0x6d, 0x22, 0x8a, 0x16, 0xd5, 0x41, 0x80, 0x0d, 0xce, 0xee, + 0x4f, 0xf7, 0x7d, 0x56, 0x6a, 0x53, 0x36, 0x16, 0xdd, 0x34, 0x92, 0xae, 0xf1, 0xe8, 0xff, 0xa9, + 0x80, 0x66, 0x1b, 0x9f, 0xe4, 0x3c, 0xea, 0x9c, 0xd4, 0xab, 0x2c, 0x30, 0x36, 0x8f, 0x8a, 0x71, + 0x42, 0xd3, 0xc9, 0xfc, 0xca, 0x3a, 0x99, 0x6b, 0x97, 0x32, 0x17, 0xdf, 0x2d, 0xb5, 0x29, 0xcb, + 0x71, 0xdb, 0x07, 0x2c, 0xcc, 0x45, 0xb3, 0xb5, 0xac, 0xc7, 0x26, 0x7f, 0x28, 0x9c, 0xc8, 0xb9, + 0x1e, 0x00, 0x31, 0x8e, 0xf5, 0x60, 0x80, 0xce, 0xeb, 0x71, 0xf5, 0x5c, 0x7a, 0xef, 0x8d, 0x52, + 0x9b, 0xb2, 0xb1, 0xd6, 0x23, 0x41, 0xba, 0xc6, 0xa3, 0xff, 0x9f, 0x10, 0x0f, 0x8b, 0x8a, 0xda, + 0x9a, 0x98, 0x12, 0x54, 0xc2, 0x89, 0x90, 0xbf, 0xd1, 0x3a, 0x03, 0x3b, 0x28, 0x5b, 0xd5, 0xdd, + 0x1e, 0x30, 0x1e, 0xf5, 0x1c, 0x11, 0x54, 0x79, 0x8b, 0x38, 0xdf, 0x64, 0xf1, 0x30, 0x40, 0x40, + 0x2b, 0x29, 0x7d, 0x98, 0x9a, 0x3e, 0xba, 0x0f, 0x27, 0x3f, 0x7b, 0x3b, 0xdd, 0xd3, 0x06, 0xd1, + 0xd7, 0x9f, 0x53, 0x76, 0xe5, 0x6c, 0x96, 0xc3, 0xae, 0x43, 0x4b, 0x02, 0x7a, 0x8b, 0xca, 0xd7, + 0xe2, 0xac, 0xcf, 0xdf, 0x8b, 0xff, 0x59, 0x40, 0x77, 0x9b, 0xb6, 0x5f, 0x0e, 0x05, 0xb9, 0xf7, + 0x74, 0x33, 0x16, 0x1e, 0x1a, 0x37, 0x6c, 0x3c, 0xea, 0xf9, 0x13, 0x55, 0x7e, 0x4a, 0x9c, 0x6f, + 0xba, 0xc7, 0xb3, 0xe0, 0x61, 0x3e, 0xe8, 0xa0, 0x0e, 0x40, 0x64, 0xbe, 0x0f, 0x97, 0x4e, 0x78, + 0xbe, 0x78, 0xc9, 0xff, 0x83, 0x80, 0xee, 0x36, 0xd9, 0x3d, 0x73, 0x4d, 0xd9, 0x01, 0xd0, 0x76, + 0xca, 0x8e, 0xb0, 0xf1, 0xa8, 0xa7, 0x49, 0x95, 0x25, 0xf1, 0x6e, 0x93, 0x59, 0xd5, 0x80, 0x28, + 0x75, 0xaa, 0x80, 0x65, 0xf5, 0x4e, 0x7c, 0x59, 0xff, 0x93, 0x80, 0x66, 0x73, 0x16, 0x37, 0x6e, + 0x86, 0x65, 0x39, 0x0c, 0x73, 0xe6, 0xf9, 0x2d, 0x1e, 0x27, 0x64, 0x3c, 0xea, 0xf9, 0xff, 0xa9, + 0x72, 0xbd, 0x23, 0x61, 0x53, 0xc3, 0x54, 0xa5, 0xd5, 0xa6, 0x97, 0xb3, 0x01, 0x68, 0x12, 0xe2, + 0xa2, 0xf1, 0xcc, 0x5d, 0xfc, 0x1b, 0x01, 0xcd, 0xae, 0x0b, 0x87, 0x12, 0xab, 0x95, 0xa0, 0x02, + 0x79, 0xfd, 0x98, 0xf2, 0x64, 0x99, 0xaf, 0x2d, 0x98, 0xed, 0x7c, 0x1d, 0x20, 0xe3, 0x51, 0xbc, + 0x43, 0x2f, 0x15, 0xe7, 0x68, 0x1d, 0xa7, 0xb4, 0x8b, 0x07, 0xb4, 0xae, 0xe3, 0xe0, 0x01, 0xc3, + 0x0c, 0xd1, 0x0e, 0xe5, 0x39, 0x34, 0xa3, 0x50, 0x38, 0x94, 0xd8, 0xae, 0xdb, 0xda, 0x88, 0x9a, + 0x2d, 0xa0, 0xbb, 0xe4, 0x60, 0x90, 0x7e, 0x5d, 0x09, 0xb2, 0xd9, 0xd8, 0xd9, 0xd1, 0xb2, 0x81, + 0xf0, 0x5c, 0x1e, 0x1c, 0x17, 0x5c, 0x3c, 0xea, 0x89, 0x11, 0x56, 0xd4, 0xae, 0xec, 0x63, 0x56, + 0xc4, 0x37, 0xce, 0xe2, 0xd3, 0x90, 0x69, 0x42, 0xb9, 0xab, 0xe1, 0x92, 0xdc, 0x63, 0x77, 0xc8, + 0xf3, 0x07, 0x83, 0xdb, 0xd9, 0x47, 0xb9, 0xc9, 0x5d, 0x16, 0xd0, 0x14, 0x2e, 0x57, 0x94, 0xf5, + 0x6c, 0xcb, 0x55, 0x3a, 0x9e, 0x6d, 0x4d, 0x30, 0xc6, 0x16, 0xb1, 0x44, 0x9c, 0xae, 0xe7, 0x99, + 0x02, 0x47, 0xe0, 0xd2, 0xb9, 0x59, 0x05, 0x34, 0x4b, 0x9f, 0xa1, 0xab, 0xcf, 0xf7, 0x94, 0x38, + 0xb9, 0x7b, 0xe0, 0xe1, 0x5e, 0x11, 0xd0, 0x14, 0x2e, 0x23, 0x8f, 0xe8, 0x71, 0x12, 0x75, 0xb9, + 0x86, 0x6b, 0x82, 0xa1, 0xc3, 0xfd, 0x25, 0xde, 0xd1, 0xa6, 0xeb, 0xd9, 0x7c, 0xe8, 0x70, 0x67, + 0x67, 0x15, 0xf0, 0xf7, 0x8b, 0xa5, 0x1e, 0x47, 0x17, 0x1c, 0xdd, 0x2d, 0x05, 0x0f, 0xf9, 0x53, + 0x01, 0x4d, 0xe1, 0x32, 0xa2, 0x38, 0x5d, 0xb6, 0xe7, 0x1e, 0xb2, 0x09, 0xc6, 0x50, 0x4d, 0x25, + 0x71, 0x26, 0x93, 0x56, 0x91, 0xe6, 0x20, 0x1d, 0xf4, 0x7c, 0xfe, 0x86, 0x28, 0x60, 0x54, 0x70, + 0x83, 0x5f, 0xe4, 0x1d, 0xc7, 0xe0, 0xc5, 0x0f, 0x04, 0x54, 0x48, 0x36, 0x50, 0x3c, 0xec, 0x85, + 0xb6, 0x5b, 0x2b, 0x37, 0x66, 0xb7, 0x33, 0x00, 0x1d, 0xf0, 0x8b, 0x98, 0x24, 0xa6, 0x30, 0x41, + 0x13, 0x69, 0x0e, 0x96, 0x2e, 0xe4, 0x4d, 0x1c, 0xf4, 0xbb, 0xd6, 0xc1, 0x8a, 0xe3, 0x19, 0xec, + 0x19, 0x17, 0x2a, 0xd2, 0xf3, 0x5e, 0x58, 0xf5, 0x68, 0xbd, 0xca, 0x51, 0x8f, 0xe6, 0x20, 0xe8, + 0x78, 0xff, 0x5a, 0x50, 0xe5, 0x4b, 0x82, 0x38, 0x93, 0x1b, 0x31, 0x95, 0x9f, 0x6a, 0x8e, 0x4b, + 0x11, 0x1d, 0xea, 0xfb, 0xb8, 0x12, 0x29, 0x15, 0x1d, 0xd9, 0x07, 0x9f, 0xf0, 0xa6, 0x71, 0x9c, + 0xba, 0xa5, 0xbe, 0xc6, 0x6a, 0xd2, 0x31, 0xd7, 0x33, 0x5c, 0x3d, 0x30, 0x16, 0x18, 0x45, 0xd8, + 0x2f, 0xf0, 0x02, 0x8b, 0x3a, 0x8b, 0x6f, 0xa9, 0xaf, 0xa1, 0x16, 0x80, 0x12, 0xbe, 0xcc, 0xc2, + 0xf3, 0xf6, 0x46, 0x5d, 0x32, 0xe8, 0x96, 0x68, 0x00, 0xf3, 0xd0, 0x67, 0x02, 0x9a, 0xc6, 0x71, + 0xad, 0xed, 0xd0, 0xcd, 0xf5, 0x8e, 0x43, 0xcf, 0x06, 0xa3, 0x43, 0x7f, 0x49, 0x95, 0x3d, 0xcc, + 0xe6, 0x99, 0x1c, 0x3a, 0xd2, 0x12, 0x0d, 0x30, 0x5d, 0x16, 0x7e, 0x71, 0xc3, 0xb5, 0xb7, 0x76, + 0xb2, 0xe1, 0x72, 0x3e, 0x69, 0xaf, 0xb5, 0x44, 0x03, 0x54, 0x08, 0xfc, 0x8d, 0x80, 0xa6, 0x71, + 0x3c, 0x6c, 0x3b, 0x01, 0x73, 0xbd, 0xe3, 0x04, 0xb2, 0xc1, 0xe8, 0x04, 0x1a, 0x55, 0x79, 0x85, + 0x38, 0x9b, 0x93, 0x06, 0x6e, 0x7d, 0xd4, 0xa5, 0x73, 0x2d, 0x12, 0xc1, 0x6d, 0x9e, 0x52, 0xa5, + 0x77, 0x62, 0x53, 0x12, 0xaf, 0xb9, 0x50, 0xb1, 0xce, 0x30, 0x78, 0x36, 0xf7, 0x39, 0xb2, 0x13, + 0x37, 0x97, 0x45, 0xb9, 0x81, 0xe8, 0x4c, 0xfe, 0x5e, 0x50, 0xe5, 0x2b, 0x82, 0x38, 0x9b, 0x63, + 0x3b, 0xf7, 0x96, 0xfa, 0x1a, 0xca, 0x7a, 0xc7, 0x73, 0xb3, 0x9e, 0x01, 0xf9, 0x7d, 0xb0, 0xdf, + 0x7c, 0x31, 0x17, 0x25, 0x8b, 0x5f, 0x08, 0x68, 0x06, 0x27, 0x66, 0x1a, 0xc8, 0x59, 0xf3, 0xc1, + 0x1c, 0x82, 0xa8, 0x81, 0x3f, 0x66, 0x96, 0x8d, 0x0d, 0x68, 0x38, 0xd4, 0xd4, 0x89, 0x25, 0x3c, + 0xfe, 0xe0, 0x75, 0x8a, 0x7e, 0x2d, 0x49, 0x30, 0x48, 0x17, 0x55, 0x0f, 0xe6, 0xaf, 0x5d, 0x3d, + 0xcd, 0x12, 0xe5, 0xc2, 0xa3, 0x16, 0x8e, 0x40, 0xbc, 0x62, 0x99, 0xd3, 0xc4, 0xa0, 0x6b, 0x4e, + 0x12, 0xff, 0x39, 0xb8, 0x17, 0x6c, 0xa9, 0xaf, 0xa9, 0x09, 0x05, 0x6d, 0x2c, 0x66, 0x46, 0x9d, + 0xa3, 0x25, 0x89, 0x07, 0x31, 0xe8, 0xfb, 0x69, 0x71, 0x16, 0xcc, 0xa9, 0x25, 0x1a, 0x70, 0x07, + 0x42, 0x41, 0x76, 0xcd, 0x4a, 0xc3, 0x09, 0x12, 0xd2, 0xe4, 0x67, 0xd3, 0x12, 0x0d, 0xa4, 0x7b, + 0xda, 0x30, 0xe0, 0x98, 0xbb, 0x49, 0x4b, 0x34, 0x80, 0xe1, 0x74, 0xfa, 0xfe, 0x27, 0x02, 0x9a, + 0x5e, 0x93, 0xf5, 0xb6, 0xdc, 0x41, 0x0a, 0xea, 0x00, 0x6c, 0x36, 0x0f, 0x8e, 0x09, 0x47, 0xa7, + 0xf4, 0x5b, 0x55, 0x7e, 0x86, 0xa9, 0x48, 0xd4, 0x79, 0x6b, 0xb8, 0xad, 0xb4, 0x22, 0xab, 0x00, + 0xee, 0x54, 0x6f, 0x8f, 0x74, 0x51, 0xfb, 0xfe, 0xc8, 0x8d, 0x54, 0xeb, 0xc5, 0xe4, 0xc8, 0x60, + 0x7a, 0xe4, 0x7d, 0x66, 0x26, 0xbe, 0xd7, 0x33, 0xcf, 0xe1, 0x74, 0x4d, 0xdc, 0xd9, 0xb1, 0x00, + 0xfa, 0x0b, 0x01, 0x4d, 0xdf, 0x9c, 0xf5, 0x8c, 0xfc, 0x01, 0xe7, 0xf3, 0x7e, 0xee, 0x09, 0x59, + 0xe0, 0xe8, 0x84, 0x5e, 0xe6, 0x94, 0x28, 0xbd, 0x96, 0x29, 0x51, 0x7a, 0x01, 0x2f, 0x77, 0x4a, + 0xbd, 0xb9, 0x06, 0x5e, 0xf9, 0x1a, 0x97, 0x29, 0x89, 0xc8, 0xd1, 0xbf, 0x70, 0xa1, 0xe9, 0xb5, + 0x59, 0x0f, 0xf0, 0x1f, 0x70, 0xf6, 0x4c, 0xcc, 0x3d, 0x0d, 0x0b, 0x1c, 0x9d, 0xc6, 0x1f, 0x04, + 0x55, 0x7e, 0x5f, 0xc0, 0x2b, 0x83, 0xa5, 0xa6, 0x31, 0x91, 0x63, 0x02, 0x2f, 0x47, 0xf5, 0x72, + 0x2c, 0x35, 0x6e, 0xbe, 0xa9, 0xff, 0x4c, 0xf5, 0x76, 0xa6, 0x8f, 0x9d, 0xd4, 0xfa, 0xde, 0x4a, + 0xf7, 0xb4, 0xe1, 0xc2, 0xd4, 0x89, 0xeb, 0x70, 0x03, 0xa0, 0xb5, 0xef, 0xc9, 0xf4, 0x0f, 0xa6, + 0xdf, 0xfe, 0x38, 0x75, 0xe8, 0x02, 0x74, 0xa4, 0xcb, 0x9b, 0xcc, 0x7b, 0x7b, 0xa0, 0x24, 0xd5, + 0xdb, 0xb9, 0x9e, 0xda, 0xc5, 0xd9, 0xfa, 0x93, 0xfb, 0x85, 0x4f, 0xa9, 0x9d, 0x71, 0x64, 0x48, + 0xeb, 0xb8, 0x4e, 0x41, 0x99, 0xc8, 0x22, 0x98, 0x2c, 0xf7, 0x4e, 0x00, 0x93, 0xe2, 0x9f, 0x09, + 0xa8, 0x98, 0x5e, 0x48, 0x01, 0x0e, 0x9d, 0xae, 0xab, 0x4c, 0x08, 0x5c, 0x94, 0x1b, 0x88, 0x62, + 0x4f, 0xc1, 0xe7, 0xb1, 0xe9, 0xc6, 0x9d, 0x16, 0xe0, 0x6e, 0x3e, 0xaf, 0xe9, 0xad, 0x37, 0xc6, + 0xc2, 0x11, 0x43, 0xb9, 0x38, 0x91, 0x29, 0xfc, 0x27, 0x01, 0xdc, 0xd3, 0x38, 0xe7, 0x4b, 0x98, + 0xca, 0x43, 0x39, 0x8e, 0xca, 0x96, 0x29, 0x95, 0x8f, 0x0f, 0x98, 0x4e, 0x6d, 0xb7, 0x2a, 0xaf, + 0x14, 0x17, 0xf0, 0x3e, 0x67, 0x74, 0x8d, 0x09, 0x18, 0x95, 0x46, 0x34, 0x5d, 0x14, 0xef, 0xd2, + 0x49, 0x5e, 0xef, 0xeb, 0xe7, 0xe8, 0x15, 0xa2, 0x34, 0x11, 0xc7, 0x4c, 0x32, 0xf9, 0xb8, 0xf8, + 0xa9, 0x0b, 0x4d, 0x65, 0x7e, 0x85, 0x30, 0xd1, 0x45, 0x4e, 0x6e, 0x87, 0xa6, 0x19, 0xde, 0x3f, + 0x06, 0x14, 0x9d, 0xda, 0xbf, 0x32, 0x6d, 0xba, 0xd9, 0x73, 0x72, 0xde, 0x74, 0xb3, 0x20, 0xbf, + 0x8f, 0x4d, 0x77, 0x81, 0x98, 0x53, 0xfa, 0x89, 0xff, 0x55, 0x40, 0x33, 0xd6, 0x45, 0x5a, 0x14, + 0xea, 0x08, 0x0e, 0xc8, 0xb3, 0x08, 0x83, 0x6c, 0x08, 0xc7, 0x5d, 0xd7, 0x0a, 0x48, 0x51, 0xd8, + 0x25, 0xa8, 0xf2, 0x06, 0x76, 0xd9, 0x91, 0xbe, 0x38, 0x6c, 0xdc, 0x64, 0x5e, 0x3d, 0x5b, 0xfa, + 0x88, 0x76, 0x65, 0x1f, 0xf5, 0x00, 0xfa, 0xf4, 0x23, 0x2c, 0x22, 0x74, 0x0e, 0xe7, 0x00, 0xb1, + 0xb4, 0x27, 0x01, 0x85, 0xd2, 0x43, 0xd7, 0xd2, 0xfd, 0xe7, 0x18, 0x6f, 0xdb, 0xfb, 0xc8, 0x38, + 0x30, 0x86, 0x7e, 0x3b, 0x78, 0xc4, 0x85, 0x66, 0xf9, 0x94, 0x26, 0x36, 0xda, 0xd5, 0xb1, 0x48, + 0x93, 0x03, 0x83, 0xd8, 0x41, 0x39, 0x32, 0x88, 0x3d, 0x30, 0x45, 0xc1, 0x29, 0x72, 0xad, 0x35, + 0x5b, 0x9f, 0x4d, 0xfa, 0xe2, 0xf0, 0xe8, 0x49, 0xe6, 0xf1, 0xbc, 0xc6, 0xec, 0x02, 0x9e, 0x1c, + 0x3e, 0xa4, 0xc3, 0x25, 0x07, 0xfb, 0x00, 0x94, 0x84, 0xe3, 0xd8, 0x97, 0x7a, 0x6b, 0x20, 0x33, + 0x40, 0x71, 0x92, 0x1c, 0x3e, 0x98, 0x6e, 0xbb, 0xae, 0xf5, 0x5e, 0x62, 0x4e, 0x9e, 0x7d, 0x80, + 0x13, 0xef, 0x57, 0xc1, 0xc9, 0x97, 0x79, 0x68, 0x66, 0x4d, 0xa3, 0xe2, 0x0f, 0x53, 0xef, 0x5c, + 0x40, 0x88, 0xd5, 0x87, 0x25, 0x1b, 0x84, 0x61, 0x63, 0xf1, 0x38, 0x20, 0xd9, 0x0d, 0x5f, 0x9e, + 0x2a, 0xff, 0xb5, 0x4b, 0x9c, 0xcb, 0x5f, 0xc8, 0xd1, 0x99, 0xb2, 0xa5, 0x2f, 0xbd, 0xec, 0x1a, + 0x27, 0x4a, 0x6e, 0x9c, 0x49, 0x0e, 0x1f, 0xd2, 0x11, 0xa0, 0x97, 0x6b, 0x37, 0xae, 0xa7, 0x06, + 0xdb, 0xd3, 0x87, 0xf7, 0x81, 0x8e, 0xc0, 0x7f, 0xea, 0x8b, 0xd6, 0xbd, 0xc6, 0xad, 0xf4, 0xe0, + 0x90, 0x36, 0xb2, 0x37, 0xd5, 0x47, 0x7f, 0xe2, 0x86, 0x37, 0xdf, 0xd4, 0x6b, 0x21, 0x2e, 0x3d, + 0xcd, 0x29, 0x09, 0x7b, 0xd5, 0x70, 0x7b, 0xe6, 0xf5, 0x9b, 0xe9, 0x73, 0xfd, 0x98, 0xe7, 0x48, + 0xff, 0xf0, 0x9e, 0x05, 0x20, 0x41, 0x3d, 0x81, 0x2d, 0x2d, 0xf3, 0xfa, 0xcd, 0xe4, 0xad, 0x53, + 0x99, 0x01, 0x16, 0xf1, 0x8a, 0x00, 0x6b, 0x9f, 0x7e, 0x94, 0x1e, 0xee, 0xd6, 0xfa, 0xbb, 0x52, + 0x1d, 0x87, 0x75, 0x79, 0x00, 0x91, 0x54, 0xa0, 0xcf, 0xcc, 0xad, 0xb7, 0xb5, 0xa1, 0xf7, 0x6e, + 0x8f, 0x74, 0xd1, 0xf0, 0x2a, 0xad, 0x3d, 0x99, 0x5b, 0xfb, 0xe9, 0xd3, 0xd3, 0x9e, 0xb6, 0x4d, + 0xfe, 0xf8, 0x4e, 0xe0, 0x82, 0xcc, 0xc0, 0x7b, 0xe9, 0xe1, 0x7d, 0xc0, 0xf5, 0x8c, 0x17, 0x1e, + 0xf7, 0xae, 0x98, 0xc0, 0xba, 0x93, 0x32, 0xb6, 0xf8, 0x97, 0xf3, 0xd1, 0x5d, 0x96, 0xf5, 0xda, + 0x22, 0x59, 0xed, 0xcc, 0x36, 0x40, 0x8e, 0xd7, 0xe5, 0xb6, 0xb0, 0x94, 0x04, 0x86, 0xf3, 0x54, + 0xf9, 0xbf, 0xbb, 0xc4, 0x67, 0x73, 0x90, 0x80, 0x1e, 0x7e, 0xe6, 0x77, 0xcd, 0x4a, 0x6c, 0x17, + 0xcd, 0xc0, 0x4d, 0x68, 0x02, 0x70, 0x03, 0x18, 0xfd, 0x89, 0x62, 0xbe, 0x06, 0xc5, 0x3c, 0x62, + 0x43, 0x31, 0xd2, 0xd8, 0x14, 0x23, 0xfe, 0x4b, 0x7a, 0x58, 0x33, 0x89, 0x8a, 0x71, 0xe9, 0x49, + 0x65, 0x39, 0xde, 0x03, 0x98, 0x85, 0x44, 0x5c, 0x95, 0x1f, 0x17, 0x67, 0xc0, 0x78, 0xf1, 0x47, + 0xe9, 0x76, 0x4b, 0xdd, 0x8f, 0xb5, 0xab, 0xa7, 0x93, 0x43, 0x87, 0x74, 0x49, 0x88, 0xe5, 0x29, + 0xa8, 0x1b, 0x9c, 0x32, 0xb1, 0x4c, 0x9c, 0xa8, 0x1c, 0x14, 0xff, 0xbd, 0x60, 0x7a, 0xf0, 0xc0, + 0xd8, 0x60, 0xf1, 0x58, 0xa3, 0x36, 0xb8, 0xc0, 0x3b, 0x1e, 0xd0, 0x6f, 0x75, 0x8a, 0xd2, 0x18, + 0x53, 0xcc, 0x43, 0x73, 0xe0, 0x90, 0x42, 0xca, 0x6b, 0x95, 0x78, 0x28, 0xa6, 0x10, 0x4f, 0x25, + 0xd1, 0xe1, 0xb2, 0x36, 0x1b, 0x8e, 0x4d, 0x75, 0xc9, 0x78, 0xc1, 0xe9, 0x74, 0x53, 0x2e, 0x55, + 0x3e, 0xe7, 0x12, 0xef, 0x86, 0x33, 0x0f, 0x07, 0x41, 0x4d, 0x31, 0xed, 0xae, 0xec, 0xd3, 0xd0, + 0x60, 0x9f, 0x05, 0x8a, 0xba, 0x14, 0x81, 0xf9, 0x69, 0xa4, 0x47, 0x1b, 0x18, 0xc9, 0xec, 0xff, + 0x58, 0x6f, 0x41, 0xa9, 0x5f, 0x0f, 0x42, 0x30, 0x72, 0x4c, 0x6b, 0xbf, 0x40, 0x83, 0xe7, 0x13, + 0x2e, 0xd0, 0xef, 0x3c, 0xb4, 0x1b, 0xd7, 0xe1, 0x92, 0x80, 0x45, 0x26, 0x34, 0x38, 0x1c, 0xce, + 0x13, 0xe9, 0x9e, 0xb6, 0xa0, 0xf1, 0x71, 0xad, 0xfb, 0x83, 0xcc, 0xeb, 0x37, 0x53, 0x03, 0x47, + 0xb5, 0x9b, 0x6f, 0x6a, 0x9d, 0x07, 0x33, 0x17, 0x89, 0x2b, 0xcd, 0xf9, 0x8b, 0x3a, 0xe7, 0xa6, + 0x06, 0x8e, 0x26, 0x6f, 0x1c, 0xd0, 0x3a, 0x0f, 0x6a, 0x57, 0xba, 0x6f, 0x8f, 0xbc, 0x6d, 0x9c, + 0x5d, 0xf6, 0x77, 0x6b, 0x57, 0xba, 0xf9, 0x25, 0x84, 0xb6, 0x99, 0x81, 0x4f, 0x41, 0xba, 0x59, + 0xa4, 0x24, 0x59, 0xd8, 0x27, 0x3c, 0x8f, 0x4c, 0x80, 0x76, 0xe9, 0x40, 0x99, 0x34, 0x1f, 0x72, + 0xd9, 0x2d, 0x31, 0x49, 0x5b, 0x31, 0x8e, 0x25, 0xc6, 0x70, 0x13, 0x58, 0x62, 0x00, 0xa7, 0x4b, + 0xfc, 0x67, 0x82, 0x2a, 0xff, 0x49, 0xd6, 0x0a, 0x63, 0x00, 0xba, 0xc2, 0x7e, 0xeb, 0x02, 0x73, + 0x5e, 0x4a, 0x00, 0x94, 0xee, 0x69, 0xe3, 0x1a, 0xea, 0xfe, 0x6e, 0x04, 0xd1, 0xc3, 0x58, 0xec, + 0xbf, 0x35, 0x90, 0xbc, 0xd5, 0x9f, 0xea, 0x7b, 0x97, 0x3e, 0x6b, 0x1a, 0x3c, 0x98, 0x1c, 0x6c, + 0xcd, 0xec, 0xff, 0x18, 0xe2, 0x1c, 0x7c, 0x75, 0xe4, 0xc5, 0x43, 0xbb, 0x09, 0xf2, 0x3e, 0x76, + 0x31, 0xcf, 0x07, 0x02, 0xb1, 0x2e, 0x14, 0x5e, 0xe7, 0x7f, 0x95, 0xe0, 0xae, 0x3c, 0x07, 0x32, + 0x0c, 0xb0, 0x31, 0x3c, 0x1f, 0x2c, 0xd0, 0x14, 0x73, 0x37, 0x89, 0x4f, 0xdd, 0x5c, 0x40, 0x50, + 0x53, 0x28, 0x8c, 0x2b, 0x2b, 0x9b, 0x00, 0x88, 0x62, 0xef, 0xd7, 0xe3, 0xc3, 0x1e, 0xa4, 0x39, + 0xc3, 0xff, 0xbf, 0xd2, 0x3d, 0x7a, 0xf2, 0xf0, 0xe8, 0x3b, 0xa7, 0x78, 0xdc, 0x69, 0x07, 0xbb, + 0x33, 0x57, 0x5e, 0xd7, 0xce, 0xf7, 0xe8, 0x38, 0x00, 0x6e, 0x01, 0x0d, 0xc2, 0x33, 0x11, 0x0d, + 0x62, 0x5b, 0xa4, 0x39, 0xac, 0xa3, 0xad, 0xc3, 0x4c, 0x73, 0x72, 0x7c, 0x53, 0xa8, 0x49, 0xf1, + 0xf9, 0xc3, 0x0d, 0xb9, 0x69, 0x8e, 0x83, 0x1b, 0x0f, 0xcd, 0x99, 0xc0, 0x29, 0xe6, 0x0e, 0x09, + 0xf0, 0x46, 0xce, 0xe4, 0x5d, 0x71, 0x56, 0xeb, 0xef, 0x49, 0x9d, 0xb8, 0x9e, 0xea, 0x7c, 0x1f, + 0x9e, 0x53, 0xa6, 0xfb, 0x8e, 0xa7, 0x8f, 0x5d, 0x28, 0x1d, 0x17, 0xd4, 0x57, 0x40, 0x45, 0x22, + 0xd4, 0xa4, 0xc4, 0xf0, 0xa8, 0x88, 0xa7, 0x89, 0x8b, 0xe4, 0xc9, 0xb2, 0xa6, 0x4d, 0xae, 0xde, + 0xc5, 0x72, 0x77, 0x97, 0xdb, 0xec, 0x95, 0x8e, 0x29, 0xb3, 0xad, 0xa4, 0x94, 0x33, 0x29, 0xb3, + 0x67, 0x58, 0x50, 0xe5, 0x3f, 0x15, 0x2b, 0x68, 0x84, 0x17, 0x4e, 0xf2, 0x64, 0x3d, 0x87, 0x84, + 0x47, 0xba, 0x90, 0xb2, 0xb9, 0x74, 0x9d, 0xe1, 0x6f, 0x07, 0xa6, 0x1a, 0x62, 0x26, 0x4c, 0x0e, + 0x1d, 0xb1, 0xb6, 0x63, 0xb9, 0xc0, 0xb3, 0x1e, 0xef, 0x24, 0x94, 0x70, 0x40, 0x09, 0x83, 0xd5, + 0x35, 0xc7, 0x61, 0xde, 0x38, 0xb7, 0x67, 0xe1, 0x30, 0x4e, 0x66, 0x21, 0x1e, 0x76, 0xa1, 0x79, + 0x9b, 0x62, 0xfe, 0x70, 0x5c, 0xa7, 0xf3, 0x4d, 0x91, 0xf5, 0x5c, 0x3c, 0x34, 0x71, 0x79, 0x36, + 0x36, 0x72, 0x41, 0x33, 0x14, 0xae, 0x98, 0x58, 0x23, 0x8a, 0xc9, 0x36, 0x41, 0x95, 0x57, 0x8b, + 0x0b, 0x74, 0x72, 0xc9, 0xdc, 0xbc, 0x4c, 0xde, 0x2c, 0x50, 0x0b, 0x24, 0xbd, 0x54, 0x5c, 0x94, + 0xa3, 0x3e, 0xdd, 0xd9, 0xc1, 0x79, 0xbe, 0x3c, 0xec, 0x59, 0x3e, 0x11, 0xa2, 0x62, 0x33, 0x3e, + 0xe6, 0x42, 0x25, 0xab, 0x48, 0x2c, 0x54, 0x7d, 0xc0, 0x72, 0x73, 0x22, 0x42, 0x42, 0x3f, 0x5a, + 0x9f, 0x73, 0x38, 0x41, 0x32, 0x54, 0x2c, 0x1d, 0x7f, 0x03, 0x8a, 0x86, 0x63, 0xc0, 0x61, 0x10, + 0x9c, 0xd5, 0x98, 0x2c, 0x10, 0x03, 0xf1, 0xce, 0xd5, 0x39, 0xa8, 0xd4, 0x04, 0x45, 0x37, 0x3c, + 0x02, 0x02, 0x66, 0x59, 0x78, 0xca, 0x4f, 0x90, 0xf1, 0x8c, 0xe7, 0x89, 0x09, 0x20, 0x83, 0x49, + 0x3a, 0xa5, 0x12, 0xa2, 0xc2, 0x62, 0x46, 0x3b, 0xe9, 0x42, 0xf7, 0xd4, 0x86, 0xe2, 0x0e, 0x88, + 0xb1, 0xcc, 0xd3, 0x11, 0x94, 0x61, 0x66, 0xd9, 0x04, 0x5a, 0x50, 0xd4, 0x1c, 0xa7, 0xa8, 0x69, + 0xbf, 0x36, 0x7a, 0xa2, 0x6f, 0x4c, 0xd4, 0x70, 0x50, 0x39, 0x51, 0x23, 0x7b, 0x9e, 0xfc, 0x4a, + 0xa8, 0x09, 0xc2, 0x78, 0x31, 0x6e, 0xde, 0x85, 0x3c, 0x94, 0xb6, 0xa1, 0x83, 0xac, 0x34, 0x33, + 0x46, 0xb8, 0x28, 0x2b, 0xcd, 0x8c, 0x15, 0x95, 0xc8, 0xf3, 0x2e, 0x31, 0x77, 0x94, 0xf0, 0x61, + 0xa6, 0xf8, 0x78, 0x44, 0xa5, 0xf4, 0x36, 0x82, 0x85, 0x16, 0x03, 0x71, 0x03, 0x77, 0x2b, 0x34, + 0xfe, 0x55, 0xc7, 0xf1, 0x4c, 0x6b, 0xbb, 0xae, 0xca, 0x41, 0x63, 0x3d, 0xb6, 0x11, 0xb7, 0xdb, + 0x57, 0x89, 0x8f, 0xd9, 0x3f, 0x13, 0x24, 0x1d, 0xc3, 0x3b, 0x41, 0x1a, 0xbe, 0xec, 0xf7, 0x95, + 0x7a, 0x64, 0xb3, 0x66, 0x82, 0x88, 0x7e, 0x01, 0x21, 0xb8, 0x82, 0x20, 0x61, 0x5c, 0x1c, 0x82, + 0xcf, 0xe0, 0x3a, 0x67, 0xcf, 0x5e, 0x0e, 0xc4, 0xf0, 0x62, 0x5c, 0x21, 0x16, 0xd3, 0x7b, 0x5d, + 0x08, 0x77, 0xb1, 0x88, 0xc6, 0x60, 0x39, 0x76, 0x2b, 0x75, 0xe2, 0xfa, 0xe8, 0x89, 0x8f, 0x33, + 0xb7, 0x0e, 0x67, 0xce, 0x75, 0xa5, 0x7b, 0xda, 0xb4, 0xc3, 0x87, 0xb4, 0xee, 0x2b, 0x5c, 0x54, + 0x16, 0x7b, 0x87, 0xfe, 0x84, 0x3f, 0xbe, 0x13, 0x2f, 0xeb, 0xeb, 0x2e, 0x54, 0x44, 0x82, 0xc6, + 0x90, 0xf1, 0xba, 0x6d, 0xe3, 0xc9, 0xf0, 0xc3, 0xbd, 0x37, 0x07, 0x04, 0x1d, 0xed, 0x15, 0xa2, + 0xb3, 0xcd, 0xa0, 0xc1, 0x66, 0x48, 0x14, 0x19, 0x5c, 0x5f, 0xba, 0x83, 0xc6, 0x98, 0x21, 0x25, + 0x18, 0xf1, 0x64, 0x8c, 0xe5, 0x6e, 0x1a, 0xd7, 0x9b, 0x80, 0x43, 0x04, 0xef, 0x25, 0x6e, 0xf8, + 0x95, 0x1c, 0x6e, 0x1f, 0x3d, 0x79, 0x38, 0x39, 0x74, 0x08, 0xda, 0x40, 0x83, 0xe4, 0xe0, 0xd1, + 0xe4, 0xf0, 0x21, 0x50, 0x9b, 0xa1, 0x3c, 0x9e, 0x50, 0xa2, 0x58, 0x4a, 0x5c, 0x3c, 0x90, 0xfa, + 0xff, 0xb8, 0xbb, 0xba, 0xd8, 0x28, 0xae, 0x7b, 0x7f, 0x67, 0xa3, 0x1b, 0x45, 0x23, 0xdd, 0xc0, + 0x3d, 0x84, 0x00, 0x93, 0x5c, 0xe3, 0xec, 0xbd, 0x97, 0x0f, 0x07, 0x58, 0x20, 0x84, 0x70, 0x51, + 0xb8, 0xc9, 0x18, 0x27, 0xc6, 0x31, 0x49, 0x1c, 0xcc, 0xe5, 0xa6, 0xbc, 0xad, 0x77, 0x27, 0xf6, + 0xc6, 0xf6, 0xce, 0x76, 0x67, 0x6c, 0xea, 0x58, 0xae, 0x42, 0xc1, 0x10, 0x63, 0x3e, 0xd7, 0x10, + 0x4a, 0x4a, 0x12, 0x5c, 0xc5, 0xc1, 0x25, 0x89, 0x21, 0x09, 0x81, 0xcd, 0x52, 0xa0, 0x79, 0xe8, + 0x43, 0xd4, 0x28, 0x55, 0x2a, 0x35, 0x52, 0xdb, 0x87, 0xaa, 0xed, 0xce, 0x7a, 0xdd, 0x87, 0xf4, + 0x21, 0xaa, 0x54, 0x45, 0x4d, 0x55, 0xcd, 0xf9, 0x9f, 0x33, 0x73, 0x66, 0xe7, 0x9c, 0x99, 0x5d, + 0x83, 0x42, 0xd5, 0x17, 0xbc, 0xcc, 0xf9, 0xcd, 0xee, 0xf9, 0xfd, 0xe6, 0x7c, 0xcd, 0x39, 0xff, + 0x8f, 0x91, 0xb3, 0xe5, 0xf1, 0x83, 0x01, 0xe1, 0x2b, 0x6c, 0xda, 0xb1, 0x41, 0xfb, 0x5f, 0x4f, + 0x18, 0x9a, 0x7c, 0x44, 0xbe, 0xa3, 0xbd, 0x3b, 0x95, 0xc1, 0x22, 0xf8, 0xac, 0x2f, 0x68, 0x89, + 0xd0, 0xfa, 0xc2, 0x05, 0x10, 0x09, 0xca, 0x52, 0x4e, 0xbd, 0x28, 0xa1, 0xbb, 0xcb, 0x97, 0xdf, + 0x2f, 0x5f, 0xdf, 0xcf, 0xd6, 0x15, 0x2b, 0x71, 0x4a, 0x0a, 0x94, 0x02, 0xee, 0xa2, 0x52, 0xb0, + 0xff, 0xb3, 0xe7, 0x46, 0xfc, 0x81, 0xfd, 0x4a, 0x56, 0x96, 0x62, 0x7e, 0xb4, 0x98, 0x7f, 0xb1, + 0xf4, 0xce, 0x04, 0xab, 0xc7, 0x8a, 0x7a, 0x02, 0xf9, 0x70, 0x74, 0xe6, 0xe4, 0xc5, 0xd2, 0xe9, + 0x91, 0xe9, 0x1f, 0xe4, 0x8b, 0x85, 0x5c, 0xf1, 0xda, 0xab, 0xe5, 0x0f, 0x5e, 0x2e, 0xe6, 0x0f, + 0x59, 0x57, 0x0a, 0xe5, 0xa9, 0x29, 0xf8, 0x1d, 0x38, 0x81, 0x54, 0xfe, 0x3b, 0x54, 0x3b, 0xa3, + 0x3b, 0x85, 0x0f, 0xbb, 0xc6, 0x1d, 0x8f, 0x10, 0x7e, 0x8b, 0x77, 0xcb, 0x42, 0x3c, 0x42, 0x3c, + 0x02, 0x6e, 0xcd, 0xa9, 0x75, 0x48, 0x86, 0xc5, 0x15, 0x96, 0x6c, 0xae, 0xfb, 0x99, 0x39, 0xc6, + 0xe0, 0xdb, 0x7d, 0x7b, 0x2a, 0x6a, 0xd7, 0xf1, 0x35, 0x49, 0x96, 0xe1, 0x00, 0x8a, 0x5f, 0x47, + 0xb7, 0x4c, 0x58, 0x47, 0x16, 0x42, 0xea, 0xd8, 0x82, 0xeb, 0x08, 0x07, 0x44, 0x50, 0x47, 0xf6, + 0xc8, 0xca, 0xbe, 0x02, 0xb6, 0xdd, 0x0d, 0xa1, 0x75, 0x44, 0xaf, 0x82, 0x83, 0x16, 0xae, 0x1d, + 0xcf, 0x41, 0x8b, 0xad, 0xda, 0x62, 0x61, 0x39, 0xa9, 0xd7, 0x33, 0x39, 0x75, 0x09, 0x75, 0xd0, + 0xc2, 0xf5, 0x5a, 0xc8, 0x9e, 0x07, 0x6d, 0xc7, 0x3f, 0xc9, 0x68, 0x18, 0x45, 0xe1, 0xf5, 0x3b, + 0x15, 0x91, 0xef, 0xd8, 0x9a, 0x32, 0x4c, 0x7e, 0xff, 0xa0, 0x25, 0xc2, 0xfe, 0xe1, 0x02, 0x48, + 0x15, 0x3f, 0x96, 0x72, 0xea, 0x9b, 0x12, 0xdd, 0xaa, 0xb0, 0x8b, 0xc8, 0x56, 0xc5, 0x31, 0xe1, + 0xe1, 0x87, 0x0b, 0xba, 0x15, 0xe7, 0x1e, 0x8b, 0x90, 0x68, 0x10, 0xb5, 0xd7, 0x97, 0x0b, 0x60, + 0xcc, 0xa6, 0xb3, 0xb9, 0xe3, 0x20, 0xe3, 0x8f, 0x7c, 0x22, 0x00, 0x0a, 0x23, 0x9f, 0x08, 0xf1, + 0x44, 0xc8, 0x31, 0x29, 0xa7, 0xc6, 0x51, 0x9d, 0x27, 0xa4, 0x97, 0x0f, 0xad, 0x3c, 0x12, 0x5c, + 0xee, 0x9c, 0x77, 0x93, 0x1f, 0x5f, 0xe9, 0x2c, 0x00, 0xb2, 0xe0, 0x0b, 0x04, 0xfe, 0x94, 0x51, + 0x9e, 0x49, 0x2a, 0xf3, 0xc2, 0xa8, 0xe3, 0x2f, 0xb3, 0xfb, 0x5b, 0x31, 0x42, 0x8d, 0xab, 0xab, + 0x90, 0x44, 0x00, 0x14, 0x4a, 0x22, 0xc4, 0x13, 0x49, 0xa6, 0xc1, 0x92, 0x6c, 0x83, 0xc7, 0x82, + 0xda, 0x07, 0x5f, 0x51, 0xef, 0xd9, 0x80, 0xc5, 0x41, 0x69, 0xe1, 0x0e, 0xa5, 0xc7, 0x77, 0xa7, + 0x51, 0xa1, 0x56, 0x31, 0xff, 0x62, 0x31, 0x7f, 0x4e, 0xf4, 0xd5, 0x10, 0xa9, 0x12, 0x30, 0xd0, + 0x84, 0x6c, 0x81, 0x2f, 0xfe, 0xd0, 0xfa, 0xf1, 0x09, 0xe8, 0x76, 0xc5, 0x7c, 0xc1, 0x39, 0x77, + 0x0c, 0x30, 0xe8, 0xf6, 0x49, 0x5b, 0x19, 0x74, 0xe9, 0xd7, 0xb7, 0xc9, 0xf7, 0x12, 0x35, 0x0c, + 0xf8, 0xe9, 0x26, 0xad, 0x3f, 0x95, 0xd0, 0xe8, 0x42, 0xca, 0xff, 0x66, 0x13, 0x84, 0x16, 0xbe, + 0xd9, 0x04, 0xdf, 0x44, 0x54, 0xff, 0x34, 0x92, 0x53, 0xbf, 0x92, 0xd0, 0x60, 0xb0, 0x76, 0xce, + 0xa2, 0xcb, 0x59, 0x86, 0x39, 0x5b, 0x09, 0x56, 0xe1, 0x38, 0x34, 0xc2, 0xf2, 0xfe, 0x73, 0xd3, + 0x67, 0x8e, 0x17, 0x0b, 0xc7, 0x8a, 0xd7, 0xae, 0x17, 0x0b, 0x87, 0x8b, 0x85, 0xb3, 0xd6, 0xd8, + 0xee, 0xf2, 0xd4, 0x05, 0xeb, 0xfa, 0x3e, 0xfb, 0x05, 0xf3, 0xed, 0x71, 0x08, 0xf1, 0xe5, 0xff, + 0x2a, 0xe5, 0x56, 0xfe, 0x38, 0x7e, 0x8e, 0x4f, 0x28, 0x8f, 0xd5, 0xfa, 0x1c, 0x79, 0xeb, 0x4a, + 0xfc, 0x70, 0xf7, 0x47, 0xa8, 0xb5, 0x7e, 0x15, 0x7d, 0x48, 0x00, 0x14, 0xf6, 0x21, 0x21, 0x9e, + 0x3c, 0xcd, 0x03, 0xf8, 0x78, 0xb5, 0xce, 0x63, 0x9d, 0xef, 0x1f, 0x56, 0x56, 0x12, 0xe3, 0x08, + 0x38, 0x43, 0xa1, 0x67, 0xf4, 0x22, 0x78, 0x80, 0x4d, 0x7f, 0xa0, 0x42, 0xb6, 0x12, 0x77, 0x35, + 0x6b, 0xa6, 0x5f, 0x06, 0x5e, 0xe0, 0x23, 0xa1, 0x06, 0x2b, 0xaa, 0x03, 0x33, 0xe3, 0xea, 0xb3, + 0xd4, 0xfc, 0x40, 0x28, 0xc0, 0x7a, 0x76, 0x62, 0x75, 0x03, 0x0e, 0x88, 0x35, 0x60, 0x2d, 0x1b, + 0x51, 0xed, 0x4a, 0xfc, 0x39, 0x02, 0xde, 0x0d, 0x7e, 0x29, 0xb8, 0xb6, 0x15, 0x42, 0x2d, 0x56, + 0x56, 0x89, 0x26, 0x62, 0xfc, 0x4d, 0xca, 0xa9, 0x9f, 0x4a, 0x34, 0x6a, 0x94, 0x70, 0xd8, 0x83, + 0x19, 0x7c, 0x22, 0x2c, 0x86, 0x89, 0xe0, 0xc6, 0x5b, 0x31, 0xab, 0xf3, 0xbd, 0x2c, 0x7c, 0xcf, + 0x00, 0x1d, 0xe0, 0xcd, 0x67, 0xed, 0x66, 0xdc, 0xec, 0x33, 0xaa, 0x98, 0xcf, 0x00, 0x58, 0xfd, + 0x7c, 0x46, 0xf1, 0x44, 0xfd, 0x43, 0x52, 0x4e, 0xdd, 0x82, 0xa2, 0xb0, 0x0d, 0x12, 0x83, 0x57, + 0x7e, 0x62, 0xdd, 0x80, 0xcd, 0xd3, 0xdc, 0xfd, 0x80, 0x2a, 0x30, 0x98, 0xf6, 0xc3, 0xca, 0x43, + 0x35, 0x0f, 0x53, 0x06, 0xae, 0x94, 0x3d, 0x30, 0x1d, 0x88, 0xc8, 0xf3, 0xdb, 0x07, 0xd2, 0x89, + 0x2a, 0x1a, 0x21, 0x17, 0x26, 0x6c, 0x84, 0x02, 0x34, 0xd3, 0x23, 0xdb, 0xd0, 0x92, 0xcd, 0x2a, + 0xe1, 0x35, 0xf5, 0xda, 0xcc, 0xa9, 0x61, 0x38, 0xc4, 0x05, 0x27, 0xe5, 0xf2, 0xfe, 0xf7, 0xa7, + 0xa7, 0xc6, 0x4b, 0x87, 0xcf, 0x4e, 0xbf, 0x75, 0x5e, 0xa9, 0x12, 0x07, 0xef, 0xfb, 0xca, 0x83, + 0xb5, 0xcb, 0x31, 0x90, 0xc6, 0xc6, 0xd2, 0x5f, 0x4a, 0x32, 0x72, 0x4d, 0x0e, 0x9d, 0x2d, 0xc5, + 0xe5, 0x62, 0xb3, 0xc4, 0xca, 0x8d, 0xc4, 0x86, 0x6a, 0xa0, 0x44, 0x83, 0x61, 0x29, 0xa7, 0x36, + 0xa2, 0x85, 0x6c, 0xf8, 0x55, 0x76, 0x63, 0x90, 0x46, 0xf7, 0xf0, 0x97, 0x2c, 0x83, 0x40, 0x48, + 0x10, 0x24, 0x1a, 0xc2, 0x99, 0x6c, 0x8c, 0x3e, 0x58, 0x6d, 0x30, 0xa4, 0xb4, 0x9e, 0xd4, 0xe8, + 0xde, 0x21, 0x6e, 0x02, 0x7f, 0x95, 0x64, 0xc4, 0xf8, 0x2b, 0x0a, 0x59, 0xfb, 0x31, 0x42, 0xd6, + 0x3c, 0x28, 0xb3, 0x1f, 0xbf, 0x11, 0xd5, 0x11, 0xc7, 0x76, 0x4c, 0x84, 0xe5, 0x46, 0xcd, 0xde, + 0x3d, 0x3b, 0xf1, 0x4c, 0x09, 0x66, 0xdb, 0xaa, 0x3c, 0x3e, 0x2b, 0xb6, 0xb0, 0x33, 0xe6, 0xa6, + 0x55, 0x18, 0xa2, 0x0f, 0xdd, 0xb5, 0x67, 0x14, 0xd3, 0xf7, 0x63, 0x84, 0xf4, 0x79, 0x50, 0xe6, + 0xa1, 0xaf, 0xb3, 0x1f, 0xfa, 0x19, 0xc7, 0xbc, 0x87, 0x75, 0xdb, 0x50, 0x16, 0xb2, 0x6f, 0x9d, + 0x2c, 0x7d, 0x4c, 0x7c, 0x4b, 0xc3, 0x4d, 0x22, 0x8e, 0xbe, 0x8a, 0xb8, 0x67, 0xf4, 0x0e, 0xe7, + 0xa5, 0xa2, 0xd3, 0xe9, 0x4a, 0xc6, 0xcb, 0xc2, 0x81, 0x84, 0x6f, 0x2e, 0x92, 0x53, 0x3f, 0x73, + 0x66, 0x1b, 0x36, 0xde, 0x17, 0x4b, 0x8e, 0xcc, 0x36, 0x93, 0xc2, 0xd9, 0x86, 0x55, 0xea, 0x1b, + 0x9b, 0x61, 0x9c, 0xda, 0xb2, 0x01, 0x04, 0x99, 0xa7, 0xf1, 0x10, 0x9a, 0x5d, 0xa7, 0xb3, 0x7b, + 0xdc, 0x1c, 0x62, 0xfe, 0xe0, 0x68, 0xbf, 0x44, 0x60, 0x1f, 0x51, 0x29, 0xfd, 0xd2, 0x50, 0x1c, + 0x51, 0xfe, 0x24, 0x3e, 0x9d, 0x68, 0xf0, 0x0b, 0x6f, 0x0d, 0x5f, 0x2e, 0x5e, 0x1d, 0xf3, 0x9f, + 0x41, 0x28, 0x0b, 0xd9, 0x33, 0x21, 0xdf, 0xe9, 0xc4, 0x16, 0x74, 0xb3, 0xda, 0xde, 0x17, 0x4e, + 0xec, 0xa4, 0x8a, 0x3c, 0xb8, 0xf7, 0x8b, 0x46, 0x4f, 0x4e, 0xb6, 0x13, 0xff, 0x12, 0x30, 0x28, + 0x97, 0x52, 0x74, 0x30, 0xa7, 0xae, 0x47, 0x95, 0xf9, 0x9a, 0xec, 0x51, 0xb6, 0xde, 0x7f, 0x8d, + 0x33, 0xbe, 0x3e, 0x1c, 0x7d, 0xa8, 0x7a, 0xf2, 0x76, 0x05, 0x3c, 0x23, 0xec, 0xd7, 0x4e, 0x64, + 0xa5, 0x30, 0xc2, 0x01, 0x89, 0x81, 0xfc, 0x84, 0x83, 0x92, 0xfe, 0x44, 0x47, 0xd8, 0x81, 0x86, + 0x4d, 0x29, 0xc2, 0x1b, 0x68, 0x58, 0xf6, 0x98, 0xef, 0xd6, 0x86, 0x27, 0x66, 0xc9, 0xd7, 0x7e, + 0xdc, 0xde, 0xe4, 0x35, 0x43, 0xe8, 0x7b, 0xb7, 0x51, 0xbb, 0x19, 0x0f, 0x7b, 0x81, 0xdd, 0x0c, + 0x8f, 0x7b, 0x43, 0x35, 0x50, 0xc2, 0xfc, 0xf8, 0x3f, 0xf1, 0x90, 0xf3, 0x3f, 0x68, 0xb6, 0xed, + 0x10, 0xfd, 0xd2, 0x59, 0xdc, 0xe0, 0x33, 0x58, 0x35, 0x91, 0xd0, 0xfb, 0xd2, 0xa6, 0x68, 0x71, + 0xc3, 0x62, 0x42, 0x16, 0x37, 0x5e, 0xa8, 0x1b, 0x49, 0x63, 0x15, 0x9a, 0xef, 0x38, 0xaf, 0x95, + 0x2f, 0xbe, 0x69, 0x1d, 0xb9, 0x4c, 0x9a, 0x1e, 0xff, 0x72, 0x60, 0xd0, 0xf9, 0x8a, 0x98, 0xe5, + 0x71, 0xf8, 0x35, 0xdc, 0xb9, 0x7e, 0xe3, 0x2c, 0x5f, 0x82, 0x79, 0xf9, 0x31, 0x21, 0xcb, 0x17, + 0x2e, 0xaf, 0xb4, 0xd7, 0xdb, 0x15, 0x08, 0x30, 0xde, 0xae, 0x3e, 0x46, 0x9b, 0x94, 0x0d, 0xb5, + 0x30, 0x8a, 0x0d, 0x92, 0x4f, 0x64, 0x75, 0x72, 0x3c, 0x22, 0xcf, 0x7b, 0x32, 0xd5, 0x99, 0xad, + 0xa4, 0xe7, 0xab, 0x33, 0x07, 0x24, 0x34, 0xbd, 0xe4, 0x62, 0x99, 0x93, 0xb9, 0x14, 0x9a, 0x03, + 0xe1, 0x4c, 0x5c, 0x86, 0x3b, 0xe0, 0x82, 0x75, 0xe0, 0x8c, 0x75, 0x7e, 0x5f, 0x05, 0x4f, 0x1a, + 0x99, 0xfd, 0xd0, 0x89, 0x62, 0xfe, 0x1c, 0x14, 0x00, 0xfa, 0x0f, 0x2f, 0xee, 0xb6, 0xde, 0x78, + 0x05, 0xae, 0xd8, 0x9f, 0x87, 0x27, 0x67, 0xf6, 0x4c, 0xb2, 0x00, 0x18, 0x5c, 0xd7, 0x28, 0x35, + 0x3f, 0xf4, 0x3f, 0x3a, 0x8b, 0xb6, 0xe0, 0x87, 0xee, 0xc7, 0x84, 0x2c, 0xda, 0xb8, 0x9a, 0x0c, + 0xd9, 0x4b, 0xd6, 0x85, 0xac, 0x87, 0xa0, 0xa7, 0x3d, 0xd7, 0xf9, 0x9d, 0x04, 0x7d, 0xcd, 0x60, + 0x63, 0xc3, 0xac, 0x9b, 0x01, 0xfa, 0x3c, 0xc2, 0x38, 0xbf, 0x51, 0xaa, 0x62, 0xe7, 0xb7, 0x0a, + 0xa2, 0xcb, 0xc2, 0x81, 0x84, 0xe6, 0x17, 0x52, 0x4e, 0xbd, 0x24, 0x79, 0xdd, 0xdf, 0x80, 0x08, + 0x19, 0x2c, 0x4f, 0x85, 0x78, 0x10, 0xb2, 0xe0, 0x6f, 0x6c, 0x07, 0x00, 0x7e, 0x14, 0x8b, 0xbc, + 0x0a, 0xd5, 0xd4, 0x90, 0xd0, 0x97, 0x11, 0xf9, 0xee, 0x4a, 0x35, 0xb6, 0xeb, 0x6d, 0x5a, 0xb6, + 0x57, 0xe4, 0x0b, 0xe3, 0xe2, 0x6c, 0x54, 0x88, 0x2f, 0x4c, 0x25, 0x98, 0xc8, 0xfc, 0xb5, 0x94, + 0x53, 0x3f, 0x97, 0xd0, 0x06, 0x91, 0xcc, 0xde, 0x84, 0xc9, 0x10, 0xe1, 0x94, 0xec, 0x4c, 0xe2, + 0x3b, 0xfe, 0xe1, 0x1f, 0x03, 0xdf, 0x97, 0xd3, 0x51, 0xdd, 0x92, 0x64, 0xb4, 0x43, 0xcb, 0xa6, + 0x9e, 0x1b, 0x08, 0xee, 0xbb, 0x7e, 0x8c, 0xb0, 0xef, 0xf2, 0xa0, 0x44, 0xed, 0xef, 0xe0, 0x65, + 0x10, 0xc4, 0x01, 0x73, 0xc6, 0x2d, 0x27, 0x33, 0x88, 0x22, 0x2c, 0x09, 0x30, 0x15, 0x14, 0xf7, + 0x5a, 0x4f, 0x5c, 0xb0, 0x12, 0xac, 0xf2, 0xdb, 0xb5, 0x6c, 0x7f, 0x2a, 0xa1, 0x6d, 0xd3, 0x7b, + 0x34, 0x83, 0xbb, 0xca, 0x67, 0x01, 0x41, 0xab, 0x7c, 0x2f, 0x8e, 0xd0, 0xdb, 0x8d, 0x57, 0xf9, + 0xf7, 0xc1, 0x93, 0x88, 0xef, 0x32, 0xa0, 0x05, 0x18, 0x00, 0xad, 0xcf, 0xea, 0x3d, 0xd4, 0x6c, + 0x38, 0x1c, 0x12, 0x18, 0x7d, 0xa7, 0x82, 0x31, 0xb9, 0x3b, 0x8b, 0x49, 0xfd, 0x4e, 0x92, 0xff, + 0xbd, 0x59, 0x33, 0xa9, 0xa5, 0x47, 0x33, 0xb8, 0x5d, 0xf1, 0x22, 0x0a, 0x79, 0x21, 0x42, 0xdf, + 0x10, 0x0e, 0x92, 0xd0, 0xdd, 0x65, 0x8f, 0xc4, 0xf7, 0x00, 0x15, 0x6a, 0xac, 0x51, 0x0f, 0xf6, + 0x62, 0xd4, 0x89, 0x2c, 0xa0, 0x30, 0xd0, 0x89, 0xac, 0x82, 0x21, 0xfd, 0x02, 0xe2, 0x44, 0xf6, + 0x09, 0x3c, 0x4c, 0x8f, 0xff, 0xf1, 0x12, 0x71, 0xdc, 0x06, 0x8f, 0xfb, 0xf1, 0xd2, 0x50, 0x9c, + 0xbb, 0x68, 0x5a, 0x8b, 0x16, 0x00, 0x01, 0x5c, 0x11, 0xb0, 0x78, 0x21, 0xcc, 0x44, 0x05, 0x81, + 0x21, 0xea, 0x7d, 0xac, 0xa0, 0xea, 0x65, 0x9a, 0xa9, 0xc0, 0xa9, 0xc5, 0x4e, 0x9c, 0x11, 0xaa, + 0x21, 0xb8, 0xaa, 0x18, 0x14, 0x9c, 0xa9, 0xa0, 0x12, 0xeb, 0x76, 0xc3, 0x26, 0x54, 0xef, 0x67, + 0x80, 0xbb, 0x9b, 0x75, 0xb0, 0x40, 0x38, 0x86, 0x22, 0xc0, 0x1a, 0x04, 0x2d, 0xaf, 0x86, 0x2c, + 0x24, 0xb9, 0xfa, 0x42, 0x62, 0x06, 0x79, 0xa8, 0x1a, 0x8d, 0x43, 0xb3, 0x32, 0xc4, 0x2f, 0xbc, + 0x22, 0x22, 0xff, 0xaa, 0x6a, 0xe1, 0x84, 0x73, 0x1f, 0x04, 0x88, 0xaa, 0x64, 0xc4, 0x06, 0x3a, + 0x57, 0x82, 0x8b, 0x6b, 0x99, 0xd5, 0x9c, 0x18, 0xd7, 0x9f, 0x49, 0xe0, 0xef, 0x08, 0xe1, 0x01, + 0x32, 0x09, 0x03, 0x05, 0x44, 0x0f, 0xc8, 0x24, 0x8c, 0x40, 0x7f, 0x47, 0x06, 0xe5, 0xba, 0x25, + 0x3c, 0x8a, 0xea, 0x60, 0xab, 0xa0, 0x58, 0x38, 0xc6, 0x9a, 0x66, 0xf5, 0x67, 0x12, 0x84, 0x56, + 0x48, 0x79, 0x98, 0x67, 0x3c, 0xcb, 0xab, 0xdf, 0x66, 0xf0, 0xb5, 0x24, 0x2f, 0x84, 0x64, 0x4c, + 0xa9, 0x64, 0x76, 0xb3, 0x9e, 0x7e, 0xae, 0x27, 0x95, 0x30, 0x1f, 0xcf, 0xea, 0xbd, 0x3b, 0x32, + 0x09, 0xbf, 0xbd, 0x9a, 0x08, 0x29, 0xb4, 0x57, 0x13, 0xdf, 0x40, 0x48, 0x7f, 0x37, 0xa7, 0xae, + 0x47, 0x8b, 0x48, 0x40, 0x8b, 0xfc, 0x28, 0x76, 0xa1, 0xdf, 0xf7, 0xde, 0xf4, 0xb9, 0xdd, 0x24, + 0x03, 0x95, 0xb8, 0x08, 0x53, 0x7d, 0x04, 0x6d, 0xaa, 0x96, 0x2a, 0x38, 0xd2, 0x27, 0x87, 0x62, + 0xf6, 0x17, 0x25, 0x48, 0x75, 0xd0, 0x6f, 0xd9, 0xf8, 0x07, 0x10, 0x72, 0x3c, 0x28, 0xfe, 0x01, + 0x41, 0x84, 0x2f, 0x01, 0x1d, 0xa0, 0xdb, 0x4d, 0x1b, 0xa9, 0x2b, 0xab, 0xfd, 0xb4, 0x70, 0xb8, + 0x71, 0xf2, 0x4c, 0x97, 0x07, 0x06, 0x0b, 0x00, 0x28, 0xb3, 0xe2, 0xad, 0x72, 0x44, 0x22, 0xb1, + 0xc9, 0xd1, 0xb4, 0x24, 0x2f, 0x70, 0xab, 0xa5, 0x25, 0xfa, 0xb2, 0x29, 0x73, 0x80, 0x4c, 0x25, + 0xe2, 0x8e, 0xe7, 0x05, 0x0a, 0x4f, 0x65, 0x84, 0x78, 0x42, 0xbb, 0x1b, 0xbf, 0xad, 0x12, 0xc7, + 0x9a, 0xa9, 0x11, 0x6b, 0x78, 0x72, 0xfa, 0xca, 0x5e, 0x42, 0x9b, 0x7f, 0xb9, 0x96, 0xa9, 0xc4, + 0x20, 0x3f, 0x4a, 0xa6, 0x92, 0x9f, 0x48, 0x10, 0x01, 0xa4, 0x55, 0x1b, 0xc8, 0xc4, 0x53, 0x59, + 0x83, 0x1f, 0x01, 0xa4, 0x55, 0x1b, 0x68, 0xb3, 0x4b, 0x03, 0x23, 0x80, 0xb8, 0x20, 0xd7, 0x85, + 0xdc, 0x25, 0x72, 0x7e, 0xdf, 0x4c, 0x6e, 0x02, 0xe7, 0x81, 0xf3, 0x10, 0xf1, 0x5e, 0xae, 0x65, + 0x88, 0xe9, 0xa6, 0x35, 0xfe, 0x13, 0x3b, 0xa6, 0xb6, 0x30, 0x89, 0x06, 0x0d, 0x24, 0x5e, 0x0b, + 0xb3, 0xb8, 0xc0, 0xb3, 0x4b, 0x0e, 0xda, 0x6d, 0x9e, 0x0f, 0x53, 0x3b, 0x23, 0x1c, 0x21, 0x00, + 0xdb, 0x82, 0x2a, 0xcb, 0xa0, 0x65, 0x42, 0xd6, 0x51, 0x36, 0x28, 0x9b, 0x8b, 0x61, 0xc8, 0x3e, + 0x80, 0xd6, 0x54, 0x43, 0x96, 0xe6, 0x4f, 0x34, 0x31, 0xad, 0x89, 0x88, 0xac, 0x34, 0x6b, 0x24, + 0xff, 0x4a, 0x7b, 0x5f, 0x67, 0xa7, 0x66, 0x98, 0x5a, 0xf2, 0xc9, 0x78, 0xa2, 0x2b, 0x65, 0x4f, + 0x32, 0x6b, 0x38, 0x73, 0xa1, 0x00, 0x4b, 0xa9, 0xaf, 0xad, 0xe5, 0x16, 0xc2, 0xff, 0x75, 0xe9, + 0x66, 0x08, 0xb0, 0x13, 0x3d, 0x5b, 0xc3, 0x5a, 0x21, 0x36, 0x08, 0x1f, 0x9c, 0x19, 0xa6, 0x47, + 0xeb, 0xd7, 0x7a, 0x8c, 0xd8, 0x20, 0xfe, 0x5b, 0xa9, 0xd3, 0xcf, 0x69, 0xee, 0x08, 0xfb, 0x5b, + 0x48, 0x96, 0x10, 0x03, 0x89, 0x07, 0x20, 0x0a, 0x11, 0xae, 0x05, 0x39, 0x48, 0x4f, 0x5b, 0x77, + 0x26, 0x1a, 0xd8, 0x3a, 0xa3, 0x6d, 0x9d, 0x7b, 0xb9, 0x96, 0xb6, 0x4e, 0xf7, 0xd4, 0xd0, 0x5f, + 0xd8, 0xa1, 0xf7, 0x69, 0xa3, 0xa5, 0x37, 0xde, 0xa9, 0x05, 0x0c, 0xbd, 0x04, 0x11, 0x3e, 0xf4, + 0x3a, 0x40, 0x42, 0xe7, 0xa8, 0x94, 0x53, 0x77, 0xd2, 0xfc, 0x46, 0xf8, 0xb9, 0x61, 0xdb, 0x50, + 0x88, 0x44, 0x3e, 0x73, 0xe2, 0xb4, 0xb5, 0xe7, 0x08, 0x21, 0xb7, 0x2e, 0xf0, 0x69, 0x0b, 0xee, + 0xaa, 0x65, 0x4c, 0xd6, 0x8d, 0x14, 0x66, 0x39, 0x43, 0xfc, 0x1d, 0x3d, 0x1d, 0xd2, 0x40, 0xcb, + 0x43, 0x3b, 0xad, 0x11, 0xb8, 0x6f, 0x5b, 0x09, 0x75, 0x63, 0xef, 0x34, 0xb1, 0x6d, 0x9b, 0xb0, + 0x5d, 0x2d, 0x62, 0x6b, 0x1d, 0xdd, 0x5b, 0xcc, 0x9f, 0x03, 0x1f, 0x14, 0x36, 0x65, 0x51, 0x60, + 0x22, 0x22, 0x41, 0x27, 0x37, 0xd0, 0xef, 0x99, 0x15, 0x31, 0xdd, 0x0a, 0x18, 0xc8, 0x68, 0xe2, + 0x15, 0x31, 0x03, 0x0a, 0x5d, 0x11, 0x7b, 0xb0, 0x84, 0x6e, 0x36, 0xa7, 0x6e, 0xa0, 0x43, 0xb5, + 0xf3, 0xfa, 0x09, 0x19, 0x49, 0x95, 0xc5, 0xc0, 0x59, 0x6d, 0x6d, 0x6f, 0xe5, 0x02, 0x02, 0x1c, + 0x58, 0x45, 0x2f, 0xa7, 0x76, 0xf7, 0xb4, 0x1f, 0xe8, 0x22, 0x5a, 0xa7, 0xc6, 0x78, 0x3a, 0xb9, + 0x2b, 0x95, 0x34, 0xbb, 0xda, 0xe2, 0x89, 0xee, 0x78, 0xa7, 0x66, 0xa0, 0xd5, 0xa2, 0xea, 0xfb, + 0xa0, 0x42, 0x97, 0x88, 0x80, 0x3b, 0x08, 0xed, 0x4e, 0x78, 0x1f, 0xa7, 0xac, 0xac, 0xe1, 0x77, + 0x8b, 0x85, 0xb7, 0xac, 0xfc, 0x9b, 0xd6, 0xd4, 0x55, 0xeb, 0xe0, 0xb0, 0x22, 0x2c, 0xa9, 0x65, + 0xc9, 0xd8, 0xb1, 0x2b, 0x83, 0x0f, 0xd9, 0xee, 0x72, 0x17, 0xe8, 0x7d, 0x69, 0x33, 0xd5, 0x0b, + 0xd1, 0xf8, 0xc5, 0x5b, 0x3b, 0x0c, 0x2a, 0x7c, 0x6b, 0xc7, 0x03, 0x26, 0xe4, 0x5e, 0x92, 0x72, + 0xea, 0x53, 0xe8, 0x5e, 0xb7, 0x0d, 0xdb, 0x4d, 0x13, 0xdb, 0xf2, 0x97, 0x4e, 0x5e, 0x22, 0xed, + 0x79, 0x55, 0x50, 0xef, 0xf5, 0xe3, 0x6b, 0x79, 0xd4, 0x59, 0xa8, 0x12, 0x4e, 0x43, 0xf0, 0x31, + 0x19, 0x88, 0x9f, 0xce, 0x90, 0xc8, 0x9f, 0x5b, 0xf5, 0x4e, 0xc1, 0x40, 0xec, 0x81, 0x04, 0x0e, + 0xc4, 0x15, 0x48, 0x37, 0x9c, 0xa2, 0xf3, 0x48, 0x61, 0xf8, 0x29, 0x9d, 0x9c, 0xb0, 0xae, 0x9f, + 0x24, 0x84, 0x85, 0x25, 0x01, 0x06, 0xcb, 0x3a, 0xfd, 0xa1, 0x1e, 0xbb, 0xd6, 0x9f, 0x91, 0x21, + 0x78, 0x7b, 0xdc, 0xe8, 0x6e, 0x37, 0xb5, 0x0c, 0xa6, 0xb2, 0x54, 0x64, 0x97, 0x4c, 0x11, 0x81, + 0x43, 0xb0, 0x17, 0xc8, 0x86, 0x95, 0x22, 0x66, 0x62, 0xd4, 0x0d, 0x7f, 0x62, 0xe6, 0xdc, 0x1b, + 0x1e, 0x3a, 0x21, 0xe5, 0x10, 0x56, 0x0a, 0x2d, 0x16, 0x18, 0x18, 0x1b, 0xa6, 0x96, 0xc1, 0x9c, + 0x3e, 0x92, 0xe4, 0x39, 0xae, 0x25, 0x75, 0x42, 0xcf, 0x26, 0x39, 0x1b, 0x0a, 0x15, 0x00, 0xe1, + 0x86, 0x82, 0x0f, 0xe7, 0xc6, 0xe6, 0x73, 0x3b, 0x1b, 0xae, 0x70, 0x79, 0xea, 0x82, 0x75, 0xf5, + 0x84, 0xf7, 0xc9, 0xf8, 0x4b, 0x20, 0xb8, 0x20, 0xaa, 0x13, 0x90, 0xc8, 0x92, 0xfa, 0xee, 0x89, + 0xc8, 0x08, 0x3b, 0x28, 0x37, 0x75, 0x6c, 0x49, 0x19, 0xa6, 0x9e, 0x1d, 0xc0, 0xe9, 0x0e, 0xf9, + 0xb1, 0x3e, 0x3c, 0x18, 0xf1, 0x91, 0x12, 0x07, 0xca, 0xf8, 0x99, 0x69, 0xe8, 0x7e, 0x12, 0xf8, + 0xe0, 0xf0, 0x3e, 0xeb, 0xc8, 0x7b, 0x50, 0xf3, 0x18, 0x34, 0x2d, 0x20, 0x00, 0xcf, 0x02, 0x3e, + 0x2b, 0xeb, 0xc9, 0x46, 0x29, 0x76, 0xaa, 0x81, 0xbe, 0x56, 0x0f, 0x9e, 0x43, 0xf5, 0xa5, 0xc3, + 0x39, 0xab, 0x70, 0x04, 0x76, 0xee, 0xe1, 0xcb, 0xd2, 0xa5, 0x57, 0xc7, 0x99, 0xd4, 0x19, 0x4b, + 0x1b, 0x78, 0x6e, 0x13, 0xc9, 0x8e, 0x64, 0xdc, 0x8c, 0x1b, 0xb1, 0x41, 0xfb, 0x8f, 0x3d, 0x9e, + 0x0f, 0xa1, 0x9f, 0x91, 0x59, 0x92, 0x6e, 0x59, 0xb5, 0x27, 0xba, 0xb4, 0xde, 0x38, 0x7f, 0x96, + 0xf4, 0x62, 0xa8, 0x0a, 0x75, 0xfc, 0xc4, 0x1f, 0xe4, 0x86, 0x8c, 0xdd, 0x2e, 0x9d, 0xc7, 0x48, + 0x76, 0x82, 0x27, 0xc7, 0x9d, 0x35, 0x9d, 0x22, 0x2c, 0x09, 0x98, 0xf3, 0xe9, 0xf6, 0x96, 0x81, + 0x2b, 0xc2, 0xc4, 0xa0, 0xfb, 0xc4, 0xbb, 0x99, 0x47, 0xc8, 0x04, 0x6d, 0xe6, 0x79, 0xb9, 0x04, + 0x25, 0x31, 0xf9, 0xb6, 0x80, 0x07, 0xb5, 0x3f, 0x10, 0x95, 0x04, 0xbc, 0x6c, 0x89, 0x78, 0xc4, + 0x06, 0xd3, 0xf1, 0x5e, 0x6d, 0x08, 0xbd, 0x1c, 0x91, 0xe7, 0x3d, 0xd3, 0xa7, 0x65, 0x07, 0xda, + 0xb4, 0x6c, 0x6f, 0xe3, 0x80, 0x9a, 0xb0, 0x07, 0x95, 0x96, 0x26, 0xff, 0xb4, 0xce, 0x01, 0x09, + 0xa7, 0x75, 0x2e, 0x96, 0xb4, 0xd2, 0x09, 0x29, 0xa7, 0xf6, 0xa0, 0x75, 0xa5, 0x33, 0xe3, 0x33, + 0xe7, 0x0e, 0x82, 0x7d, 0x31, 0x6c, 0xe1, 0xaf, 0xb0, 0xae, 0x8e, 0x95, 0x4e, 0x9e, 0x81, 0xff, + 0x94, 0x4e, 0x5e, 0xa2, 0x51, 0x40, 0xc8, 0x95, 0xff, 0xdb, 0xb6, 0x55, 0x99, 0xd5, 0x5d, 0x01, + 0x49, 0x6d, 0x33, 0x5a, 0xb6, 0xd7, 0x88, 0xc5, 0x71, 0x15, 0xf1, 0x91, 0x12, 0xd4, 0x75, 0x88, + 0x86, 0x2f, 0xb6, 0x1b, 0x58, 0x63, 0xab, 0x20, 0xb8, 0x2e, 0x53, 0x58, 0x6d, 0x3b, 0xfd, 0x16, + 0xf3, 0xf6, 0x69, 0xcf, 0xe0, 0x07, 0x0b, 0xee, 0xee, 0x25, 0xff, 0x72, 0xc0, 0x14, 0x90, 0xd6, + 0x93, 0x5a, 0x6f, 0x3c, 0x4d, 0x42, 0xb0, 0xfe, 0x42, 0x92, 0xef, 0xc4, 0x53, 0xef, 0xe6, 0xed, + 0x7a, 0x46, 0xef, 0xd1, 0x3b, 0x07, 0xf8, 0xf9, 0x0b, 0xdd, 0xf2, 0x6a, 0x1a, 0xe4, 0x10, 0x3b, + 0xe0, 0x63, 0xcf, 0xc1, 0x62, 0xfe, 0x4a, 0xe9, 0x74, 0x01, 0x12, 0xa1, 0x94, 0x46, 0xc7, 0x4a, + 0x23, 0xc7, 0x94, 0x90, 0xf2, 0xf0, 0xc8, 0x64, 0xde, 0xcc, 0xda, 0x89, 0x98, 0x49, 0x19, 0x4c, + 0x46, 0xe4, 0xf9, 0xcd, 0x9a, 0xd9, 0xd8, 0xdd, 0xae, 0x67, 0x0c, 0x6a, 0xc7, 0x60, 0xb3, 0xe0, + 0x7a, 0x80, 0xfb, 0x61, 0x41, 0x1e, 0xe0, 0x3c, 0x34, 0x69, 0xa2, 0xef, 0x4a, 0x39, 0xb5, 0x17, + 0x2d, 0x25, 0xd3, 0xf2, 0x99, 0xfd, 0xd6, 0xfe, 0x7d, 0xe5, 0xeb, 0x47, 0xa7, 0xaf, 0x5c, 0x84, + 0xe1, 0x14, 0x12, 0xc1, 0x38, 0x56, 0x0f, 0x4a, 0x23, 0x00, 0x49, 0xab, 0x3c, 0x3d, 0x02, 0x2d, + 0xcf, 0xf1, 0xb5, 0x2c, 0xe6, 0x47, 0x43, 0xbf, 0x03, 0x0e, 0x53, 0x10, 0x2f, 0xe5, 0x5a, 0x47, + 0xb7, 0xa1, 0x67, 0x8c, 0x58, 0x47, 0x9f, 0x61, 0xbf, 0xe9, 0x1a, 0xb1, 0x41, 0xfa, 0x89, 0xf5, + 0x71, 0x36, 0xd0, 0x07, 0x3c, 0xa9, 0xf0, 0x72, 0x2e, 0x5c, 0x2a, 0x76, 0x3d, 0xb7, 0xb2, 0x4a, + 0x34, 0x91, 0xea, 0xda, 0xad, 0x91, 0x8a, 0x6f, 0x6b, 0x55, 0x9d, 0x54, 0xb1, 0x41, 0x93, 0x31, + 0xbd, 0x39, 0x1b, 0x91, 0xef, 0x6e, 0xd6, 0x4c, 0x9c, 0x04, 0x8b, 0x32, 0xdc, 0x11, 0xef, 0xe9, + 0xd3, 0x0c, 0xc4, 0x93, 0x82, 0x83, 0x13, 0xee, 0x7e, 0x8b, 0xe0, 0x44, 0xba, 0x77, 0x70, 0x96, + 0x3f, 0x62, 0x85, 0xd3, 0xb8, 0xb9, 0xdd, 0xfa, 0xf0, 0x7d, 0xeb, 0xc8, 0x05, 0x6b, 0xdf, 0x30, + 0x44, 0x4f, 0x21, 0x9c, 0x8f, 0x7c, 0x7f, 0x66, 0xff, 0x11, 0x65, 0x5b, 0x35, 0xa8, 0x15, 0xe4, + 0x40, 0x34, 0xff, 0x5e, 0xe9, 0xf5, 0x31, 0x90, 0xd8, 0x46, 0xf8, 0x04, 0x05, 0xf3, 0xe0, 0x80, + 0xf7, 0x05, 0xa2, 0x23, 0x95, 0xa9, 0x1f, 0xe4, 0xf8, 0xa9, 0x24, 0xcf, 0x69, 0xd2, 0x3a, 0xfa, + 0x3a, 0x49, 0x73, 0x88, 0x1b, 0xdd, 0xbc, 0x00, 0x99, 0x1e, 0x40, 0x40, 0x80, 0xcc, 0x0a, 0x1c, + 0x11, 0x25, 0x8e, 0x67, 0xc0, 0xf2, 0x85, 0x3d, 0xe5, 0xf3, 0x27, 0xfc, 0x35, 0x57, 0x84, 0x25, + 0x10, 0x80, 0x35, 0xba, 0x58, 0xcc, 0x26, 0x69, 0xff, 0xa2, 0x3d, 0xb0, 0x8f, 0x91, 0x9e, 0x12, + 0x37, 0x13, 0x5d, 0x9b, 0xfb, 0x0c, 0x53, 0xef, 0x6d, 0xd7, 0x4c, 0x33, 0x95, 0xee, 0xe4, 0xf7, + 0x14, 0x1f, 0x2c, 0xb0, 0xa7, 0x70, 0xd0, 0x84, 0xd9, 0x69, 0x09, 0x9f, 0xf0, 0xc0, 0xbe, 0x4b, + 0x4b, 0x9b, 0xfd, 0x6e, 0x33, 0xfa, 0x23, 0xeb, 0xd4, 0x24, 0xf8, 0x9c, 0xcd, 0x8c, 0x93, 0xdc, + 0x71, 0x4a, 0x28, 0x02, 0x53, 0x7d, 0x3a, 0xca, 0xb3, 0x3f, 0xdb, 0xa5, 0x75, 0xc4, 0x12, 0xec, + 0xaf, 0x1b, 0x31, 0x23, 0xa1, 0x67, 0xb4, 0xd8, 0x20, 0xfe, 0x83, 0x97, 0x63, 0xe4, 0x73, 0x4b, + 0x72, 0x08, 0x92, 0x72, 0x37, 0x6b, 0x38, 0xb7, 0xff, 0xf9, 0x88, 0x8c, 0x6c, 0x02, 0xa9, 0x17, + 0xe8, 0xfc, 0xb0, 0x45, 0x37, 0x38, 0x87, 0xce, 0x7e, 0x8c, 0x70, 0xa9, 0xca, 0x83, 0x12, 0x31, + 0x3e, 0x92, 0x72, 0x6a, 0x1a, 0x3d, 0x48, 0x36, 0xa1, 0x70, 0xdf, 0xb7, 0x9b, 0x2a, 0x9e, 0x2f, + 0x4a, 0x67, 0x8e, 0xf9, 0x82, 0x63, 0x10, 0x08, 0x36, 0x38, 0x54, 0x66, 0x77, 0x1b, 0xb8, 0x2c, + 0x45, 0x1f, 0x13, 0xc8, 0x16, 0xa4, 0x13, 0x9d, 0x8f, 0x62, 0x5d, 0xba, 0x61, 0x6e, 0xd6, 0xfb, + 0xd2, 0x26, 0x09, 0x11, 0x30, 0xb7, 0x59, 0x33, 0x29, 0x3f, 0x1c, 0x83, 0x88, 0x9b, 0x4f, 0xc6, + 0x83, 0x10, 0xbe, 0x74, 0xf9, 0x81, 0x4c, 0x3c, 0x92, 0xe7, 0x10, 0x22, 0x27, 0x0a, 0x98, 0x2b, + 0x4c, 0xb2, 0x4a, 0x1b, 0x7b, 0x0d, 0x0f, 0xa2, 0xf6, 0xe5, 0x40, 0x15, 0xa8, 0x85, 0xeb, 0xa5, + 0xe2, 0x15, 0x12, 0x47, 0x14, 0x96, 0xfb, 0x30, 0x61, 0x83, 0x69, 0x63, 0xb4, 0xf9, 0x46, 0x35, + 0x32, 0x20, 0xef, 0x3b, 0x8e, 0xaf, 0x1e, 0x91, 0x17, 0x30, 0xd4, 0xec, 0x56, 0xd0, 0x92, 0x34, + 0x40, 0xac, 0x55, 0x01, 0x1a, 0xb0, 0x40, 0xe1, 0xb1, 0x85, 0x10, 0xcf, 0x34, 0xb3, 0xe7, 0xd1, + 0x5d, 0x7e, 0xe9, 0x5a, 0x9a, 0x94, 0x6d, 0x5c, 0xf1, 0x5a, 0x9a, 0x6e, 0x54, 0xbe, 0xa7, 0xa2, + 0x2d, 0x37, 0x2a, 0x5f, 0x2a, 0xc9, 0x08, 0x38, 0x1c, 0xc1, 0x07, 0xeb, 0x36, 0x3f, 0xa3, 0x49, + 0x33, 0xe3, 0xa9, 0x1e, 0xfe, 0xc1, 0x3a, 0x0b, 0x08, 0x3a, 0x58, 0xf7, 0xe2, 0x98, 0x94, 0x84, + 0xdb, 0x10, 0x89, 0x76, 0x4d, 0x95, 0x30, 0x88, 0x42, 0x10, 0xff, 0x8b, 0xcd, 0xa6, 0x58, 0x2d, + 0x10, 0x0b, 0xf2, 0x58, 0xf4, 0xd1, 0x59, 0x08, 0x02, 0xcd, 0x28, 0x09, 0xf5, 0x24, 0xf1, 0x99, + 0xed, 0xf7, 0xae, 0x76, 0x1b, 0x60, 0x73, 0xc0, 0x47, 0x92, 0xdc, 0xf7, 0x2e, 0x2f, 0x24, 0xc8, + 0x88, 0xa2, 0x12, 0x49, 0xd4, 0xf8, 0x95, 0x94, 0x53, 0x0f, 0x49, 0x68, 0x2d, 0xb0, 0x6c, 0x69, + 0x8b, 0xb5, 0xb4, 0xf5, 0xaf, 0x8f, 0x01, 0x5b, 0xeb, 0xe8, 0xa1, 0xe9, 0x77, 0x46, 0x80, 0x1e, + 0x1d, 0x87, 0xf0, 0x75, 0x58, 0xe0, 0xfc, 0x3f, 0x91, 0x02, 0xa7, 0xf7, 0x76, 0x16, 0x35, 0xf5, + 0x64, 0xc1, 0x33, 0x32, 0x6a, 0x1d, 0x98, 0x2c, 0x5f, 0x1b, 0xb3, 0x86, 0x27, 0xa6, 0x5f, 0xd9, + 0x5b, 0xdd, 0x17, 0x33, 0x4a, 0x36, 0x46, 0x37, 0xcd, 0x52, 0xc9, 0x58, 0xc2, 0x26, 0x68, 0xcb, + 0xb8, 0x37, 0x22, 0xcf, 0x67, 0xcc, 0x52, 0x21, 0x0d, 0xe3, 0xe3, 0x3d, 0x71, 0xce, 0xec, 0xc7, + 0x85, 0x09, 0x67, 0x3f, 0x01, 0x9a, 0x71, 0xeb, 0x52, 0xd1, 0x7c, 0xc8, 0xc2, 0x59, 0x2c, 0x1c, + 0x9b, 0xbe, 0xb2, 0xb7, 0x78, 0xe5, 0x12, 0xac, 0x44, 0x94, 0x65, 0xce, 0x65, 0x9a, 0xa8, 0x03, + 0xbb, 0x18, 0x4e, 0x8f, 0xbc, 0x54, 0x3a, 0xfd, 0x36, 0x74, 0x2d, 0x66, 0xcd, 0xb2, 0x39, 0xfa, + 0xbf, 0x55, 0x9d, 0x15, 0x6b, 0x59, 0x03, 0x5e, 0xeb, 0xc8, 0x27, 0x9a, 0x82, 0x11, 0xb7, 0xa6, + 0x51, 0x27, 0x4c, 0x59, 0xa8, 0x0c, 0x5c, 0x58, 0x48, 0x98, 0x32, 0x91, 0x0c, 0xc7, 0xa5, 0x9c, + 0xba, 0x09, 0xb9, 0xd6, 0xb0, 0x1e, 0x19, 0xfe, 0xcb, 0x4d, 0x09, 0xc3, 0xf0, 0x9f, 0x7e, 0x65, + 0x2f, 0x8b, 0x82, 0x31, 0x46, 0x69, 0xb9, 0x31, 0x09, 0x62, 0x83, 0xf0, 0x81, 0xbc, 0xeb, 0xbe, + 0x14, 0x91, 0xe7, 0x33, 0xe6, 0x9d, 0x41, 0x6a, 0x70, 0x61, 0x42, 0x35, 0x04, 0x68, 0xa2, 0xc6, + 0x31, 0x50, 0x03, 0xf6, 0x98, 0x7c, 0x6a, 0x38, 0x97, 0xc3, 0xd4, 0x68, 0x6d, 0xb8, 0x79, 0x6a, + 0xd8, 0xc3, 0xed, 0x3c, 0x67, 0x0b, 0x9b, 0x11, 0x42, 0x7c, 0x50, 0xe3, 0x97, 0xe1, 0xfe, 0xaa, + 0xb0, 0x4c, 0x93, 0x78, 0x94, 0xd9, 0x14, 0xf0, 0x88, 0xb0, 0x54, 0x64, 0xc8, 0x58, 0x01, 0x04, + 0x1d, 0xd0, 0x4d, 0xd4, 0x61, 0x5c, 0x92, 0x6f, 0xdf, 0xa2, 0xc5, 0x7b, 0xcc, 0x2e, 0xf4, 0x1f, + 0x95, 0x74, 0xe0, 0xba, 0x70, 0xd3, 0x83, 0x16, 0xbb, 0xf9, 0x8f, 0xd6, 0xa1, 0x85, 0xa5, 0xd3, + 0x87, 0xec, 0x57, 0x8f, 0xdd, 0x13, 0x56, 0xe1, 0x32, 0x98, 0x14, 0x42, 0x38, 0x02, 0x45, 0x58, + 0x82, 0x39, 0xdd, 0x83, 0x16, 0x71, 0x38, 0x75, 0xe1, 0x5f, 0x68, 0x3c, 0x2a, 0xe5, 0xd4, 0x83, + 0x12, 0xaa, 0x97, 0x17, 0x10, 0xcb, 0xa2, 0xfa, 0x27, 0x01, 0x53, 0xaf, 0xb6, 0xb5, 0xd4, 0x37, + 0xe9, 0x89, 0xb5, 0xff, 0xba, 0x7a, 0xd5, 0x9a, 0x55, 0xab, 0xa3, 0x72, 0xac, 0x23, 0x61, 0xc4, + 0x33, 0xa9, 0x58, 0xff, 0xba, 0x06, 0x29, 0xb2, 0x76, 0x6e, 0x3c, 0x93, 0xe9, 0x49, 0x25, 0xf0, + 0xfe, 0x79, 0xec, 0x79, 0x43, 0x4f, 0x6f, 0xf4, 0x5d, 0xd9, 0xf9, 0x9f, 0xf2, 0x7d, 0xb2, 0xac, + 0x66, 0x52, 0xad, 0xda, 0x80, 0xda, 0x67, 0x76, 0xa1, 0x79, 0x77, 0x44, 0x94, 0x7f, 0xb3, 0x3f, + 0xe9, 0xd9, 0xd4, 0x0b, 0x18, 0x57, 0x1f, 0xe9, 0x98, 0x2b, 0xdf, 0xe9, 0x01, 0xfd, 0x4b, 0xc7, + 0xed, 0x99, 0xac, 0x6e, 0xea, 0x0f, 0xfc, 0x3d, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x15, 0xd9, 0xd5, + 0xf3, 0x87, 0x04, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go index 950a6039f5..d14635ee97 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go @@ -11,12 +11,11 @@ import ( "net/mail" "net/url" "regexp" - "sort" "strings" "time" "unicode/utf8" - "google.golang.org/protobuf/types/known/anypb" + "github.com/golang/protobuf/ptypes" ) // ensure the imports are used @@ -31,31 +30,19 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = anypb.Any{} - _ = sort.Sort + _ = ptypes.DynamicAny{} ) +// define the regex for a UUID once up-front +var _clustermanager_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") + // Validate checks the field values on Cluster 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Cluster) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Cluster 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 ClusterMultiError, or nil if none found. -func (m *Cluster) ValidateAll() error { - return m.validate(true) -} - -func (m *Cluster) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID // no validation rules for ClusterName @@ -88,168 +75,62 @@ func (m *Cluster) validate(all bool) error { // no validation rules for UpdateTime - { - sorted_keys := make([]string, len(m.GetBcsAddons())) - i := 0 - for key := range m.GetBcsAddons() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetBcsAddons()[key] - _ = val - - // no validation rules for BcsAddons[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ClusterValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + for key, val := range m.GetBcsAddons() { + _ = val + + // no validation rules for BcsAddons[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ClusterValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } - { - sorted_keys := make([]string, len(m.GetExtraAddons())) - i := 0 - for key := range m.GetExtraAddons() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetExtraAddons()[key] - _ = val - - // no validation rules for ExtraAddons[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ClusterValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + for key, val := range m.GetExtraAddons() { + _ = val + + // no validation rules for ExtraAddons[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ClusterValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } // no validation rules for SystemID // no validation rules for ManageType - { - sorted_keys := make([]string, len(m.GetMaster())) - i := 0 - for key := range m.GetMaster() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetMaster()[key] - _ = val - - // no validation rules for Master[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterValidationError{ - field: fmt.Sprintf("Master[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterValidationError{ - field: fmt.Sprintf("Master[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ClusterValidationError{ - field: fmt.Sprintf("Master[%v]", key), - reason: "embedded message failed validation", - cause: err, - } - } - } + for key, val := range m.GetMaster() { + _ = val - } - } + // no validation rules for Master[key] - if all { - switch v := interface{}(m.GetNetworkSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterValidationError{ - field: "NetworkSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: + if v, ok := interface{}(val).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - errors = append(errors, ClusterValidationError{ - field: "NetworkSettings", + return ClusterValidationError{ + field: fmt.Sprintf("Master[%v]", key), reason: "embedded message failed validation", cause: err, - }) + } } } - } else if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { + + } + + if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "NetworkSettings", @@ -259,26 +140,7 @@ func (m *Cluster) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetClusterBasicSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterValidationError{ - field: "ClusterBasicSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterValidationError{ - field: "ClusterBasicSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "ClusterBasicSettings", @@ -288,26 +150,7 @@ func (m *Cluster) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterValidationError{ - field: "ClusterAdvanceSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterValidationError{ - field: "ClusterAdvanceSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "ClusterAdvanceSettings", @@ -317,26 +160,7 @@ func (m *Cluster) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetNodeSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterValidationError{ - field: "NodeSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterValidationError{ - field: "NodeSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "NodeSettings", @@ -347,27 +171,19 @@ func (m *Cluster) validate(all bool) error { } if _, ok := _Cluster_Status_InLookup[m.GetStatus()]; !ok { - err := ClusterValidationError{ + return ClusterValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FALURE INITIALIZATION]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Updater if _, ok := _Cluster_NetworkType_InLookup[m.GetNetworkType()]; !ok { - err := ClusterValidationError{ + return ClusterValidationError{ field: "NetworkType", reason: "value must be in list [underlay overlay ]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AutoGenerateMasterNodes @@ -375,26 +191,7 @@ func (m *Cluster) validate(all bool) error { for idx, item := range m.GetTemplate() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterValidationError{ - field: fmt.Sprintf("Template[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterValidationError{ - field: fmt.Sprintf("Template[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: fmt.Sprintf("Template[%v]", idx), @@ -430,29 +227,11 @@ func (m *Cluster) validate(all bool) error { // no validation rules for IsMixed - if len(errors) > 0 { - return ClusterMultiError(errors) - } + // no validation rules for ClusterIamRole return nil } -// ClusterMultiError is an error wrapping multiple validation errors returned -// by Cluster.ValidateAll() if the designated constraints aren't met. -type ClusterMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterMultiError) AllErrors() []error { return m } - // ClusterValidationError is the validation error returned by Cluster.Validate // if the designated constraints aren't met. type ClusterValidationError struct { @@ -522,26 +301,12 @@ var _Cluster_NetworkType_InLookup = map[string]struct{}{ } // Validate checks the field values on Node 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. +// definition for this message. If any rules are violated, an error is returned. func (m *Node) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Node 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 NodeMultiError, or nil if none found. -func (m *Node) ValidateAll() error { - return m.validate(true) -} - -func (m *Node) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeID // no validation rules for InnerIP @@ -588,29 +353,9 @@ func (m *Node) validate(all bool) error { // no validation rules for ChargeType - if len(errors) > 0 { - return NodeMultiError(errors) - } - return nil } -// NodeMultiError is an error wrapping multiple validation errors returned by -// Node.ValidateAll() if the designated constraints aren't met. -type NodeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeMultiError) AllErrors() []error { return m } - // NodeValidationError is the validation error returned by Node.Validate if the // designated constraints aren't met. type NodeValidationError struct { @@ -666,27 +411,13 @@ var _ interface { } = NodeValidationError{} // Validate checks the field values on NetworkSetting 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NetworkSetting) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NetworkSetting 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 NetworkSettingMultiError, -// or nil if none found. -func (m *NetworkSetting) ValidateAll() error { - return m.validate(true) -} - -func (m *NetworkSetting) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterIPv4CIDR // no validation rules for ServiceIPv4CIDR @@ -697,26 +428,7 @@ func (m *NetworkSetting) validate(all bool) error { // no validation rules for EnableVPCCni - if all { - switch v := interface{}(m.GetSubnetSource()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NetworkSettingValidationError{ - field: "SubnetSource", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NetworkSettingValidationError{ - field: "SubnetSource", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSubnetSource()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetSubnetSource()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NetworkSettingValidationError{ field: "SubnetSource", @@ -742,30 +454,9 @@ func (m *NetworkSetting) validate(all bool) error { // no validation rules for NetworkMode - if len(errors) > 0 { - return NetworkSettingMultiError(errors) - } - return nil } -// NetworkSettingMultiError is an error wrapping multiple validation errors -// returned by NetworkSetting.ValidateAll() if the designated constraints -// aren't met. -type NetworkSettingMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NetworkSettingMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NetworkSettingMultiError) AllErrors() []error { return m } - // NetworkSettingValidationError is the validation error returned by // NetworkSetting.Validate if the designated constraints aren't met. type NetworkSettingValidationError struct { @@ -821,50 +512,17 @@ var _ interface { } = NetworkSettingValidationError{} // Validate checks the field values on SubnetSource 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *SubnetSource) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SubnetSource 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 SubnetSourceMultiError, or -// nil if none found. -func (m *SubnetSource) ValidateAll() error { - return m.validate(true) -} - -func (m *SubnetSource) validate(all bool) error { if m == nil { return nil } - var errors []error - for idx, item := range m.GetNew() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SubnetSourceValidationError{ - field: fmt.Sprintf("New[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SubnetSourceValidationError{ - field: fmt.Sprintf("New[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SubnetSourceValidationError{ field: fmt.Sprintf("New[%v]", idx), @@ -876,26 +534,7 @@ func (m *SubnetSource) validate(all bool) error { } - if all { - switch v := interface{}(m.GetExisted()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SubnetSourceValidationError{ - field: "Existed", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SubnetSourceValidationError{ - field: "Existed", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetExisted()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetExisted()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SubnetSourceValidationError{ field: "Existed", @@ -905,29 +544,9 @@ func (m *SubnetSource) validate(all bool) error { } } - if len(errors) > 0 { - return SubnetSourceMultiError(errors) - } - return nil } -// SubnetSourceMultiError is an error wrapping multiple validation errors -// returned by SubnetSource.ValidateAll() if the designated constraints aren't met. -type SubnetSourceMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SubnetSourceMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SubnetSourceMultiError) AllErrors() []error { return m } - // SubnetSourceValidationError is the validation error returned by // SubnetSource.Validate if the designated constraints aren't met. type SubnetSourceValidationError struct { @@ -983,51 +602,16 @@ var _ interface { } = SubnetSourceValidationError{} // Validate checks the field values on ExistedSubnetIDs 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ExistedSubnetIDs) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ExistedSubnetIDs 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 -// ExistedSubnetIDsMultiError, or nil if none found. -func (m *ExistedSubnetIDs) ValidateAll() error { - return m.validate(true) -} - -func (m *ExistedSubnetIDs) validate(all bool) error { if m == nil { return nil } - var errors []error - - if len(errors) > 0 { - return ExistedSubnetIDsMultiError(errors) - } - return nil } -// ExistedSubnetIDsMultiError is an error wrapping multiple validation errors -// returned by ExistedSubnetIDs.ValidateAll() if the designated constraints -// aren't met. -type ExistedSubnetIDsMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ExistedSubnetIDsMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ExistedSubnetIDsMultiError) AllErrors() []error { return m } - // ExistedSubnetIDsValidationError is the validation error returned by // ExistedSubnetIDs.Validate if the designated constraints aren't met. type ExistedSubnetIDsValidationError struct { @@ -1083,56 +667,21 @@ var _ interface { } = ExistedSubnetIDsValidationError{} // Validate checks the field values on NewSubnet 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NewSubnet) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NewSubnet 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 NewSubnetMultiError, or nil -// if none found. -func (m *NewSubnet) ValidateAll() error { - return m.validate(true) -} - -func (m *NewSubnet) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Mask // no validation rules for Zone // no validation rules for IpCnt - if len(errors) > 0 { - return NewSubnetMultiError(errors) - } - return nil } -// NewSubnetMultiError is an error wrapping multiple validation errors returned -// by NewSubnet.ValidateAll() if the designated constraints aren't met. -type NewSubnetMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NewSubnetMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NewSubnetMultiError) AllErrors() []error { return m } - // NewSubnetValidationError is the validation error returned by // NewSubnet.Validate if the designated constraints aren't met. type NewSubnetValidationError struct { @@ -1189,26 +738,12 @@ var _ interface { // Validate checks the field values on ClusterBasicSetting 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. +// violated, an error is returned. func (m *ClusterBasicSetting) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterBasicSetting 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 -// ClusterBasicSettingMultiError, or nil if none found. -func (m *ClusterBasicSetting) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterBasicSetting) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for OS // no validation rules for Version @@ -1223,26 +758,7 @@ func (m *ClusterBasicSetting) validate(all bool) error { // no validation rules for IsAutoUpgradeClusterLevel - if all { - switch v := interface{}(m.GetArea()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterBasicSettingValidationError{ - field: "Area", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterBasicSettingValidationError{ - field: "Area", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterBasicSettingValidationError{ field: "Area", @@ -1252,26 +768,7 @@ func (m *ClusterBasicSetting) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetModule()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterBasicSettingValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterBasicSettingValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterBasicSettingValidationError{ field: "Module", @@ -1281,30 +778,9 @@ func (m *ClusterBasicSetting) validate(all bool) error { } } - if len(errors) > 0 { - return ClusterBasicSettingMultiError(errors) - } - return nil } -// ClusterBasicSettingMultiError is an error wrapping multiple validation -// errors returned by ClusterBasicSetting.ValidateAll() if the designated -// constraints aren't met. -type ClusterBasicSettingMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterBasicSettingMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterBasicSettingMultiError) AllErrors() []error { return m } - // ClusterBasicSettingValidationError is the validation error returned by // ClusterBasicSetting.Validate if the designated constraints aren't met. type ClusterBasicSettingValidationError struct { @@ -1363,26 +839,12 @@ var _ interface { // Validate checks the field values on ClusterAdvanceSetting 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. +// violated, an error is returned. func (m *ClusterAdvanceSetting) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterAdvanceSetting 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 -// ClusterAdvanceSettingMultiError, or nil if none found. -func (m *ClusterAdvanceSetting) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterAdvanceSetting) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for IPVS // no validation rules for ContainerRuntime @@ -1399,26 +861,7 @@ func (m *ClusterAdvanceSetting) validate(all bool) error { // no validation rules for EnableHa - if all { - switch v := interface{}(m.GetClusterConnectSetting()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterAdvanceSettingValidationError{ - field: "ClusterConnectSetting", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterAdvanceSettingValidationError{ - field: "ClusterConnectSetting", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterConnectSetting()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterConnectSetting()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterAdvanceSettingValidationError{ field: "ClusterConnectSetting", @@ -1428,30 +871,9 @@ func (m *ClusterAdvanceSetting) validate(all bool) error { } } - if len(errors) > 0 { - return ClusterAdvanceSettingMultiError(errors) - } - return nil } -// ClusterAdvanceSettingMultiError is an error wrapping multiple validation -// errors returned by ClusterAdvanceSetting.ValidateAll() if the designated -// constraints aren't met. -type ClusterAdvanceSettingMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterAdvanceSettingMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterAdvanceSettingMultiError) AllErrors() []error { return m } - // ClusterAdvanceSettingValidationError is the validation error returned by // ClusterAdvanceSetting.Validate if the designated constraints aren't met. type ClusterAdvanceSettingValidationError struct { @@ -1510,26 +932,12 @@ var _ interface { // Validate checks the field values on ClusterConnectSetting 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. +// violated, an error is returned. func (m *ClusterConnectSetting) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterConnectSetting 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 -// ClusterConnectSettingMultiError, or nil if none found. -func (m *ClusterConnectSetting) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterConnectSetting) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for IsExtranet // no validation rules for SubnetId @@ -1538,26 +946,7 @@ func (m *ClusterConnectSetting) validate(all bool) error { // no validation rules for SecurityGroup - if all { - switch v := interface{}(m.GetInternet()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterConnectSettingValidationError{ - field: "Internet", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterConnectSettingValidationError{ - field: "Internet", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetInternet()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetInternet()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterConnectSettingValidationError{ field: "Internet", @@ -1567,30 +956,9 @@ func (m *ClusterConnectSetting) validate(all bool) error { } } - if len(errors) > 0 { - return ClusterConnectSettingMultiError(errors) - } - return nil } -// ClusterConnectSettingMultiError is an error wrapping multiple validation -// errors returned by ClusterConnectSetting.ValidateAll() if the designated -// constraints aren't met. -type ClusterConnectSettingMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterConnectSettingMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterConnectSettingMultiError) AllErrors() []error { return m } - // ClusterConnectSettingValidationError is the validation error returned by // ClusterConnectSetting.Validate if the designated constraints aren't met. type ClusterConnectSettingValidationError struct { @@ -1648,27 +1016,13 @@ var _ interface { } = ClusterConnectSettingValidationError{} // Validate checks the field values on NodeSetting 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NodeSetting) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeSetting 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 NodeSettingMultiError, or -// nil if none found. -func (m *NodeSetting) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeSetting) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for DockerGraphPath // no validation rules for MountTarget @@ -1682,26 +1036,7 @@ func (m *NodeSetting) validate(all bool) error { for idx, item := range m.GetTaints() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeSettingValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeSettingValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeSettingValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -1713,26 +1048,7 @@ func (m *NodeSetting) validate(all bool) error { } - if all { - switch v := interface{}(m.GetMasterLogin()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeSettingValidationError{ - field: "MasterLogin", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeSettingValidationError{ - field: "MasterLogin", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetMasterLogin()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetMasterLogin()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeSettingValidationError{ field: "MasterLogin", @@ -1742,26 +1058,7 @@ func (m *NodeSetting) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWorkerLogin()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeSettingValidationError{ - field: "WorkerLogin", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeSettingValidationError{ - field: "WorkerLogin", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWorkerLogin()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWorkerLogin()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeSettingValidationError{ field: "WorkerLogin", @@ -1771,29 +1068,9 @@ func (m *NodeSetting) validate(all bool) error { } } - if len(errors) > 0 { - return NodeSettingMultiError(errors) - } - return nil } -// NodeSettingMultiError is an error wrapping multiple validation errors -// returned by NodeSetting.ValidateAll() if the designated constraints aren't met. -type NodeSettingMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeSettingMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeSettingMultiError) AllErrors() []error { return m } - // NodeSettingValidationError is the validation error returned by // NodeSetting.Validate if the designated constraints aren't met. type NodeSettingValidationError struct { @@ -1849,51 +1126,18 @@ var _ interface { } = NodeSettingValidationError{} // Validate checks the field values on NodeLoginInfo 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NodeLoginInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeLoginInfo 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 NodeLoginInfoMultiError, or -// nil if none found. -func (m *NodeLoginInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeLoginInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for InitLoginUsername // no validation rules for InitLoginPassword - if all { - switch v := interface{}(m.GetKeyPair()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeLoginInfoValidationError{ - field: "KeyPair", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeLoginInfoValidationError{ - field: "KeyPair", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeLoginInfoValidationError{ field: "KeyPair", @@ -1903,30 +1147,9 @@ func (m *NodeLoginInfo) validate(all bool) error { } } - if len(errors) > 0 { - return NodeLoginInfoMultiError(errors) - } - return nil } -// NodeLoginInfoMultiError is an error wrapping multiple validation errors -// returned by NodeLoginInfo.ValidateAll() if the designated constraints -// aren't met. -type NodeLoginInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeLoginInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeLoginInfoMultiError) AllErrors() []error { return m } - // NodeLoginInfoValidationError is the validation error returned by // NodeLoginInfo.Validate if the designated constraints aren't met. type NodeLoginInfoValidationError struct { @@ -1982,27 +1205,13 @@ var _ interface { } = NodeLoginInfoValidationError{} // Validate checks the field values on ClusterCredential 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ClusterCredential) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterCredential 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 -// ClusterCredentialMultiError, or nil if none found. -func (m *ClusterCredential) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterCredential) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ServerKey // no validation rules for ClusterID @@ -2027,30 +1236,9 @@ func (m *ClusterCredential) validate(all bool) error { // no validation rules for ClientKey - if len(errors) > 0 { - return ClusterCredentialMultiError(errors) - } - return nil } -// ClusterCredentialMultiError is an error wrapping multiple validation errors -// returned by ClusterCredential.ValidateAll() if the designated constraints -// aren't met. -type ClusterCredentialMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterCredentialMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterCredentialMultiError) AllErrors() []error { return m } - // ClusterCredentialValidationError is the validation error returned by // ClusterCredential.Validate if the designated constraints aren't met. type ClusterCredentialValidationError struct { @@ -2108,27 +1296,12 @@ var _ interface { } = ClusterCredentialValidationError{} // Validate checks the field values on Namespace 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Namespace) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Namespace 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 NamespaceMultiError, or nil -// if none found. -func (m *Namespace) ValidateAll() error { - return m.validate(true) -} - -func (m *Namespace) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Name // no validation rules for FederationClusterID @@ -2148,26 +1321,7 @@ func (m *Namespace) validate(all bool) error { for idx, item := range m.GetQuotaList() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NamespaceValidationError{ - field: fmt.Sprintf("QuotaList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NamespaceValidationError{ - field: fmt.Sprintf("QuotaList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NamespaceValidationError{ field: fmt.Sprintf("QuotaList[%v]", idx), @@ -2179,29 +1333,9 @@ func (m *Namespace) validate(all bool) error { } - if len(errors) > 0 { - return NamespaceMultiError(errors) - } - return nil } -// NamespaceMultiError is an error wrapping multiple validation errors returned -// by Namespace.ValidateAll() if the designated constraints aren't met. -type NamespaceMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NamespaceMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NamespaceMultiError) AllErrors() []error { return m } - // NamespaceValidationError is the validation error returned by // Namespace.Validate if the designated constraints aren't met. type NamespaceValidationError struct { @@ -2257,27 +1391,13 @@ var _ interface { } = NamespaceValidationError{} // Validate checks the field values on ResourceQuota 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *ResourceQuota) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ResourceQuota 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 ResourceQuotaMultiError, or -// nil if none found. -func (m *ResourceQuota) ValidateAll() error { - return m.validate(true) -} - -func (m *ResourceQuota) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Namespace // no validation rules for FederationClusterID @@ -2296,30 +1416,9 @@ func (m *ResourceQuota) validate(all bool) error { // no validation rules for Message - if len(errors) > 0 { - return ResourceQuotaMultiError(errors) - } - return nil } -// ResourceQuotaMultiError is an error wrapping multiple validation errors -// returned by ResourceQuota.ValidateAll() if the designated constraints -// aren't met. -type ResourceQuotaMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ResourceQuotaMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ResourceQuotaMultiError) AllErrors() []error { return m } - // ResourceQuotaValidationError is the validation error returned by // ResourceQuota.Validate if the designated constraints aren't met. type ResourceQuotaValidationError struct { @@ -2375,27 +1474,12 @@ var _ interface { } = ResourceQuotaValidationError{} // Validate checks the field values on Credential 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Credential) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Credential 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 CredentialMultiError, or -// nil if none found. -func (m *Credential) ValidateAll() error { - return m.validate(true) -} - -func (m *Credential) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Key // no validation rules for Secret @@ -2414,29 +1498,9 @@ func (m *Credential) validate(all bool) error { // no validation rules for GkeProjectID - if len(errors) > 0 { - return CredentialMultiError(errors) - } - return nil } -// CredentialMultiError is an error wrapping multiple validation errors -// returned by Credential.ValidateAll() if the designated constraints aren't met. -type CredentialMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CredentialMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CredentialMultiError) AllErrors() []error { return m } - // CredentialValidationError is the validation error returned by // Credential.Validate if the designated constraints aren't met. type CredentialValidationError struct { @@ -2492,27 +1556,13 @@ var _ interface { } = CredentialValidationError{} // Validate checks the field values on BKOpsPlugin 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *BKOpsPlugin) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on BKOpsPlugin 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 BKOpsPluginMultiError, or -// nil if none found. -func (m *BKOpsPlugin) ValidateAll() error { - return m.validate(true) -} - -func (m *BKOpsPlugin) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for System // no validation rules for Link @@ -2521,29 +1571,9 @@ func (m *BKOpsPlugin) validate(all bool) error { // no validation rules for AllowSkipWhenFailed - if len(errors) > 0 { - return BKOpsPluginMultiError(errors) - } - return nil } -// BKOpsPluginMultiError is an error wrapping multiple validation errors -// returned by BKOpsPlugin.ValidateAll() if the designated constraints aren't met. -type BKOpsPluginMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m BKOpsPluginMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m BKOpsPluginMultiError) AllErrors() []error { return m } - // BKOpsPluginValidationError is the validation error returned by // BKOpsPlugin.Validate if the designated constraints aren't met. type BKOpsPluginValidationError struct { @@ -2599,95 +1629,32 @@ var _ interface { } = BKOpsPluginValidationError{} // Validate checks the field values on Action 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Action) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Action 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 ActionMultiError, or nil if none found. -func (m *Action) ValidateAll() error { - return m.validate(true) -} - -func (m *Action) validate(all bool) error { if m == nil { return nil } - var errors []error + for key, val := range m.GetPlugins() { + _ = val - { - sorted_keys := make([]string, len(m.GetPlugins())) - i := 0 - for key := range m.GetPlugins() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetPlugins()[key] - _ = val - - // no validation rules for Plugins[key] + // no validation rules for Plugins[key] - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ActionValidationError{ - field: fmt.Sprintf("Plugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ActionValidationError{ - field: fmt.Sprintf("Plugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ActionValidationError{ - field: fmt.Sprintf("Plugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ActionValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } - } - if len(errors) > 0 { - return ActionMultiError(errors) } return nil } -// ActionMultiError is an error wrapping multiple validation errors returned by -// Action.ValidateAll() if the designated constraints aren't met. -type ActionMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ActionMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ActionMultiError) AllErrors() []error { return m } - // ActionValidationError is the validation error returned by Action.Validate if // the designated constraints aren't met. type ActionValidationError struct { @@ -2743,47 +1710,13 @@ var _ interface { } = ActionValidationError{} // Validate checks the field values on ClusterMgr 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *ClusterMgr) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterMgr 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 ClusterMgrMultiError, or -// nil if none found. -func (m *ClusterMgr) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterMgr) validate(all bool) error { if m == nil { return nil } - var errors []error - - if all { - switch v := interface{}(m.GetCreateCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "CreateCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "CreateCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "CreateCluster", @@ -2793,26 +1726,7 @@ func (m *ClusterMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetDeleteCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "DeleteCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "DeleteCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "DeleteCluster", @@ -2822,26 +1736,7 @@ func (m *ClusterMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetAddNodesToCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "AddNodesToCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "AddNodesToCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAddNodesToCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAddNodesToCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "AddNodesToCluster", @@ -2851,26 +1746,7 @@ func (m *ClusterMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetDeleteNodesFromCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "DeleteNodesFromCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "DeleteNodesFromCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDeleteNodesFromCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetDeleteNodesFromCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "DeleteNodesFromCluster", @@ -2880,26 +1756,7 @@ func (m *ClusterMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetImportCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "ImportCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "ImportCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetImportCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetImportCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "ImportCluster", @@ -2909,26 +1766,7 @@ func (m *ClusterMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCommonMixedAction()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "CommonMixedAction", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "CommonMixedAction", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCommonMixedAction()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCommonMixedAction()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "CommonMixedAction", @@ -2938,26 +1776,7 @@ func (m *ClusterMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCheckExternalNodeEmptyAction()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "CheckExternalNodeEmptyAction", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: "CheckExternalNodeEmptyAction", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCheckExternalNodeEmptyAction()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCheckExternalNodeEmptyAction()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "CheckExternalNodeEmptyAction", @@ -2970,26 +1789,7 @@ func (m *ClusterMgr) validate(all bool) error { for idx, item := range m.GetManagedConfig() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: fmt.Sprintf("ManagedConfig[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterMgrValidationError{ - field: fmt.Sprintf("ManagedConfig[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: fmt.Sprintf("ManagedConfig[%v]", idx), @@ -3001,29 +1801,9 @@ func (m *ClusterMgr) validate(all bool) error { } - if len(errors) > 0 { - return ClusterMgrMultiError(errors) - } - return nil } -// ClusterMgrMultiError is an error wrapping multiple validation errors -// returned by ClusterMgr.ValidateAll() if the designated constraints aren't met. -type ClusterMgrMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterMgrMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterMgrMultiError) AllErrors() []error { return m } - // ClusterMgrValidationError is the validation error returned by // ClusterMgr.Validate if the designated constraints aren't met. type ClusterMgrValidationError struct { @@ -3079,55 +1859,20 @@ var _ interface { } = ClusterMgrValidationError{} // Validate checks the field values on ManagedConfig 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *ManagedConfig) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ManagedConfig 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 ManagedConfigMultiError, or -// nil if none found. -func (m *ManagedConfig) ValidateAll() error { - return m.validate(true) -} - -func (m *ManagedConfig) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Spec // no validation rules for Desc - if len(errors) > 0 { - return ManagedConfigMultiError(errors) - } - return nil } -// ManagedConfigMultiError is an error wrapping multiple validation errors -// returned by ManagedConfig.ValidateAll() if the designated constraints -// aren't met. -type ManagedConfigMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ManagedConfigMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ManagedConfigMultiError) AllErrors() []error { return m } - // ManagedConfigValidationError is the validation error returned by // ManagedConfig.Validate if the designated constraints aren't met. type ManagedConfigValidationError struct { @@ -3183,47 +1928,14 @@ var _ interface { } = ManagedConfigValidationError{} // Validate checks the field values on NodeGroupMgr 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NodeGroupMgr) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeGroupMgr 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 NodeGroupMgrMultiError, or -// nil if none found. -func (m *NodeGroupMgr) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeGroupMgr) validate(all bool) error { if m == nil { return nil } - var errors []error - - if all { - switch v := interface{}(m.GetCreateNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "CreateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "CreateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "CreateNodeGroup", @@ -3233,26 +1945,7 @@ func (m *NodeGroupMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetDeleteNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "DeleteNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "DeleteNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "DeleteNodeGroup", @@ -3262,26 +1955,7 @@ func (m *NodeGroupMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetMoveNodesToGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "MoveNodesToGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "MoveNodesToGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetMoveNodesToGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetMoveNodesToGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "MoveNodesToGroup", @@ -3291,26 +1965,7 @@ func (m *NodeGroupMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetRemoveNodesFromGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "RemoveNodesFromGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "RemoveNodesFromGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRemoveNodesFromGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetRemoveNodesFromGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "RemoveNodesFromGroup", @@ -3320,26 +1975,7 @@ func (m *NodeGroupMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCleanNodesInGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "CleanNodesInGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "CleanNodesInGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCleanNodesInGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCleanNodesInGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "CleanNodesInGroup", @@ -3349,26 +1985,7 @@ func (m *NodeGroupMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetUpdateDesiredNodes()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "UpdateDesiredNodes", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "UpdateDesiredNodes", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUpdateDesiredNodes()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetUpdateDesiredNodes()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "UpdateDesiredNodes", @@ -3378,26 +1995,7 @@ func (m *NodeGroupMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetAddExternalNodesToCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "AddExternalNodesToCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "AddExternalNodesToCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAddExternalNodesToCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAddExternalNodesToCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "AddExternalNodesToCluster", @@ -3407,26 +2005,7 @@ func (m *NodeGroupMgr) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetDeleteExternalNodesFromCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "DeleteExternalNodesFromCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupMgrValidationError{ - field: "DeleteExternalNodesFromCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDeleteExternalNodesFromCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetDeleteExternalNodesFromCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "DeleteExternalNodesFromCluster", @@ -3436,29 +2015,9 @@ func (m *NodeGroupMgr) validate(all bool) error { } } - if len(errors) > 0 { - return NodeGroupMgrMultiError(errors) - } - return nil } -// NodeGroupMgrMultiError is an error wrapping multiple validation errors -// returned by NodeGroupMgr.ValidateAll() if the designated constraints aren't met. -type NodeGroupMgrMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeGroupMgrMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeGroupMgrMultiError) AllErrors() []error { return m } - // NodeGroupMgrValidationError is the validation error returned by // NodeGroupMgr.Validate if the designated constraints aren't met. type NodeGroupMgrValidationError struct { @@ -3514,51 +2073,17 @@ var _ interface { } = NodeGroupMgrValidationError{} // Validate checks the field values on OSInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *OSInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on OSInfo 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 OSInfoMultiError, or nil if none found. -func (m *OSInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *OSInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Regions - if len(errors) > 0 { - return OSInfoMultiError(errors) - } - return nil } -// OSInfoMultiError is an error wrapping multiple validation errors returned by -// OSInfo.ValidateAll() if the designated constraints aren't met. -type OSInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m OSInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m OSInfoMultiError) AllErrors() []error { return m } - // OSInfoValidationError is the validation error returned by OSInfo.Validate if // the designated constraints aren't met. type OSInfoValidationError struct { @@ -3614,26 +2139,12 @@ var _ interface { } = OSInfoValidationError{} // Validate checks the field values on Account 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Account) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Account 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 AccountMultiError, or nil if none found. -func (m *Account) ValidateAll() error { - return m.validate(true) -} - -func (m *Account) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for SecretID // no validation rules for SecretKey @@ -3652,29 +2163,9 @@ func (m *Account) validate(all bool) error { // no validation rules for GkeProjectID - if len(errors) > 0 { - return AccountMultiError(errors) - } - return nil } -// AccountMultiError is an error wrapping multiple validation errors returned -// by Account.ValidateAll() if the designated constraints aren't met. -type AccountMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AccountMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AccountMultiError) AllErrors() []error { return m } - // AccountValidationError is the validation error returned by Account.Validate // if the designated constraints aren't met. type AccountValidationError struct { @@ -3730,27 +2221,13 @@ var _ interface { } = AccountValidationError{} // Validate checks the field values on CloudAccount 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *CloudAccount) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudAccount 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 CloudAccountMultiError, or -// nil if none found. -func (m *CloudAccount) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudAccount) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for ProjectID @@ -3761,26 +2238,7 @@ func (m *CloudAccount) validate(all bool) error { // no validation rules for Desc - if all { - switch v := interface{}(m.GetAccount()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudAccountValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudAccountValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudAccountValidationError{ field: "Account", @@ -3800,29 +2258,9 @@ func (m *CloudAccount) validate(all bool) error { // no validation rules for UpdateTime - if len(errors) > 0 { - return CloudAccountMultiError(errors) - } - return nil } -// CloudAccountMultiError is an error wrapping multiple validation errors -// returned by CloudAccount.ValidateAll() if the designated constraints aren't met. -type CloudAccountMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudAccountMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudAccountMultiError) AllErrors() []error { return m } - // CloudAccountValidationError is the validation error returned by // CloudAccount.Validate if the designated constraints aren't met. type CloudAccountValidationError struct { @@ -3879,81 +2317,36 @@ var _ interface { // Validate checks the field values on CreateCloudAccountRequest 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. +// violated, an error is returned. func (m *CreateCloudAccountRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateCloudAccountRequest 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 -// CreateCloudAccountRequestMultiError, or nil if none found. -func (m *CreateCloudAccountRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateCloudAccountRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - err := CreateCloudAccountRequestValidationError{ + return CreateCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := CreateCloudAccountRequestValidationError{ + return CreateCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountName()) < 1 { - err := CreateCloudAccountRequestValidationError{ + return CreateCloudAccountRequestValidationError{ field: "AccountName", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Desc - if all { - switch v := interface{}(m.GetAccount()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudAccountRequestValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudAccountRequestValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudAccountRequestValidationError{ field: "Account", @@ -3963,26 +2356,7 @@ func (m *CreateCloudAccountRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetEnable()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudAccountRequestValidationError{ - field: "Enable", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudAccountRequestValidationError{ - field: "Enable", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudAccountRequestValidationError{ field: "Enable", @@ -3993,51 +2367,22 @@ func (m *CreateCloudAccountRequest) validate(all bool) error { } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 1024 { - err := CreateCloudAccountRequestValidationError{ + return CreateCloudAccountRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) < 2 { - err := CreateCloudAccountRequestValidationError{ + return CreateCloudAccountRequestValidationError{ field: "ProjectID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return CreateCloudAccountRequestMultiError(errors) } return nil } -// CreateCloudAccountRequestMultiError is an error wrapping multiple validation -// errors returned by CreateCloudAccountRequest.ValidateAll() if the -// designated constraints aren't met. -type CreateCloudAccountRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateCloudAccountRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateCloudAccountRequestMultiError) AllErrors() []error { return m } - // CreateCloudAccountRequestValidationError is the validation error returned by // CreateCloudAccountRequest.Validate if the designated constraints aren't met. type CreateCloudAccountRequestValidationError struct { @@ -4098,52 +2443,19 @@ var _CreateCloudAccountRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on CreateCloudAccountResponse 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. +// violated, an error is returned. func (m *CreateCloudAccountResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateCloudAccountResponse 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 -// CreateCloudAccountResponseMultiError, or nil if none found. -func (m *CreateCloudAccountResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateCloudAccountResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudAccountResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudAccountResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudAccountResponseValidationError{ field: "Data", @@ -4153,30 +2465,9 @@ func (m *CreateCloudAccountResponse) validate(all bool) error { } } - if len(errors) > 0 { - return CreateCloudAccountResponseMultiError(errors) - } - return nil } -// CreateCloudAccountResponseMultiError is an error wrapping multiple -// validation errors returned by CreateCloudAccountResponse.ValidateAll() if -// the designated constraints aren't met. -type CreateCloudAccountResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateCloudAccountResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateCloudAccountResponseMultiError) AllErrors() []error { return m } - // CreateCloudAccountResponseValidationError is the validation error returned // by CreateCloudAccountResponse.Validate if the designated constraints aren't met. type CreateCloudAccountResponseValidationError struct { @@ -4235,94 +2526,45 @@ var _ interface { // Validate checks the field values on UpdateCloudAccountRequest 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. +// violated, an error is returned. func (m *UpdateCloudAccountRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateCloudAccountRequest 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 -// UpdateCloudAccountRequestMultiError, or nil if none found. -func (m *UpdateCloudAccountRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateCloudAccountRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - err := UpdateCloudAccountRequestValidationError{ + return UpdateCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := UpdateCloudAccountRequestValidationError{ + return UpdateCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetAccountID()); l < 2 || l > 1024 { - err := UpdateCloudAccountRequestValidationError{ + return UpdateCloudAccountRequestValidationError{ field: "AccountID", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateCloudAccountRequest_AccountID_Pattern.MatchString(m.GetAccountID()) { - err := UpdateCloudAccountRequestValidationError{ + return UpdateCloudAccountRequestValidationError{ field: "AccountID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AccountName // no validation rules for Desc - if all { - switch v := interface{}(m.GetEnable()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudAccountRequestValidationError{ - field: "Enable", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudAccountRequestValidationError{ - field: "Enable", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudAccountRequestValidationError{ field: "Enable", @@ -4335,36 +2577,13 @@ func (m *UpdateCloudAccountRequest) validate(all bool) error { // no validation rules for ProjectID if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - err := UpdateCloudAccountRequestValidationError{ + return UpdateCloudAccountRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetAccount()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudAccountRequestValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudAccountRequestValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudAccountRequestValidationError{ field: "Account", @@ -4374,30 +2593,9 @@ func (m *UpdateCloudAccountRequest) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateCloudAccountRequestMultiError(errors) - } - return nil } -// UpdateCloudAccountRequestMultiError is an error wrapping multiple validation -// errors returned by UpdateCloudAccountRequest.ValidateAll() if the -// designated constraints aren't met. -type UpdateCloudAccountRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateCloudAccountRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateCloudAccountRequestMultiError) AllErrors() []error { return m } - // UpdateCloudAccountRequestValidationError is the validation error returned by // UpdateCloudAccountRequest.Validate if the designated constraints aren't met. type UpdateCloudAccountRequestValidationError struct { @@ -4460,56 +2658,21 @@ var _UpdateCloudAccountRequest_AccountID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on UpdateCloudAccountResponse 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. +// violated, an error is returned. func (m *UpdateCloudAccountResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateCloudAccountResponse 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 -// UpdateCloudAccountResponseMultiError, or nil if none found. -func (m *UpdateCloudAccountResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateCloudAccountResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return UpdateCloudAccountResponseMultiError(errors) - } - return nil } -// UpdateCloudAccountResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateCloudAccountResponse.ValidateAll() if -// the designated constraints aren't met. -type UpdateCloudAccountResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateCloudAccountResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateCloudAccountResponseMultiError) AllErrors() []error { return m } - // UpdateCloudAccountResponseValidationError is the validation error returned // by UpdateCloudAccountResponse.Validate if the designated constraints aren't met. type UpdateCloudAccountResponseValidationError struct { @@ -4568,70 +2731,29 @@ var _ interface { // Validate checks the field values on MigrateCloudAccountRequest 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. +// violated, an error is returned. func (m *MigrateCloudAccountRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on MigrateCloudAccountRequest 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 -// MigrateCloudAccountRequestMultiError, or nil if none found. -func (m *MigrateCloudAccountRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *MigrateCloudAccountRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - err := MigrateCloudAccountRequestValidationError{ + return MigrateCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_MigrateCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := MigrateCloudAccountRequestValidationError{ + return MigrateCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AccountIDs - if all { - switch v := interface{}(m.GetEncrypt()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, MigrateCloudAccountRequestValidationError{ - field: "Encrypt", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, MigrateCloudAccountRequestValidationError{ - field: "Encrypt", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetEncrypt()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetEncrypt()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return MigrateCloudAccountRequestValidationError{ field: "Encrypt", @@ -4643,30 +2765,9 @@ func (m *MigrateCloudAccountRequest) validate(all bool) error { // no validation rules for All - if len(errors) > 0 { - return MigrateCloudAccountRequestMultiError(errors) - } - return nil } -// MigrateCloudAccountRequestMultiError is an error wrapping multiple -// validation errors returned by MigrateCloudAccountRequest.ValidateAll() if -// the designated constraints aren't met. -type MigrateCloudAccountRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MigrateCloudAccountRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MigrateCloudAccountRequestMultiError) AllErrors() []error { return m } - // MigrateCloudAccountRequestValidationError is the validation error returned // by MigrateCloudAccountRequest.Validate if the designated constraints aren't met. type MigrateCloudAccountRequestValidationError struct { @@ -4726,57 +2827,22 @@ var _ interface { var _MigrateCloudAccountRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on OriginEncrypt 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *OriginEncrypt) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on OriginEncrypt 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 OriginEncryptMultiError, or -// nil if none found. -func (m *OriginEncrypt) ValidateAll() error { - return m.validate(true) -} - -func (m *OriginEncrypt) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for EncryptType // no validation rules for Kv // no validation rules for Iv - if len(errors) > 0 { - return OriginEncryptMultiError(errors) - } - return nil } -// OriginEncryptMultiError is an error wrapping multiple validation errors -// returned by OriginEncrypt.ValidateAll() if the designated constraints -// aren't met. -type OriginEncryptMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m OriginEncryptMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m OriginEncryptMultiError) AllErrors() []error { return m } - // OriginEncryptValidationError is the validation error returned by // OriginEncrypt.Validate if the designated constraints aren't met. type OriginEncryptValidationError struct { @@ -4833,56 +2899,21 @@ var _ interface { // Validate checks the field values on MigrateCloudAccountResponse 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. +// violated, an error is returned. func (m *MigrateCloudAccountResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on MigrateCloudAccountResponse 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 -// MigrateCloudAccountResponseMultiError, or nil if none found. -func (m *MigrateCloudAccountResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *MigrateCloudAccountResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return MigrateCloudAccountResponseMultiError(errors) - } - return nil } -// MigrateCloudAccountResponseMultiError is an error wrapping multiple -// validation errors returned by MigrateCloudAccountResponse.ValidateAll() if -// the designated constraints aren't met. -type MigrateCloudAccountResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MigrateCloudAccountResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MigrateCloudAccountResponseMultiError) AllErrors() []error { return m } - // MigrateCloudAccountResponseValidationError is the validation error returned // by MigrateCloudAccountResponse.Validate if the designated constraints // aren't met. @@ -4942,94 +2973,43 @@ var _ interface { // Validate checks the field values on DeleteCloudAccountRequest 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. +// violated, an error is returned. func (m *DeleteCloudAccountRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteCloudAccountRequest 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 -// DeleteCloudAccountRequestMultiError, or nil if none found. -func (m *DeleteCloudAccountRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteCloudAccountRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - err := DeleteCloudAccountRequestValidationError{ + return DeleteCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := DeleteCloudAccountRequestValidationError{ + return DeleteCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetAccountID()); l < 2 || l > 1024 { - err := DeleteCloudAccountRequestValidationError{ + return DeleteCloudAccountRequestValidationError{ field: "AccountID", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteCloudAccountRequest_AccountID_Pattern.MatchString(m.GetAccountID()) { - err := DeleteCloudAccountRequestValidationError{ + return DeleteCloudAccountRequestValidationError{ field: "AccountID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return DeleteCloudAccountRequestMultiError(errors) } return nil } -// DeleteCloudAccountRequestMultiError is an error wrapping multiple validation -// errors returned by DeleteCloudAccountRequest.ValidateAll() if the -// designated constraints aren't met. -type DeleteCloudAccountRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteCloudAccountRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteCloudAccountRequestMultiError) AllErrors() []error { return m } - // DeleteCloudAccountRequestValidationError is the validation error returned by // DeleteCloudAccountRequest.Validate if the designated constraints aren't met. type DeleteCloudAccountRequestValidationError struct { @@ -5092,56 +3072,21 @@ var _DeleteCloudAccountRequest_AccountID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on DeleteCloudAccountResponse 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. +// violated, an error is returned. func (m *DeleteCloudAccountResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteCloudAccountResponse 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 -// DeleteCloudAccountResponseMultiError, or nil if none found. -func (m *DeleteCloudAccountResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteCloudAccountResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return DeleteCloudAccountResponseMultiError(errors) - } - return nil } -// DeleteCloudAccountResponseMultiError is an error wrapping multiple -// validation errors returned by DeleteCloudAccountResponse.ValidateAll() if -// the designated constraints aren't met. -type DeleteCloudAccountResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteCloudAccountResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteCloudAccountResponseMultiError) AllErrors() []error { return m } - // DeleteCloudAccountResponseValidationError is the validation error returned // by DeleteCloudAccountResponse.Validate if the designated constraints aren't met. type DeleteCloudAccountResponseValidationError struct { @@ -5200,54 +3145,19 @@ var _ interface { // Validate checks the field values on ListCloudAccountPermRequest 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. +// violated, an error is returned. func (m *ListCloudAccountPermRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudAccountPermRequest 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 -// ListCloudAccountPermRequestMultiError, or nil if none found. -func (m *ListCloudAccountPermRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudAccountPermRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectID // no validation rules for AccountName - if len(errors) > 0 { - return ListCloudAccountPermRequestMultiError(errors) - } - return nil } -// ListCloudAccountPermRequestMultiError is an error wrapping multiple -// validation errors returned by ListCloudAccountPermRequest.ValidateAll() if -// the designated constraints aren't met. -type ListCloudAccountPermRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudAccountPermRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudAccountPermRequestMultiError) AllErrors() []error { return m } - // ListCloudAccountPermRequestValidationError is the validation error returned // by ListCloudAccountPermRequest.Validate if the designated constraints // aren't met. @@ -5307,26 +3217,12 @@ var _ interface { // Validate checks the field values on ListCloudAccountPermResponse 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. +// violated, an error is returned. func (m *ListCloudAccountPermResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudAccountPermResponse 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 -// ListCloudAccountPermResponseMultiError, or nil if none found. -func (m *ListCloudAccountPermResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudAccountPermResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -5336,26 +3232,7 @@ func (m *ListCloudAccountPermResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudAccountPermResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudAccountPermResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudAccountPermResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -5367,30 +3244,9 @@ func (m *ListCloudAccountPermResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudAccountPermResponseMultiError(errors) - } - return nil } -// ListCloudAccountPermResponseMultiError is an error wrapping multiple -// validation errors returned by ListCloudAccountPermResponse.ValidateAll() if -// the designated constraints aren't met. -type ListCloudAccountPermResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudAccountPermResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudAccountPermResponseMultiError) AllErrors() []error { return m } - // ListCloudAccountPermResponseValidationError is the validation error returned // by ListCloudAccountPermResponse.Validate if the designated constraints // aren't met. @@ -5450,35 +3306,17 @@ var _ interface { // Validate checks the field values on ListCloudAccountRequest 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. +// violated, an error is returned. func (m *ListCloudAccountRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudAccountRequest 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 -// ListCloudAccountRequestMultiError, or nil if none found. -func (m *ListCloudAccountRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudAccountRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) > 1024 { - err := ListCloudAccountRequestValidationError{ + return ListCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AccountID @@ -5487,30 +3325,9 @@ func (m *ListCloudAccountRequest) validate(all bool) error { // no validation rules for Operator - if len(errors) > 0 { - return ListCloudAccountRequestMultiError(errors) - } - return nil } -// ListCloudAccountRequestMultiError is an error wrapping multiple validation -// errors returned by ListCloudAccountRequest.ValidateAll() if the designated -// constraints aren't met. -type ListCloudAccountRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudAccountRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudAccountRequestMultiError) AllErrors() []error { return m } - // ListCloudAccountRequestValidationError is the validation error returned by // ListCloudAccountRequest.Validate if the designated constraints aren't met. type ListCloudAccountRequestValidationError struct { @@ -5569,70 +3386,29 @@ var _ interface { // Validate checks the field values on VerifyCloudAccountRequest 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. +// violated, an error is returned. func (m *VerifyCloudAccountRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on VerifyCloudAccountRequest 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 -// VerifyCloudAccountRequestMultiError, or nil if none found. -func (m *VerifyCloudAccountRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *VerifyCloudAccountRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - err := VerifyCloudAccountRequestValidationError{ + return VerifyCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_VerifyCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := VerifyCloudAccountRequestValidationError{ + return VerifyCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Desc - if all { - switch v := interface{}(m.GetAccount()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, VerifyCloudAccountRequestValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, VerifyCloudAccountRequestValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return VerifyCloudAccountRequestValidationError{ field: "Account", @@ -5642,30 +3418,9 @@ func (m *VerifyCloudAccountRequest) validate(all bool) error { } } - if len(errors) > 0 { - return VerifyCloudAccountRequestMultiError(errors) - } - return nil } -// VerifyCloudAccountRequestMultiError is an error wrapping multiple validation -// errors returned by VerifyCloudAccountRequest.ValidateAll() if the -// designated constraints aren't met. -type VerifyCloudAccountRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m VerifyCloudAccountRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m VerifyCloudAccountRequestMultiError) AllErrors() []error { return m } - // VerifyCloudAccountRequestValidationError is the validation error returned by // VerifyCloudAccountRequest.Validate if the designated constraints aren't met. type VerifyCloudAccountRequestValidationError struct { @@ -5726,56 +3481,21 @@ var _VerifyCloudAccountRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on VerifyCloudAccountResponse 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. +// violated, an error is returned. func (m *VerifyCloudAccountResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on VerifyCloudAccountResponse 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 -// VerifyCloudAccountResponseMultiError, or nil if none found. -func (m *VerifyCloudAccountResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *VerifyCloudAccountResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return VerifyCloudAccountResponseMultiError(errors) - } - return nil } -// VerifyCloudAccountResponseMultiError is an error wrapping multiple -// validation errors returned by VerifyCloudAccountResponse.ValidateAll() if -// the designated constraints aren't met. -type VerifyCloudAccountResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m VerifyCloudAccountResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m VerifyCloudAccountResponseMultiError) AllErrors() []error { return m } - // VerifyCloudAccountResponseValidationError is the validation error returned // by VerifyCloudAccountResponse.Validate if the designated constraints aren't met. type VerifyCloudAccountResponseValidationError struct { @@ -5833,47 +3553,14 @@ var _ interface { } = VerifyCloudAccountResponseValidationError{} // Validate checks the field values on CloudAccountInfo 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CloudAccountInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudAccountInfo 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 -// CloudAccountInfoMultiError, or nil if none found. -func (m *CloudAccountInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudAccountInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - - if all { - switch v := interface{}(m.GetAccount()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudAccountInfoValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudAccountInfoValidationError{ - field: "Account", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudAccountInfoValidationError{ field: "Account", @@ -5883,30 +3570,9 @@ func (m *CloudAccountInfo) validate(all bool) error { } } - if len(errors) > 0 { - return CloudAccountInfoMultiError(errors) - } - return nil } -// CloudAccountInfoMultiError is an error wrapping multiple validation errors -// returned by CloudAccountInfo.ValidateAll() if the designated constraints -// aren't met. -type CloudAccountInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudAccountInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudAccountInfoMultiError) AllErrors() []error { return m } - // CloudAccountInfoValidationError is the validation error returned by // CloudAccountInfo.Validate if the designated constraints aren't met. type CloudAccountInfoValidationError struct { @@ -5963,26 +3629,12 @@ var _ interface { // Validate checks the field values on ListCloudAccountResponse 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. +// violated, an error is returned. func (m *ListCloudAccountResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudAccountResponse 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 -// ListCloudAccountResponseMultiError, or nil if none found. -func (m *ListCloudAccountResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudAccountResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -5992,26 +3644,7 @@ func (m *ListCloudAccountResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudAccountResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudAccountResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudAccountResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -6023,26 +3656,7 @@ func (m *ListCloudAccountResponse) validate(all bool) error { } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudAccountResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudAccountResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudAccountResponseValidationError{ field: "WebAnnotations", @@ -6052,30 +3666,9 @@ func (m *ListCloudAccountResponse) validate(all bool) error { } } - if len(errors) > 0 { - return ListCloudAccountResponseMultiError(errors) - } - return nil } -// ListCloudAccountResponseMultiError is an error wrapping multiple validation -// errors returned by ListCloudAccountResponse.ValidateAll() if the designated -// constraints aren't met. -type ListCloudAccountResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudAccountResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudAccountResponseMultiError) AllErrors() []error { return m } - // ListCloudAccountResponseValidationError is the validation error returned by // ListCloudAccountResponse.Validate if the designated constraints aren't met. type ListCloudAccountResponseValidationError struct { @@ -6133,27 +3726,12 @@ var _ interface { } = ListCloudAccountResponseValidationError{} // Validate checks the field values on CloudVPC 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *CloudVPC) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudVPC 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 CloudVPCMultiError, or nil -// if none found. -func (m *CloudVPC) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudVPC) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for Region @@ -6182,26 +3760,7 @@ func (m *CloudVPC) validate(all bool) error { // no validation rules for BusinessID - if all { - switch v := interface{}(m.GetOverlay()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudVPCValidationError{ - field: "Overlay", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudVPCValidationError{ - field: "Overlay", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVPCValidationError{ field: "Overlay", @@ -6211,26 +3770,7 @@ func (m *CloudVPC) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetUnderlay()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudVPCValidationError{ - field: "Underlay", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudVPCValidationError{ - field: "Underlay", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVPCValidationError{ field: "Underlay", @@ -6240,29 +3780,9 @@ func (m *CloudVPC) validate(all bool) error { } } - if len(errors) > 0 { - return CloudVPCMultiError(errors) - } - return nil } -// CloudVPCMultiError is an error wrapping multiple validation errors returned -// by CloudVPC.ValidateAll() if the designated constraints aren't met. -type CloudVPCMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudVPCMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudVPCMultiError) AllErrors() []error { return m } - // CloudVPCValidationError is the validation error returned by // CloudVPC.Validate if the designated constraints aren't met. type CloudVPCValidationError struct { @@ -6318,49 +3838,16 @@ var _ interface { } = CloudVPCValidationError{} // Validate checks the field values on Cidr 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. +// definition for this message. If any rules are violated, an error is returned. func (m *Cidr) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Cidr 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 CidrMultiError, or nil if none found. -func (m *Cidr) ValidateAll() error { - return m.validate(true) -} - -func (m *Cidr) validate(all bool) error { if m == nil { return nil } - var errors []error - for idx, item := range m.GetCidrs() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CidrValidationError{ - field: fmt.Sprintf("Cidrs[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CidrValidationError{ - field: fmt.Sprintf("Cidrs[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CidrValidationError{ field: fmt.Sprintf("Cidrs[%v]", idx), @@ -6374,29 +3861,9 @@ func (m *Cidr) validate(all bool) error { // no validation rules for ReservedIPNum - if len(errors) > 0 { - return CidrMultiError(errors) - } - return nil } -// CidrMultiError is an error wrapping multiple validation errors returned by -// Cidr.ValidateAll() if the designated constraints aren't met. -type CidrMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CidrMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CidrMultiError) AllErrors() []error { return m } - // CidrValidationError is the validation error returned by Cidr.Validate if the // designated constraints aren't met. type CidrValidationError struct { @@ -6452,54 +3919,19 @@ var _ interface { } = CidrValidationError{} // Validate checks the field values on CidrState 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *CidrState) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CidrState 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 CidrStateMultiError, or nil -// if none found. -func (m *CidrState) ValidateAll() error { - return m.validate(true) -} - -func (m *CidrState) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Cidr // no validation rules for Block - if len(errors) > 0 { - return CidrStateMultiError(errors) - } - return nil } -// CidrStateMultiError is an error wrapping multiple validation errors returned -// by CidrState.ValidateAll() if the designated constraints aren't met. -type CidrStateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CidrStateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CidrStateMultiError) AllErrors() []error { return m } - // CidrStateValidationError is the validation error returned by // CidrState.Validate if the designated constraints aren't met. type CidrStateValidationError struct { @@ -6556,175 +3988,98 @@ var _ interface { // Validate checks the field values on CreateCloudVPCRequest 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. +// violated, an error is returned. func (m *CreateCloudVPCRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateCloudVPCRequest 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 -// CreateCloudVPCRequestMultiError, or nil if none found. -func (m *CreateCloudVPCRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateCloudVPCRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 100 { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateCloudVPCRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _CreateCloudVPCRequest_NetworkType_InLookup[m.GetNetworkType()]; !ok { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "NetworkType", reason: "value must be in list [overlay underlay]", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 2 || l > 100 { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "Region", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateCloudVPCRequest_Region_Pattern.MatchString(m.GetRegion()) { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for RegionName if l := utf8.RuneCountInString(m.GetVpcName()); l < 2 || l > 100 { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "VpcName", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateCloudVPCRequest_VpcName_Pattern.MatchString(m.GetVpcName()) { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "VpcName", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetVpcID()); l < 2 || l > 100 { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "VpcID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateCloudVPCRequest_VpcID_Pattern.MatchString(m.GetVpcID()) { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "VpcID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _CreateCloudVPCRequest_Available_InLookup[m.GetAvailable()]; !ok { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "Available", reason: "value must be in list [true false]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Extra if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 100 { - err := CreateCloudVPCRequestValidationError{ + return CreateCloudVPCRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ReservedIPNum // no validation rules for BusinessID - if all { - switch v := interface{}(m.GetOverlay()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudVPCRequestValidationError{ - field: "Overlay", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudVPCRequestValidationError{ - field: "Overlay", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudVPCRequestValidationError{ field: "Overlay", @@ -6734,26 +4089,7 @@ func (m *CreateCloudVPCRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetUnderlay()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudVPCRequestValidationError{ - field: "Underlay", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudVPCRequestValidationError{ - field: "Underlay", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudVPCRequestValidationError{ field: "Underlay", @@ -6763,30 +4099,9 @@ func (m *CreateCloudVPCRequest) validate(all bool) error { } } - if len(errors) > 0 { - return CreateCloudVPCRequestMultiError(errors) - } - return nil } -// CreateCloudVPCRequestMultiError is an error wrapping multiple validation -// errors returned by CreateCloudVPCRequest.ValidateAll() if the designated -// constraints aren't met. -type CreateCloudVPCRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateCloudVPCRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateCloudVPCRequestMultiError) AllErrors() []error { return m } - // CreateCloudVPCRequestValidationError is the validation error returned by // CreateCloudVPCRequest.Validate if the designated constraints aren't met. type CreateCloudVPCRequestValidationError struct { @@ -6863,56 +4178,21 @@ var _CreateCloudVPCRequest_Available_InLookup = map[string]struct{}{ // Validate checks the field values on CreateCloudVPCResponse 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. +// violated, an error is returned. func (m *CreateCloudVPCResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateCloudVPCResponse 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 -// CreateCloudVPCResponseMultiError, or nil if none found. -func (m *CreateCloudVPCResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateCloudVPCResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return CreateCloudVPCResponseMultiError(errors) - } - return nil } -// CreateCloudVPCResponseMultiError is an error wrapping multiple validation -// errors returned by CreateCloudVPCResponse.ValidateAll() if the designated -// constraints aren't met. -type CreateCloudVPCResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateCloudVPCResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateCloudVPCResponseMultiError) AllErrors() []error { return m } - // CreateCloudVPCResponseValidationError is the validation error returned by // CreateCloudVPCResponse.Validate if the designated constraints aren't met. type CreateCloudVPCResponseValidationError struct { @@ -6971,46 +4251,24 @@ var _ interface { // Validate checks the field values on UpdateCloudVPCRequest 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. +// violated, an error is returned. func (m *UpdateCloudVPCRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateCloudVPCRequest 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 -// UpdateCloudVPCRequestMultiError, or nil if none found. -func (m *UpdateCloudVPCRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateCloudVPCRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 100 { - err := UpdateCloudVPCRequestValidationError{ + return UpdateCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateCloudVPCRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := UpdateCloudVPCRequestValidationError{ + return UpdateCloudVPCRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for NetworkType @@ -7022,69 +4280,34 @@ func (m *UpdateCloudVPCRequest) validate(all bool) error { // no validation rules for VpcName if l := utf8.RuneCountInString(m.GetVpcID()); l < 2 || l > 100 { - err := UpdateCloudVPCRequestValidationError{ + return UpdateCloudVPCRequestValidationError{ field: "VpcID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateCloudVPCRequest_VpcID_Pattern.MatchString(m.GetVpcID()) { - err := UpdateCloudVPCRequestValidationError{ + return UpdateCloudVPCRequestValidationError{ field: "VpcID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _UpdateCloudVPCRequest_Available_InLookup[m.GetAvailable()]; !ok { - err := UpdateCloudVPCRequestValidationError{ + return UpdateCloudVPCRequestValidationError{ field: "Available", reason: "value must be in list [ true false]", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 100 { - err := UpdateCloudVPCRequestValidationError{ + return UpdateCloudVPCRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetReservedIPNum()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudVPCRequestValidationError{ - field: "ReservedIPNum", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudVPCRequestValidationError{ - field: "ReservedIPNum", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetReservedIPNum()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetReservedIPNum()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "ReservedIPNum", @@ -7094,26 +4317,7 @@ func (m *UpdateCloudVPCRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetBusinessID()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudVPCRequestValidationError{ - field: "BusinessID", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudVPCRequestValidationError{ - field: "BusinessID", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetBusinessID()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetBusinessID()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "BusinessID", @@ -7123,26 +4327,7 @@ func (m *UpdateCloudVPCRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetOverlay()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudVPCRequestValidationError{ - field: "Overlay", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudVPCRequestValidationError{ - field: "Overlay", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "Overlay", @@ -7152,26 +4337,7 @@ func (m *UpdateCloudVPCRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetUnderlay()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudVPCRequestValidationError{ - field: "Underlay", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudVPCRequestValidationError{ - field: "Underlay", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "Underlay", @@ -7181,30 +4347,9 @@ func (m *UpdateCloudVPCRequest) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateCloudVPCRequestMultiError(errors) - } - return nil } -// UpdateCloudVPCRequestMultiError is an error wrapping multiple validation -// errors returned by UpdateCloudVPCRequest.ValidateAll() if the designated -// constraints aren't met. -type UpdateCloudVPCRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateCloudVPCRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateCloudVPCRequestMultiError) AllErrors() []error { return m } - // UpdateCloudVPCRequestValidationError is the validation error returned by // UpdateCloudVPCRequest.Validate if the designated constraints aren't met. type UpdateCloudVPCRequestValidationError struct { @@ -7273,52 +4418,19 @@ var _UpdateCloudVPCRequest_Available_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateCloudVPCResponse 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. +// violated, an error is returned. func (m *UpdateCloudVPCResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateCloudVPCResponse 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 -// UpdateCloudVPCResponseMultiError, or nil if none found. -func (m *UpdateCloudVPCResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateCloudVPCResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudVPCResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudVPCResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCResponseValidationError{ field: "Data", @@ -7328,30 +4440,9 @@ func (m *UpdateCloudVPCResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateCloudVPCResponseMultiError(errors) - } - return nil } -// UpdateCloudVPCResponseMultiError is an error wrapping multiple validation -// errors returned by UpdateCloudVPCResponse.ValidateAll() if the designated -// constraints aren't met. -type UpdateCloudVPCResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateCloudVPCResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateCloudVPCResponseMultiError) AllErrors() []error { return m } - // UpdateCloudVPCResponseValidationError is the validation error returned by // UpdateCloudVPCResponse.Validate if the designated constraints aren't met. type UpdateCloudVPCResponseValidationError struct { @@ -7410,94 +4501,43 @@ var _ interface { // Validate checks the field values on DeleteCloudVPCRequest 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. +// violated, an error is returned. func (m *DeleteCloudVPCRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteCloudVPCRequest 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 -// DeleteCloudVPCRequestMultiError, or nil if none found. -func (m *DeleteCloudVPCRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteCloudVPCRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 100 { - err := DeleteCloudVPCRequestValidationError{ + return DeleteCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteCloudVPCRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := DeleteCloudVPCRequestValidationError{ + return DeleteCloudVPCRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetVpcID()); l < 2 || l > 100 { - err := DeleteCloudVPCRequestValidationError{ + return DeleteCloudVPCRequestValidationError{ field: "VpcID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteCloudVPCRequest_VpcID_Pattern.MatchString(m.GetVpcID()) { - err := DeleteCloudVPCRequestValidationError{ + return DeleteCloudVPCRequestValidationError{ field: "VpcID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return DeleteCloudVPCRequestMultiError(errors) } return nil } -// DeleteCloudVPCRequestMultiError is an error wrapping multiple validation -// errors returned by DeleteCloudVPCRequest.ValidateAll() if the designated -// constraints aren't met. -type DeleteCloudVPCRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteCloudVPCRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteCloudVPCRequestMultiError) AllErrors() []error { return m } - // DeleteCloudVPCRequestValidationError is the validation error returned by // DeleteCloudVPCRequest.Validate if the designated constraints aren't met. type DeleteCloudVPCRequestValidationError struct { @@ -7560,52 +4600,19 @@ var _DeleteCloudVPCRequest_VpcID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteCloudVPCResponse 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. +// violated, an error is returned. func (m *DeleteCloudVPCResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteCloudVPCResponse 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 -// DeleteCloudVPCResponseMultiError, or nil if none found. -func (m *DeleteCloudVPCResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteCloudVPCResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteCloudVPCResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteCloudVPCResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteCloudVPCResponseValidationError{ field: "Data", @@ -7615,30 +4622,9 @@ func (m *DeleteCloudVPCResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteCloudVPCResponseMultiError(errors) - } - return nil } -// DeleteCloudVPCResponseMultiError is an error wrapping multiple validation -// errors returned by DeleteCloudVPCResponse.ValidateAll() if the designated -// constraints aren't met. -type DeleteCloudVPCResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteCloudVPCResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteCloudVPCResponseMultiError) AllErrors() []error { return m } - // DeleteCloudVPCResponseValidationError is the validation error returned by // DeleteCloudVPCResponse.Validate if the designated constraints aren't met. type DeleteCloudVPCResponseValidationError struct { @@ -7697,35 +4683,17 @@ var _ interface { // Validate checks the field values on ListCloudVPCRequest 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. +// violated, an error is returned. func (m *ListCloudVPCRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudVPCRequest 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 -// ListCloudVPCRequestMultiError, or nil if none found. -func (m *ListCloudVPCRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudVPCRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) > 20 { - err := ListCloudVPCRequestValidationError{ + return ListCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be at most 20 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region @@ -7733,42 +4701,17 @@ func (m *ListCloudVPCRequest) validate(all bool) error { // no validation rules for VpcID if _, ok := _ListCloudVPCRequest_NetworkType_InLookup[m.GetNetworkType()]; !ok { - err := ListCloudVPCRequestValidationError{ + return ListCloudVPCRequestValidationError{ field: "NetworkType", reason: "value must be in list [overlay underlay]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for BusinessID - if len(errors) > 0 { - return ListCloudVPCRequestMultiError(errors) - } - return nil } -// ListCloudVPCRequestMultiError is an error wrapping multiple validation -// errors returned by ListCloudVPCRequest.ValidateAll() if the designated -// constraints aren't met. -type ListCloudVPCRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudVPCRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudVPCRequestMultiError) AllErrors() []error { return m } - // ListCloudVPCRequestValidationError is the validation error returned by // ListCloudVPCRequest.Validate if the designated constraints aren't met. type ListCloudVPCRequestValidationError struct { @@ -7832,26 +4775,12 @@ var _ListCloudVPCRequest_NetworkType_InLookup = map[string]struct{}{ // Validate checks the field values on ListCloudVPCResponse 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. +// violated, an error is returned. func (m *ListCloudVPCResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudVPCResponse 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 -// ListCloudVPCResponseMultiError, or nil if none found. -func (m *ListCloudVPCResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudVPCResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -7861,26 +4790,7 @@ func (m *ListCloudVPCResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudVPCResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudVPCResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudVPCResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -7892,30 +4802,9 @@ func (m *ListCloudVPCResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudVPCResponseMultiError(errors) - } - return nil } -// ListCloudVPCResponseMultiError is an error wrapping multiple validation -// errors returned by ListCloudVPCResponse.ValidateAll() if the designated -// constraints aren't met. -type ListCloudVPCResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudVPCResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudVPCResponseMultiError) AllErrors() []error { return m } - // ListCloudVPCResponseValidationError is the validation error returned by // ListCloudVPCResponse.Validate if the designated constraints aren't met. type ListCloudVPCResponseValidationError struct { @@ -7973,27 +4862,13 @@ var _ interface { } = ListCloudVPCResponseValidationError{} // Validate checks the field values on CloudVPCResp 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *CloudVPCResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudVPCResp 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 CloudVPCRespMultiError, or -// nil if none found. -func (m *CloudVPCResp) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudVPCResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for Region @@ -8014,26 +4889,7 @@ func (m *CloudVPCResp) validate(all bool) error { // no validation rules for AvailableIPNum - if all { - switch v := interface{}(m.GetOverlay()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudVPCRespValidationError{ - field: "Overlay", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudVPCRespValidationError{ - field: "Overlay", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVPCRespValidationError{ field: "Overlay", @@ -8043,26 +4899,7 @@ func (m *CloudVPCResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetUnderlay()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudVPCRespValidationError{ - field: "Underlay", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudVPCRespValidationError{ - field: "Underlay", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVPCRespValidationError{ field: "Underlay", @@ -8074,29 +4911,9 @@ func (m *CloudVPCResp) validate(all bool) error { // no validation rules for BusinessID - if len(errors) > 0 { - return CloudVPCRespMultiError(errors) - } - return nil } -// CloudVPCRespMultiError is an error wrapping multiple validation errors -// returned by CloudVPCResp.ValidateAll() if the designated constraints aren't met. -type CloudVPCRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudVPCRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudVPCRespMultiError) AllErrors() []error { return m } - // CloudVPCRespValidationError is the validation error returned by // CloudVPCResp.Validate if the designated constraints aren't met. type CloudVPCRespValidationError struct { @@ -8152,50 +4969,17 @@ var _ interface { } = CloudVPCRespValidationError{} // Validate checks the field values on CidrDetailInfo 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *CidrDetailInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CidrDetailInfo 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 CidrDetailInfoMultiError, -// or nil if none found. -func (m *CidrDetailInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *CidrDetailInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - for idx, item := range m.GetCidrs() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CidrDetailInfoValidationError{ - field: fmt.Sprintf("Cidrs[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CidrDetailInfoValidationError{ - field: fmt.Sprintf("Cidrs[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CidrDetailInfoValidationError{ field: fmt.Sprintf("Cidrs[%v]", idx), @@ -8211,30 +4995,9 @@ func (m *CidrDetailInfo) validate(all bool) error { // no validation rules for AvailableIPNum - if len(errors) > 0 { - return CidrDetailInfoMultiError(errors) - } - return nil } -// CidrDetailInfoMultiError is an error wrapping multiple validation errors -// returned by CidrDetailInfo.ValidateAll() if the designated constraints -// aren't met. -type CidrDetailInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CidrDetailInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CidrDetailInfoMultiError) AllErrors() []error { return m } - // CidrDetailInfoValidationError is the validation error returned by // CidrDetailInfo.Validate if the designated constraints aren't met. type CidrDetailInfoValidationError struct { @@ -8291,61 +5054,22 @@ var _ interface { // Validate checks the field values on ListCloudRegionsRequest 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. +// violated, an error is returned. func (m *ListCloudRegionsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudRegionsRequest 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 -// ListCloudRegionsRequestMultiError, or nil if none found. -func (m *ListCloudRegionsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudRegionsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) > 20 { - err := ListCloudRegionsRequestValidationError{ + return ListCloudRegionsRequestValidationError{ field: "CloudID", reason: "value length must be at most 20 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return ListCloudRegionsRequestMultiError(errors) } return nil } -// ListCloudRegionsRequestMultiError is an error wrapping multiple validation -// errors returned by ListCloudRegionsRequest.ValidateAll() if the designated -// constraints aren't met. -type ListCloudRegionsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudRegionsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudRegionsRequestMultiError) AllErrors() []error { return m } - // ListCloudRegionsRequestValidationError is the validation error returned by // ListCloudRegionsRequest.Validate if the designated constraints aren't met. type ListCloudRegionsRequestValidationError struct { @@ -8404,26 +5128,12 @@ var _ interface { // Validate checks the field values on ListCloudRegionsResponse 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. +// violated, an error is returned. func (m *ListCloudRegionsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudRegionsResponse 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 -// ListCloudRegionsResponseMultiError, or nil if none found. -func (m *ListCloudRegionsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudRegionsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -8433,26 +5143,7 @@ func (m *ListCloudRegionsResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudRegionsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudRegionsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudRegionsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -8464,30 +5155,9 @@ func (m *ListCloudRegionsResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudRegionsResponseMultiError(errors) - } - return nil } -// ListCloudRegionsResponseMultiError is an error wrapping multiple validation -// errors returned by ListCloudRegionsResponse.ValidateAll() if the designated -// constraints aren't met. -type ListCloudRegionsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudRegionsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudRegionsResponseMultiError) AllErrors() []error { return m } - // ListCloudRegionsResponseValidationError is the validation error returned by // ListCloudRegionsResponse.Validate if the designated constraints aren't met. type ListCloudRegionsResponseValidationError struct { @@ -8545,56 +5215,22 @@ var _ interface { } = ListCloudRegionsResponseValidationError{} // Validate checks the field values on CloudRegion 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *CloudRegion) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudRegion 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 CloudRegionMultiError, or -// nil if none found. -func (m *CloudRegion) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudRegion) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for RegionName // no validation rules for Region - if len(errors) > 0 { - return CloudRegionMultiError(errors) - } - return nil } -// CloudRegionMultiError is an error wrapping multiple validation errors -// returned by CloudRegion.ValidateAll() if the designated constraints aren't met. -type CloudRegionMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudRegionMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudRegionMultiError) AllErrors() []error { return m } - // CloudRegionValidationError is the validation error returned by // CloudRegion.Validate if the designated constraints aren't met. type CloudRegionValidationError struct { @@ -8650,53 +5286,18 @@ var _ interface { } = CloudRegionValidationError{} // Validate checks the field values on GetVPCCidrRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *GetVPCCidrRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetVPCCidrRequest 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 -// GetVPCCidrRequestMultiError, or nil if none found. -func (m *GetVPCCidrRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetVPCCidrRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for VpcID - if len(errors) > 0 { - return GetVPCCidrRequestMultiError(errors) - } - return nil } -// GetVPCCidrRequestMultiError is an error wrapping multiple validation errors -// returned by GetVPCCidrRequest.ValidateAll() if the designated constraints -// aren't met. -type GetVPCCidrRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetVPCCidrRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetVPCCidrRequestMultiError) AllErrors() []error { return m } - // GetVPCCidrRequestValidationError is the validation error returned by // GetVPCCidrRequest.Validate if the designated constraints aren't met. type GetVPCCidrRequestValidationError struct { @@ -8755,26 +5356,12 @@ var _ interface { // Validate checks the field values on GetVPCCidrResponse 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. +// violated, an error is returned. func (m *GetVPCCidrResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetVPCCidrResponse 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 -// GetVPCCidrResponseMultiError, or nil if none found. -func (m *GetVPCCidrResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetVPCCidrResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -8784,26 +5371,7 @@ func (m *GetVPCCidrResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetVPCCidrResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetVPCCidrResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetVPCCidrResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -8815,30 +5383,9 @@ func (m *GetVPCCidrResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetVPCCidrResponseMultiError(errors) - } - return nil } -// GetVPCCidrResponseMultiError is an error wrapping multiple validation errors -// returned by GetVPCCidrResponse.ValidateAll() if the designated constraints -// aren't met. -type GetVPCCidrResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetVPCCidrResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetVPCCidrResponseMultiError) AllErrors() []error { return m } - // GetVPCCidrResponseValidationError is the validation error returned by // GetVPCCidrResponse.Validate if the designated constraints aren't met. type GetVPCCidrResponseValidationError struct { @@ -8896,26 +5443,12 @@ var _ interface { } = GetVPCCidrResponseValidationError{} // Validate checks the field values on VPCCidr 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *VPCCidr) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on VPCCidr 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 VPCCidrMultiError, or nil if none found. -func (m *VPCCidr) ValidateAll() error { - return m.validate(true) -} - -func (m *VPCCidr) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Vpc // no validation rules for Cidr @@ -8924,29 +5457,9 @@ func (m *VPCCidr) validate(all bool) error { // no validation rules for Status - if len(errors) > 0 { - return VPCCidrMultiError(errors) - } - return nil } -// VPCCidrMultiError is an error wrapping multiple validation errors returned -// by VPCCidr.ValidateAll() if the designated constraints aren't met. -type VPCCidrMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m VPCCidrMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m VPCCidrMultiError) AllErrors() []error { return m } - // VPCCidrValidationError is the validation error returned by VPCCidr.Validate // if the designated constraints aren't met. type VPCCidrValidationError struct { @@ -9002,144 +5515,53 @@ var _ interface { } = VPCCidrValidationError{} // Validate checks the field values on Cloud 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Cloud) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Cloud 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 CloudMultiError, or nil if none found. -func (m *Cloud) ValidateAll() error { - return m.validate(true) -} - -func (m *Cloud) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for Name // no validation rules for Editable - { - sorted_keys := make([]string, len(m.GetOpsPlugins())) - i := 0 - for key := range m.GetOpsPlugins() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetOpsPlugins()[key] - _ = val - - // no validation rules for OpsPlugins[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CloudValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - } - } - } + for key, val := range m.GetOpsPlugins() { + _ = val - } - } + // no validation rules for OpsPlugins[key] - { - sorted_keys := make([]string, len(m.GetExtraPlugins())) - i := 0 - for key := range m.GetExtraPlugins() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetExtraPlugins()[key] - _ = val - - // no validation rules for ExtraPlugins[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CloudValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CloudValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } - if all { - switch v := interface{}(m.GetCloudCredential()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudValidationError{ - field: "CloudCredential", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: + for key, val := range m.GetExtraPlugins() { + _ = val + + // no validation rules for ExtraPlugins[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - errors = append(errors, CloudValidationError{ - field: "CloudCredential", + return CloudValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), reason: "embedded message failed validation", cause: err, - }) + } } } - } else if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { + + } + + if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "CloudCredential", @@ -9149,26 +5571,7 @@ func (m *Cloud) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetOsManagement()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudValidationError{ - field: "OsManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudValidationError{ - field: "OsManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "OsManagement", @@ -9178,26 +5581,7 @@ func (m *Cloud) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetClusterManagement()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudValidationError{ - field: "ClusterManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudValidationError{ - field: "ClusterManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "ClusterManagement", @@ -9207,26 +5591,7 @@ func (m *Cloud) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetNodeGroupManagement()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudValidationError{ - field: "NodeGroupManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudValidationError{ - field: "NodeGroupManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "NodeGroupManagement", @@ -9254,26 +5619,7 @@ func (m *Cloud) validate(all bool) error { // no validation rules for Enable - if all { - switch v := interface{}(m.GetNetworkInfo()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudValidationError{ - field: "NetworkInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudValidationError{ - field: "NetworkInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "NetworkInfo", @@ -9283,26 +5629,7 @@ func (m *Cloud) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetConfInfo()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudValidationError{ - field: "ConfInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudValidationError{ - field: "ConfInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "ConfInfo", @@ -9314,29 +5641,9 @@ func (m *Cloud) validate(all bool) error { // no validation rules for PlatformInfo - if len(errors) > 0 { - return CloudMultiError(errors) - } - return nil } -// CloudMultiError is an error wrapping multiple validation errors returned by -// Cloud.ValidateAll() if the designated constraints aren't met. -type CloudMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudMultiError) AllErrors() []error { return m } - // CloudValidationError is the validation error returned by Cloud.Validate if // the designated constraints aren't met. type CloudValidationError struct { @@ -9392,27 +5699,13 @@ var _ interface { } = CloudValidationError{} // Validate checks the field values on CloudConfigInfo 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CloudConfigInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudConfigInfo 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 -// CloudConfigInfoMultiError, or nil if none found. -func (m *CloudConfigInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudConfigInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudInternalEnable // no validation rules for CloudDomain @@ -9429,30 +5722,9 @@ func (m *CloudConfigInfo) validate(all bool) error { // no validation rules for DisableCheckGroupResource - if len(errors) > 0 { - return CloudConfigInfoMultiError(errors) - } - return nil } -// CloudConfigInfoMultiError is an error wrapping multiple validation errors -// returned by CloudConfigInfo.ValidateAll() if the designated constraints -// aren't met. -type CloudConfigInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudConfigInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudConfigInfoMultiError) AllErrors() []error { return m } - // CloudConfigInfoValidationError is the validation error returned by // CloudConfigInfo.Validate if the designated constraints aren't met. type CloudConfigInfoValidationError struct { @@ -9508,50 +5780,17 @@ var _ interface { } = CloudConfigInfoValidationError{} // Validate checks the field values on CloudNetworkInfo 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CloudNetworkInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudNetworkInfo 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 -// CloudNetworkInfoMultiError, or nil if none found. -func (m *CloudNetworkInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudNetworkInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - for idx, item := range m.GetCidrSteps() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudNetworkInfoValidationError{ - field: fmt.Sprintf("CidrSteps[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudNetworkInfoValidationError{ - field: fmt.Sprintf("CidrSteps[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudNetworkInfoValidationError{ field: fmt.Sprintf("CidrSteps[%v]", idx), @@ -9568,26 +5807,7 @@ func (m *CloudNetworkInfo) validate(all bool) error { for idx, item := range m.GetVpcCniModes() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudNetworkInfoValidationError{ - field: fmt.Sprintf("VpcCniModes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudNetworkInfoValidationError{ - field: fmt.Sprintf("VpcCniModes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudNetworkInfoValidationError{ field: fmt.Sprintf("VpcCniModes[%v]", idx), @@ -9599,30 +5819,9 @@ func (m *CloudNetworkInfo) validate(all bool) error { } - if len(errors) > 0 { - return CloudNetworkInfoMultiError(errors) - } - return nil } -// CloudNetworkInfoMultiError is an error wrapping multiple validation errors -// returned by CloudNetworkInfo.ValidateAll() if the designated constraints -// aren't met. -type CloudNetworkInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudNetworkInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudNetworkInfoMultiError) AllErrors() []error { return m } - // CloudNetworkInfoValidationError is the validation error returned by // CloudNetworkInfo.Validate if the designated constraints aren't met. type CloudNetworkInfoValidationError struct { @@ -9678,54 +5877,20 @@ var _ interface { } = CloudNetworkInfoValidationError{} // Validate checks the field values on EnvCidrStep 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *EnvCidrStep) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on EnvCidrStep 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 EnvCidrStepMultiError, or -// nil if none found. -func (m *EnvCidrStep) ValidateAll() error { - return m.validate(true) -} - -func (m *EnvCidrStep) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Env // no validation rules for Step - if len(errors) > 0 { - return EnvCidrStepMultiError(errors) - } - return nil } -// EnvCidrStepMultiError is an error wrapping multiple validation errors -// returned by EnvCidrStep.ValidateAll() if the designated constraints aren't met. -type EnvCidrStepMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m EnvCidrStepMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m EnvCidrStepMultiError) AllErrors() []error { return m } - // EnvCidrStepValidationError is the validation error returned by // EnvCidrStep.Validate if the designated constraints aren't met. type EnvCidrStepValidationError struct { @@ -9781,56 +5946,22 @@ var _ interface { } = EnvCidrStepValidationError{} // Validate checks the field values on NetworkMode 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NetworkMode) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NetworkMode 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 NetworkModeMultiError, or -// nil if none found. -func (m *NetworkMode) ValidateAll() error { - return m.validate(true) -} - -func (m *NetworkMode) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Mode // no validation rules for Default // no validation rules for Name - if len(errors) > 0 { - return NetworkModeMultiError(errors) - } - return nil } -// NetworkModeMultiError is an error wrapping multiple validation errors -// returned by NetworkMode.ValidateAll() if the designated constraints aren't met. -type NetworkModeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NetworkModeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NetworkModeMultiError) AllErrors() []error { return m } - // NetworkModeValidationError is the validation error returned by // NetworkMode.Validate if the designated constraints aren't met. type NetworkModeValidationError struct { @@ -9886,88 +6017,23 @@ var _ interface { } = NetworkModeValidationError{} // Validate checks the field values on NodeGroup 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NodeGroup) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeGroup 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 NodeGroupMultiError, or nil -// if none found. -func (m *NodeGroup) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeGroup) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeGroupID // no validation rules for Name - if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - err := NodeGroupValidationError{ - field: "ClusterID", - reason: "value length must be between 2 and 100 runes, inclusive", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := NodeGroupValidationError{ - field: "ClusterID", - reason: "value does not have prefix \"BCS-\"", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_NodeGroup_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := NodeGroupValidationError{ - field: "ClusterID", - reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for ClusterID // no validation rules for Region // no validation rules for EnableAutoscale - if all { - switch v := interface{}(m.GetAutoScaling()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupValidationError{ - field: "AutoScaling", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupValidationError{ - field: "AutoScaling", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "AutoScaling", @@ -9977,26 +6043,7 @@ func (m *NodeGroup) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetLaunchTemplate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupValidationError{ - field: "LaunchTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupValidationError{ - field: "LaunchTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "LaunchTemplate", @@ -10025,49 +6072,22 @@ func (m *NodeGroup) validate(all bool) error { // no validation rules for Provider if _, ok := _NodeGroup_Status_InLookup[m.GetStatus()]; !ok { - err := NodeGroupValidationError{ + return NodeGroupValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FALURE INITIALIZATION DELETED]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ConsumerID if m.GetNodeTemplate() == nil { - err := NodeGroupValidationError{ + return NodeGroupValidationError{ field: "NodeTemplate", reason: "value is required", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetNodeTemplate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupValidationError{ - field: "NodeTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupValidationError{ - field: "NodeTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "NodeTemplate", @@ -10083,26 +6103,7 @@ func (m *NodeGroup) validate(all bool) error { // no validation rules for NodeGroupType - if all { - switch v := interface{}(m.GetArea()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeGroupValidationError{ - field: "Area", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeGroupValidationError{ - field: "Area", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "Area", @@ -10114,29 +6115,9 @@ func (m *NodeGroup) validate(all bool) error { // no validation rules for ExtraInfo - if len(errors) > 0 { - return NodeGroupMultiError(errors) - } - return nil } -// NodeGroupMultiError is an error wrapping multiple validation errors returned -// by NodeGroup.ValidateAll() if the designated constraints aren't met. -type NodeGroupMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeGroupMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeGroupMultiError) AllErrors() []error { return m } - // NodeGroupValidationError is the validation error returned by // NodeGroup.Validate if the designated constraints aren't met. type NodeGroupValidationError struct { @@ -10191,8 +6172,6 @@ var _ interface { ErrorName() string } = NodeGroupValidationError{} -var _NodeGroup_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") - var _NodeGroup_Status_InLookup = map[string]struct{}{ "CREATING": {}, "RUNNING": {}, @@ -10203,54 +6182,19 @@ var _NodeGroup_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on CloudArea 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *CloudArea) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudArea 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 CloudAreaMultiError, or nil -// if none found. -func (m *CloudArea) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudArea) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for BkCloudID // no validation rules for BkCloudName - if len(errors) > 0 { - return CloudAreaMultiError(errors) - } - return nil } -// CloudAreaMultiError is an error wrapping multiple validation errors returned -// by CloudArea.ValidateAll() if the designated constraints aren't met. -type CloudAreaMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudAreaMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudAreaMultiError) AllErrors() []error { return m } - // CloudAreaValidationError is the validation error returned by // CloudArea.Validate if the designated constraints aren't met. type CloudAreaValidationError struct { @@ -10306,51 +6250,29 @@ var _ interface { } = CloudAreaValidationError{} // Validate checks the field values on AutoScalingGroup 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *AutoScalingGroup) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AutoScalingGroup 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 -// AutoScalingGroupMultiError, or nil if none found. -func (m *AutoScalingGroup) ValidateAll() error { - return m.validate(true) -} - -func (m *AutoScalingGroup) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for AutoScalingID // no validation rules for AutoScalingName if val := m.GetMinSize(); val < 0 || val > 1000 { - err := AutoScalingGroupValidationError{ + return AutoScalingGroupValidationError{ field: "MinSize", reason: "value must be inside range [0, 1000]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxSize(); val < 0 || val > 1000 { - err := AutoScalingGroupValidationError{ + return AutoScalingGroupValidationError{ field: "MaxSize", reason: "value must be inside range [0, 1000]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for DesiredSize @@ -10370,26 +6292,7 @@ func (m *AutoScalingGroup) validate(all bool) error { for idx, item := range m.GetTimeRanges() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AutoScalingGroupValidationError{ - field: fmt.Sprintf("TimeRanges[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AutoScalingGroupValidationError{ - field: fmt.Sprintf("TimeRanges[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AutoScalingGroupValidationError{ field: fmt.Sprintf("TimeRanges[%v]", idx), @@ -10405,30 +6308,9 @@ func (m *AutoScalingGroup) validate(all bool) error { // no validation rules for ServiceRole - if len(errors) > 0 { - return AutoScalingGroupMultiError(errors) - } - return nil } -// AutoScalingGroupMultiError is an error wrapping multiple validation errors -// returned by AutoScalingGroup.ValidateAll() if the designated constraints -// aren't met. -type AutoScalingGroupMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AutoScalingGroupMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AutoScalingGroupMultiError) AllErrors() []error { return m } - // AutoScalingGroupValidationError is the validation error returned by // AutoScalingGroup.Validate if the designated constraints aren't met. type AutoScalingGroupValidationError struct { @@ -10484,76 +6366,33 @@ var _ interface { } = AutoScalingGroupValidationError{} // Validate checks the field values on TimeRange 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *TimeRange) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TimeRange 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 TimeRangeMultiError, or nil -// if none found. -func (m *TimeRange) ValidateAll() error { - return m.validate(true) -} - -func (m *TimeRange) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetName()); l < 2 || l > 1024 { - err := TimeRangeValidationError{ + return TimeRangeValidationError{ field: "Name", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetSchedule()); l < 2 || l > 1024 { - err := TimeRangeValidationError{ + return TimeRangeValidationError{ field: "Schedule", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Zone // no validation rules for DesiredNum - if len(errors) > 0 { - return TimeRangeMultiError(errors) - } - return nil } -// TimeRangeMultiError is an error wrapping multiple validation errors returned -// by TimeRange.ValidateAll() if the designated constraints aren't met. -type TimeRangeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TimeRangeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TimeRangeMultiError) AllErrors() []error { return m } - // TimeRangeValidationError is the validation error returned by // TimeRange.Validate if the designated constraints aren't met. type TimeRangeValidationError struct { @@ -10609,54 +6448,19 @@ var _ interface { } = TimeRangeValidationError{} // Validate checks the field values on DataDisk 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *DataDisk) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DataDisk 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 DataDiskMultiError, or nil -// if none found. -func (m *DataDisk) ValidateAll() error { - return m.validate(true) -} - -func (m *DataDisk) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for DiskType // no validation rules for DiskSize - if len(errors) > 0 { - return DataDiskMultiError(errors) - } - return nil } -// DataDiskMultiError is an error wrapping multiple validation errors returned -// by DataDisk.ValidateAll() if the designated constraints aren't met. -type DataDiskMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DataDiskMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DataDiskMultiError) AllErrors() []error { return m } - // DataDiskValidationError is the validation error returned by // DataDisk.Validate if the designated constraints aren't met. type DataDiskValidationError struct { @@ -10712,27 +6516,13 @@ var _ interface { } = DataDiskValidationError{} // Validate checks the field values on CloudDataDisk 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *CloudDataDisk) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudDataDisk 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 CloudDataDiskMultiError, or -// nil if none found. -func (m *CloudDataDisk) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudDataDisk) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for DiskType // no validation rules for DiskSize @@ -10745,30 +6535,9 @@ func (m *CloudDataDisk) validate(all bool) error { // no validation rules for DiskPartition - if len(errors) > 0 { - return CloudDataDiskMultiError(errors) - } - return nil } -// CloudDataDiskMultiError is an error wrapping multiple validation errors -// returned by CloudDataDisk.ValidateAll() if the designated constraints -// aren't met. -type CloudDataDiskMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudDataDiskMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudDataDiskMultiError) AllErrors() []error { return m } - // CloudDataDiskValidationError is the validation error returned by // CloudDataDisk.Validate if the designated constraints aren't met. type CloudDataDiskValidationError struct { @@ -10825,26 +6594,12 @@ var _ interface { // Validate checks the field values on InternetAccessible 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. +// violated, an error is returned. func (m *InternetAccessible) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on InternetAccessible 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 -// InternetAccessibleMultiError, or nil if none found. -func (m *InternetAccessible) ValidateAll() error { - return m.validate(true) -} - -func (m *InternetAccessible) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for InternetChargeType // no validation rules for InternetMaxBandwidth @@ -10853,30 +6608,9 @@ func (m *InternetAccessible) validate(all bool) error { // no validation rules for BandwidthPackageId - if len(errors) > 0 { - return InternetAccessibleMultiError(errors) - } - return nil } -// InternetAccessibleMultiError is an error wrapping multiple validation errors -// returned by InternetAccessible.ValidateAll() if the designated constraints -// aren't met. -type InternetAccessibleMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m InternetAccessibleMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m InternetAccessibleMultiError) AllErrors() []error { return m } - // InternetAccessibleValidationError is the validation error returned by // InternetAccessible.Validate if the designated constraints aren't met. type InternetAccessibleValidationError struct { @@ -10935,26 +6669,12 @@ var _ interface { // Validate checks the field values on InstanceTemplateConfig 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. +// violated, an error is returned. func (m *InstanceTemplateConfig) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on InstanceTemplateConfig 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 -// InstanceTemplateConfigMultiError, or nil if none found. -func (m *InstanceTemplateConfig) ValidateAll() error { - return m.validate(true) -} - -func (m *InstanceTemplateConfig) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Region // no validation rules for Zone @@ -10974,36 +6694,13 @@ func (m *InstanceTemplateConfig) validate(all bool) error { // no validation rules for InstanceType if _, ok := _InstanceTemplateConfig_InstanceChargeType_InLookup[m.GetInstanceChargeType()]; !ok { - err := InstanceTemplateConfigValidationError{ + return InstanceTemplateConfigValidationError{ field: "InstanceChargeType", reason: "value must be in list [PREPAID POSTPAID_BY_HOUR SPOTPAID]", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetSystemDisk()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "SystemDisk", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "SystemDisk", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "SystemDisk", @@ -11016,26 +6713,7 @@ func (m *InstanceTemplateConfig) validate(all bool) error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -11047,26 +6725,7 @@ func (m *InstanceTemplateConfig) validate(all bool) error { } - if all { - switch v := interface{}(m.GetImageInfo()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "ImageInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "ImageInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "ImageInfo", @@ -11085,26 +6744,7 @@ func (m *InstanceTemplateConfig) validate(all bool) error { for idx, item := range m.GetCloudDataDisks() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: fmt.Sprintf("CloudDataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: fmt.Sprintf("CloudDataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: fmt.Sprintf("CloudDataDisks[%v]", idx), @@ -11118,26 +6758,7 @@ func (m *InstanceTemplateConfig) validate(all bool) error { // no validation rules for InitLoginUsername - if all { - switch v := interface{}(m.GetKeyPair()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "KeyPair", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "KeyPair", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "KeyPair", @@ -11151,26 +6772,7 @@ func (m *InstanceTemplateConfig) validate(all bool) error { // no validation rules for NodeRole - if all { - switch v := interface{}(m.GetCharge()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "Charge", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "Charge", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCharge()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCharge()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "Charge", @@ -11180,26 +6782,7 @@ func (m *InstanceTemplateConfig) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetInternetAccess()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "InternetAccess", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InstanceTemplateConfigValidationError{ - field: "InternetAccess", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "InternetAccess", @@ -11209,30 +6792,9 @@ func (m *InstanceTemplateConfig) validate(all bool) error { } } - if len(errors) > 0 { - return InstanceTemplateConfigMultiError(errors) - } - return nil } -// InstanceTemplateConfigMultiError is an error wrapping multiple validation -// errors returned by InstanceTemplateConfig.ValidateAll() if the designated -// constraints aren't met. -type InstanceTemplateConfigMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m InstanceTemplateConfigMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m InstanceTemplateConfigMultiError) AllErrors() []error { return m } - // InstanceTemplateConfigValidationError is the validation error returned by // InstanceTemplateConfig.Validate if the designated constraints aren't met. type InstanceTemplateConfigValidationError struct { @@ -11297,54 +6859,19 @@ var _InstanceTemplateConfig_InstanceChargeType_InLookup = map[string]struct{}{ // Validate checks the field values on InstanceChargePrepaid 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. +// violated, an error is returned. func (m *InstanceChargePrepaid) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on InstanceChargePrepaid 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 -// InstanceChargePrepaidMultiError, or nil if none found. -func (m *InstanceChargePrepaid) ValidateAll() error { - return m.validate(true) -} - -func (m *InstanceChargePrepaid) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Period // no validation rules for RenewFlag - if len(errors) > 0 { - return InstanceChargePrepaidMultiError(errors) - } - return nil } -// InstanceChargePrepaidMultiError is an error wrapping multiple validation -// errors returned by InstanceChargePrepaid.ValidateAll() if the designated -// constraints aren't met. -type InstanceChargePrepaidMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m InstanceChargePrepaidMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m InstanceChargePrepaidMultiError) AllErrors() []error { return m } - // InstanceChargePrepaidValidationError is the validation error returned by // InstanceChargePrepaid.Validate if the designated constraints aren't met. type InstanceChargePrepaidValidationError struct { @@ -11403,26 +6930,12 @@ var _ interface { // Validate checks the field values on LaunchConfiguration 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. +// violated, an error is returned. func (m *LaunchConfiguration) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on LaunchConfiguration 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 -// LaunchConfigurationMultiError, or nil if none found. -func (m *LaunchConfiguration) ValidateAll() error { - return m.validate(true) -} - -func (m *LaunchConfiguration) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for LaunchConfigurationID // no validation rules for LaunchConfigureName @@ -11439,26 +6952,7 @@ func (m *LaunchConfiguration) validate(all bool) error { // no validation rules for InstanceChargeType - if all { - switch v := interface{}(m.GetSystemDisk()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "SystemDisk", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "SystemDisk", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "SystemDisk", @@ -11471,26 +6965,7 @@ func (m *LaunchConfiguration) validate(all bool) error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -11502,26 +6977,7 @@ func (m *LaunchConfiguration) validate(all bool) error { } - if all { - switch v := interface{}(m.GetInternetAccess()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "InternetAccess", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "InternetAccess", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "InternetAccess", @@ -11533,26 +6989,7 @@ func (m *LaunchConfiguration) validate(all bool) error { // no validation rules for InitLoginPassword - if all { - switch v := interface{}(m.GetImageInfo()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "ImageInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "ImageInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "ImageInfo", @@ -11572,26 +7009,7 @@ func (m *LaunchConfiguration) validate(all bool) error { // no validation rules for Selector - if all { - switch v := interface{}(m.GetKeyPair()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "KeyPair", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "KeyPair", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "KeyPair", @@ -11601,26 +7019,7 @@ func (m *LaunchConfiguration) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCharge()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "Charge", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, LaunchConfigurationValidationError{ - field: "Charge", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCharge()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCharge()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "Charge", @@ -11630,30 +7029,9 @@ func (m *LaunchConfiguration) validate(all bool) error { } } - if len(errors) > 0 { - return LaunchConfigurationMultiError(errors) - } - return nil } -// LaunchConfigurationMultiError is an error wrapping multiple validation -// errors returned by LaunchConfiguration.ValidateAll() if the designated -// constraints aren't met. -type LaunchConfigurationMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m LaunchConfigurationMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m LaunchConfigurationMultiError) AllErrors() []error { return m } - // LaunchConfigurationValidationError is the validation error returned by // LaunchConfiguration.Validate if the designated constraints aren't met. type LaunchConfigurationValidationError struct { @@ -11711,55 +7089,21 @@ var _ interface { } = LaunchConfigurationValidationError{} // Validate checks the field values on KeyInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *KeyInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on KeyInfo 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 KeyInfoMultiError, or nil if none found. -func (m *KeyInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *KeyInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for KeyID // no validation rules for KeySecret // no validation rules for KeyPublic - if len(errors) > 0 { - return KeyInfoMultiError(errors) - } - return nil } -// KeyInfoMultiError is an error wrapping multiple validation errors returned -// by KeyInfo.ValidateAll() if the designated constraints aren't met. -type KeyInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m KeyInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m KeyInfoMultiError) AllErrors() []error { return m } - // KeyInfoValidationError is the validation error returned by KeyInfo.Validate // if the designated constraints aren't met. type KeyInfoValidationError struct { @@ -11815,56 +7159,21 @@ var _ interface { } = KeyInfoValidationError{} // Validate checks the field values on ImageInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *ImageInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ImageInfo 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 ImageInfoMultiError, or nil -// if none found. -func (m *ImageInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ImageInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ImageID // no validation rules for ImageName // no validation rules for ImageType - if len(errors) > 0 { - return ImageInfoMultiError(errors) - } - return nil } -// ImageInfoMultiError is an error wrapping multiple validation errors returned -// by ImageInfo.ValidateAll() if the designated constraints aren't met. -type ImageInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ImageInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ImageInfoMultiError) AllErrors() []error { return m } - // ImageInfoValidationError is the validation error returned by // ImageInfo.Validate if the designated constraints aren't met. type ImageInfoValidationError struct { @@ -11921,26 +7230,12 @@ var _ interface { // Validate checks the field values on ClusterAutoScalingOption 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. +// violated, an error is returned. func (m *ClusterAutoScalingOption) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterAutoScalingOption 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 -// ClusterAutoScalingOptionMultiError, or nil if none found. -func (m *ClusterAutoScalingOption) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterAutoScalingOption) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for IsScaleDownEnable // no validation rules for Expander @@ -12009,26 +7304,7 @@ func (m *ClusterAutoScalingOption) validate(all bool) error { // no validation rules for BufferResourceMemRatio - if all { - switch v := interface{}(m.GetModule()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterAutoScalingOptionValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterAutoScalingOptionValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterAutoScalingOptionValidationError{ field: "Module", @@ -12038,26 +7314,7 @@ func (m *ClusterAutoScalingOption) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebhook()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterAutoScalingOptionValidationError{ - field: "Webhook", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterAutoScalingOptionValidationError{ - field: "Webhook", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterAutoScalingOptionValidationError{ field: "Webhook", @@ -12070,42 +7327,17 @@ func (m *ClusterAutoScalingOption) validate(all bool) error { // no validation rules for ExpendablePodsPriorityCutoff if m.GetNewPodScaleUpDelay() < 0 { - err := ClusterAutoScalingOptionValidationError{ + return ClusterAutoScalingOptionValidationError{ field: "NewPodScaleUpDelay", reason: "value must be greater than or equal to 0", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for DevicePoolProvider - if len(errors) > 0 { - return ClusterAutoScalingOptionMultiError(errors) - } - return nil } -// ClusterAutoScalingOptionMultiError is an error wrapping multiple validation -// errors returned by ClusterAutoScalingOption.ValidateAll() if the designated -// constraints aren't met. -type ClusterAutoScalingOptionMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterAutoScalingOptionMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterAutoScalingOptionMultiError) AllErrors() []error { return m } - // ClusterAutoScalingOptionValidationError is the validation error returned by // ClusterAutoScalingOption.Validate if the designated constraints aren't met. type ClusterAutoScalingOptionValidationError struct { @@ -12163,56 +7395,22 @@ var _ interface { } = ClusterAutoScalingOptionValidationError{} // Validate checks the field values on WebhookMode 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *WebhookMode) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on WebhookMode 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 WebhookModeMultiError, or -// nil if none found. -func (m *WebhookMode) ValidateAll() error { - return m.validate(true) -} - -func (m *WebhookMode) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Mode // no validation rules for Server // no validation rules for Token - if len(errors) > 0 { - return WebhookModeMultiError(errors) - } - return nil } -// WebhookModeMultiError is an error wrapping multiple validation errors -// returned by WebhookMode.ValidateAll() if the designated constraints aren't met. -type WebhookModeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m WebhookModeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m WebhookModeMultiError) AllErrors() []error { return m } - // WebhookModeValidationError is the validation error returned by // WebhookMode.Validate if the designated constraints aren't met. type WebhookModeValidationError struct { @@ -12268,55 +7466,21 @@ var _ interface { } = WebhookModeValidationError{} // Validate checks the field values on Taint 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Taint) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Taint 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 TaintMultiError, or nil if none found. -func (m *Taint) ValidateAll() error { - return m.validate(true) -} - -func (m *Taint) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Key // no validation rules for Value // no validation rules for Effect - if len(errors) > 0 { - return TaintMultiError(errors) - } - return nil } -// TaintMultiError is an error wrapping multiple validation errors returned by -// Taint.ValidateAll() if the designated constraints aren't met. -type TaintMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TaintMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TaintMultiError) AllErrors() []error { return m } - // TaintValidationError is the validation error returned by Taint.Validate if // the designated constraints aren't met. type TaintValidationError struct { @@ -12372,27 +7536,13 @@ var _ interface { } = TaintValidationError{} // Validate checks the field values on NodeTemplate 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NodeTemplate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeTemplate 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 NodeTemplateMultiError, or -// nil if none found. -func (m *NodeTemplate) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeTemplate) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeTemplateID // no validation rules for Name @@ -12404,26 +7554,7 @@ func (m *NodeTemplate) validate(all bool) error { for idx, item := range m.GetTaints() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -12446,26 +7577,7 @@ func (m *NodeTemplate) validate(all bool) error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -12481,26 +7593,7 @@ func (m *NodeTemplate) validate(all bool) error { // no validation rules for PreStartUserScript - if all { - switch v := interface{}(m.GetBcsScaleOutAddons()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "BcsScaleOutAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "BcsScaleOutAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetBcsScaleOutAddons()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetBcsScaleOutAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "BcsScaleOutAddons", @@ -12510,26 +7603,7 @@ func (m *NodeTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetBcsScaleInAddons()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "BcsScaleInAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "BcsScaleInAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetBcsScaleInAddons()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetBcsScaleInAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "BcsScaleInAddons", @@ -12539,26 +7613,7 @@ func (m *NodeTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetScaleOutExtraAddons()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "ScaleOutExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "ScaleOutExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "ScaleOutExtraAddons", @@ -12568,26 +7623,7 @@ func (m *NodeTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetScaleInExtraAddons()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "ScaleInExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "ScaleInExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "ScaleInExtraAddons", @@ -12609,26 +7645,7 @@ func (m *NodeTemplate) validate(all bool) error { // no validation rules for Desc - if all { - switch v := interface{}(m.GetRuntime()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "Runtime", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "Runtime", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "Runtime", @@ -12638,26 +7655,7 @@ func (m *NodeTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetModule()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeTemplateValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "Module", @@ -12681,29 +7679,9 @@ func (m *NodeTemplate) validate(all bool) error { // no validation rules for AllowSkipScaleInWhenFailed - if len(errors) > 0 { - return NodeTemplateMultiError(errors) - } - return nil } -// NodeTemplateMultiError is an error wrapping multiple validation errors -// returned by NodeTemplate.ValidateAll() if the designated constraints aren't met. -type NodeTemplateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeTemplateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeTemplateMultiError) AllErrors() []error { return m } - // NodeTemplateValidationError is the validation error returned by // NodeTemplate.Validate if the designated constraints aren't met. type NodeTemplateValidationError struct { @@ -12759,27 +7737,13 @@ var _ interface { } = NodeTemplateValidationError{} // Validate checks the field values on ClusterModule 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *ClusterModule) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterModule 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 ClusterModuleMultiError, or -// nil if none found. -func (m *ClusterModule) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterModule) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for MasterModuleID // no validation rules for MasterModuleName @@ -12788,30 +7752,9 @@ func (m *ClusterModule) validate(all bool) error { // no validation rules for WorkerModuleName - if len(errors) > 0 { - return ClusterModuleMultiError(errors) - } - return nil } -// ClusterModuleMultiError is an error wrapping multiple validation errors -// returned by ClusterModule.ValidateAll() if the designated constraints -// aren't met. -type ClusterModuleMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterModuleMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterModuleMultiError) AllErrors() []error { return m } - // ClusterModuleValidationError is the validation error returned by // ClusterModule.Validate if the designated constraints aren't met. type ClusterModuleValidationError struct { @@ -12867,27 +7810,12 @@ var _ interface { } = ClusterModuleValidationError{} // Validate checks the field values on ModuleInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *ModuleInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ModuleInfo 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 ModuleInfoMultiError, or -// nil if none found. -func (m *ModuleInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ModuleInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ScaleOutModuleID // no validation rules for ScaleInModuleID @@ -12900,29 +7828,9 @@ func (m *ModuleInfo) validate(all bool) error { // no validation rules for ScaleInModuleName - if len(errors) > 0 { - return ModuleInfoMultiError(errors) - } - return nil } -// ModuleInfoMultiError is an error wrapping multiple validation errors -// returned by ModuleInfo.ValidateAll() if the designated constraints aren't met. -type ModuleInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ModuleInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ModuleInfoMultiError) AllErrors() []error { return m } - // ModuleInfoValidationError is the validation error returned by // ModuleInfo.Validate if the designated constraints aren't met. type ModuleInfoValidationError struct { @@ -12978,54 +7886,20 @@ var _ interface { } = ModuleInfoValidationError{} // Validate checks the field values on RunTimeInfo 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *RunTimeInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RunTimeInfo 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 RunTimeInfoMultiError, or -// nil if none found. -func (m *RunTimeInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *RunTimeInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ContainerRuntime // no validation rules for RuntimeVersion - if len(errors) > 0 { - return RunTimeInfoMultiError(errors) - } - return nil } -// RunTimeInfoMultiError is an error wrapping multiple validation errors -// returned by RunTimeInfo.ValidateAll() if the designated constraints aren't met. -type RunTimeInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RunTimeInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RunTimeInfoMultiError) AllErrors() []error { return m } - // RunTimeInfoValidationError is the validation error returned by // RunTimeInfo.Validate if the designated constraints aren't met. type RunTimeInfoValidationError struct { @@ -13082,57 +7956,31 @@ var _ interface { // Validate checks the field values on CreateNodeTemplateRequest 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. +// violated, an error is returned. func (m *CreateNodeTemplateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateNodeTemplateRequest 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 -// CreateNodeTemplateRequestMultiError, or nil if none found. -func (m *CreateNodeTemplateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetProjectID()); l < 1 || l > 2048 { - err := CreateNodeTemplateRequestValidationError{ + return CreateNodeTemplateRequestValidationError{ field: "ProjectID", reason: "value length must be between 1 and 2048 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateNodeTemplateRequest_ProjectID_Pattern.MatchString(m.GetProjectID()) { - err := CreateNodeTemplateRequestValidationError{ + return CreateNodeTemplateRequestValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetName()) < 1 { - err := CreateNodeTemplateRequestValidationError{ + return CreateNodeTemplateRequestValidationError{ field: "Name", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Desc @@ -13142,26 +7990,7 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { for idx, item := range m.GetTaints() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -13184,26 +8013,7 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -13219,26 +8029,7 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { // no validation rules for PreStartUserScript - if all { - switch v := interface{}(m.GetScaleOutExtraAddons()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "ScaleOutExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "ScaleOutExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleOutExtraAddons", @@ -13248,26 +8039,7 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetScaleInExtraAddons()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "ScaleInExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "ScaleInExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleInExtraAddons", @@ -13280,36 +8052,13 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 1024 { - err := CreateNodeTemplateRequestValidationError{ + return CreateNodeTemplateRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetRuntime()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "Runtime", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "Runtime", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "Runtime", @@ -13319,26 +8068,7 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetModule()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "Module", @@ -13348,26 +8078,7 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetScaleInPreScript()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "ScaleInPreScript", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "ScaleInPreScript", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleInPreScript", @@ -13377,26 +8088,7 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetScaleInPostScript()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "ScaleInPostScript", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "ScaleInPostScript", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleInPostScript", @@ -13406,26 +8098,7 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "Annotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateRequestValidationError{ - field: "Annotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "Annotations", @@ -13435,30 +8108,9 @@ func (m *CreateNodeTemplateRequest) validate(all bool) error { } } - if len(errors) > 0 { - return CreateNodeTemplateRequestMultiError(errors) - } - return nil } -// CreateNodeTemplateRequestMultiError is an error wrapping multiple validation -// errors returned by CreateNodeTemplateRequest.ValidateAll() if the -// designated constraints aren't met. -type CreateNodeTemplateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateNodeTemplateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateNodeTemplateRequestMultiError) AllErrors() []error { return m } - // CreateNodeTemplateRequestValidationError is the validation error returned by // CreateNodeTemplateRequest.Validate if the designated constraints aren't met. type CreateNodeTemplateRequestValidationError struct { @@ -13519,52 +8171,19 @@ var _CreateNodeTemplateRequest_ProjectID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on CreateNodeTemplateResponse 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. +// violated, an error is returned. func (m *CreateNodeTemplateResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateNodeTemplateResponse 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 -// CreateNodeTemplateResponseMultiError, or nil if none found. -func (m *CreateNodeTemplateResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -13574,30 +8193,9 @@ func (m *CreateNodeTemplateResponse) validate(all bool) error { } } - if len(errors) > 0 { - return CreateNodeTemplateResponseMultiError(errors) - } - return nil } -// CreateNodeTemplateResponseMultiError is an error wrapping multiple -// validation errors returned by CreateNodeTemplateResponse.ValidateAll() if -// the designated constraints aren't met. -type CreateNodeTemplateResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateNodeTemplateResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateNodeTemplateResponseMultiError) AllErrors() []error { return m } - // CreateNodeTemplateResponseValidationError is the validation error returned // by CreateNodeTemplateResponse.Validate if the designated constraints aren't met. type CreateNodeTemplateResponseValidationError struct { @@ -13656,26 +8254,12 @@ var _ interface { // Validate checks the field values on UpdateNodeTemplateRequest 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. +// violated, an error is returned. func (m *UpdateNodeTemplateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeTemplateRequest 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 -// UpdateNodeTemplateRequestMultiError, or nil if none found. -func (m *UpdateNodeTemplateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectID // no validation rules for NodeTemplateID @@ -13689,26 +8273,7 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { for idx, item := range m.GetTaints() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -13726,26 +8291,7 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { // no validation rules for UserScript - if all { - switch v := interface{}(m.GetUnSchedulable()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "UnSchedulable", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "UnSchedulable", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUnSchedulable()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetUnSchedulable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "UnSchedulable", @@ -13758,26 +8304,7 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -13793,26 +8320,7 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { // no validation rules for PreStartUserScript - if all { - switch v := interface{}(m.GetScaleOutExtraAddons()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "ScaleOutExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "ScaleOutExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleOutExtraAddons", @@ -13822,26 +8330,7 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetScaleInExtraAddons()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "ScaleInExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "ScaleInExtraAddons", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleInExtraAddons", @@ -13854,36 +8343,13 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - err := UpdateNodeTemplateRequestValidationError{ + return UpdateNodeTemplateRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetRuntime()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "Runtime", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "Runtime", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "Runtime", @@ -13893,26 +8359,7 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetModule()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "Module", @@ -13922,26 +8369,7 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetScaleInPreScript()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "ScaleInPreScript", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "ScaleInPreScript", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleInPreScript", @@ -13951,26 +8379,7 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetScaleInPostScript()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "ScaleInPostScript", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "ScaleInPostScript", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleInPostScript", @@ -13980,26 +8389,7 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "Annotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateRequestValidationError{ - field: "Annotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "Annotations", @@ -14009,30 +8399,9 @@ func (m *UpdateNodeTemplateRequest) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateNodeTemplateRequestMultiError(errors) - } - return nil } -// UpdateNodeTemplateRequestMultiError is an error wrapping multiple validation -// errors returned by UpdateNodeTemplateRequest.ValidateAll() if the -// designated constraints aren't met. -type UpdateNodeTemplateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeTemplateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeTemplateRequestMultiError) AllErrors() []error { return m } - // UpdateNodeTemplateRequestValidationError is the validation error returned by // UpdateNodeTemplateRequest.Validate if the designated constraints aren't met. type UpdateNodeTemplateRequestValidationError struct { @@ -14091,52 +8460,19 @@ var _ interface { // Validate checks the field values on UpdateNodeTemplateResponse 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. +// violated, an error is returned. func (m *UpdateNodeTemplateResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeTemplateResponse 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 -// UpdateNodeTemplateResponseMultiError, or nil if none found. -func (m *UpdateNodeTemplateResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -14146,30 +8482,9 @@ func (m *UpdateNodeTemplateResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateNodeTemplateResponseMultiError(errors) - } - return nil } -// UpdateNodeTemplateResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateNodeTemplateResponse.ValidateAll() if -// the designated constraints aren't met. -type UpdateNodeTemplateResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeTemplateResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeTemplateResponseMultiError) AllErrors() []error { return m } - // UpdateNodeTemplateResponseValidationError is the validation error returned // by UpdateNodeTemplateResponse.Validate if the designated constraints aren't met. type UpdateNodeTemplateResponseValidationError struct { @@ -14228,54 +8543,19 @@ var _ interface { // Validate checks the field values on DeleteNodeTemplateRequest 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. +// violated, an error is returned. func (m *DeleteNodeTemplateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteNodeTemplateRequest 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 -// DeleteNodeTemplateRequestMultiError, or nil if none found. -func (m *DeleteNodeTemplateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectID // no validation rules for NodeTemplateID - if len(errors) > 0 { - return DeleteNodeTemplateRequestMultiError(errors) - } - return nil } -// DeleteNodeTemplateRequestMultiError is an error wrapping multiple validation -// errors returned by DeleteNodeTemplateRequest.ValidateAll() if the -// designated constraints aren't met. -type DeleteNodeTemplateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteNodeTemplateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteNodeTemplateRequestMultiError) AllErrors() []error { return m } - // DeleteNodeTemplateRequestValidationError is the validation error returned by // DeleteNodeTemplateRequest.Validate if the designated constraints aren't met. type DeleteNodeTemplateRequestValidationError struct { @@ -14334,52 +8614,19 @@ var _ interface { // Validate checks the field values on DeleteNodeTemplateResponse 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. +// violated, an error is returned. func (m *DeleteNodeTemplateResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteNodeTemplateResponse 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 -// DeleteNodeTemplateResponseMultiError, or nil if none found. -func (m *DeleteNodeTemplateResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteNodeTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteNodeTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -14389,30 +8636,9 @@ func (m *DeleteNodeTemplateResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteNodeTemplateResponseMultiError(errors) - } - return nil } -// DeleteNodeTemplateResponseMultiError is an error wrapping multiple -// validation errors returned by DeleteNodeTemplateResponse.ValidateAll() if -// the designated constraints aren't met. -type DeleteNodeTemplateResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteNodeTemplateResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteNodeTemplateResponseMultiError) AllErrors() []error { return m } - // DeleteNodeTemplateResponseValidationError is the validation error returned // by DeleteNodeTemplateResponse.Validate if the designated constraints aren't met. type DeleteNodeTemplateResponseValidationError struct { @@ -14471,54 +8697,19 @@ var _ interface { // Validate checks the field values on GetNodeTemplateRequest 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. +// violated, an error is returned. func (m *GetNodeTemplateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetNodeTemplateRequest 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 -// GetNodeTemplateRequestMultiError, or nil if none found. -func (m *GetNodeTemplateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectID // no validation rules for NodeTemplateID - if len(errors) > 0 { - return GetNodeTemplateRequestMultiError(errors) - } - return nil } -// GetNodeTemplateRequestMultiError is an error wrapping multiple validation -// errors returned by GetNodeTemplateRequest.ValidateAll() if the designated -// constraints aren't met. -type GetNodeTemplateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetNodeTemplateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetNodeTemplateRequestMultiError) AllErrors() []error { return m } - // GetNodeTemplateRequestValidationError is the validation error returned by // GetNodeTemplateRequest.Validate if the designated constraints aren't met. type GetNodeTemplateRequestValidationError struct { @@ -14577,52 +8768,19 @@ var _ interface { // Validate checks the field values on GetNodeTemplateResponse 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. +// violated, an error is returned. func (m *GetNodeTemplateResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetNodeTemplateResponse 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 -// GetNodeTemplateResponseMultiError, or nil if none found. -func (m *GetNodeTemplateResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetNodeTemplateResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetNodeTemplateResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeTemplateResponseValidationError{ field: "Data", @@ -14632,26 +8790,7 @@ func (m *GetNodeTemplateResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetNodeTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetNodeTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -14661,30 +8800,9 @@ func (m *GetNodeTemplateResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetNodeTemplateResponseMultiError(errors) - } - return nil } -// GetNodeTemplateResponseMultiError is an error wrapping multiple validation -// errors returned by GetNodeTemplateResponse.ValidateAll() if the designated -// constraints aren't met. -type GetNodeTemplateResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetNodeTemplateResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetNodeTemplateResponseMultiError) AllErrors() []error { return m } - // GetNodeTemplateResponseValidationError is the validation error returned by // GetNodeTemplateResponse.Validate if the designated constraints aren't met. type GetNodeTemplateResponseValidationError struct { @@ -14743,54 +8861,19 @@ var _ interface { // Validate checks the field values on ListNodeTemplateRequest 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. +// violated, an error is returned. func (m *ListNodeTemplateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNodeTemplateRequest 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 -// ListNodeTemplateRequestMultiError, or nil if none found. -func (m *ListNodeTemplateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectID // no validation rules for NodeTemplateID - if len(errors) > 0 { - return ListNodeTemplateRequestMultiError(errors) - } - return nil } -// ListNodeTemplateRequestMultiError is an error wrapping multiple validation -// errors returned by ListNodeTemplateRequest.ValidateAll() if the designated -// constraints aren't met. -type ListNodeTemplateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNodeTemplateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNodeTemplateRequestMultiError) AllErrors() []error { return m } - // ListNodeTemplateRequestValidationError is the validation error returned by // ListNodeTemplateRequest.Validate if the designated constraints aren't met. type ListNodeTemplateRequestValidationError struct { @@ -14849,26 +8932,12 @@ var _ interface { // Validate checks the field values on ListNodeTemplateResponse 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. +// violated, an error is returned. func (m *ListNodeTemplateResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNodeTemplateResponse 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 -// ListNodeTemplateResponseMultiError, or nil if none found. -func (m *ListNodeTemplateResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -14878,26 +8947,7 @@ func (m *ListNodeTemplateResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListNodeTemplateResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListNodeTemplateResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodeTemplateResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -14909,30 +8959,9 @@ func (m *ListNodeTemplateResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListNodeTemplateResponseMultiError(errors) - } - return nil } -// ListNodeTemplateResponseMultiError is an error wrapping multiple validation -// errors returned by ListNodeTemplateResponse.ValidateAll() if the designated -// constraints aren't met. -type ListNodeTemplateResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNodeTemplateResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNodeTemplateResponseMultiError) AllErrors() []error { return m } - // ListNodeTemplateResponseValidationError is the validation error returned by // ListNodeTemplateResponse.Validate if the designated constraints aren't met. type ListNodeTemplateResponseValidationError struct { @@ -14990,26 +9019,12 @@ var _ interface { } = ListNodeTemplateResponseValidationError{} // Validate checks the field values on Project 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Project) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Project 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 ProjectMultiError, or nil if none found. -func (m *Project) ValidateAll() error { - return m.validate(true) -} - -func (m *Project) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectID // no validation rules for Name @@ -15048,79 +9063,30 @@ func (m *Project) validate(all bool) error { // no validation rules for IsSecret - { - sorted_keys := make([]string, len(m.GetCredentials())) - i := 0 - for key := range m.GetCredentials() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetCredentials()[key] - _ = val - - // no validation rules for Credentials[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ProjectValidationError{ - field: fmt.Sprintf("Credentials[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ProjectValidationError{ - field: fmt.Sprintf("Credentials[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ProjectValidationError{ - field: fmt.Sprintf("Credentials[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + for key, val := range m.GetCredentials() { + _ = val + + // no validation rules for Credentials[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ProjectValidationError{ + field: fmt.Sprintf("Credentials[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } // no validation rules for CreatTime // no validation rules for UpdateTime - if len(errors) > 0 { - return ProjectMultiError(errors) - } - return nil } -// ProjectMultiError is an error wrapping multiple validation errors returned -// by Project.ValidateAll() if the designated constraints aren't met. -type ProjectMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ProjectMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ProjectMultiError) AllErrors() []error { return m } - // ProjectValidationError is the validation error returned by Project.Validate // if the designated constraints aren't met. type ProjectValidationError struct { @@ -15176,39 +9142,21 @@ var _ interface { } = ProjectValidationError{} // Validate checks the field values on Task 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. +// definition for this message. If any rules are violated, an error is returned. func (m *Task) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Task 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 TaskMultiError, or nil if none found. -func (m *Task) ValidateAll() error { - return m.validate(true) -} - -func (m *Task) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for TaskID // no validation rules for TaskType if _, ok := _Task_Status_InLookup[m.GetStatus()]; !ok { - err := TaskValidationError{ + return TaskValidationError{ field: "Status", reason: "value must be in list [INITIALIZING RUNNING SUCCESS FAILURE TIMEOUT FORCETERMINATE]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Message @@ -15221,50 +9169,21 @@ func (m *Task) validate(all bool) error { // no validation rules for CurrentStep - { - sorted_keys := make([]string, len(m.GetSteps())) - i := 0 - for key := range m.GetSteps() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetSteps()[key] - _ = val - - // no validation rules for Steps[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TaskValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TaskValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TaskValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + for key, val := range m.GetSteps() { + _ = val + + // no validation rules for Steps[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TaskValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } // no validation rules for ClusterID @@ -15285,29 +9204,9 @@ func (m *Task) validate(all bool) error { // no validation rules for NodeGroupID - if len(errors) > 0 { - return TaskMultiError(errors) - } - return nil } -// TaskMultiError is an error wrapping multiple validation errors returned by -// Task.ValidateAll() if the designated constraints aren't met. -type TaskMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TaskMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TaskMultiError) AllErrors() []error { return m } - // TaskValidationError is the validation error returned by Task.Validate if the // designated constraints aren't met. type TaskValidationError struct { @@ -15372,26 +9271,12 @@ var _Task_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on Step 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. +// definition for this message. If any rules are violated, an error is returned. func (m *Step) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Step 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 StepMultiError, or nil if none found. -func (m *Step) ValidateAll() error { - return m.validate(true) -} - -func (m *Step) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Name // no validation rules for System @@ -15409,14 +9294,10 @@ func (m *Step) validate(all bool) error { // no validation rules for ExecutionTime if _, ok := _Step_Status_InLookup[m.GetStatus()]; !ok { - err := StepValidationError{ + return StepValidationError{ field: "Status", reason: "value must be in list [NOTSTARTED RUNNING SUCCESS FAILURE TIMEOUT FORCETERMINATE]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Message @@ -15433,29 +9314,9 @@ func (m *Step) validate(all bool) error { // no validation rules for AllowSkip - if len(errors) > 0 { - return StepMultiError(errors) - } - return nil } -// StepMultiError is an error wrapping multiple validation errors returned by -// Step.ValidateAll() if the designated constraints aren't met. -type StepMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m StepMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m StepMultiError) AllErrors() []error { return m } - // StepValidationError is the validation error returned by Step.Validate if the // designated constraints aren't met. type StepValidationError struct { @@ -15520,26 +9381,12 @@ var _Step_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on TkeCidr 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *TkeCidr) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TkeCidr 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 TkeCidrMultiError, or nil if none found. -func (m *TkeCidr) ValidateAll() error { - return m.validate(true) -} - -func (m *TkeCidr) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for VPC // no validation rules for CIDR @@ -15554,29 +9401,9 @@ func (m *TkeCidr) validate(all bool) error { // no validation rules for UpdateTime - if len(errors) > 0 { - return TkeCidrMultiError(errors) - } - return nil } -// TkeCidrMultiError is an error wrapping multiple validation errors returned -// by TkeCidr.ValidateAll() if the designated constraints aren't met. -type TkeCidrMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TkeCidrMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TkeCidrMultiError) AllErrors() []error { return m } - // TkeCidrValidationError is the validation error returned by TkeCidr.Validate // if the designated constraints aren't met. type TkeCidrValidationError struct { @@ -15632,27 +9459,13 @@ var _ interface { } = TkeCidrValidationError{} // Validate checks the field values on TkeCidrCount 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *TkeCidrCount) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TkeCidrCount 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 TkeCidrCountMultiError, or -// nil if none found. -func (m *TkeCidrCount) ValidateAll() error { - return m.validate(true) -} - -func (m *TkeCidrCount) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Count // no validation rules for VPC @@ -15661,29 +9474,9 @@ func (m *TkeCidrCount) validate(all bool) error { // no validation rules for Status - if len(errors) > 0 { - return TkeCidrCountMultiError(errors) - } - return nil } -// TkeCidrCountMultiError is an error wrapping multiple validation errors -// returned by TkeCidrCount.ValidateAll() if the designated constraints aren't met. -type TkeCidrCountMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TkeCidrCountMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TkeCidrCountMultiError) AllErrors() []error { return m } - // TkeCidrCountValidationError is the validation error returned by // TkeCidrCount.Validate if the designated constraints aren't met. type TkeCidrCountValidationError struct { @@ -15739,279 +9532,151 @@ var _ interface { } = TkeCidrCountValidationError{} // Validate checks the field values on CreateClusterReq 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CreateClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateClusterReq 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 -// CreateClusterReqMultiError, or nil if none found. -func (m *CreateClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetClusterName()); l < 1 || l > 1024 { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "ClusterName", reason: "value length must be between 1 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 1 || l > 100 { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "Region", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateClusterReq_Region_Pattern.MatchString(m.GetRegion()) { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 100 { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateClusterReq_ProjectID_Pattern.MatchString(m.GetProjectID()) { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 100 { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateClusterReq_BusinessID_Pattern.MatchString(m.GetBusinessID()) { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "BusinessID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _CreateClusterReq_Environment_InLookup[m.GetEnvironment()]; !ok { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "Environment", reason: "value must be in list [stag debug prod]", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _CreateClusterReq_EngineType_InLookup[m.GetEngineType()]; !ok { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "EngineType", reason: "value must be in list [k8s mesos]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for IsExclusive if _, ok := _CreateClusterReq_ClusterType_InLookup[m.GetClusterType()]; !ok { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "ClusterType", reason: "value must be in list [federation single]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for FederationClusterID if len(m.GetLabels()) > 20 { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for OnlyCreateInfo - { - sorted_keys := make([]string, len(m.GetBcsAddons())) - i := 0 - for key := range m.GetBcsAddons() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetBcsAddons()[key] - _ = val - - // no validation rules for BcsAddons[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + for key, val := range m.GetBcsAddons() { + _ = val + + // no validation rules for BcsAddons[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } - { - sorted_keys := make([]string, len(m.GetExtraAddons())) - i := 0 - for key := range m.GetExtraAddons() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetExtraAddons()[key] - _ = val - - // no validation rules for ExtraAddons[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + for key, val := range m.GetExtraAddons() { + _ = val + + // no validation rules for ExtraAddons[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } // no validation rules for CloudID @@ -16019,14 +9684,10 @@ func (m *CreateClusterReq) validate(all bool) error { // no validation rules for ManageType if m.GetNetworkSettings() == nil { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "NetworkSettings", reason: "value is required", } - if !all { - return err - } - errors = append(errors, err) } if a := m.GetNetworkSettings(); a != nil { @@ -16034,40 +9695,17 @@ func (m *CreateClusterReq) validate(all bool) error { } if m.GetClusterBasicSettings() == nil { - err := CreateClusterReqValidationError{ + return CreateClusterReqValidationError{ field: "ClusterBasicSettings", reason: "value is required", } - if !all { - return err - } - errors = append(errors, err) } if a := m.GetClusterBasicSettings(); a != nil { } - if all { - switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: "ClusterAdvanceSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: "ClusterAdvanceSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: "ClusterAdvanceSettings", @@ -16077,26 +9715,7 @@ func (m *CreateClusterReq) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetNodeSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: "NodeSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: "NodeSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: "NodeSettings", @@ -16117,26 +9736,7 @@ func (m *CreateClusterReq) validate(all bool) error { for idx, item := range m.GetInstances() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: fmt.Sprintf("Instances[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: fmt.Sprintf("Instances[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: fmt.Sprintf("Instances[%v]", idx), @@ -16169,26 +9769,7 @@ func (m *CreateClusterReq) validate(all bool) error { for idx, item := range m.GetNodeGroups() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: fmt.Sprintf("NodeGroups[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateClusterReqValidationError{ - field: fmt.Sprintf("NodeGroups[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: fmt.Sprintf("NodeGroups[%v]", idx), @@ -16202,30 +9783,11 @@ func (m *CreateClusterReq) validate(all bool) error { // no validation rules for IsMixed - if len(errors) > 0 { - return CreateClusterReqMultiError(errors) - } + // no validation rules for ClusterIamRole return nil } -// CreateClusterReqMultiError is an error wrapping multiple validation errors -// returned by CreateClusterReq.ValidateAll() if the designated constraints -// aren't met. -type CreateClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateClusterReqMultiError) AllErrors() []error { return m } - // CreateClusterReqValidationError is the validation error returned by // CreateClusterReq.Validate if the designated constraints aren't met. type CreateClusterReqValidationError struct { @@ -16303,53 +9865,20 @@ var _CreateClusterReq_ClusterType_InLookup = map[string]struct{}{ } // Validate checks the field values on CreateClusterResp 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CreateClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateClusterResp 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 -// CreateClusterRespMultiError, or nil if none found. -func (m *CreateClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterRespValidationError{ field: "Data", @@ -16359,26 +9888,7 @@ func (m *CreateClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterRespValidationError{ field: "Task", @@ -16388,26 +9898,7 @@ func (m *CreateClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterRespValidationError{ field: "WebAnnotations", @@ -16417,30 +9908,9 @@ func (m *CreateClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return CreateClusterRespMultiError(errors) - } - return nil } -// CreateClusterRespMultiError is an error wrapping multiple validation errors -// returned by CreateClusterResp.ValidateAll() if the designated constraints -// aren't met. -type CreateClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateClusterRespMultiError) AllErrors() []error { return m } - // CreateClusterRespValidationError is the validation error returned by // CreateClusterResp.Validate if the designated constraints aren't met. type CreateClusterRespValidationError struct { @@ -16499,79 +9969,34 @@ var _ interface { // Validate checks the field values on AddSubnetToClusterReq 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. +// violated, an error is returned. func (m *AddSubnetToClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AddSubnetToClusterReq 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 -// AddSubnetToClusterReqMultiError, or nil if none found. -func (m *AddSubnetToClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *AddSubnetToClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := AddSubnetToClusterReqValidationError{ + return AddSubnetToClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := AddSubnetToClusterReqValidationError{ + return AddSubnetToClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_AddSubnetToClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := AddSubnetToClusterReqValidationError{ + return AddSubnetToClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetSubnet()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddSubnetToClusterReqValidationError{ - field: "Subnet", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddSubnetToClusterReqValidationError{ - field: "Subnet", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSubnet()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetSubnet()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddSubnetToClusterReqValidationError{ field: "Subnet", @@ -16583,30 +10008,9 @@ func (m *AddSubnetToClusterReq) validate(all bool) error { // no validation rules for Operator - if len(errors) > 0 { - return AddSubnetToClusterReqMultiError(errors) - } - return nil } -// AddSubnetToClusterReqMultiError is an error wrapping multiple validation -// errors returned by AddSubnetToClusterReq.ValidateAll() if the designated -// constraints aren't met. -type AddSubnetToClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AddSubnetToClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AddSubnetToClusterReqMultiError) AllErrors() []error { return m } - // AddSubnetToClusterReqValidationError is the validation error returned by // AddSubnetToClusterReq.Validate if the designated constraints aren't met. type AddSubnetToClusterReqValidationError struct { @@ -16667,52 +10071,19 @@ var _AddSubnetToClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-] // Validate checks the field values on AddSubnetToClusterResp 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. +// violated, an error is returned. func (m *AddSubnetToClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AddSubnetToClusterResp 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 -// AddSubnetToClusterRespMultiError, or nil if none found. -func (m *AddSubnetToClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *AddSubnetToClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddSubnetToClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddSubnetToClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddSubnetToClusterRespValidationError{ field: "WebAnnotations", @@ -16722,30 +10093,9 @@ func (m *AddSubnetToClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return AddSubnetToClusterRespMultiError(errors) - } - return nil } -// AddSubnetToClusterRespMultiError is an error wrapping multiple validation -// errors returned by AddSubnetToClusterResp.ValidateAll() if the designated -// constraints aren't met. -type AddSubnetToClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AddSubnetToClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AddSubnetToClusterRespMultiError) AllErrors() []error { return m } - // AddSubnetToClusterRespValidationError is the validation error returned by // AddSubnetToClusterResp.Validate if the designated constraints aren't met. type AddSubnetToClusterRespValidationError struct { @@ -16804,81 +10154,36 @@ var _ interface { // Validate checks the field values on SwitchClusterUnderlayNetworkReq 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. +// violated, an error is returned. func (m *SwitchClusterUnderlayNetworkReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SwitchClusterUnderlayNetworkReq 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 -// SwitchClusterUnderlayNetworkReqMultiError, or nil if none found. -func (m *SwitchClusterUnderlayNetworkReq) ValidateAll() error { - return m.validate(true) -} - -func (m *SwitchClusterUnderlayNetworkReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := SwitchClusterUnderlayNetworkReqValidationError{ + return SwitchClusterUnderlayNetworkReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := SwitchClusterUnderlayNetworkReqValidationError{ + return SwitchClusterUnderlayNetworkReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_SwitchClusterUnderlayNetworkReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := SwitchClusterUnderlayNetworkReqValidationError{ + return SwitchClusterUnderlayNetworkReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Disable - if all { - switch v := interface{}(m.GetSubnet()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SwitchClusterUnderlayNetworkReqValidationError{ - field: "Subnet", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SwitchClusterUnderlayNetworkReqValidationError{ - field: "Subnet", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSubnet()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetSubnet()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SwitchClusterUnderlayNetworkReqValidationError{ field: "Subnet", @@ -16894,30 +10199,9 @@ func (m *SwitchClusterUnderlayNetworkReq) validate(all bool) error { // no validation rules for Operator - if len(errors) > 0 { - return SwitchClusterUnderlayNetworkReqMultiError(errors) - } - return nil } -// SwitchClusterUnderlayNetworkReqMultiError is an error wrapping multiple -// validation errors returned by SwitchClusterUnderlayNetworkReq.ValidateAll() -// if the designated constraints aren't met. -type SwitchClusterUnderlayNetworkReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SwitchClusterUnderlayNetworkReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SwitchClusterUnderlayNetworkReqMultiError) AllErrors() []error { return m } - // SwitchClusterUnderlayNetworkReqValidationError is the validation error // returned by SwitchClusterUnderlayNetworkReq.Validate if the designated // constraints aren't met. @@ -16979,53 +10263,19 @@ var _SwitchClusterUnderlayNetworkReq_ClusterID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on SwitchClusterUnderlayNetworkResp 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. +// are violated, an error is returned. func (m *SwitchClusterUnderlayNetworkResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SwitchClusterUnderlayNetworkResp 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 -// SwitchClusterUnderlayNetworkRespMultiError, or nil if none found. -func (m *SwitchClusterUnderlayNetworkResp) ValidateAll() error { - return m.validate(true) -} - -func (m *SwitchClusterUnderlayNetworkResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SwitchClusterUnderlayNetworkRespValidationError{ field: "Task", @@ -17035,26 +10285,7 @@ func (m *SwitchClusterUnderlayNetworkResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SwitchClusterUnderlayNetworkRespValidationError{ field: "WebAnnotations", @@ -17064,26 +10295,7 @@ func (m *SwitchClusterUnderlayNetworkResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ - field: "Cluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ - field: "Cluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SwitchClusterUnderlayNetworkRespValidationError{ field: "Cluster", @@ -17093,31 +10305,9 @@ func (m *SwitchClusterUnderlayNetworkResp) validate(all bool) error { } } - if len(errors) > 0 { - return SwitchClusterUnderlayNetworkRespMultiError(errors) - } - return nil } -// SwitchClusterUnderlayNetworkRespMultiError is an error wrapping multiple -// validation errors returned by -// SwitchClusterUnderlayNetworkResp.ValidateAll() if the designated -// constraints aren't met. -type SwitchClusterUnderlayNetworkRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SwitchClusterUnderlayNetworkRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SwitchClusterUnderlayNetworkRespMultiError) AllErrors() []error { return m } - // SwitchClusterUnderlayNetworkRespValidationError is the validation error // returned by SwitchClusterUnderlayNetworkResp.Validate if the designated // constraints aren't met. @@ -17177,219 +10367,126 @@ var _ interface { // Validate checks the field values on CreateVirtualClusterReq 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. +// violated, an error is returned. func (m *CreateVirtualClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateVirtualClusterReq 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 -// CreateVirtualClusterReqMultiError, or nil if none found. -func (m *CreateVirtualClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateVirtualClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetClusterName()); l < 1 || l > 1024 { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "ClusterName", reason: "value length must be between 1 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 1 || l > 100 { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "Region", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateVirtualClusterReq_Region_Pattern.MatchString(m.GetRegion()) { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 100 { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateVirtualClusterReq_ProjectID_Pattern.MatchString(m.GetProjectID()) { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 100 { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateVirtualClusterReq_BusinessID_Pattern.MatchString(m.GetBusinessID()) { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "BusinessID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _CreateVirtualClusterReq_Environment_InLookup[m.GetEnvironment()]; !ok { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "Environment", reason: "value must be in list [stag debug prod]", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _CreateVirtualClusterReq_EngineType_InLookup[m.GetEngineType()]; !ok { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "EngineType", reason: "value must be in list [k8s mesos]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for IsExclusive if _, ok := _CreateVirtualClusterReq_ClusterType_InLookup[m.GetClusterType()]; !ok { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "ClusterType", reason: "value must be in list [federation single virtual]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for HostClusterID if _, ok := _CreateVirtualClusterReq_HostClusterNetwork_InLookup[m.GetHostClusterNetwork()]; !ok { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "HostClusterNetwork", reason: "value must be in list [devnet idc ]", } - if !all { - return err - } - errors = append(errors, err) } if len(m.GetLabels()) > 20 { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - err := CreateVirtualClusterReqValidationError{ + return CreateVirtualClusterReqValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for OnlyCreateInfo - if all { - switch v := interface{}(m.GetNetworkSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "NetworkSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "NetworkSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "NetworkSettings", @@ -17399,26 +10496,7 @@ func (m *CreateVirtualClusterReq) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetClusterBasicSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "ClusterBasicSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "ClusterBasicSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "ClusterBasicSettings", @@ -17428,26 +10506,7 @@ func (m *CreateVirtualClusterReq) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "ClusterAdvanceSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "ClusterAdvanceSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "ClusterAdvanceSettings", @@ -17457,26 +10516,7 @@ func (m *CreateVirtualClusterReq) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetNodeSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "NodeSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "NodeSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "NodeSettings", @@ -17490,26 +10530,7 @@ func (m *CreateVirtualClusterReq) validate(all bool) error { // no validation rules for Description - if all { - switch v := interface{}(m.GetNs()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "Ns", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateVirtualClusterReqValidationError{ - field: "Ns", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNs()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNs()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "Ns", @@ -17521,30 +10542,9 @@ func (m *CreateVirtualClusterReq) validate(all bool) error { // no validation rules for ProjectCode - if len(errors) > 0 { - return CreateVirtualClusterReqMultiError(errors) - } - return nil } -// CreateVirtualClusterReqMultiError is an error wrapping multiple validation -// errors returned by CreateVirtualClusterReq.ValidateAll() if the designated -// constraints aren't met. -type CreateVirtualClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateVirtualClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateVirtualClusterReqMultiError) AllErrors() []error { return m } - // CreateVirtualClusterReqValidationError is the validation error returned by // CreateVirtualClusterReq.Validate if the designated constraints aren't met. type CreateVirtualClusterReqValidationError struct { @@ -17631,53 +10631,20 @@ var _CreateVirtualClusterReq_HostClusterNetwork_InLookup = map[string]struct{}{ } // Validate checks the field values on NamespaceInfo 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NamespaceInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NamespaceInfo 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 NamespaceInfoMultiError, or -// nil if none found. -func (m *NamespaceInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *NamespaceInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Name // no validation rules for Labels // no validation rules for Annotations - if all { - switch v := interface{}(m.GetQuota()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NamespaceInfoValidationError{ - field: "Quota", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NamespaceInfoValidationError{ - field: "Quota", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NamespaceInfoValidationError{ field: "Quota", @@ -17687,30 +10654,9 @@ func (m *NamespaceInfo) validate(all bool) error { } } - if len(errors) > 0 { - return NamespaceInfoMultiError(errors) - } - return nil } -// NamespaceInfoMultiError is an error wrapping multiple validation errors -// returned by NamespaceInfo.ValidateAll() if the designated constraints -// aren't met. -type NamespaceInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NamespaceInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NamespaceInfoMultiError) AllErrors() []error { return m } - // NamespaceInfoValidationError is the validation error returned by // NamespaceInfo.Validate if the designated constraints aren't met. type NamespaceInfoValidationError struct { @@ -17766,27 +10712,13 @@ var _ interface { } = NamespaceInfoValidationError{} // Validate checks the field values on NamespaceQuota 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NamespaceQuota) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NamespaceQuota 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 NamespaceQuotaMultiError, -// or nil if none found. -func (m *NamespaceQuota) ValidateAll() error { - return m.validate(true) -} - -func (m *NamespaceQuota) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CpuRequests // no validation rules for CpuLimits @@ -17795,30 +10727,9 @@ func (m *NamespaceQuota) validate(all bool) error { // no validation rules for MemoryLimits - if len(errors) > 0 { - return NamespaceQuotaMultiError(errors) - } - return nil } -// NamespaceQuotaMultiError is an error wrapping multiple validation errors -// returned by NamespaceQuota.ValidateAll() if the designated constraints -// aren't met. -type NamespaceQuotaMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NamespaceQuotaMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NamespaceQuotaMultiError) AllErrors() []error { return m } - // NamespaceQuotaValidationError is the validation error returned by // NamespaceQuota.Validate if the designated constraints aren't met. type NamespaceQuotaValidationError struct { @@ -17875,52 +10786,19 @@ var _ interface { // Validate checks the field values on CreateVirtualClusterResp 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. +// violated, an error is returned. func (m *CreateVirtualClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateVirtualClusterResp 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 -// CreateVirtualClusterRespMultiError, or nil if none found. -func (m *CreateVirtualClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateVirtualClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateVirtualClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateVirtualClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterRespValidationError{ field: "Data", @@ -17930,26 +10808,7 @@ func (m *CreateVirtualClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateVirtualClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateVirtualClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterRespValidationError{ field: "Task", @@ -17959,26 +10818,7 @@ func (m *CreateVirtualClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateVirtualClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateVirtualClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterRespValidationError{ field: "WebAnnotations", @@ -17988,30 +10828,9 @@ func (m *CreateVirtualClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return CreateVirtualClusterRespMultiError(errors) - } - return nil } -// CreateVirtualClusterRespMultiError is an error wrapping multiple validation -// errors returned by CreateVirtualClusterResp.ValidateAll() if the designated -// constraints aren't met. -type CreateVirtualClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateVirtualClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateVirtualClusterRespMultiError) AllErrors() []error { return m } - // CreateVirtualClusterRespValidationError is the validation error returned by // CreateVirtualClusterResp.Validate if the designated constraints aren't met. type CreateVirtualClusterRespValidationError struct { @@ -18069,62 +10888,23 @@ var _ interface { } = CreateVirtualClusterRespValidationError{} // Validate checks the field values on KubeConfigReq 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *KubeConfigReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on KubeConfigReq 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 KubeConfigReqMultiError, or -// nil if none found. -func (m *KubeConfigReq) ValidateAll() error { - return m.validate(true) -} - -func (m *KubeConfigReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetKubeConfig()) < 1 { - err := KubeConfigReqValidationError{ + return KubeConfigReqValidationError{ field: "KubeConfig", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return KubeConfigReqMultiError(errors) } return nil } -// KubeConfigReqMultiError is an error wrapping multiple validation errors -// returned by KubeConfigReq.ValidateAll() if the designated constraints -// aren't met. -type KubeConfigReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m KubeConfigReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m KubeConfigReqMultiError) AllErrors() []error { return m } - // KubeConfigReqValidationError is the validation error returned by // KubeConfigReq.Validate if the designated constraints aren't met. type KubeConfigReqValidationError struct { @@ -18181,100 +10961,49 @@ var _ interface { // Validate checks the field values on KubeConfigConnectReq 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. +// violated, an error is returned. func (m *KubeConfigConnectReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on KubeConfigConnectReq 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 -// KubeConfigConnectReqMultiError, or nil if none found. -func (m *KubeConfigConnectReq) ValidateAll() error { - return m.validate(true) -} - -func (m *KubeConfigConnectReq) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID // no validation rules for IsExtranet if l := utf8.RuneCountInString(m.GetCloudID()); l < 1 || l > 1024 { - err := KubeConfigConnectReqValidationError{ + return KubeConfigConnectReqValidationError{ field: "CloudID", reason: "value length must be between 1 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) > 1024 { - err := KubeConfigConnectReqValidationError{ + return KubeConfigConnectReqValidationError{ field: "AccountID", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - err := KubeConfigConnectReqValidationError{ + return KubeConfigConnectReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if !_KubeConfigConnectReq_Region_Pattern.MatchString(m.GetRegion()) { - err := KubeConfigConnectReqValidationError{ + return KubeConfigConnectReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ResourceGroupName - if len(errors) > 0 { - return KubeConfigConnectReqMultiError(errors) - } - return nil } -// KubeConfigConnectReqMultiError is an error wrapping multiple validation -// errors returned by KubeConfigConnectReq.ValidateAll() if the designated -// constraints aren't met. -type KubeConfigConnectReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m KubeConfigConnectReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m KubeConfigConnectReqMultiError) AllErrors() []error { return m } - // KubeConfigConnectReqValidationError is the validation error returned by // KubeConfigConnectReq.Validate if the designated constraints aren't met. type KubeConfigConnectReqValidationError struct { @@ -18334,57 +11063,22 @@ var _ interface { var _KubeConfigConnectReq_Region_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on KubeConfigResp 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *KubeConfigResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on KubeConfigResp 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 KubeConfigRespMultiError, -// or nil if none found. -func (m *KubeConfigResp) ValidateAll() error { - return m.validate(true) -} - -func (m *KubeConfigResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return KubeConfigRespMultiError(errors) - } - return nil } -// KubeConfigRespMultiError is an error wrapping multiple validation errors -// returned by KubeConfigResp.ValidateAll() if the designated constraints -// aren't met. -type KubeConfigRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m KubeConfigRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m KubeConfigRespMultiError) AllErrors() []error { return m } - // KubeConfigRespValidationError is the validation error returned by // KubeConfigResp.Validate if the designated constraints aren't met. type KubeConfigRespValidationError struct { @@ -18441,56 +11135,21 @@ var _ interface { // Validate checks the field values on KubeConfigConnectResp 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. +// violated, an error is returned. func (m *KubeConfigConnectResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on KubeConfigConnectResp 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 -// KubeConfigConnectRespMultiError, or nil if none found. -func (m *KubeConfigConnectResp) ValidateAll() error { - return m.validate(true) -} - -func (m *KubeConfigConnectResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return KubeConfigConnectRespMultiError(errors) - } - return nil } -// KubeConfigConnectRespMultiError is an error wrapping multiple validation -// errors returned by KubeConfigConnectResp.ValidateAll() if the designated -// constraints aren't met. -type KubeConfigConnectRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m KubeConfigConnectRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m KubeConfigConnectRespMultiError) AllErrors() []error { return m } - // KubeConfigConnectRespValidationError is the validation error returned by // KubeConfigConnectResp.Validate if the designated constraints aren't met. type KubeConfigConnectRespValidationError struct { @@ -18548,27 +11207,13 @@ var _ interface { } = KubeConfigConnectRespValidationError{} // Validate checks the field values on ImportCloudMode 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ImportCloudMode) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ImportCloudMode 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 -// ImportCloudModeMultiError, or nil if none found. -func (m *ImportCloudMode) ValidateAll() error { - return m.validate(true) -} - -func (m *ImportCloudMode) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for KubeConfig @@ -18577,30 +11222,9 @@ func (m *ImportCloudMode) validate(all bool) error { // no validation rules for ResourceGroup - if len(errors) > 0 { - return ImportCloudModeMultiError(errors) - } - return nil } -// ImportCloudModeMultiError is an error wrapping multiple validation errors -// returned by ImportCloudMode.ValidateAll() if the designated constraints -// aren't met. -type ImportCloudModeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ImportCloudModeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ImportCloudModeMultiError) AllErrors() []error { return m } - // ImportCloudModeValidationError is the validation error returned by // ImportCloudMode.Validate if the designated constraints aren't met. type ImportCloudModeValidationError struct { @@ -18656,161 +11280,88 @@ var _ interface { } = ImportCloudModeValidationError{} // Validate checks the field values on ImportClusterReq 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ImportClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ImportClusterReq 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 -// ImportClusterReqMultiError, or nil if none found. -func (m *ImportClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *ImportClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetClusterName()); l < 1 || l > 1024 { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "ClusterName", reason: "value length must be between 1 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Description if l := utf8.RuneCountInString(m.GetProvider()); l < 1 || l > 1024 { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "Provider", reason: "value length must be between 1 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if !_ImportClusterReq_Region_Pattern.MatchString(m.GetRegion()) { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetProjectID()); l < 1 || l > 100 { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "ProjectID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_ImportClusterReq_ProjectID_Pattern.MatchString(m.GetProjectID()) { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetBusinessID()); l < 1 || l > 100 { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "BusinessID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_ImportClusterReq_BusinessID_Pattern.MatchString(m.GetBusinessID()) { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "BusinessID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _ImportClusterReq_Environment_InLookup[m.GetEnvironment()]; !ok { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "Environment", reason: "value must be in list [stag debug prod]", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _ImportClusterReq_EngineType_InLookup[m.GetEngineType()]; !ok { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "EngineType", reason: "value must be in list [k8s mesos ]", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetIsExclusive()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ImportClusterReqValidationError{ - field: "IsExclusive", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ImportClusterReqValidationError{ - field: "IsExclusive", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ImportClusterReqValidationError{ field: "IsExclusive", @@ -18821,47 +11372,31 @@ func (m *ImportClusterReq) validate(all bool) error { } if _, ok := _ImportClusterReq_ClusterType_InLookup[m.GetClusterType()]; !ok { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "ClusterType", reason: "value must be in list [federation single ]", } - if !all { - return err - } - errors = append(errors, err) } if len(m.GetLabels()) > 20 { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 1 || l > 1024 { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "Creator", reason: "value length must be between 1 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if m.GetCloudMode() == nil { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "CloudMode", reason: "value is required", } - if !all { - return err - } - errors = append(errors, err) } if a := m.GetCloudMode(); a != nil { @@ -18881,47 +11416,20 @@ func (m *ImportClusterReq) validate(all bool) error { // no validation rules for IsShared if utf8.RuneCountInString(m.GetVersion()) > 1024 { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "Version", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) > 1024 { - err := ImportClusterReqValidationError{ + return ImportClusterReqValidationError{ field: "AccountID", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetArea()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ImportClusterReqValidationError{ - field: "Area", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ImportClusterReqValidationError{ - field: "Area", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ImportClusterReqValidationError{ field: "Area", @@ -18931,30 +11439,9 @@ func (m *ImportClusterReq) validate(all bool) error { } } - if len(errors) > 0 { - return ImportClusterReqMultiError(errors) - } - return nil } -// ImportClusterReqMultiError is an error wrapping multiple validation errors -// returned by ImportClusterReq.ValidateAll() if the designated constraints -// aren't met. -type ImportClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ImportClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ImportClusterReqMultiError) AllErrors() []error { return m } - // ImportClusterReqValidationError is the validation error returned by // ImportClusterReq.Validate if the designated constraints aren't met. type ImportClusterReqValidationError struct { @@ -19034,53 +11521,20 @@ var _ImportClusterReq_ClusterType_InLookup = map[string]struct{}{ } // Validate checks the field values on ImportClusterResp 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ImportClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ImportClusterResp 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 -// ImportClusterRespMultiError, or nil if none found. -func (m *ImportClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *ImportClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ImportClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ImportClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ImportClusterRespValidationError{ field: "Data", @@ -19090,30 +11544,9 @@ func (m *ImportClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return ImportClusterRespMultiError(errors) - } - return nil } -// ImportClusterRespMultiError is an error wrapping multiple validation errors -// returned by ImportClusterResp.ValidateAll() if the designated constraints -// aren't met. -type ImportClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ImportClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ImportClusterRespMultiError) AllErrors() []error { return m } - // ImportClusterRespValidationError is the validation error returned by // ImportClusterResp.Validate if the designated constraints aren't met. type ImportClusterRespValidationError struct { @@ -19172,87 +11605,40 @@ var _ interface { // Validate checks the field values on DeleteVirtualClusterReq 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. +// violated, an error is returned. func (m *DeleteVirtualClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteVirtualClusterReq 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 -// DeleteVirtualClusterReqMultiError, or nil if none found. -func (m *DeleteVirtualClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteVirtualClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := DeleteVirtualClusterReqValidationError{ + return DeleteVirtualClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := DeleteVirtualClusterReqValidationError{ + return DeleteVirtualClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteVirtualClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := DeleteVirtualClusterReqValidationError{ + return DeleteVirtualClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for OnlyDeleteInfo // no validation rules for Operator - if len(errors) > 0 { - return DeleteVirtualClusterReqMultiError(errors) - } - return nil } -// DeleteVirtualClusterReqMultiError is an error wrapping multiple validation -// errors returned by DeleteVirtualClusterReq.ValidateAll() if the designated -// constraints aren't met. -type DeleteVirtualClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteVirtualClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteVirtualClusterReqMultiError) AllErrors() []error { return m } - // DeleteVirtualClusterReqValidationError is the validation error returned by // DeleteVirtualClusterReq.Validate if the designated constraints aren't met. type DeleteVirtualClusterReqValidationError struct { @@ -19313,52 +11699,19 @@ var _DeleteVirtualClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on DeleteVirtualClusterResp 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. +// violated, an error is returned. func (m *DeleteVirtualClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteVirtualClusterResp 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 -// DeleteVirtualClusterRespMultiError, or nil if none found. -func (m *DeleteVirtualClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteVirtualClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteVirtualClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteVirtualClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteVirtualClusterRespValidationError{ field: "Data", @@ -19368,26 +11721,7 @@ func (m *DeleteVirtualClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteVirtualClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteVirtualClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteVirtualClusterRespValidationError{ field: "Task", @@ -19397,26 +11731,7 @@ func (m *DeleteVirtualClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteVirtualClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteVirtualClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteVirtualClusterRespValidationError{ field: "WebAnnotations", @@ -19426,30 +11741,9 @@ func (m *DeleteVirtualClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteVirtualClusterRespMultiError(errors) - } - return nil } -// DeleteVirtualClusterRespMultiError is an error wrapping multiple validation -// errors returned by DeleteVirtualClusterResp.ValidateAll() if the designated -// constraints aren't met. -type DeleteVirtualClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteVirtualClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteVirtualClusterRespMultiError) AllErrors() []error { return m } - // DeleteVirtualClusterRespValidationError is the validation error returned by // DeleteVirtualClusterResp.Validate if the designated constraints aren't met. type DeleteVirtualClusterRespValidationError struct { @@ -19508,79 +11802,34 @@ var _ interface { // Validate checks the field values on UpdateVirtualClusterQuotaReq 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. +// violated, an error is returned. func (m *UpdateVirtualClusterQuotaReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateVirtualClusterQuotaReq 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 -// UpdateVirtualClusterQuotaReqMultiError, or nil if none found. -func (m *UpdateVirtualClusterQuotaReq) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateVirtualClusterQuotaReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := UpdateVirtualClusterQuotaReqValidationError{ + return UpdateVirtualClusterQuotaReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := UpdateVirtualClusterQuotaReqValidationError{ + return UpdateVirtualClusterQuotaReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateVirtualClusterQuotaReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := UpdateVirtualClusterQuotaReqValidationError{ + return UpdateVirtualClusterQuotaReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetQuota()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateVirtualClusterQuotaReqValidationError{ - field: "Quota", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateVirtualClusterQuotaReqValidationError{ - field: "Quota", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateVirtualClusterQuotaReqValidationError{ field: "Quota", @@ -19591,40 +11840,15 @@ func (m *UpdateVirtualClusterQuotaReq) validate(all bool) error { } if utf8.RuneCountInString(m.GetUpdater()) > 1024 { - err := UpdateVirtualClusterQuotaReqValidationError{ + return UpdateVirtualClusterQuotaReqValidationError{ field: "Updater", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UpdateVirtualClusterQuotaReqMultiError(errors) } return nil } -// UpdateVirtualClusterQuotaReqMultiError is an error wrapping multiple -// validation errors returned by UpdateVirtualClusterQuotaReq.ValidateAll() if -// the designated constraints aren't met. -type UpdateVirtualClusterQuotaReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateVirtualClusterQuotaReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateVirtualClusterQuotaReqMultiError) AllErrors() []error { return m } - // UpdateVirtualClusterQuotaReqValidationError is the validation error returned // by UpdateVirtualClusterQuotaReq.Validate if the designated constraints // aren't met. @@ -19686,52 +11910,19 @@ var _UpdateVirtualClusterQuotaReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a // Validate checks the field values on UpdateVirtualClusterQuotaResp 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. +// violated, an error is returned. func (m *UpdateVirtualClusterQuotaResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateVirtualClusterQuotaResp 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 -// UpdateVirtualClusterQuotaRespMultiError, or nil if none found. -func (m *UpdateVirtualClusterQuotaResp) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateVirtualClusterQuotaResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateVirtualClusterQuotaRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateVirtualClusterQuotaRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateVirtualClusterQuotaRespValidationError{ field: "Data", @@ -19741,30 +11932,9 @@ func (m *UpdateVirtualClusterQuotaResp) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateVirtualClusterQuotaRespMultiError(errors) - } - return nil } -// UpdateVirtualClusterQuotaRespMultiError is an error wrapping multiple -// validation errors returned by UpdateVirtualClusterQuotaResp.ValidateAll() -// if the designated constraints aren't met. -type UpdateVirtualClusterQuotaRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateVirtualClusterQuotaRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateVirtualClusterQuotaRespMultiError) AllErrors() []error { return m } - // UpdateVirtualClusterQuotaRespValidationError is the validation error // returned by UpdateVirtualClusterQuotaResp.Validate if the designated // constraints aren't met. @@ -19823,58 +11993,32 @@ var _ interface { } = UpdateVirtualClusterQuotaRespValidationError{} // Validate checks the field values on DeleteClusterReq 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *DeleteClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteClusterReq 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 -// DeleteClusterReqMultiError, or nil if none found. -func (m *DeleteClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := DeleteClusterReqValidationError{ + return DeleteClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := DeleteClusterReqValidationError{ + return DeleteClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := DeleteClusterReqValidationError{ + return DeleteClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for IsForced @@ -19887,30 +12031,9 @@ func (m *DeleteClusterReq) validate(all bool) error { // no validation rules for DeleteClusterRecord - if len(errors) > 0 { - return DeleteClusterReqMultiError(errors) - } - return nil } -// DeleteClusterReqMultiError is an error wrapping multiple validation errors -// returned by DeleteClusterReq.ValidateAll() if the designated constraints -// aren't met. -type DeleteClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteClusterReqMultiError) AllErrors() []error { return m } - // DeleteClusterReqValidationError is the validation error returned by // DeleteClusterReq.Validate if the designated constraints aren't met. type DeleteClusterReqValidationError struct { @@ -19968,53 +12091,20 @@ var _ interface { var _DeleteClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteClusterResp 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *DeleteClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteClusterResp 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 -// DeleteClusterRespMultiError, or nil if none found. -func (m *DeleteClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteClusterRespValidationError{ field: "Data", @@ -20024,26 +12114,7 @@ func (m *DeleteClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteClusterRespValidationError{ field: "Task", @@ -20053,26 +12124,7 @@ func (m *DeleteClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteClusterRespValidationError{ field: "WebAnnotations", @@ -20082,30 +12134,9 @@ func (m *DeleteClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteClusterRespMultiError(errors) - } - return nil } -// DeleteClusterRespMultiError is an error wrapping multiple validation errors -// returned by DeleteClusterResp.ValidateAll() if the designated constraints -// aren't met. -type DeleteClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteClusterRespMultiError) AllErrors() []error { return m } - // DeleteClusterRespValidationError is the validation error returned by // DeleteClusterResp.Validate if the designated constraints aren't met. type DeleteClusterRespValidationError struct { @@ -20163,110 +12194,57 @@ var _ interface { } = DeleteClusterRespValidationError{} // Validate checks the field values on UpdateClusterReq 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *UpdateClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateClusterReq 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 -// UpdateClusterReqMultiError, or nil if none found. -func (m *UpdateClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetClusterID()) > 1024 { - err := UpdateClusterReqValidationError{ + return UpdateClusterReqValidationError{ field: "ClusterID", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ClusterName if utf8.RuneCountInString(m.GetProvider()) > 1024 { - err := UpdateClusterReqValidationError{ + return UpdateClusterReqValidationError{ field: "Provider", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region if utf8.RuneCountInString(m.GetVpcID()) > 1024 { - err := UpdateClusterReqValidationError{ + return UpdateClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 1024 { - err := UpdateClusterReqValidationError{ + return UpdateClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 1024 { - err := UpdateClusterReqValidationError{ + return UpdateClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Environment // no validation rules for EngineType - if all { - switch v := interface{}(m.GetIsExclusive()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "IsExclusive", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "IsExclusive", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsExclusive", @@ -20281,154 +12259,65 @@ func (m *UpdateClusterReq) validate(all bool) error { // no validation rules for FederationClusterID if len(m.GetLabels()) > 20 { - err := UpdateClusterReqValidationError{ + return UpdateClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetUpdater()) > 1024 { - err := UpdateClusterReqValidationError{ + return UpdateClusterReqValidationError{ field: "Updater", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _UpdateClusterReq_Status_InLookup[m.GetStatus()]; !ok { - err := UpdateClusterReqValidationError{ + return UpdateClusterReqValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FAILURE INITIALIZATION DELETED ]", } - if !all { - return err - } - errors = append(errors, err) - } - - { - sorted_keys := make([]string, len(m.GetBcsAddons())) - i := 0 - for key := range m.GetBcsAddons() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetBcsAddons()[key] - _ = val - - // no validation rules for BcsAddons[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } } - { - sorted_keys := make([]string, len(m.GetExtraAddons())) - i := 0 - for key := range m.GetExtraAddons() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetExtraAddons()[key] - _ = val - - // no validation rules for ExtraAddons[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + for key, val := range m.GetBcsAddons() { + _ = val + + // no validation rules for BcsAddons[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } - // no validation rules for SystemID + for key, val := range m.GetExtraAddons() { + _ = val - // no validation rules for ManageType + // no validation rules for ExtraAddons[key] - if all { - switch v := interface{}(m.GetNetworkSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "NetworkSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: + if v, ok := interface{}(val).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "NetworkSettings", + return UpdateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), reason: "embedded message failed validation", cause: err, - }) + } } } - } else if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { + + } + + // no validation rules for SystemID + + // no validation rules for ManageType + + if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "NetworkSettings", @@ -20438,26 +12327,7 @@ func (m *UpdateClusterReq) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetClusterBasicSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "ClusterBasicSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "ClusterBasicSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "ClusterBasicSettings", @@ -20467,26 +12337,7 @@ func (m *UpdateClusterReq) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "ClusterAdvanceSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "ClusterAdvanceSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "ClusterAdvanceSettings", @@ -20496,26 +12347,7 @@ func (m *UpdateClusterReq) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetNodeSettings()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "NodeSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "NodeSettings", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "NodeSettings", @@ -20533,26 +12365,7 @@ func (m *UpdateClusterReq) validate(all bool) error { // no validation rules for ExtraClusterID - if all { - switch v := interface{}(m.GetIsCommonCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "IsCommonCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "IsCommonCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetIsCommonCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetIsCommonCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsCommonCluster", @@ -20562,26 +12375,7 @@ func (m *UpdateClusterReq) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetDescription()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "Description", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "Description", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDescription()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetDescription()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "Description", @@ -20593,26 +12387,7 @@ func (m *UpdateClusterReq) validate(all bool) error { // no validation rules for ClusterCategory - if all { - switch v := interface{}(m.GetIsShared()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "IsShared", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "IsShared", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetIsShared()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetIsShared()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsShared", @@ -20625,40 +12400,17 @@ func (m *UpdateClusterReq) validate(all bool) error { // no validation rules for CreateTime if utf8.RuneCountInString(m.GetCreator()) > 1024 { - err := UpdateClusterReqValidationError{ + return UpdateClusterReqValidationError{ field: "Creator", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ImportCategory // no validation rules for CloudAccountID - if all { - switch v := interface{}(m.GetIsMixed()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "IsMixed", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterReqValidationError{ - field: "IsMixed", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetIsMixed()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetIsMixed()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsMixed", @@ -20668,30 +12420,9 @@ func (m *UpdateClusterReq) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateClusterReqMultiError(errors) - } - return nil } -// UpdateClusterReqMultiError is an error wrapping multiple validation errors -// returned by UpdateClusterReq.ValidateAll() if the designated constraints -// aren't met. -type UpdateClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateClusterReqMultiError) AllErrors() []error { return m } - // UpdateClusterReqValidationError is the validation error returned by // UpdateClusterReq.Validate if the designated constraints aren't met. type UpdateClusterReqValidationError struct { @@ -20757,53 +12488,20 @@ var _UpdateClusterReq_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on UpdateClusterResp 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *UpdateClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateClusterResp 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 -// UpdateClusterRespMultiError, or nil if none found. -func (m *UpdateClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterRespValidationError{ field: "Data", @@ -20813,26 +12511,7 @@ func (m *UpdateClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterRespValidationError{ field: "WebAnnotations", @@ -20842,30 +12521,9 @@ func (m *UpdateClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateClusterRespMultiError(errors) - } - return nil } -// UpdateClusterRespMultiError is an error wrapping multiple validation errors -// returned by UpdateClusterResp.ValidateAll() if the designated constraints -// aren't met. -type UpdateClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateClusterRespMultiError) AllErrors() []error { return m } - // UpdateClusterRespValidationError is the validation error returned by // UpdateClusterResp.Validate if the designated constraints aren't met. type UpdateClusterRespValidationError struct { @@ -20924,63 +12582,24 @@ var _ interface { // Validate checks the field values on RetryCreateClusterReq 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. +// violated, an error is returned. func (m *RetryCreateClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RetryCreateClusterReq 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 -// RetryCreateClusterReqMultiError, or nil if none found. -func (m *RetryCreateClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *RetryCreateClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetOperator()); l < 1 || l > 100 { - err := RetryCreateClusterReqValidationError{ + return RetryCreateClusterReqValidationError{ field: "Operator", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return RetryCreateClusterReqMultiError(errors) } return nil } -// RetryCreateClusterReqMultiError is an error wrapping multiple validation -// errors returned by RetryCreateClusterReq.ValidateAll() if the designated -// constraints aren't met. -type RetryCreateClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RetryCreateClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RetryCreateClusterReqMultiError) AllErrors() []error { return m } - // RetryCreateClusterReqValidationError is the validation error returned by // RetryCreateClusterReq.Validate if the designated constraints aren't met. type RetryCreateClusterReqValidationError struct { @@ -21039,52 +12658,19 @@ var _ interface { // Validate checks the field values on RetryCreateClusterResp 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. +// violated, an error is returned. func (m *RetryCreateClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RetryCreateClusterResp 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 -// RetryCreateClusterRespMultiError, or nil if none found. -func (m *RetryCreateClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *RetryCreateClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, RetryCreateClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, RetryCreateClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RetryCreateClusterRespValidationError{ field: "Data", @@ -21094,26 +12680,7 @@ func (m *RetryCreateClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, RetryCreateClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, RetryCreateClusterRespValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RetryCreateClusterRespValidationError{ field: "Task", @@ -21123,30 +12690,9 @@ func (m *RetryCreateClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return RetryCreateClusterRespMultiError(errors) - } - return nil } -// RetryCreateClusterRespMultiError is an error wrapping multiple validation -// errors returned by RetryCreateClusterResp.ValidateAll() if the designated -// constraints aren't met. -type RetryCreateClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RetryCreateClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RetryCreateClusterRespMultiError) AllErrors() []error { return m } - // RetryCreateClusterRespValidationError is the validation error returned by // RetryCreateClusterResp.Validate if the designated constraints aren't met. type RetryCreateClusterRespValidationError struct { @@ -21204,86 +12750,39 @@ var _ interface { } = RetryCreateClusterRespValidationError{} // Validate checks the field values on GetClusterReq 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *GetClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetClusterReq 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 GetClusterReqMultiError, or -// nil if none found. -func (m *GetClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *GetClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := GetClusterReqValidationError{ + return GetClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := GetClusterReqValidationError{ + return GetClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_GetClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := GetClusterReqValidationError{ + return GetClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for CloudInfo - if len(errors) > 0 { - return GetClusterReqMultiError(errors) - } - return nil } -// GetClusterReqMultiError is an error wrapping multiple validation errors -// returned by GetClusterReq.ValidateAll() if the designated constraints -// aren't met. -type GetClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetClusterReqMultiError) AllErrors() []error { return m } - // GetClusterReqValidationError is the validation error returned by // GetClusterReq.Validate if the designated constraints aren't met. type GetClusterReqValidationError struct { @@ -21341,53 +12840,20 @@ var _ interface { var _GetClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GetClusterResp 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *GetClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetClusterResp 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 GetClusterRespMultiError, -// or nil if none found. -func (m *GetClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *GetClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetClusterRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterRespValidationError{ field: "Data", @@ -21397,26 +12863,7 @@ func (m *GetClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetExtra()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetClusterRespValidationError{ - field: "Extra", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetClusterRespValidationError{ - field: "Extra", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterRespValidationError{ field: "Extra", @@ -21426,26 +12873,7 @@ func (m *GetClusterResp) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterRespValidationError{ field: "WebAnnotations", @@ -21455,30 +12883,9 @@ func (m *GetClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return GetClusterRespMultiError(errors) - } - return nil } -// GetClusterRespMultiError is an error wrapping multiple validation errors -// returned by GetClusterResp.ValidateAll() if the designated constraints -// aren't met. -type GetClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetClusterRespMultiError) AllErrors() []error { return m } - // GetClusterRespValidationError is the validation error returned by // GetClusterResp.Validate if the designated constraints aren't met. type GetClusterRespValidationError struct { @@ -21534,53 +12941,18 @@ var _ interface { } = GetClusterRespValidationError{} // Validate checks the field values on ExtraClusterInfo 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ExtraClusterInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ExtraClusterInfo 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 -// ExtraClusterInfoMultiError, or nil if none found. -func (m *ExtraClusterInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ExtraClusterInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProviderType - if len(errors) > 0 { - return ExtraClusterInfoMultiError(errors) - } - return nil } -// ExtraClusterInfoMultiError is an error wrapping multiple validation errors -// returned by ExtraClusterInfo.ValidateAll() if the designated constraints -// aren't met. -type ExtraClusterInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ExtraClusterInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ExtraClusterInfoMultiError) AllErrors() []error { return m } - // ExtraClusterInfoValidationError is the validation error returned by // ExtraClusterInfo.Validate if the designated constraints aren't met. type ExtraClusterInfoValidationError struct { @@ -21636,51 +13008,16 @@ var _ interface { } = ExtraClusterInfoValidationError{} // Validate checks the field values on CheckNodesRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CheckNodesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CheckNodesRequest 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 -// CheckNodesRequestMultiError, or nil if none found. -func (m *CheckNodesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CheckNodesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - - if len(errors) > 0 { - return CheckNodesRequestMultiError(errors) - } - return nil } -// CheckNodesRequestMultiError is an error wrapping multiple validation errors -// returned by CheckNodesRequest.ValidateAll() if the designated constraints -// aren't met. -type CheckNodesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CheckNodesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CheckNodesRequestMultiError) AllErrors() []error { return m } - // CheckNodesRequestValidationError is the validation error returned by // CheckNodesRequest.Validate if the designated constraints aren't met. type CheckNodesRequestValidationError struct { @@ -21739,102 +13076,38 @@ var _ interface { // Validate checks the field values on CheckNodesResponse 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. +// violated, an error is returned. func (m *CheckNodesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CheckNodesResponse 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 -// CheckNodesResponseMultiError, or nil if none found. -func (m *CheckNodesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CheckNodesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - { - sorted_keys := make([]string, len(m.GetData())) - i := 0 - for key := range m.GetData() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetData()[key] - _ = val - - // no validation rules for Data[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CheckNodesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CheckNodesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CheckNodesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + for key, val := range m.GetData() { + _ = val + + // no validation rules for Data[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } - } - if len(errors) > 0 { - return CheckNodesResponseMultiError(errors) } return nil } -// CheckNodesResponseMultiError is an error wrapping multiple validation errors -// returned by CheckNodesResponse.ValidateAll() if the designated constraints -// aren't met. -type CheckNodesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CheckNodesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CheckNodesResponseMultiError) AllErrors() []error { return m } - // CheckNodesResponseValidationError is the validation error returned by // CheckNodesResponse.Validate if the designated constraints aren't met. type CheckNodesResponseValidationError struct { @@ -21892,56 +13165,21 @@ var _ interface { } = CheckNodesResponseValidationError{} // Validate checks the field values on NodeResult 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NodeResult) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeResult 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 NodeResultMultiError, or -// nil if none found. -func (m *NodeResult) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeResult) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for IsExist // no validation rules for ClusterID // no validation rules for ClusterName - if len(errors) > 0 { - return NodeResultMultiError(errors) - } - return nil } -// NodeResultMultiError is an error wrapping multiple validation errors -// returned by NodeResult.ValidateAll() if the designated constraints aren't met. -type NodeResultMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeResultMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeResultMultiError) AllErrors() []error { return m } - // NodeResultValidationError is the validation error returned by // NodeResult.Validate if the designated constraints aren't met. type NodeResultValidationError struct { @@ -21998,61 +13236,22 @@ var _ interface { // Validate checks the field values on UnCordonNodeRequest 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. +// violated, an error is returned. func (m *UnCordonNodeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UnCordonNodeRequest 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 -// UnCordonNodeRequestMultiError, or nil if none found. -func (m *UnCordonNodeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UnCordonNodeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if len(m.GetClusterID()) < 1 { - err := UnCordonNodeRequestValidationError{ + return UnCordonNodeRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UnCordonNodeRequestMultiError(errors) } return nil } -// UnCordonNodeRequestMultiError is an error wrapping multiple validation -// errors returned by UnCordonNodeRequest.ValidateAll() if the designated -// constraints aren't met. -type UnCordonNodeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UnCordonNodeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UnCordonNodeRequestMultiError) AllErrors() []error { return m } - // UnCordonNodeRequestValidationError is the validation error returned by // UnCordonNodeRequest.Validate if the designated constraints aren't met. type UnCordonNodeRequestValidationError struct { @@ -22111,52 +13310,19 @@ var _ interface { // Validate checks the field values on UnCordonNodeResponse 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. +// violated, an error is returned. func (m *UnCordonNodeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UnCordonNodeResponse 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 -// UnCordonNodeResponseMultiError, or nil if none found. -func (m *UnCordonNodeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UnCordonNodeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UnCordonNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UnCordonNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UnCordonNodeResponseValidationError{ field: "Data", @@ -22166,30 +13332,9 @@ func (m *UnCordonNodeResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UnCordonNodeResponseMultiError(errors) - } - return nil } -// UnCordonNodeResponseMultiError is an error wrapping multiple validation -// errors returned by UnCordonNodeResponse.ValidateAll() if the designated -// constraints aren't met. -type UnCordonNodeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UnCordonNodeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UnCordonNodeResponseMultiError) AllErrors() []error { return m } - // UnCordonNodeResponseValidationError is the validation error returned by // UnCordonNodeResponse.Validate if the designated constraints aren't met. type UnCordonNodeResponseValidationError struct { @@ -22247,62 +13392,23 @@ var _ interface { } = UnCordonNodeResponseValidationError{} // Validate checks the field values on CordonNodeRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CordonNodeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CordonNodeRequest 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 -// CordonNodeRequestMultiError, or nil if none found. -func (m *CordonNodeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CordonNodeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if len(m.GetClusterID()) < 1 { - err := CordonNodeRequestValidationError{ + return CordonNodeRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return CordonNodeRequestMultiError(errors) } return nil } -// CordonNodeRequestMultiError is an error wrapping multiple validation errors -// returned by CordonNodeRequest.ValidateAll() if the designated constraints -// aren't met. -type CordonNodeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CordonNodeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CordonNodeRequestMultiError) AllErrors() []error { return m } - // CordonNodeRequestValidationError is the validation error returned by // CordonNodeRequest.Validate if the designated constraints aren't met. type CordonNodeRequestValidationError struct { @@ -22361,52 +13467,19 @@ var _ interface { // Validate checks the field values on CordonNodeResponse 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. +// violated, an error is returned. func (m *CordonNodeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CordonNodeResponse 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 -// CordonNodeResponseMultiError, or nil if none found. -func (m *CordonNodeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CordonNodeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CordonNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CordonNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CordonNodeResponseValidationError{ field: "Data", @@ -22416,30 +13489,9 @@ func (m *CordonNodeResponse) validate(all bool) error { } } - if len(errors) > 0 { - return CordonNodeResponseMultiError(errors) - } - return nil } -// CordonNodeResponseMultiError is an error wrapping multiple validation errors -// returned by CordonNodeResponse.ValidateAll() if the designated constraints -// aren't met. -type CordonNodeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CordonNodeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CordonNodeResponseMultiError) AllErrors() []error { return m } - // CordonNodeResponseValidationError is the validation error returned by // CordonNodeResponse.Validate if the designated constraints aren't met. type CordonNodeResponseValidationError struct { @@ -22497,47 +13549,25 @@ var _ interface { } = CordonNodeResponseValidationError{} // Validate checks the field values on UpdateNodeRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *UpdateNodeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeRequest 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 -// UpdateNodeRequestMultiError, or nil if none found. -func (m *UpdateNodeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := len(m.GetInnerIPs()); l < 1 || l > 100 { - err := UpdateNodeRequestValidationError{ + return UpdateNodeRequestValidationError{ field: "InnerIPs", reason: "value must contain between 1 and 100 items, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _UpdateNodeRequest_Status_InLookup[m.GetStatus()]; !ok { - err := UpdateNodeRequestValidationError{ + return UpdateNodeRequestValidationError{ field: "Status", reason: "value must be in list [INITIALIZATION RUNNING DELETING ADD-FAILURE REMOVE-FAILURE]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for NodeGroupID @@ -22545,40 +13575,15 @@ func (m *UpdateNodeRequest) validate(all bool) error { // no validation rules for ClusterID if len(m.GetUpdater()) < 1 { - err := UpdateNodeRequestValidationError{ + return UpdateNodeRequestValidationError{ field: "Updater", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UpdateNodeRequestMultiError(errors) } return nil } -// UpdateNodeRequestMultiError is an error wrapping multiple validation errors -// returned by UpdateNodeRequest.ValidateAll() if the designated constraints -// aren't met. -type UpdateNodeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeRequestMultiError) AllErrors() []error { return m } - // UpdateNodeRequestValidationError is the validation error returned by // UpdateNodeRequest.Validate if the designated constraints aren't met. type UpdateNodeRequestValidationError struct { @@ -22645,52 +13650,19 @@ var _UpdateNodeRequest_Status_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateNodeResponse 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. +// violated, an error is returned. func (m *UpdateNodeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeResponse 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 -// UpdateNodeResponseMultiError, or nil if none found. -func (m *UpdateNodeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeResponseValidationError{ field: "Data", @@ -22700,30 +13672,9 @@ func (m *UpdateNodeResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateNodeResponseMultiError(errors) - } - return nil } -// UpdateNodeResponseMultiError is an error wrapping multiple validation errors -// returned by UpdateNodeResponse.ValidateAll() if the designated constraints -// aren't met. -type UpdateNodeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeResponseMultiError) AllErrors() []error { return m } - // UpdateNodeResponseValidationError is the validation error returned by // UpdateNodeResponse.Validate if the designated constraints aren't met. type UpdateNodeResponseValidationError struct { @@ -22781,50 +13732,15 @@ var _ interface { } = UpdateNodeResponseValidationError{} // Validate checks the field values on NodeStatus 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NodeStatus) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeStatus 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 NodeStatusMultiError, or -// nil if none found. -func (m *NodeStatus) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeStatus) validate(all bool) error { if m == nil { return nil } - var errors []error - - if len(errors) > 0 { - return NodeStatusMultiError(errors) - } - return nil } -// NodeStatusMultiError is an error wrapping multiple validation errors -// returned by NodeStatus.ValidateAll() if the designated constraints aren't met. -type NodeStatusMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeStatusMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeStatusMultiError) AllErrors() []error { return m } - // NodeStatusValidationError is the validation error returned by // NodeStatus.Validate if the designated constraints aren't met. type NodeStatusValidationError struct { @@ -22881,48 +13797,15 @@ var _ interface { // Validate checks the field values on UpdateClusterModuleRequest 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. +// violated, an error is returned. func (m *UpdateClusterModuleRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateClusterModuleRequest 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 -// UpdateClusterModuleRequestMultiError, or nil if none found. -func (m *UpdateClusterModuleRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateClusterModuleRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID - if all { - switch v := interface{}(m.GetModule()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterModuleRequestValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterModuleRequestValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterModuleRequestValidationError{ field: "Module", @@ -22933,40 +13816,15 @@ func (m *UpdateClusterModuleRequest) validate(all bool) error { } if len(m.GetOperator()) < 1 { - err := UpdateClusterModuleRequestValidationError{ + return UpdateClusterModuleRequestValidationError{ field: "Operator", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UpdateClusterModuleRequestMultiError(errors) } return nil } -// UpdateClusterModuleRequestMultiError is an error wrapping multiple -// validation errors returned by UpdateClusterModuleRequest.ValidateAll() if -// the designated constraints aren't met. -type UpdateClusterModuleRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateClusterModuleRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateClusterModuleRequestMultiError) AllErrors() []error { return m } - // UpdateClusterModuleRequestValidationError is the validation error returned // by UpdateClusterModuleRequest.Validate if the designated constraints aren't met. type UpdateClusterModuleRequestValidationError struct { @@ -23025,52 +13883,19 @@ var _ interface { // Validate checks the field values on UpdateClusterModuleResponse 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. +// violated, an error is returned. func (m *UpdateClusterModuleResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateClusterModuleResponse 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 -// UpdateClusterModuleResponseMultiError, or nil if none found. -func (m *UpdateClusterModuleResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateClusterModuleResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateClusterModuleResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateClusterModuleResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterModuleResponseValidationError{ field: "Data", @@ -23080,30 +13905,9 @@ func (m *UpdateClusterModuleResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateClusterModuleResponseMultiError(errors) - } - return nil } -// UpdateClusterModuleResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateClusterModuleResponse.ValidateAll() if -// the designated constraints aren't met. -type UpdateClusterModuleResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateClusterModuleResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateClusterModuleResponseMultiError) AllErrors() []error { return m } - // UpdateClusterModuleResponseValidationError is the validation error returned // by UpdateClusterModuleResponse.Validate if the designated constraints // aren't met. @@ -23163,60 +13967,23 @@ var _ interface { // Validate checks the field values on RecordNodeInfoRequest 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. +// violated, an error is returned. func (m *RecordNodeInfoRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RecordNodeInfoRequest 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 -// RecordNodeInfoRequestMultiError, or nil if none found. -func (m *RecordNodeInfoRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *RecordNodeInfoRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := len(m.GetNodes()); l < 1 || l > 1000 { - err := RecordNodeInfoRequestValidationError{ + return RecordNodeInfoRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 1000 items, inclusive", } - if !all { - return err - } - errors = append(errors, err) } for idx, item := range m.GetNodes() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, RecordNodeInfoRequestValidationError{ - field: fmt.Sprintf("Nodes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, RecordNodeInfoRequestValidationError{ - field: fmt.Sprintf("Nodes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RecordNodeInfoRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -23228,30 +13995,9 @@ func (m *RecordNodeInfoRequest) validate(all bool) error { } - if len(errors) > 0 { - return RecordNodeInfoRequestMultiError(errors) - } - return nil } -// RecordNodeInfoRequestMultiError is an error wrapping multiple validation -// errors returned by RecordNodeInfoRequest.ValidateAll() if the designated -// constraints aren't met. -type RecordNodeInfoRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RecordNodeInfoRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RecordNodeInfoRequestMultiError) AllErrors() []error { return m } - // RecordNodeInfoRequestValidationError is the validation error returned by // RecordNodeInfoRequest.Validate if the designated constraints aren't met. type RecordNodeInfoRequestValidationError struct { @@ -23309,64 +14055,25 @@ var _ interface { } = RecordNodeInfoRequestValidationError{} // Validate checks the field values on GetNodeRequest 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *GetNodeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetNodeRequest 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 GetNodeRequestMultiError, -// or nil if none found. -func (m *GetNodeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetNodeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if ip := net.ParseIP(m.GetInnerIP()); ip == nil || ip.To4() == nil { - err := GetNodeRequestValidationError{ + return GetNodeRequestValidationError{ field: "InnerIP", reason: "value must be a valid IPv4 address", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ShowPwd - if len(errors) > 0 { - return GetNodeRequestMultiError(errors) - } - return nil } -// GetNodeRequestMultiError is an error wrapping multiple validation errors -// returned by GetNodeRequest.ValidateAll() if the designated constraints -// aren't met. -type GetNodeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetNodeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetNodeRequestMultiError) AllErrors() []error { return m } - // GetNodeRequestValidationError is the validation error returned by // GetNodeRequest.Validate if the designated constraints aren't met. type GetNodeRequestValidationError struct { @@ -23422,27 +14129,13 @@ var _ interface { } = GetNodeRequestValidationError{} // Validate checks the field values on GetNodeResponse 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *GetNodeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetNodeResponse 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 -// GetNodeResponseMultiError, or nil if none found. -func (m *GetNodeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetNodeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -23452,26 +14145,7 @@ func (m *GetNodeResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetNodeResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetNodeResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -23483,30 +14157,9 @@ func (m *GetNodeResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetNodeResponseMultiError(errors) - } - return nil } -// GetNodeResponseMultiError is an error wrapping multiple validation errors -// returned by GetNodeResponse.ValidateAll() if the designated constraints -// aren't met. -type GetNodeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetNodeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetNodeResponseMultiError) AllErrors() []error { return m } - // GetNodeResponseValidationError is the validation error returned by // GetNodeResponse.Validate if the designated constraints aren't met. type GetNodeResponseValidationError struct { @@ -23563,61 +14216,22 @@ var _ interface { // Validate checks the field values on GetNodeInfoRequest 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. +// violated, an error is returned. func (m *GetNodeInfoRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetNodeInfoRequest 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 -// GetNodeInfoRequestMultiError, or nil if none found. -func (m *GetNodeInfoRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetNodeInfoRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if ip := net.ParseIP(m.GetInnerIP()); ip == nil || ip.To4() == nil { - err := GetNodeInfoRequestValidationError{ + return GetNodeInfoRequestValidationError{ field: "InnerIP", reason: "value must be a valid IPv4 address", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return GetNodeInfoRequestMultiError(errors) } return nil } -// GetNodeInfoRequestMultiError is an error wrapping multiple validation errors -// returned by GetNodeInfoRequest.ValidateAll() if the designated constraints -// aren't met. -type GetNodeInfoRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetNodeInfoRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetNodeInfoRequestMultiError) AllErrors() []error { return m } - // GetNodeInfoRequestValidationError is the validation error returned by // GetNodeInfoRequest.Validate if the designated constraints aren't met. type GetNodeInfoRequestValidationError struct { @@ -23676,52 +14290,19 @@ var _ interface { // Validate checks the field values on GetNodeInfoResponse 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. +// violated, an error is returned. func (m *GetNodeInfoResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetNodeInfoResponse 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 -// GetNodeInfoResponseMultiError, or nil if none found. -func (m *GetNodeInfoResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetNodeInfoResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetNodeInfoResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetNodeInfoResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeInfoResponseValidationError{ field: "Data", @@ -23731,30 +14312,9 @@ func (m *GetNodeInfoResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetNodeInfoResponseMultiError(errors) - } - return nil } -// GetNodeInfoResponseMultiError is an error wrapping multiple validation -// errors returned by GetNodeInfoResponse.ValidateAll() if the designated -// constraints aren't met. -type GetNodeInfoResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetNodeInfoResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetNodeInfoResponseMultiError) AllErrors() []error { return m } - // GetNodeInfoResponseValidationError is the validation error returned by // GetNodeInfoResponse.Validate if the designated constraints aren't met. type GetNodeInfoResponseValidationError struct { @@ -23812,27 +14372,12 @@ var _ interface { } = GetNodeInfoResponseValidationError{} // Validate checks the field values on NodeConfig 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NodeConfig) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeConfig 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 NodeConfigMultiError, or -// nil if none found. -func (m *NodeConfig) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeConfig) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for InstanceType // no validation rules for CPU @@ -23841,29 +14386,9 @@ func (m *NodeConfig) validate(all bool) error { // no validation rules for GPU - if len(errors) > 0 { - return NodeConfigMultiError(errors) - } - return nil } -// NodeConfigMultiError is an error wrapping multiple validation errors -// returned by NodeConfig.ValidateAll() if the designated constraints aren't met. -type NodeConfigMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeConfigMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeConfigMultiError) AllErrors() []error { return m } - // NodeConfigValidationError is the validation error returned by // NodeConfig.Validate if the designated constraints aren't met. type NodeConfigValidationError struct { @@ -23919,27 +14444,12 @@ var _ interface { } = NodeConfigValidationError{} // Validate checks the field values on NodeInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NodeInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeInfo 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 NodeInfoMultiError, or nil -// if none found. -func (m *NodeInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeName // no validation rules for NodeType @@ -23958,26 +14468,7 @@ func (m *NodeInfo) validate(all bool) error { // no validation rules for Status - if all { - switch v := interface{}(m.GetInstanceConfig()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeInfoValidationError{ - field: "InstanceConfig", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeInfoValidationError{ - field: "InstanceConfig", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetInstanceConfig()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetInstanceConfig()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "InstanceConfig", @@ -23987,26 +14478,7 @@ func (m *NodeInfo) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetZoneInfo()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeInfoValidationError{ - field: "ZoneInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeInfoValidationError{ - field: "ZoneInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetZoneInfo()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetZoneInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "ZoneInfo", @@ -24016,26 +14488,7 @@ func (m *NodeInfo) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeInfoValidationError{ - field: "Group", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeInfoValidationError{ - field: "Group", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "Group", @@ -24045,26 +14498,7 @@ func (m *NodeInfo) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetNodeTemplate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeInfoValidationError{ - field: "NodeTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeInfoValidationError{ - field: "NodeTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "NodeTemplate", @@ -24074,29 +14508,9 @@ func (m *NodeInfo) validate(all bool) error { } } - if len(errors) > 0 { - return NodeInfoMultiError(errors) - } - return nil } -// NodeInfoMultiError is an error wrapping multiple validation errors returned -// by NodeInfo.ValidateAll() if the designated constraints aren't met. -type NodeInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeInfoMultiError) AllErrors() []error { return m } - // NodeInfoValidationError is the validation error returned by // NodeInfo.Validate if the designated constraints aren't met. type NodeInfoValidationError struct { @@ -24153,52 +14567,17 @@ var _ interface { // Validate checks the field values on ListCommonClusterReq 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. +// violated, an error is returned. func (m *ListCommonClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCommonClusterReq 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 -// ListCommonClusterReqMultiError, or nil if none found. -func (m *ListCommonClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCommonClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ShowVCluster - if len(errors) > 0 { - return ListCommonClusterReqMultiError(errors) - } - return nil } -// ListCommonClusterReqMultiError is an error wrapping multiple validation -// errors returned by ListCommonClusterReq.ValidateAll() if the designated -// constraints aren't met. -type ListCommonClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCommonClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCommonClusterReqMultiError) AllErrors() []error { return m } - // ListCommonClusterReqValidationError is the validation error returned by // ListCommonClusterReq.Validate if the designated constraints aren't met. type ListCommonClusterReqValidationError struct { @@ -24257,26 +14636,12 @@ var _ interface { // Validate checks the field values on ListCommonClusterResp 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. +// violated, an error is returned. func (m *ListCommonClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCommonClusterResp 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 -// ListCommonClusterRespMultiError, or nil if none found. -func (m *ListCommonClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCommonClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -24286,26 +14651,7 @@ func (m *ListCommonClusterResp) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCommonClusterRespValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCommonClusterRespValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCommonClusterRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -24317,26 +14663,7 @@ func (m *ListCommonClusterResp) validate(all bool) error { } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCommonClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCommonClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCommonClusterRespValidationError{ field: "WebAnnotations", @@ -24346,30 +14673,9 @@ func (m *ListCommonClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return ListCommonClusterRespMultiError(errors) - } - return nil } -// ListCommonClusterRespMultiError is an error wrapping multiple validation -// errors returned by ListCommonClusterResp.ValidateAll() if the designated -// constraints aren't met. -type ListCommonClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCommonClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCommonClusterRespMultiError) AllErrors() []error { return m } - // ListCommonClusterRespValidationError is the validation error returned by // ListCommonClusterResp.Validate if the designated constraints aren't met. type ListCommonClusterRespValidationError struct { @@ -24428,85 +14734,38 @@ var _ interface { // Validate checks the field values on ListProjectClusterReq 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. +// violated, an error is returned. func (m *ListProjectClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListProjectClusterReq 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 -// ListProjectClusterReqMultiError, or nil if none found. -func (m *ListProjectClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *ListProjectClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetProjectID()) > 100 { - err := ListProjectClusterReqValidationError{ + return ListProjectClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - err := ListProjectClusterReqValidationError{ + return ListProjectClusterReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - err := ListProjectClusterReqValidationError{ + return ListProjectClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Operator - if len(errors) > 0 { - return ListProjectClusterReqMultiError(errors) - } - return nil } -// ListProjectClusterReqMultiError is an error wrapping multiple validation -// errors returned by ListProjectClusterReq.ValidateAll() if the designated -// constraints aren't met. -type ListProjectClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListProjectClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListProjectClusterReqMultiError) AllErrors() []error { return m } - // ListProjectClusterReqValidationError is the validation error returned by // ListProjectClusterReq.Validate if the designated constraints aren't met. type ListProjectClusterReqValidationError struct { @@ -24565,26 +14824,12 @@ var _ interface { // Validate checks the field values on ListProjectClusterResp 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. +// violated, an error is returned. func (m *ListProjectClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListProjectClusterResp 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 -// ListProjectClusterRespMultiError, or nil if none found. -func (m *ListProjectClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *ListProjectClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -24594,26 +14839,7 @@ func (m *ListProjectClusterResp) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListProjectClusterRespValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListProjectClusterRespValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListProjectClusterRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -24625,72 +14851,24 @@ func (m *ListProjectClusterResp) validate(all bool) error { } - { - sorted_keys := make([]string, len(m.GetClusterExtraInfo())) - i := 0 - for key := range m.GetClusterExtraInfo() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetClusterExtraInfo()[key] - _ = val - - // no validation rules for ClusterExtraInfo[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListProjectClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListProjectClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ListProjectClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), - reason: "embedded message failed validation", - cause: err, - } - } - } + for key, val := range m.GetClusterExtraInfo() { + _ = val - } - } + // no validation rules for ClusterExtraInfo[key] - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListProjectClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: + if v, ok := interface{}(val).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - errors = append(errors, ListProjectClusterRespValidationError{ - field: "WebAnnotations", + return ListProjectClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), reason: "embedded message failed validation", cause: err, - }) + } } } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + + } + + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListProjectClusterRespValidationError{ field: "WebAnnotations", @@ -24700,30 +14878,9 @@ func (m *ListProjectClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return ListProjectClusterRespMultiError(errors) - } - return nil } -// ListProjectClusterRespMultiError is an error wrapping multiple validation -// errors returned by ListProjectClusterResp.ValidateAll() if the designated -// constraints aren't met. -type ListProjectClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListProjectClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListProjectClusterRespMultiError) AllErrors() []error { return m } - // ListProjectClusterRespValidationError is the validation error returned by // ListProjectClusterResp.Validate if the designated constraints aren't met. type ListProjectClusterRespValidationError struct { @@ -24781,91 +14938,53 @@ var _ interface { } = ListProjectClusterRespValidationError{} // Validate checks the field values on ListClusterReq 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *ListClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListClusterReq 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 ListClusterReqMultiError, -// or nil if none found. -func (m *ListClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *ListClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetClusterName()) > 100 { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "ClusterName", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 100 { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 100 { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Environment @@ -24879,49 +14998,33 @@ func (m *ListClusterReq) validate(all bool) error { // no validation rules for FederationClusterID if _, ok := _ListClusterReq_Status_InLookup[m.GetStatus()]; !ok { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FALURE INITIALIZATION DELETED ]", } - if !all { - return err - } - errors = append(errors, err) } if m.GetOffset() < 0 { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } - if !all { - return err - } - errors = append(errors, err) } if m.GetLimit() > 1000 { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "Limit", reason: "value must be less than or equal to 1000", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Operator if utf8.RuneCountInString(m.GetSystemID()) > 100 { - err := ListClusterReqValidationError{ + return ListClusterReqValidationError{ field: "SystemID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ExtraClusterID @@ -24930,30 +15033,11 @@ func (m *ListClusterReq) validate(all bool) error { // no validation rules for ClusterID - if len(errors) > 0 { - return ListClusterReqMultiError(errors) - } + // no validation rules for All return nil } -// ListClusterReqMultiError is an error wrapping multiple validation errors -// returned by ListClusterReq.ValidateAll() if the designated constraints -// aren't met. -type ListClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListClusterReqMultiError) AllErrors() []error { return m } - // ListClusterReqValidationError is the validation error returned by // ListClusterReq.Validate if the designated constraints aren't met. type ListClusterReqValidationError struct { @@ -25019,27 +15103,13 @@ var _ListClusterReq_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on ListClusterResp 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ListClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListClusterResp 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 -// ListClusterRespMultiError, or nil if none found. -func (m *ListClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *ListClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -25049,26 +15119,7 @@ func (m *ListClusterResp) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListClusterRespValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListClusterRespValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -25080,72 +15131,24 @@ func (m *ListClusterResp) validate(all bool) error { } - { - sorted_keys := make([]string, len(m.GetClusterExtraInfo())) - i := 0 - for key := range m.GetClusterExtraInfo() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetClusterExtraInfo()[key] - _ = val - - // no validation rules for ClusterExtraInfo[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ListClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), - reason: "embedded message failed validation", - cause: err, - } - } - } + for key, val := range m.GetClusterExtraInfo() { + _ = val - } - } + // no validation rules for ClusterExtraInfo[key] - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListClusterRespValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: + if v, ok := interface{}(val).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - errors = append(errors, ListClusterRespValidationError{ - field: "WebAnnotations", + return ListClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), reason: "embedded message failed validation", cause: err, - }) + } } } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + + } + + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterRespValidationError{ field: "WebAnnotations", @@ -25155,30 +15158,9 @@ func (m *ListClusterResp) validate(all bool) error { } } - if len(errors) > 0 { - return ListClusterRespMultiError(errors) - } - return nil } -// ListClusterRespMultiError is an error wrapping multiple validation errors -// returned by ListClusterResp.ValidateAll() if the designated constraints -// aren't met. -type ListClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListClusterRespMultiError) AllErrors() []error { return m } - // ListClusterRespValidationError is the validation error returned by // ListClusterResp.Validate if the designated constraints aren't met. type ListClusterRespValidationError struct { @@ -25234,56 +15216,21 @@ var _ interface { } = ListClusterRespValidationError{} // Validate checks the field values on ExtraInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *ExtraInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ExtraInfo 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 ExtraInfoMultiError, or nil -// if none found. -func (m *ExtraInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ExtraInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CanDeleted // no validation rules for ProviderType // no validation rules for AutoScale - if len(errors) > 0 { - return ExtraInfoMultiError(errors) - } - return nil } -// ExtraInfoMultiError is an error wrapping multiple validation errors returned -// by ExtraInfo.ValidateAll() if the designated constraints aren't met. -type ExtraInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ExtraInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ExtraInfoMultiError) AllErrors() []error { return m } - // ExtraInfoValidationError is the validation error returned by // ExtraInfo.Validate if the designated constraints aren't met. type ExtraInfoValidationError struct { @@ -25339,97 +15286,33 @@ var _ interface { } = ExtraInfoValidationError{} // Validate checks the field values on WebAnnotations 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *WebAnnotations) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on WebAnnotations 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 WebAnnotationsMultiError, -// or nil if none found. -func (m *WebAnnotations) ValidateAll() error { - return m.validate(true) -} - -func (m *WebAnnotations) validate(all bool) error { if m == nil { return nil } - var errors []error - - { - sorted_keys := make([]string, len(m.GetPerms())) - i := 0 - for key := range m.GetPerms() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetPerms()[key] - _ = val + for key, val := range m.GetPerms() { + _ = val - // no validation rules for Perms[key] + // no validation rules for Perms[key] - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, WebAnnotationsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, WebAnnotationsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return WebAnnotationsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WebAnnotationsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } - } - if len(errors) > 0 { - return WebAnnotationsMultiError(errors) } return nil } -// WebAnnotationsMultiError is an error wrapping multiple validation errors -// returned by WebAnnotations.ValidateAll() if the designated constraints -// aren't met. -type WebAnnotationsMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m WebAnnotationsMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m WebAnnotationsMultiError) AllErrors() []error { return m } - // WebAnnotationsValidationError is the validation error returned by // WebAnnotations.Validate if the designated constraints aren't met. type WebAnnotationsValidationError struct { @@ -25485,47 +15368,14 @@ var _ interface { } = WebAnnotationsValidationError{} // Validate checks the field values on WebAnnotationsV2 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *WebAnnotationsV2) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on WebAnnotationsV2 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 -// WebAnnotationsV2MultiError, or nil if none found. -func (m *WebAnnotationsV2) ValidateAll() error { - return m.validate(true) -} - -func (m *WebAnnotationsV2) validate(all bool) error { if m == nil { return nil } - var errors []error - - if all { - switch v := interface{}(m.GetPerms()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, WebAnnotationsV2ValidationError{ - field: "Perms", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, WebAnnotationsV2ValidationError{ - field: "Perms", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetPerms()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetPerms()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return WebAnnotationsV2ValidationError{ field: "Perms", @@ -25535,30 +15385,9 @@ func (m *WebAnnotationsV2) validate(all bool) error { } } - if len(errors) > 0 { - return WebAnnotationsV2MultiError(errors) - } - return nil } -// WebAnnotationsV2MultiError is an error wrapping multiple validation errors -// returned by WebAnnotationsV2.ValidateAll() if the designated constraints -// aren't met. -type WebAnnotationsV2MultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m WebAnnotationsV2MultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m WebAnnotationsV2MultiError) AllErrors() []error { return m } - // WebAnnotationsV2ValidationError is the validation error returned by // WebAnnotationsV2.Validate if the designated constraints aren't met. type WebAnnotationsV2ValidationError struct { @@ -25615,68 +15444,38 @@ var _ interface { // Validate checks the field values on ListNodesInClusterRequest 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. +// violated, an error is returned. func (m *ListNodesInClusterRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNodesInClusterRequest 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 -// ListNodesInClusterRequestMultiError, or nil if none found. -func (m *ListNodesInClusterRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNodesInClusterRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := ListNodesInClusterRequestValidationError{ + return ListNodesInClusterRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - err := ListNodesInClusterRequestValidationError{ + return ListNodesInClusterRequestValidationError{ field: "Region", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - err := ListNodesInClusterRequestValidationError{ + return ListNodesInClusterRequestValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodeGroupID()) > 100 { - err := ListNodesInClusterRequestValidationError{ + return ListNodesInClusterRequestValidationError{ field: "NodeGroupID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for InstanceType @@ -25684,53 +15483,24 @@ func (m *ListNodesInClusterRequest) validate(all bool) error { // no validation rules for Status if m.GetOffset() < 0 { - err := ListNodesInClusterRequestValidationError{ + return ListNodesInClusterRequestValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } - if !all { - return err - } - errors = append(errors, err) } if m.GetLimit() > 5000 { - err := ListNodesInClusterRequestValidationError{ + return ListNodesInClusterRequestValidationError{ field: "Limit", reason: "value must be less than or equal to 5000", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ShowPwd - if len(errors) > 0 { - return ListNodesInClusterRequestMultiError(errors) - } - return nil } -// ListNodesInClusterRequestMultiError is an error wrapping multiple validation -// errors returned by ListNodesInClusterRequest.ValidateAll() if the -// designated constraints aren't met. -type ListNodesInClusterRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNodesInClusterRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNodesInClusterRequestMultiError) AllErrors() []error { return m } - // ListNodesInClusterRequestValidationError is the validation error returned by // ListNodesInClusterRequest.Validate if the designated constraints aren't met. type ListNodesInClusterRequestValidationError struct { @@ -25789,26 +15559,12 @@ var _ interface { // Validate checks the field values on ListNodesInClusterResponse 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. +// violated, an error is returned. func (m *ListNodesInClusterResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNodesInClusterResponse 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 -// ListNodesInClusterResponseMultiError, or nil if none found. -func (m *ListNodesInClusterResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNodesInClusterResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -25818,26 +15574,7 @@ func (m *ListNodesInClusterResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListNodesInClusterResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListNodesInClusterResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInClusterResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -25849,26 +15586,7 @@ func (m *ListNodesInClusterResponse) validate(all bool) error { } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListNodesInClusterResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListNodesInClusterResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInClusterResponseValidationError{ field: "WebAnnotations", @@ -25878,30 +15596,9 @@ func (m *ListNodesInClusterResponse) validate(all bool) error { } } - if len(errors) > 0 { - return ListNodesInClusterResponseMultiError(errors) - } - return nil } -// ListNodesInClusterResponseMultiError is an error wrapping multiple -// validation errors returned by ListNodesInClusterResponse.ValidateAll() if -// the designated constraints aren't met. -type ListNodesInClusterResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNodesInClusterResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNodesInClusterResponseMultiError) AllErrors() []error { return m } - // ListNodesInClusterResponseValidationError is the validation error returned // by ListNodesInClusterResponse.Validate if the designated constraints aren't met. type ListNodesInClusterResponseValidationError struct { @@ -25959,27 +15656,13 @@ var _ interface { } = ListNodesInClusterResponseValidationError{} // Validate checks the field values on ClusterNode 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *ClusterNode) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterNode 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 ClusterNodeMultiError, or -// nil if none found. -func (m *ClusterNode) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterNode) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeID // no validation rules for InnerIP @@ -26015,26 +15698,7 @@ func (m *ClusterNode) validate(all bool) error { for idx, item := range m.GetTaints() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ClusterNodeValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ClusterNodeValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterNodeValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -26072,29 +15736,9 @@ func (m *ClusterNode) validate(all bool) error { // no validation rules for FailedReason - if len(errors) > 0 { - return ClusterNodeMultiError(errors) - } - return nil } -// ClusterNodeMultiError is an error wrapping multiple validation errors -// returned by ClusterNode.ValidateAll() if the designated constraints aren't met. -type ClusterNodeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterNodeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterNodeMultiError) AllErrors() []error { return m } - // ClusterNodeValidationError is the validation error returned by // ClusterNode.Validate if the designated constraints aren't met. type ClusterNodeValidationError struct { @@ -26151,61 +15795,22 @@ var _ interface { // Validate checks the field values on GetClustersMetaDataRequest 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. +// violated, an error is returned. func (m *GetClustersMetaDataRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetClustersMetaDataRequest 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 -// GetClustersMetaDataRequestMultiError, or nil if none found. -func (m *GetClustersMetaDataRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetClustersMetaDataRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := len(m.GetClusters()); l < 1 || l > 1000 { - err := GetClustersMetaDataRequestValidationError{ + return GetClustersMetaDataRequestValidationError{ field: "Clusters", reason: "value must contain between 1 and 1000 items, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return GetClustersMetaDataRequestMultiError(errors) } return nil } -// GetClustersMetaDataRequestMultiError is an error wrapping multiple -// validation errors returned by GetClustersMetaDataRequest.ValidateAll() if -// the designated constraints aren't met. -type GetClustersMetaDataRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetClustersMetaDataRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetClustersMetaDataRequestMultiError) AllErrors() []error { return m } - // GetClustersMetaDataRequestValidationError is the validation error returned // by GetClustersMetaDataRequest.Validate if the designated constraints aren't met. type GetClustersMetaDataRequestValidationError struct { @@ -26264,26 +15869,12 @@ var _ interface { // Validate checks the field values on GetClustersMetaDataResponse 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. +// violated, an error is returned. func (m *GetClustersMetaDataResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetClustersMetaDataResponse 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 -// GetClustersMetaDataResponseMultiError, or nil if none found. -func (m *GetClustersMetaDataResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetClustersMetaDataResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -26293,26 +15884,7 @@ func (m *GetClustersMetaDataResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetClustersMetaDataResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetClustersMetaDataResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClustersMetaDataResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -26324,26 +15896,7 @@ func (m *GetClustersMetaDataResponse) validate(all bool) error { } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetClustersMetaDataResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetClustersMetaDataResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClustersMetaDataResponseValidationError{ field: "WebAnnotations", @@ -26353,30 +15906,9 @@ func (m *GetClustersMetaDataResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetClustersMetaDataResponseMultiError(errors) - } - return nil } -// GetClustersMetaDataResponseMultiError is an error wrapping multiple -// validation errors returned by GetClustersMetaDataResponse.ValidateAll() if -// the designated constraints aren't met. -type GetClustersMetaDataResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetClustersMetaDataResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetClustersMetaDataResponseMultiError) AllErrors() []error { return m } - // GetClustersMetaDataResponseValidationError is the validation error returned // by GetClustersMetaDataResponse.Validate if the designated constraints // aren't met. @@ -26435,54 +15967,20 @@ var _ interface { } = GetClustersMetaDataResponseValidationError{} // Validate checks the field values on ClusterMeta 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *ClusterMeta) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterMeta 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 ClusterMetaMultiError, or -// nil if none found. -func (m *ClusterMeta) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterMeta) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterId // no validation rules for ClusterNodeNum - if len(errors) > 0 { - return ClusterMetaMultiError(errors) - } - return nil } -// ClusterMetaMultiError is an error wrapping multiple validation errors -// returned by ClusterMeta.ValidateAll() if the designated constraints aren't met. -type ClusterMetaMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterMetaMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterMetaMultiError) AllErrors() []error { return m } - // ClusterMetaValidationError is the validation error returned by // ClusterMeta.Validate if the designated constraints aren't met. type ClusterMetaValidationError struct { @@ -26539,61 +16037,22 @@ var _ interface { // Validate checks the field values on ListMastersInClusterRequest 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. +// violated, an error is returned. func (m *ListMastersInClusterRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListMastersInClusterRequest 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 -// ListMastersInClusterRequestMultiError, or nil if none found. -func (m *ListMastersInClusterRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListMastersInClusterRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := ListMastersInClusterRequestValidationError{ + return ListMastersInClusterRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return ListMastersInClusterRequestMultiError(errors) } return nil } -// ListMastersInClusterRequestMultiError is an error wrapping multiple -// validation errors returned by ListMastersInClusterRequest.ValidateAll() if -// the designated constraints aren't met. -type ListMastersInClusterRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListMastersInClusterRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListMastersInClusterRequestMultiError) AllErrors() []error { return m } - // ListMastersInClusterRequestValidationError is the validation error returned // by ListMastersInClusterRequest.Validate if the designated constraints // aren't met. @@ -26653,26 +16112,12 @@ var _ interface { // Validate checks the field values on ListMastersInClusterResponse 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. +// violated, an error is returned. func (m *ListMastersInClusterResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListMastersInClusterResponse 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 -// ListMastersInClusterResponseMultiError, or nil if none found. -func (m *ListMastersInClusterResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListMastersInClusterResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -26682,26 +16127,7 @@ func (m *ListMastersInClusterResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListMastersInClusterResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListMastersInClusterResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListMastersInClusterResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -26713,26 +16139,7 @@ func (m *ListMastersInClusterResponse) validate(all bool) error { } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListMastersInClusterResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListMastersInClusterResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListMastersInClusterResponseValidationError{ field: "WebAnnotations", @@ -26742,30 +16149,9 @@ func (m *ListMastersInClusterResponse) validate(all bool) error { } } - if len(errors) > 0 { - return ListMastersInClusterResponseMultiError(errors) - } - return nil } -// ListMastersInClusterResponseMultiError is an error wrapping multiple -// validation errors returned by ListMastersInClusterResponse.ValidateAll() if -// the designated constraints aren't met. -type ListMastersInClusterResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListMastersInClusterResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListMastersInClusterResponseMultiError) AllErrors() []error { return m } - // ListMastersInClusterResponseValidationError is the validation error returned // by ListMastersInClusterResponse.Validate if the designated constraints // aren't met. @@ -26825,61 +16211,22 @@ var _ interface { // Validate checks the field values on GetClusterCredentialReq 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. +// violated, an error is returned. func (m *GetClusterCredentialReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetClusterCredentialReq 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 -// GetClusterCredentialReqMultiError, or nil if none found. -func (m *GetClusterCredentialReq) ValidateAll() error { - return m.validate(true) -} - -func (m *GetClusterCredentialReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetServerKey()); l < 1 || l > 100 { - err := GetClusterCredentialReqValidationError{ + return GetClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return GetClusterCredentialReqMultiError(errors) } return nil } -// GetClusterCredentialReqMultiError is an error wrapping multiple validation -// errors returned by GetClusterCredentialReq.ValidateAll() if the designated -// constraints aren't met. -type GetClusterCredentialReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetClusterCredentialReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetClusterCredentialReqMultiError) AllErrors() []error { return m } - // GetClusterCredentialReqValidationError is the validation error returned by // GetClusterCredentialReq.Validate if the designated constraints aren't met. type GetClusterCredentialReqValidationError struct { @@ -26938,52 +16285,19 @@ var _ interface { // Validate checks the field values on GetClusterCredentialResp 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. +// violated, an error is returned. func (m *GetClusterCredentialResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetClusterCredentialResp 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 -// GetClusterCredentialRespMultiError, or nil if none found. -func (m *GetClusterCredentialResp) ValidateAll() error { - return m.validate(true) -} - -func (m *GetClusterCredentialResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetClusterCredentialRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetClusterCredentialRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterCredentialRespValidationError{ field: "Data", @@ -26993,30 +16307,9 @@ func (m *GetClusterCredentialResp) validate(all bool) error { } } - if len(errors) > 0 { - return GetClusterCredentialRespMultiError(errors) - } - return nil } -// GetClusterCredentialRespMultiError is an error wrapping multiple validation -// errors returned by GetClusterCredentialResp.ValidateAll() if the designated -// constraints aren't met. -type GetClusterCredentialRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetClusterCredentialRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetClusterCredentialRespMultiError) AllErrors() []error { return m } - // GetClusterCredentialRespValidationError is the validation error returned by // GetClusterCredentialResp.Validate if the designated constraints aren't met. type GetClusterCredentialRespValidationError struct { @@ -27075,149 +16368,78 @@ var _ interface { // Validate checks the field values on UpdateClusterCredentialReq 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. +// violated, an error is returned. func (m *UpdateClusterCredentialReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateClusterCredentialReq 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 -// UpdateClusterCredentialReqMultiError, or nil if none found. -func (m *UpdateClusterCredentialReq) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateClusterCredentialReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetServerKey()); l < 1 || l > 100 { - err := UpdateClusterCredentialReqValidationError{ + return UpdateClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := UpdateClusterCredentialReqValidationError{ + return UpdateClusterCredentialReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClientModule()); l < 1 || l > 100 { - err := UpdateClusterCredentialReqValidationError{ + return UpdateClusterCredentialReqValidationError{ field: "ClientModule", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetServerAddress()); l < 1 || l > 2048 { - err := UpdateClusterCredentialReqValidationError{ + return UpdateClusterCredentialReqValidationError{ field: "ServerAddress", reason: "value length must be between 1 and 2048 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetCaCertData()) > 4096 { - err := UpdateClusterCredentialReqValidationError{ + return UpdateClusterCredentialReqValidationError{ field: "CaCertData", reason: "value length must be at most 4096 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetUserToken()) > 2048 { - err := UpdateClusterCredentialReqValidationError{ + return UpdateClusterCredentialReqValidationError{ field: "UserToken", reason: "value length must be at most 2048 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterDomain()) > 2048 { - err := UpdateClusterCredentialReqValidationError{ + return UpdateClusterCredentialReqValidationError{ field: "ClusterDomain", reason: "value length must be at most 2048 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetClientCert()) > 4096 { - err := UpdateClusterCredentialReqValidationError{ + return UpdateClusterCredentialReqValidationError{ field: "ClientCert", reason: "value length must be at most 4096 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetClientKey()) > 4096 { - err := UpdateClusterCredentialReqValidationError{ + return UpdateClusterCredentialReqValidationError{ field: "ClientKey", reason: "value length must be at most 4096 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UpdateClusterCredentialReqMultiError(errors) } return nil } -// UpdateClusterCredentialReqMultiError is an error wrapping multiple -// validation errors returned by UpdateClusterCredentialReq.ValidateAll() if -// the designated constraints aren't met. -type UpdateClusterCredentialReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateClusterCredentialReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateClusterCredentialReqMultiError) AllErrors() []error { return m } - // UpdateClusterCredentialReqValidationError is the validation error returned // by UpdateClusterCredentialReq.Validate if the designated constraints aren't met. type UpdateClusterCredentialReqValidationError struct { @@ -27276,56 +16498,21 @@ var _ interface { // Validate checks the field values on UpdateClusterCredentialResp 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. +// violated, an error is returned. func (m *UpdateClusterCredentialResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateClusterCredentialResp 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 -// UpdateClusterCredentialRespMultiError, or nil if none found. -func (m *UpdateClusterCredentialResp) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateClusterCredentialResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return UpdateClusterCredentialRespMultiError(errors) - } - return nil } -// UpdateClusterCredentialRespMultiError is an error wrapping multiple -// validation errors returned by UpdateClusterCredentialResp.ValidateAll() if -// the designated constraints aren't met. -type UpdateClusterCredentialRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateClusterCredentialRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateClusterCredentialRespMultiError) AllErrors() []error { return m } - // UpdateClusterCredentialRespValidationError is the validation error returned // by UpdateClusterCredentialResp.Validate if the designated constraints // aren't met. @@ -27385,61 +16572,22 @@ var _ interface { // Validate checks the field values on DeleteClusterCredentialReq 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. +// violated, an error is returned. func (m *DeleteClusterCredentialReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteClusterCredentialReq 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 -// DeleteClusterCredentialReqMultiError, or nil if none found. -func (m *DeleteClusterCredentialReq) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteClusterCredentialReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetServerKey()); l < 2 || l > 100 { - err := DeleteClusterCredentialReqValidationError{ + return DeleteClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return DeleteClusterCredentialReqMultiError(errors) } return nil } -// DeleteClusterCredentialReqMultiError is an error wrapping multiple -// validation errors returned by DeleteClusterCredentialReq.ValidateAll() if -// the designated constraints aren't met. -type DeleteClusterCredentialReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteClusterCredentialReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteClusterCredentialReqMultiError) AllErrors() []error { return m } - // DeleteClusterCredentialReqValidationError is the validation error returned // by DeleteClusterCredentialReq.Validate if the designated constraints aren't met. type DeleteClusterCredentialReqValidationError struct { @@ -27498,56 +16646,21 @@ var _ interface { // Validate checks the field values on DeleteClusterCredentialResp 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. +// violated, an error is returned. func (m *DeleteClusterCredentialResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteClusterCredentialResp 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 -// DeleteClusterCredentialRespMultiError, or nil if none found. -func (m *DeleteClusterCredentialResp) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteClusterCredentialResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return DeleteClusterCredentialRespMultiError(errors) - } - return nil } -// DeleteClusterCredentialRespMultiError is an error wrapping multiple -// validation errors returned by DeleteClusterCredentialResp.ValidateAll() if -// the designated constraints aren't met. -type DeleteClusterCredentialRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteClusterCredentialRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteClusterCredentialRespMultiError) AllErrors() []error { return m } - // DeleteClusterCredentialRespValidationError is the validation error returned // by DeleteClusterCredentialResp.Validate if the designated constraints // aren't met. @@ -27607,116 +16720,57 @@ var _ interface { // Validate checks the field values on ListClusterCredentialReq 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. +// violated, an error is returned. func (m *ListClusterCredentialReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListClusterCredentialReq 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 -// ListClusterCredentialReqMultiError, or nil if none found. -func (m *ListClusterCredentialReq) ValidateAll() error { - return m.validate(true) -} - -func (m *ListClusterCredentialReq) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetServerKey()) > 100 { - err := ListClusterCredentialReqValidationError{ + return ListClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterID()) > 100 { - err := ListClusterCredentialReqValidationError{ + return ListClusterCredentialReqValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetClientMode()) > 100 { - err := ListClusterCredentialReqValidationError{ + return ListClusterCredentialReqValidationError{ field: "ClientMode", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetConnectMode()) > 100 { - err := ListClusterCredentialReqValidationError{ + return ListClusterCredentialReqValidationError{ field: "ConnectMode", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if m.GetOffset() < 0 { - err := ListClusterCredentialReqValidationError{ + return ListClusterCredentialReqValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } - if !all { - return err - } - errors = append(errors, err) } if m.GetLimit() > 1000 { - err := ListClusterCredentialReqValidationError{ + return ListClusterCredentialReqValidationError{ field: "Limit", reason: "value must be less than or equal to 1000", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return ListClusterCredentialReqMultiError(errors) } return nil } -// ListClusterCredentialReqMultiError is an error wrapping multiple validation -// errors returned by ListClusterCredentialReq.ValidateAll() if the designated -// constraints aren't met. -type ListClusterCredentialReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListClusterCredentialReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListClusterCredentialReqMultiError) AllErrors() []error { return m } - // ListClusterCredentialReqValidationError is the validation error returned by // ListClusterCredentialReq.Validate if the designated constraints aren't met. type ListClusterCredentialReqValidationError struct { @@ -27775,26 +16829,12 @@ var _ interface { // Validate checks the field values on ListClusterCredentialResp 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. +// violated, an error is returned. func (m *ListClusterCredentialResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListClusterCredentialResp 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 -// ListClusterCredentialRespMultiError, or nil if none found. -func (m *ListClusterCredentialResp) ValidateAll() error { - return m.validate(true) -} - -func (m *ListClusterCredentialResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -27804,26 +16844,7 @@ func (m *ListClusterCredentialResp) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListClusterCredentialRespValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListClusterCredentialRespValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterCredentialRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -27835,30 +16856,9 @@ func (m *ListClusterCredentialResp) validate(all bool) error { } - if len(errors) > 0 { - return ListClusterCredentialRespMultiError(errors) - } - return nil } -// ListClusterCredentialRespMultiError is an error wrapping multiple validation -// errors returned by ListClusterCredentialResp.ValidateAll() if the -// designated constraints aren't met. -type ListClusterCredentialRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListClusterCredentialRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListClusterCredentialRespMultiError) AllErrors() []error { return m } - // ListClusterCredentialRespValidationError is the validation error returned by // ListClusterCredentialResp.Validate if the designated constraints aren't met. type ListClusterCredentialRespValidationError struct { @@ -27917,50 +16917,15 @@ var _ interface { // Validate checks the field values on InitFederationClusterReq 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. +// violated, an error is returned. func (m *InitFederationClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on InitFederationClusterReq 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 -// InitFederationClusterReqMultiError, or nil if none found. -func (m *InitFederationClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *InitFederationClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - - if len(errors) > 0 { - return InitFederationClusterReqMultiError(errors) - } - return nil } -// InitFederationClusterReqMultiError is an error wrapping multiple validation -// errors returned by InitFederationClusterReq.ValidateAll() if the designated -// constraints aren't met. -type InitFederationClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m InitFederationClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m InitFederationClusterReqMultiError) AllErrors() []error { return m } - // InitFederationClusterReqValidationError is the validation error returned by // InitFederationClusterReq.Validate if the designated constraints aren't met. type InitFederationClusterReqValidationError struct { @@ -28019,50 +16984,15 @@ var _ interface { // Validate checks the field values on InitFederationClusterResp 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. +// violated, an error is returned. func (m *InitFederationClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on InitFederationClusterResp 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 -// InitFederationClusterRespMultiError, or nil if none found. -func (m *InitFederationClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *InitFederationClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - - if len(errors) > 0 { - return InitFederationClusterRespMultiError(errors) - } - return nil } -// InitFederationClusterRespMultiError is an error wrapping multiple validation -// errors returned by InitFederationClusterResp.ValidateAll() if the -// designated constraints aren't met. -type InitFederationClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m InitFederationClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m InitFederationClusterRespMultiError) AllErrors() []error { return m } - // InitFederationClusterRespValidationError is the validation error returned by // InitFederationClusterResp.Validate if the designated constraints aren't met. type InitFederationClusterRespValidationError struct { @@ -28121,54 +17051,19 @@ var _ interface { // Validate checks the field values on AddFederatedClusterReq 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. +// violated, an error is returned. func (m *AddFederatedClusterReq) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AddFederatedClusterReq 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 -// AddFederatedClusterReqMultiError, or nil if none found. -func (m *AddFederatedClusterReq) ValidateAll() error { - return m.validate(true) -} - -func (m *AddFederatedClusterReq) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for FederationClusterID // no validation rules for ClusterID - if len(errors) > 0 { - return AddFederatedClusterReqMultiError(errors) - } - return nil } -// AddFederatedClusterReqMultiError is an error wrapping multiple validation -// errors returned by AddFederatedClusterReq.ValidateAll() if the designated -// constraints aren't met. -type AddFederatedClusterReqMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AddFederatedClusterReqMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AddFederatedClusterReqMultiError) AllErrors() []error { return m } - // AddFederatedClusterReqValidationError is the validation error returned by // AddFederatedClusterReq.Validate if the designated constraints aren't met. type AddFederatedClusterReqValidationError struct { @@ -28227,56 +17122,21 @@ var _ interface { // Validate checks the field values on AddFederatedClusterResp 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. +// violated, an error is returned. func (m *AddFederatedClusterResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AddFederatedClusterResp 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 -// AddFederatedClusterRespMultiError, or nil if none found. -func (m *AddFederatedClusterResp) ValidateAll() error { - return m.validate(true) -} - -func (m *AddFederatedClusterResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return AddFederatedClusterRespMultiError(errors) - } - return nil } -// AddFederatedClusterRespMultiError is an error wrapping multiple validation -// errors returned by AddFederatedClusterResp.ValidateAll() if the designated -// constraints aren't met. -type AddFederatedClusterRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AddFederatedClusterRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AddFederatedClusterRespMultiError) AllErrors() []error { return m } - // AddFederatedClusterRespValidationError is the validation error returned by // AddFederatedClusterResp.Validate if the designated constraints aren't met. type AddFederatedClusterRespValidationError struct { @@ -28335,173 +17195,70 @@ var _ interface { // Validate checks the field values on CreateCloudRequest 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. +// violated, an error is returned. func (m *CreateCloudRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateCloudRequest 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 -// CreateCloudRequestMultiError, or nil if none found. -func (m *CreateCloudRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateCloudRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 20 { - err := CreateCloudRequestValidationError{ + return CreateCloudRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateCloudRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := CreateCloudRequestValidationError{ + return CreateCloudRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetName()); l < 2 || l > 64 { - err := CreateCloudRequestValidationError{ + return CreateCloudRequestValidationError{ field: "Name", reason: "value length must be between 2 and 64 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Editable - { - sorted_keys := make([]string, len(m.GetOpsPlugins())) - i := 0 - for key := range m.GetOpsPlugins() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetOpsPlugins()[key] - _ = val - - // no validation rules for OpsPlugins[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - } - } - } + for key, val := range m.GetOpsPlugins() { + _ = val - } - } + // no validation rules for OpsPlugins[key] - { - sorted_keys := make([]string, len(m.GetExtraPlugins())) - i := 0 - for key := range m.GetExtraPlugins() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetExtraPlugins()[key] - _ = val - - // no validation rules for ExtraPlugins[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } - if all { - switch v := interface{}(m.GetCloudCredential()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "CloudCredential", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: + for key, val := range m.GetExtraPlugins() { + _ = val + + // no validation rules for ExtraPlugins[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "CloudCredential", + return CreateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), reason: "embedded message failed validation", cause: err, - }) + } } } - } else if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { + + } + + if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "CloudCredential", @@ -28511,26 +17268,7 @@ func (m *CreateCloudRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetOsManagement()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "OsManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "OsManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "OsManagement", @@ -28540,26 +17278,7 @@ func (m *CreateCloudRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetClusterManagement()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "ClusterManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "ClusterManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "ClusterManagement", @@ -28569,26 +17288,7 @@ func (m *CreateCloudRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetNodeGroupManagement()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "NodeGroupManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "NodeGroupManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "NodeGroupManagement", @@ -28599,14 +17299,10 @@ func (m *CreateCloudRequest) validate(all bool) error { } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - err := CreateCloudRequestValidationError{ + return CreateCloudRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for CloudProvider @@ -28619,26 +17315,7 @@ func (m *CreateCloudRequest) validate(all bool) error { // no validation rules for Enable - if all { - switch v := interface{}(m.GetNetworkInfo()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "NetworkInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "NetworkInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "NetworkInfo", @@ -28648,26 +17325,7 @@ func (m *CreateCloudRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetConfInfo()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "ConfInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudRequestValidationError{ - field: "ConfInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "ConfInfo", @@ -28679,30 +17337,9 @@ func (m *CreateCloudRequest) validate(all bool) error { // no validation rules for PlatformInfo - if len(errors) > 0 { - return CreateCloudRequestMultiError(errors) - } - return nil } -// CreateCloudRequestMultiError is an error wrapping multiple validation errors -// returned by CreateCloudRequest.ValidateAll() if the designated constraints -// aren't met. -type CreateCloudRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateCloudRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateCloudRequestMultiError) AllErrors() []error { return m } - // CreateCloudRequestValidationError is the validation error returned by // CreateCloudRequest.Validate if the designated constraints aren't met. type CreateCloudRequestValidationError struct { @@ -28763,56 +17400,21 @@ var _CreateCloudRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on CreateCloudResponse 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. +// violated, an error is returned. func (m *CreateCloudResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateCloudResponse 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 -// CreateCloudResponseMultiError, or nil if none found. -func (m *CreateCloudResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateCloudResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return CreateCloudResponseMultiError(errors) - } - return nil } -// CreateCloudResponseMultiError is an error wrapping multiple validation -// errors returned by CreateCloudResponse.ValidateAll() if the designated -// constraints aren't met. -type CreateCloudResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateCloudResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateCloudResponseMultiError) AllErrors() []error { return m } - // CreateCloudResponseValidationError is the validation error returned by // CreateCloudResponse.Validate if the designated constraints aren't met. type CreateCloudResponseValidationError struct { @@ -28871,162 +17473,63 @@ var _ interface { // Validate checks the field values on UpdateCloudRequest 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. +// violated, an error is returned. func (m *UpdateCloudRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateCloudRequest 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 -// UpdateCloudRequestMultiError, or nil if none found. -func (m *UpdateCloudRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateCloudRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) > 1024 { - err := UpdateCloudRequestValidationError{ + return UpdateCloudRequestValidationError{ field: "CloudID", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetName()) > 1024 { - err := UpdateCloudRequestValidationError{ + return UpdateCloudRequestValidationError{ field: "Name", reason: "value length must be at most 1024 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Editable - { - sorted_keys := make([]string, len(m.GetOpsPlugins())) - i := 0 - for key := range m.GetOpsPlugins() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetOpsPlugins()[key] - _ = val - - // no validation rules for OpsPlugins[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - } - } - } + for key, val := range m.GetOpsPlugins() { + _ = val - } - } + // no validation rules for OpsPlugins[key] - { - sorted_keys := make([]string, len(m.GetExtraPlugins())) - i := 0 - for key := range m.GetExtraPlugins() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetExtraPlugins()[key] - _ = val - - // no validation rules for ExtraPlugins[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } - if all { - switch v := interface{}(m.GetCloudCredential()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "CloudCredential", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: + for key, val := range m.GetExtraPlugins() { + _ = val + + // no validation rules for ExtraPlugins[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "CloudCredential", + return UpdateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), reason: "embedded message failed validation", cause: err, - }) + } } } - } else if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { + + } + + if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "CloudCredential", @@ -29036,26 +17539,7 @@ func (m *UpdateCloudRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetOsManagement()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "OsManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "OsManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "OsManagement", @@ -29065,26 +17549,7 @@ func (m *UpdateCloudRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetClusterManagement()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "ClusterManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "ClusterManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "ClusterManagement", @@ -29094,26 +17559,7 @@ func (m *UpdateCloudRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetNodeGroupManagement()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "NodeGroupManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "NodeGroupManagement", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "NodeGroupManagement", @@ -29124,14 +17570,10 @@ func (m *UpdateCloudRequest) validate(all bool) error { } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - err := UpdateCloudRequestValidationError{ + return UpdateCloudRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for CloudProvider @@ -29144,26 +17586,7 @@ func (m *UpdateCloudRequest) validate(all bool) error { // no validation rules for Enable - if all { - switch v := interface{}(m.GetNetworkInfo()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "NetworkInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "NetworkInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "NetworkInfo", @@ -29173,26 +17596,7 @@ func (m *UpdateCloudRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetConfInfo()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "ConfInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudRequestValidationError{ - field: "ConfInfo", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "ConfInfo", @@ -29204,30 +17608,9 @@ func (m *UpdateCloudRequest) validate(all bool) error { // no validation rules for PlatformInfo - if len(errors) > 0 { - return UpdateCloudRequestMultiError(errors) - } - return nil } -// UpdateCloudRequestMultiError is an error wrapping multiple validation errors -// returned by UpdateCloudRequest.ValidateAll() if the designated constraints -// aren't met. -type UpdateCloudRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateCloudRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateCloudRequestMultiError) AllErrors() []error { return m } - // UpdateCloudRequestValidationError is the validation error returned by // UpdateCloudRequest.Validate if the designated constraints aren't met. type UpdateCloudRequestValidationError struct { @@ -29286,52 +17669,19 @@ var _ interface { // Validate checks the field values on UpdateCloudResponse 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. +// violated, an error is returned. func (m *UpdateCloudResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateCloudResponse 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 -// UpdateCloudResponseMultiError, or nil if none found. -func (m *UpdateCloudResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateCloudResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudResponseValidationError{ field: "Data", @@ -29341,30 +17691,9 @@ func (m *UpdateCloudResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateCloudResponseMultiError(errors) - } - return nil } -// UpdateCloudResponseMultiError is an error wrapping multiple validation -// errors returned by UpdateCloudResponse.ValidateAll() if the designated -// constraints aren't met. -type UpdateCloudResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateCloudResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateCloudResponseMultiError) AllErrors() []error { return m } - // UpdateCloudResponseValidationError is the validation error returned by // UpdateCloudResponse.Validate if the designated constraints aren't met. type UpdateCloudResponseValidationError struct { @@ -29423,74 +17752,31 @@ var _ interface { // Validate checks the field values on DeleteCloudRequest 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. +// violated, an error is returned. func (m *DeleteCloudRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteCloudRequest 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 -// DeleteCloudRequestMultiError, or nil if none found. -func (m *DeleteCloudRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteCloudRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 20 { - err := DeleteCloudRequestValidationError{ + return DeleteCloudRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteCloudRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := DeleteCloudRequestValidationError{ + return DeleteCloudRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for IsForce - if len(errors) > 0 { - return DeleteCloudRequestMultiError(errors) - } - return nil } -// DeleteCloudRequestMultiError is an error wrapping multiple validation errors -// returned by DeleteCloudRequest.ValidateAll() if the designated constraints -// aren't met. -type DeleteCloudRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteCloudRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteCloudRequestMultiError) AllErrors() []error { return m } - // DeleteCloudRequestValidationError is the validation error returned by // DeleteCloudRequest.Validate if the designated constraints aren't met. type DeleteCloudRequestValidationError struct { @@ -29551,52 +17837,19 @@ var _DeleteCloudRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteCloudResponse 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. +// violated, an error is returned. func (m *DeleteCloudResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteCloudResponse 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 -// DeleteCloudResponseMultiError, or nil if none found. -func (m *DeleteCloudResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteCloudResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteCloudResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteCloudResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteCloudResponseValidationError{ field: "Data", @@ -29606,30 +17859,9 @@ func (m *DeleteCloudResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteCloudResponseMultiError(errors) - } - return nil } -// DeleteCloudResponseMultiError is an error wrapping multiple validation -// errors returned by DeleteCloudResponse.ValidateAll() if the designated -// constraints aren't met. -type DeleteCloudResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteCloudResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteCloudResponseMultiError) AllErrors() []error { return m } - // DeleteCloudResponseValidationError is the validation error returned by // DeleteCloudResponse.Validate if the designated constraints aren't met. type DeleteCloudResponseValidationError struct { @@ -29687,73 +17919,30 @@ var _ interface { } = DeleteCloudResponseValidationError{} // Validate checks the field values on GetCloudRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *GetCloudRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudRequest 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 -// GetCloudRequestMultiError, or nil if none found. -func (m *GetCloudRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 20 { - err := GetCloudRequestValidationError{ + return GetCloudRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_GetCloudRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - err := GetCloudRequestValidationError{ + return GetCloudRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return GetCloudRequestMultiError(errors) } return nil } -// GetCloudRequestMultiError is an error wrapping multiple validation errors -// returned by GetCloudRequest.ValidateAll() if the designated constraints -// aren't met. -type GetCloudRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudRequestMultiError) AllErrors() []error { return m } - // GetCloudRequestValidationError is the validation error returned by // GetCloudRequest.Validate if the designated constraints aren't met. type GetCloudRequestValidationError struct { @@ -29811,53 +18000,20 @@ var _ interface { var _GetCloudRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GetCloudResponse 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *GetCloudResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudResponse 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 -// GetCloudResponseMultiError, or nil if none found. -func (m *GetCloudResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetCloudResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetCloudResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudResponseValidationError{ field: "Data", @@ -29867,30 +18023,9 @@ func (m *GetCloudResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetCloudResponseMultiError(errors) - } - return nil } -// GetCloudResponseMultiError is an error wrapping multiple validation errors -// returned by GetCloudResponse.ValidateAll() if the designated constraints -// aren't met. -type GetCloudResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudResponseMultiError) AllErrors() []error { return m } - // GetCloudResponseValidationError is the validation error returned by // GetCloudResponse.Validate if the designated constraints aren't met. type GetCloudResponseValidationError struct { @@ -29946,36 +18081,18 @@ var _ interface { } = GetCloudResponseValidationError{} // Validate checks the field values on ListCloudRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ListCloudRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudRequest 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 -// ListCloudRequestMultiError, or nil if none found. -func (m *ListCloudRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) > 20 { - err := ListCloudRequestValidationError{ + return ListCloudRequestValidationError{ field: "CloudID", reason: "value length must be at most 20 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Name @@ -29988,30 +18105,9 @@ func (m *ListCloudRequest) validate(all bool) error { // no validation rules for CloudProvider - if len(errors) > 0 { - return ListCloudRequestMultiError(errors) - } - return nil } -// ListCloudRequestMultiError is an error wrapping multiple validation errors -// returned by ListCloudRequest.ValidateAll() if the designated constraints -// aren't met. -type ListCloudRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudRequestMultiError) AllErrors() []error { return m } - // ListCloudRequestValidationError is the validation error returned by // ListCloudRequest.Validate if the designated constraints aren't met. type ListCloudRequestValidationError struct { @@ -30067,27 +18163,13 @@ var _ interface { } = ListCloudRequestValidationError{} // Validate checks the field values on ListCloudResponse 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ListCloudResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudResponse 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 -// ListCloudResponseMultiError, or nil if none found. -func (m *ListCloudResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -30097,26 +18179,7 @@ func (m *ListCloudResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -30128,30 +18191,9 @@ func (m *ListCloudResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudResponseMultiError(errors) - } - return nil } -// ListCloudResponseMultiError is an error wrapping multiple validation errors -// returned by ListCloudResponse.ValidateAll() if the designated constraints -// aren't met. -type ListCloudResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudResponseMultiError) AllErrors() []error { return m } - // ListCloudResponseValidationError is the validation error returned by // ListCloudResponse.Validate if the designated constraints aren't met. type ListCloudResponseValidationError struct { @@ -30210,125 +18252,64 @@ var _ interface { // Validate checks the field values on CreateNodeGroupRequest 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. +// violated, an error is returned. func (m *CreateNodeGroupRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateNodeGroupRequest 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 -// CreateNodeGroupRequestMultiError, or nil if none found. -func (m *CreateNodeGroupRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateNodeGroupRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetName()); l < 1 || l > 255 { - err := CreateNodeGroupRequestValidationError{ + return CreateNodeGroupRequestValidationError{ field: "Name", reason: "value length must be between 1 and 255 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - err := CreateNodeGroupRequestValidationError{ + return CreateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := CreateNodeGroupRequestValidationError{ + return CreateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateNodeGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := CreateNodeGroupRequestValidationError{ + return CreateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 1 || l > 32 { - err := CreateNodeGroupRequestValidationError{ + return CreateNodeGroupRequestValidationError{ field: "Region", reason: "value length must be between 1 and 32 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateNodeGroupRequest_Region_Pattern.MatchString(m.GetRegion()) { - err := CreateNodeGroupRequestValidationError{ + return CreateNodeGroupRequestValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for EnableAutoscale if m.GetAutoScaling() == nil { - err := CreateNodeGroupRequestValidationError{ + return CreateNodeGroupRequestValidationError{ field: "AutoScaling", reason: "value is required", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetAutoScaling()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeGroupRequestValidationError{ - field: "AutoScaling", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeGroupRequestValidationError{ - field: "AutoScaling", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "AutoScaling", @@ -30339,36 +18320,13 @@ func (m *CreateNodeGroupRequest) validate(all bool) error { } if m.GetLaunchTemplate() == nil { - err := CreateNodeGroupRequestValidationError{ + return CreateNodeGroupRequestValidationError{ field: "LaunchTemplate", reason: "value is required", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetLaunchTemplate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeGroupRequestValidationError{ - field: "LaunchTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeGroupRequestValidationError{ - field: "LaunchTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "LaunchTemplate", @@ -30385,40 +18343,17 @@ func (m *CreateNodeGroupRequest) validate(all bool) error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - err := CreateNodeGroupRequestValidationError{ + return CreateNodeGroupRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Provider // no validation rules for ConsumerID - if all { - switch v := interface{}(m.GetNodeTemplate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeGroupRequestValidationError{ - field: "NodeTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeGroupRequestValidationError{ - field: "NodeTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "NodeTemplate", @@ -30436,26 +18371,7 @@ func (m *CreateNodeGroupRequest) validate(all bool) error { // no validation rules for CloudAreaName - if all { - switch v := interface{}(m.GetExtra()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeGroupRequestValidationError{ - field: "Extra", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeGroupRequestValidationError{ - field: "Extra", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "Extra", @@ -30467,30 +18383,9 @@ func (m *CreateNodeGroupRequest) validate(all bool) error { // no validation rules for OnlyCreateInfo - if len(errors) > 0 { - return CreateNodeGroupRequestMultiError(errors) - } - return nil } -// CreateNodeGroupRequestMultiError is an error wrapping multiple validation -// errors returned by CreateNodeGroupRequest.ValidateAll() if the designated -// constraints aren't met. -type CreateNodeGroupRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateNodeGroupRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateNodeGroupRequestMultiError) AllErrors() []error { return m } - // CreateNodeGroupRequestValidationError is the validation error returned by // CreateNodeGroupRequest.Validate if the designated constraints aren't met. type CreateNodeGroupRequestValidationError struct { @@ -30552,57 +18447,22 @@ var _CreateNodeGroupRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z- var _CreateNodeGroupRequest_Region_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GroupExtraInfo 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *GroupExtraInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GroupExtraInfo 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 GroupExtraInfoMultiError, -// or nil if none found. -func (m *GroupExtraInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *GroupExtraInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Provider // no validation rules for PoolID // no validation rules for ScriptType - if len(errors) > 0 { - return GroupExtraInfoMultiError(errors) - } - return nil } -// GroupExtraInfoMultiError is an error wrapping multiple validation errors -// returned by GroupExtraInfo.ValidateAll() if the designated constraints -// aren't met. -type GroupExtraInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GroupExtraInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GroupExtraInfoMultiError) AllErrors() []error { return m } - // GroupExtraInfoValidationError is the validation error returned by // GroupExtraInfo.Validate if the designated constraints aren't met. type GroupExtraInfoValidationError struct { @@ -30659,52 +18519,19 @@ var _ interface { // Validate checks the field values on CreateNodeGroupResponse 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. +// violated, an error is returned. func (m *CreateNodeGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateNodeGroupResponse 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 -// CreateNodeGroupResponseMultiError, or nil if none found. -func (m *CreateNodeGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateNodeGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseValidationError{ field: "Data", @@ -30714,26 +18541,7 @@ func (m *CreateNodeGroupResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -30743,30 +18551,9 @@ func (m *CreateNodeGroupResponse) validate(all bool) error { } } - if len(errors) > 0 { - return CreateNodeGroupResponseMultiError(errors) - } - return nil } -// CreateNodeGroupResponseMultiError is an error wrapping multiple validation -// errors returned by CreateNodeGroupResponse.ValidateAll() if the designated -// constraints aren't met. -type CreateNodeGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateNodeGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateNodeGroupResponseMultiError) AllErrors() []error { return m } - // CreateNodeGroupResponseValidationError is the validation error returned by // CreateNodeGroupResponse.Validate if the designated constraints aren't met. type CreateNodeGroupResponseValidationError struct { @@ -30825,46 +18612,13 @@ var _ interface { // Validate checks the field values on CreateNodeGroupResponseData 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. +// violated, an error is returned. func (m *CreateNodeGroupResponseData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateNodeGroupResponseData 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 -// CreateNodeGroupResponseDataMultiError, or nil if none found. -func (m *CreateNodeGroupResponseData) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateNodeGroupResponseData) validate(all bool) error { if m == nil { return nil } - var errors []error - - if all { - switch v := interface{}(m.GetNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeGroupResponseDataValidationError{ - field: "NodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeGroupResponseDataValidationError{ - field: "NodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseDataValidationError{ field: "NodeGroup", @@ -30874,26 +18628,7 @@ func (m *CreateNodeGroupResponseData) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNodeGroupResponseDataValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNodeGroupResponseDataValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseDataValidationError{ field: "Task", @@ -30903,30 +18638,9 @@ func (m *CreateNodeGroupResponseData) validate(all bool) error { } } - if len(errors) > 0 { - return CreateNodeGroupResponseDataMultiError(errors) - } - return nil } -// CreateNodeGroupResponseDataMultiError is an error wrapping multiple -// validation errors returned by CreateNodeGroupResponseData.ValidateAll() if -// the designated constraints aren't met. -type CreateNodeGroupResponseDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateNodeGroupResponseDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateNodeGroupResponseDataMultiError) AllErrors() []error { return m } - // CreateNodeGroupResponseDataValidationError is the validation error returned // by CreateNodeGroupResponseData.Validate if the designated constraints // aren't met. @@ -30986,94 +18700,45 @@ var _ interface { // Validate checks the field values on UpdateNodeGroupRequest 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. +// violated, an error is returned. func (m *UpdateNodeGroupRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeGroupRequest 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 -// UpdateNodeGroupRequestMultiError, or nil if none found. -func (m *UpdateNodeGroupRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeGroupRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetNodeGroupID()) > 20 { - err := UpdateNodeGroupRequestValidationError{ + return UpdateNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be at most 20 runes", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - err := UpdateNodeGroupRequestValidationError{ + return UpdateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := UpdateNodeGroupRequestValidationError{ + return UpdateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateNodeGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := UpdateNodeGroupRequestValidationError{ + return UpdateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Name // no validation rules for Region - if all { - switch v := interface{}(m.GetEnableAutoscale()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "EnableAutoscale", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "EnableAutoscale", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetEnableAutoscale()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetEnableAutoscale()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "EnableAutoscale", @@ -31083,26 +18748,7 @@ func (m *UpdateNodeGroupRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetAutoScaling()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "AutoScaling", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "AutoScaling", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "AutoScaling", @@ -31112,26 +18758,7 @@ func (m *UpdateNodeGroupRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetLaunchTemplate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "LaunchTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "LaunchTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "LaunchTemplate", @@ -31141,26 +18768,7 @@ func (m *UpdateNodeGroupRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetNodeTemplate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "NodeTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "NodeTemplate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "NodeTemplate", @@ -31179,14 +18787,10 @@ func (m *UpdateNodeGroupRequest) validate(all bool) error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - err := UpdateNodeGroupRequestValidationError{ + return UpdateNodeGroupRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Provider @@ -31195,26 +18799,7 @@ func (m *UpdateNodeGroupRequest) validate(all bool) error { // no validation rules for Desc - if all { - switch v := interface{}(m.GetBkCloudID()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "BkCloudID", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "BkCloudID", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetBkCloudID()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetBkCloudID()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "BkCloudID", @@ -31224,26 +18809,7 @@ func (m *UpdateNodeGroupRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCloudAreaName()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "CloudAreaName", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeGroupRequestValidationError{ - field: "CloudAreaName", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCloudAreaName()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCloudAreaName()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "CloudAreaName", @@ -31257,30 +18823,9 @@ func (m *UpdateNodeGroupRequest) validate(all bool) error { // no validation rules for ExtraInfo - if len(errors) > 0 { - return UpdateNodeGroupRequestMultiError(errors) - } - return nil } -// UpdateNodeGroupRequestMultiError is an error wrapping multiple validation -// errors returned by UpdateNodeGroupRequest.ValidateAll() if the designated -// constraints aren't met. -type UpdateNodeGroupRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeGroupRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeGroupRequestMultiError) AllErrors() []error { return m } - // UpdateNodeGroupRequestValidationError is the validation error returned by // UpdateNodeGroupRequest.Validate if the designated constraints aren't met. type UpdateNodeGroupRequestValidationError struct { @@ -31341,52 +18886,19 @@ var _UpdateNodeGroupRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z- // Validate checks the field values on UpdateNodeGroupResponse 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. +// violated, an error is returned. func (m *UpdateNodeGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeGroupResponse 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 -// UpdateNodeGroupResponseMultiError, or nil if none found. -func (m *UpdateNodeGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupResponseValidationError{ field: "Data", @@ -31396,26 +18908,7 @@ func (m *UpdateNodeGroupResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -31425,30 +18918,9 @@ func (m *UpdateNodeGroupResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateNodeGroupResponseMultiError(errors) - } - return nil } -// UpdateNodeGroupResponseMultiError is an error wrapping multiple validation -// errors returned by UpdateNodeGroupResponse.ValidateAll() if the designated -// constraints aren't met. -type UpdateNodeGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeGroupResponseMultiError) AllErrors() []error { return m } - // UpdateNodeGroupResponseValidationError is the validation error returned by // UpdateNodeGroupResponse.Validate if the designated constraints aren't met. type UpdateNodeGroupResponseValidationError struct { @@ -31507,46 +18979,24 @@ var _ interface { // Validate checks the field values on DeleteNodeGroupRequest 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. +// violated, an error is returned. func (m *DeleteNodeGroupRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteNodeGroupRequest 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 -// DeleteNodeGroupRequestMultiError, or nil if none found. -func (m *DeleteNodeGroupRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteNodeGroupRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - err := DeleteNodeGroupRequestValidationError{ + return DeleteNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteNodeGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := DeleteNodeGroupRequestValidationError{ + return DeleteNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for IsForce @@ -31556,42 +19006,17 @@ func (m *DeleteNodeGroupRequest) validate(all bool) error { // no validation rules for KeepNodesInstance if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 100 { - err := DeleteNodeGroupRequestValidationError{ + return DeleteNodeGroupRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for OnlyDeleteInfo - if len(errors) > 0 { - return DeleteNodeGroupRequestMultiError(errors) - } - return nil } -// DeleteNodeGroupRequestMultiError is an error wrapping multiple validation -// errors returned by DeleteNodeGroupRequest.ValidateAll() if the designated -// constraints aren't met. -type DeleteNodeGroupRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteNodeGroupRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteNodeGroupRequestMultiError) AllErrors() []error { return m } - // DeleteNodeGroupRequestValidationError is the validation error returned by // DeleteNodeGroupRequest.Validate if the designated constraints aren't met. type DeleteNodeGroupRequestValidationError struct { @@ -31652,52 +19077,19 @@ var _DeleteNodeGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-zA- // Validate checks the field values on DeleteNodeGroupResponse 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. +// violated, an error is returned. func (m *DeleteNodeGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteNodeGroupResponse 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 -// DeleteNodeGroupResponseMultiError, or nil if none found. -func (m *DeleteNodeGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteNodeGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteNodeGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteNodeGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseValidationError{ field: "Data", @@ -31707,26 +19099,7 @@ func (m *DeleteNodeGroupResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -31736,30 +19109,9 @@ func (m *DeleteNodeGroupResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteNodeGroupResponseMultiError(errors) - } - return nil } -// DeleteNodeGroupResponseMultiError is an error wrapping multiple validation -// errors returned by DeleteNodeGroupResponse.ValidateAll() if the designated -// constraints aren't met. -type DeleteNodeGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteNodeGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteNodeGroupResponseMultiError) AllErrors() []error { return m } - // DeleteNodeGroupResponseValidationError is the validation error returned by // DeleteNodeGroupResponse.Validate if the designated constraints aren't met. type DeleteNodeGroupResponseValidationError struct { @@ -31818,46 +19170,13 @@ var _ interface { // Validate checks the field values on DeleteNodeGroupResponseData 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. +// violated, an error is returned. func (m *DeleteNodeGroupResponseData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteNodeGroupResponseData 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 -// DeleteNodeGroupResponseDataMultiError, or nil if none found. -func (m *DeleteNodeGroupResponseData) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteNodeGroupResponseData) validate(all bool) error { if m == nil { return nil } - var errors []error - - if all { - switch v := interface{}(m.GetNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteNodeGroupResponseDataValidationError{ - field: "NodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteNodeGroupResponseDataValidationError{ - field: "NodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseDataValidationError{ field: "NodeGroup", @@ -31867,26 +19186,7 @@ func (m *DeleteNodeGroupResponseData) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteNodeGroupResponseDataValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteNodeGroupResponseDataValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseDataValidationError{ field: "Task", @@ -31896,30 +19196,9 @@ func (m *DeleteNodeGroupResponseData) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteNodeGroupResponseDataMultiError(errors) - } - return nil } -// DeleteNodeGroupResponseDataMultiError is an error wrapping multiple -// validation errors returned by DeleteNodeGroupResponseData.ValidateAll() if -// the designated constraints aren't met. -type DeleteNodeGroupResponseDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteNodeGroupResponseDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteNodeGroupResponseDataMultiError) AllErrors() []error { return m } - // DeleteNodeGroupResponseDataValidationError is the validation error returned // by DeleteNodeGroupResponseData.Validate if the designated constraints // aren't met. @@ -31979,72 +19258,29 @@ var _ interface { // Validate checks the field values on GetNodeGroupRequest 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. +// violated, an error is returned. func (m *GetNodeGroupRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetNodeGroupRequest 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 -// GetNodeGroupRequestMultiError, or nil if none found. -func (m *GetNodeGroupRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetNodeGroupRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - err := GetNodeGroupRequestValidationError{ + return GetNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_GetNodeGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := GetNodeGroupRequestValidationError{ + return GetNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return GetNodeGroupRequestMultiError(errors) } return nil } -// GetNodeGroupRequestMultiError is an error wrapping multiple validation -// errors returned by GetNodeGroupRequest.ValidateAll() if the designated -// constraints aren't met. -type GetNodeGroupRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetNodeGroupRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetNodeGroupRequestMultiError) AllErrors() []error { return m } - // GetNodeGroupRequestValidationError is the validation error returned by // GetNodeGroupRequest.Validate if the designated constraints aren't met. type GetNodeGroupRequestValidationError struct { @@ -32105,52 +19341,19 @@ var _GetNodeGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-] // Validate checks the field values on GetNodeGroupResponse 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. +// violated, an error is returned. func (m *GetNodeGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetNodeGroupResponse 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 -// GetNodeGroupResponseMultiError, or nil if none found. -func (m *GetNodeGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetNodeGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetNodeGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetNodeGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeGroupResponseValidationError{ field: "Data", @@ -32160,26 +19363,7 @@ func (m *GetNodeGroupResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -32189,30 +19373,9 @@ func (m *GetNodeGroupResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetNodeGroupResponseMultiError(errors) - } - return nil } -// GetNodeGroupResponseMultiError is an error wrapping multiple validation -// errors returned by GetNodeGroupResponse.ValidateAll() if the designated -// constraints aren't met. -type GetNodeGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetNodeGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetNodeGroupResponseMultiError) AllErrors() []error { return m } - // GetNodeGroupResponseValidationError is the validation error returned by // GetNodeGroupResponse.Validate if the designated constraints aren't met. type GetNodeGroupResponseValidationError struct { @@ -32271,85 +19434,38 @@ var _ interface { // Validate checks the field values on ListClusterNodeGroupRequest 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. +// violated, an error is returned. func (m *ListClusterNodeGroupRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListClusterNodeGroupRequest 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 -// ListClusterNodeGroupRequestMultiError, or nil if none found. -func (m *ListClusterNodeGroupRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListClusterNodeGroupRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - err := ListClusterNodeGroupRequestValidationError{ + return ListClusterNodeGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := ListClusterNodeGroupRequestValidationError{ + return ListClusterNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_ListClusterNodeGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := ListClusterNodeGroupRequestValidationError{ + return ListClusterNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for EnableFilter - if len(errors) > 0 { - return ListClusterNodeGroupRequestMultiError(errors) - } - return nil } -// ListClusterNodeGroupRequestMultiError is an error wrapping multiple -// validation errors returned by ListClusterNodeGroupRequest.ValidateAll() if -// the designated constraints aren't met. -type ListClusterNodeGroupRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListClusterNodeGroupRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListClusterNodeGroupRequestMultiError) AllErrors() []error { return m } - // ListClusterNodeGroupRequestValidationError is the validation error returned // by ListClusterNodeGroupRequest.Validate if the designated constraints // aren't met. @@ -32411,26 +19527,12 @@ var _ListClusterNodeGroupRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a- // Validate checks the field values on ListClusterNodeGroupResponse 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. +// violated, an error is returned. func (m *ListClusterNodeGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListClusterNodeGroupResponse 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 -// ListClusterNodeGroupResponseMultiError, or nil if none found. -func (m *ListClusterNodeGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListClusterNodeGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -32440,26 +19542,7 @@ func (m *ListClusterNodeGroupResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListClusterNodeGroupResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListClusterNodeGroupResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterNodeGroupResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -32471,26 +19554,7 @@ func (m *ListClusterNodeGroupResponse) validate(all bool) error { } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListClusterNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListClusterNodeGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -32500,30 +19564,9 @@ func (m *ListClusterNodeGroupResponse) validate(all bool) error { } } - if len(errors) > 0 { - return ListClusterNodeGroupResponseMultiError(errors) - } - return nil } -// ListClusterNodeGroupResponseMultiError is an error wrapping multiple -// validation errors returned by ListClusterNodeGroupResponse.ValidateAll() if -// the designated constraints aren't met. -type ListClusterNodeGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListClusterNodeGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListClusterNodeGroupResponseMultiError) AllErrors() []error { return m } - // ListClusterNodeGroupResponseValidationError is the validation error returned // by ListClusterNodeGroupResponse.Validate if the designated constraints // aren't met. @@ -32583,26 +19626,12 @@ var _ interface { // Validate checks the field values on ListNodeGroupRequest 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. +// violated, an error is returned. func (m *ListNodeGroupRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNodeGroupRequest 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 -// ListNodeGroupRequestMultiError, or nil if none found. -func (m *ListNodeGroupRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNodeGroupRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Name // no validation rules for ClusterID @@ -32611,30 +19640,9 @@ func (m *ListNodeGroupRequest) validate(all bool) error { // no validation rules for ProjectID - if len(errors) > 0 { - return ListNodeGroupRequestMultiError(errors) - } - return nil } -// ListNodeGroupRequestMultiError is an error wrapping multiple validation -// errors returned by ListNodeGroupRequest.ValidateAll() if the designated -// constraints aren't met. -type ListNodeGroupRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNodeGroupRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNodeGroupRequestMultiError) AllErrors() []error { return m } - // ListNodeGroupRequestValidationError is the validation error returned by // ListNodeGroupRequest.Validate if the designated constraints aren't met. type ListNodeGroupRequestValidationError struct { @@ -32693,26 +19701,12 @@ var _ interface { // Validate checks the field values on ListNodeGroupResponse 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. +// violated, an error is returned. func (m *ListNodeGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNodeGroupResponse 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 -// ListNodeGroupResponseMultiError, or nil if none found. -func (m *ListNodeGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNodeGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -32722,26 +19716,7 @@ func (m *ListNodeGroupResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListNodeGroupResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListNodeGroupResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodeGroupResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -32753,30 +19728,9 @@ func (m *ListNodeGroupResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListNodeGroupResponseMultiError(errors) - } - return nil } -// ListNodeGroupResponseMultiError is an error wrapping multiple validation -// errors returned by ListNodeGroupResponse.ValidateAll() if the designated -// constraints aren't met. -type ListNodeGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNodeGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNodeGroupResponseMultiError) AllErrors() []error { return m } - // ListNodeGroupResponseValidationError is the validation error returned by // ListNodeGroupResponse.Validate if the designated constraints aren't met. type ListNodeGroupResponseValidationError struct { @@ -32834,69 +19788,39 @@ var _ interface { } = ListNodeGroupResponseValidationError{} // Validate checks the field values on AddNodesRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *AddNodesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AddNodesRequest 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 -// AddNodesRequestMultiError, or nil if none found. -func (m *AddNodesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *AddNodesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := AddNodesRequestValidationError{ + return AddNodesRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := AddNodesRequestValidationError{ + return AddNodesRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_AddNodesRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := AddNodesRequestValidationError{ + return AddNodesRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if len(m.GetNodes()) < 1 { - err := AddNodesRequestValidationError{ + return AddNodesRequestValidationError{ field: "Nodes", reason: "value must contain at least 1 item(s)", } - if !all { - return err - } - errors = append(errors, err) } _AddNodesRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -32905,14 +19829,10 @@ func (m *AddNodesRequest) validate(all bool) error { _, _ = idx, item if _, exists := _AddNodesRequest_Nodes_Unique[item]; exists { - err := AddNodesRequestValidationError{ + return AddNodesRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } - if !all { - return err - } - errors = append(errors, err) } else { _AddNodesRequest_Nodes_Unique[item] = struct{}{} } @@ -32927,40 +19847,17 @@ func (m *AddNodesRequest) validate(all bool) error { // no validation rules for OnlyCreateInfo if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - err := AddNodesRequestValidationError{ + return AddNodesRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for NodeTemplateID // no validation rules for IsExternalNode - if all { - switch v := interface{}(m.GetLogin()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddNodesRequestValidationError{ - field: "Login", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddNodesRequestValidationError{ - field: "Login", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetLogin()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetLogin()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddNodesRequestValidationError{ field: "Login", @@ -32970,30 +19867,9 @@ func (m *AddNodesRequest) validate(all bool) error { } } - if len(errors) > 0 { - return AddNodesRequestMultiError(errors) - } - return nil } -// AddNodesRequestMultiError is an error wrapping multiple validation errors -// returned by AddNodesRequest.ValidateAll() if the designated constraints -// aren't met. -type AddNodesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AddNodesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AddNodesRequestMultiError) AllErrors() []error { return m } - // AddNodesRequestValidationError is the validation error returned by // AddNodesRequest.Validate if the designated constraints aren't met. type AddNodesRequestValidationError struct { @@ -33051,53 +19927,20 @@ var _ interface { var _AddNodesRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on AddNodesResponse 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *AddNodesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AddNodesResponse 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 -// AddNodesResponseMultiError, or nil if none found. -func (m *AddNodesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *AddNodesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddNodesResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddNodesResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddNodesResponseValidationError{ field: "Data", @@ -33107,26 +19950,7 @@ func (m *AddNodesResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, AddNodesResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, AddNodesResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddNodesResponseValidationError{ field: "WebAnnotations", @@ -33136,30 +19960,9 @@ func (m *AddNodesResponse) validate(all bool) error { } } - if len(errors) > 0 { - return AddNodesResponseMultiError(errors) - } - return nil } -// AddNodesResponseMultiError is an error wrapping multiple validation errors -// returned by AddNodesResponse.ValidateAll() if the designated constraints -// aren't met. -type AddNodesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AddNodesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AddNodesResponseMultiError) AllErrors() []error { return m } - // AddNodesResponseValidationError is the validation error returned by // AddNodesResponse.Validate if the designated constraints aren't met. type AddNodesResponseValidationError struct { @@ -33216,57 +20019,31 @@ var _ interface { // Validate checks the field values on BatchDeleteClusterNodesRequest 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. +// violated, an error is returned. func (m *BatchDeleteClusterNodesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on BatchDeleteClusterNodesRequest 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 -// BatchDeleteClusterNodesRequestMultiError, or nil if none found. -func (m *BatchDeleteClusterNodesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *BatchDeleteClusterNodesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := BatchDeleteClusterNodesRequestValidationError{ + return BatchDeleteClusterNodesRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := BatchDeleteClusterNodesRequestValidationError{ + return BatchDeleteClusterNodesRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_BatchDeleteClusterNodesRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := BatchDeleteClusterNodesRequestValidationError{ + return BatchDeleteClusterNodesRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for NodeIPs @@ -33274,42 +20051,17 @@ func (m *BatchDeleteClusterNodesRequest) validate(all bool) error { // no validation rules for VirtualNodeIDs if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - err := BatchDeleteClusterNodesRequestValidationError{ + return BatchDeleteClusterNodesRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for DeleteMode - if len(errors) > 0 { - return BatchDeleteClusterNodesRequestMultiError(errors) - } - return nil } -// BatchDeleteClusterNodesRequestMultiError is an error wrapping multiple -// validation errors returned by BatchDeleteClusterNodesRequest.ValidateAll() -// if the designated constraints aren't met. -type BatchDeleteClusterNodesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m BatchDeleteClusterNodesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m BatchDeleteClusterNodesRequestMultiError) AllErrors() []error { return m } - // BatchDeleteClusterNodesRequestValidationError is the validation error // returned by BatchDeleteClusterNodesRequest.Validate if the designated // constraints aren't met. @@ -33371,26 +20123,12 @@ var _BatchDeleteClusterNodesRequest_ClusterID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on BatchDeleteClusterNodesResponse 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. +// violated, an error is returned. func (m *BatchDeleteClusterNodesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on BatchDeleteClusterNodesResponse 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 -// BatchDeleteClusterNodesResponseMultiError, or nil if none found. -func (m *BatchDeleteClusterNodesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *BatchDeleteClusterNodesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -33400,26 +20138,7 @@ func (m *BatchDeleteClusterNodesResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return BatchDeleteClusterNodesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -33431,26 +20150,7 @@ func (m *BatchDeleteClusterNodesResponse) validate(all bool) error { } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return BatchDeleteClusterNodesResponseValidationError{ field: "WebAnnotations", @@ -33460,30 +20160,9 @@ func (m *BatchDeleteClusterNodesResponse) validate(all bool) error { } } - if len(errors) > 0 { - return BatchDeleteClusterNodesResponseMultiError(errors) - } - return nil } -// BatchDeleteClusterNodesResponseMultiError is an error wrapping multiple -// validation errors returned by BatchDeleteClusterNodesResponse.ValidateAll() -// if the designated constraints aren't met. -type BatchDeleteClusterNodesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m BatchDeleteClusterNodesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m BatchDeleteClusterNodesResponseMultiError) AllErrors() []error { return m } - // BatchDeleteClusterNodesResponseValidationError is the validation error // returned by BatchDeleteClusterNodesResponse.Validate if the designated // constraints aren't met. @@ -33542,27 +20221,13 @@ var _ interface { } = BatchDeleteClusterNodesResponseValidationError{} // Validate checks the field values on BatchNodesStatus 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *BatchNodesStatus) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on BatchNodesStatus 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 -// BatchNodesStatusMultiError, or nil if none found. -func (m *BatchNodesStatus) ValidateAll() error { - return m.validate(true) -} - -func (m *BatchNodesStatus) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Success // no validation rules for Message @@ -33573,30 +20238,9 @@ func (m *BatchNodesStatus) validate(all bool) error { // no validation rules for NodeGroupType - if len(errors) > 0 { - return BatchNodesStatusMultiError(errors) - } - return nil } -// BatchNodesStatusMultiError is an error wrapping multiple validation errors -// returned by BatchNodesStatus.ValidateAll() if the designated constraints -// aren't met. -type BatchNodesStatusMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m BatchNodesStatusMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m BatchNodesStatusMultiError) AllErrors() []error { return m } - // BatchNodesStatusValidationError is the validation error returned by // BatchNodesStatus.Validate if the designated constraints aren't met. type BatchNodesStatusValidationError struct { @@ -33653,68 +20297,38 @@ var _ interface { // Validate checks the field values on DeleteNodesRequest 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. +// violated, an error is returned. func (m *DeleteNodesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteNodesRequest 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 -// DeleteNodesRequestMultiError, or nil if none found. -func (m *DeleteNodesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteNodesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := DeleteNodesRequestValidationError{ + return DeleteNodesRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := DeleteNodesRequestValidationError{ + return DeleteNodesRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteNodesRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := DeleteNodesRequestValidationError{ + return DeleteNodesRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodes()) < 1 { - err := DeleteNodesRequestValidationError{ + return DeleteNodesRequestValidationError{ field: "Nodes", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for DeleteMode @@ -33722,14 +20336,10 @@ func (m *DeleteNodesRequest) validate(all bool) error { // no validation rules for IsForce if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - err := DeleteNodesRequestValidationError{ + return DeleteNodesRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for OnlyDeleteInfo @@ -33740,30 +20350,9 @@ func (m *DeleteNodesRequest) validate(all bool) error { // no validation rules for IsExternalNode - if len(errors) > 0 { - return DeleteNodesRequestMultiError(errors) - } - return nil } -// DeleteNodesRequestMultiError is an error wrapping multiple validation errors -// returned by DeleteNodesRequest.ValidateAll() if the designated constraints -// aren't met. -type DeleteNodesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteNodesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteNodesRequestMultiError) AllErrors() []error { return m } - // DeleteNodesRequestValidationError is the validation error returned by // DeleteNodesRequest.Validate if the designated constraints aren't met. type DeleteNodesRequestValidationError struct { @@ -33824,52 +20413,19 @@ var _DeleteNodesRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$" // Validate checks the field values on DeleteNodesResponse 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. +// violated, an error is returned. func (m *DeleteNodesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteNodesResponse 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 -// DeleteNodesResponseMultiError, or nil if none found. -func (m *DeleteNodesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteNodesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteNodesResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteNodesResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodesResponseValidationError{ field: "Data", @@ -33879,26 +20435,7 @@ func (m *DeleteNodesResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteNodesResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteNodesResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodesResponseValidationError{ field: "WebAnnotations", @@ -33908,30 +20445,9 @@ func (m *DeleteNodesResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteNodesResponseMultiError(errors) - } - return nil } -// DeleteNodesResponseMultiError is an error wrapping multiple validation -// errors returned by DeleteNodesResponse.ValidateAll() if the designated -// constraints aren't met. -type DeleteNodesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteNodesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteNodesResponseMultiError) AllErrors() []error { return m } - // DeleteNodesResponseValidationError is the validation error returned by // DeleteNodesResponse.Validate if the designated constraints aren't met. type DeleteNodesResponseValidationError struct { @@ -33990,68 +20506,38 @@ var _ interface { // Validate checks the field values on MoveNodesToGroupRequest 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. +// violated, an error is returned. func (m *MoveNodesToGroupRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on MoveNodesToGroupRequest 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 -// MoveNodesToGroupRequestMultiError, or nil if none found. -func (m *MoveNodesToGroupRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *MoveNodesToGroupRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - err := MoveNodesToGroupRequestValidationError{ + return MoveNodesToGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := MoveNodesToGroupRequestValidationError{ + return MoveNodesToGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_MoveNodesToGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := MoveNodesToGroupRequestValidationError{ + return MoveNodesToGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := len(m.GetNodes()); l < 1 || l > 100 { - err := MoveNodesToGroupRequestValidationError{ + return MoveNodesToGroupRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 100 items, inclusive", } - if !all { - return err - } - errors = append(errors, err) } _MoveNodesToGroupRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -34060,14 +20546,10 @@ func (m *MoveNodesToGroupRequest) validate(all bool) error { _, _ = idx, item if _, exists := _MoveNodesToGroupRequest_Nodes_Unique[item]; exists { - err := MoveNodesToGroupRequestValidationError{ + return MoveNodesToGroupRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } - if !all { - return err - } - errors = append(errors, err) } else { _MoveNodesToGroupRequest_Nodes_Unique[item] = struct{}{} } @@ -34076,51 +20558,22 @@ func (m *MoveNodesToGroupRequest) validate(all bool) error { } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - err := MoveNodesToGroupRequestValidationError{ + return MoveNodesToGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_MoveNodesToGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := MoveNodesToGroupRequestValidationError{ + return MoveNodesToGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return MoveNodesToGroupRequestMultiError(errors) } return nil } -// MoveNodesToGroupRequestMultiError is an error wrapping multiple validation -// errors returned by MoveNodesToGroupRequest.ValidateAll() if the designated -// constraints aren't met. -type MoveNodesToGroupRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MoveNodesToGroupRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MoveNodesToGroupRequestMultiError) AllErrors() []error { return m } - // MoveNodesToGroupRequestValidationError is the validation error returned by // MoveNodesToGroupRequest.Validate if the designated constraints aren't met. type MoveNodesToGroupRequestValidationError struct { @@ -34183,52 +20636,19 @@ var _MoveNodesToGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on MoveNodesToGroupResponse 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. +// violated, an error is returned. func (m *MoveNodesToGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on MoveNodesToGroupResponse 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 -// MoveNodesToGroupResponseMultiError, or nil if none found. -func (m *MoveNodesToGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *MoveNodesToGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, MoveNodesToGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, MoveNodesToGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return MoveNodesToGroupResponseValidationError{ field: "Data", @@ -34238,26 +20658,7 @@ func (m *MoveNodesToGroupResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, MoveNodesToGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, MoveNodesToGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return MoveNodesToGroupResponseValidationError{ field: "WebAnnotations", @@ -34267,30 +20668,9 @@ func (m *MoveNodesToGroupResponse) validate(all bool) error { } } - if len(errors) > 0 { - return MoveNodesToGroupResponseMultiError(errors) - } - return nil } -// MoveNodesToGroupResponseMultiError is an error wrapping multiple validation -// errors returned by MoveNodesToGroupResponse.ValidateAll() if the designated -// constraints aren't met. -type MoveNodesToGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MoveNodesToGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MoveNodesToGroupResponseMultiError) AllErrors() []error { return m } - // MoveNodesToGroupResponseValidationError is the validation error returned by // MoveNodesToGroupResponse.Validate if the designated constraints aren't met. type MoveNodesToGroupResponseValidationError struct { @@ -34349,68 +20729,38 @@ var _ interface { // Validate checks the field values on RemoveNodesFromGroupRequest 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. +// violated, an error is returned. func (m *RemoveNodesFromGroupRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RemoveNodesFromGroupRequest 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 -// RemoveNodesFromGroupRequestMultiError, or nil if none found. -func (m *RemoveNodesFromGroupRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *RemoveNodesFromGroupRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - err := RemoveNodesFromGroupRequestValidationError{ + return RemoveNodesFromGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := RemoveNodesFromGroupRequestValidationError{ + return RemoveNodesFromGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_RemoveNodesFromGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := RemoveNodesFromGroupRequestValidationError{ + return RemoveNodesFromGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := len(m.GetNodes()); l < 1 || l > 100 { - err := RemoveNodesFromGroupRequestValidationError{ + return RemoveNodesFromGroupRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 100 items, inclusive", } - if !all { - return err - } - errors = append(errors, err) } _RemoveNodesFromGroupRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -34419,14 +20769,10 @@ func (m *RemoveNodesFromGroupRequest) validate(all bool) error { _, _ = idx, item if _, exists := _RemoveNodesFromGroupRequest_Nodes_Unique[item]; exists { - err := RemoveNodesFromGroupRequestValidationError{ + return RemoveNodesFromGroupRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } - if !all { - return err - } - errors = append(errors, err) } else { _RemoveNodesFromGroupRequest_Nodes_Unique[item] = struct{}{} } @@ -34435,51 +20781,22 @@ func (m *RemoveNodesFromGroupRequest) validate(all bool) error { } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - err := RemoveNodesFromGroupRequestValidationError{ + return RemoveNodesFromGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_RemoveNodesFromGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := RemoveNodesFromGroupRequestValidationError{ + return RemoveNodesFromGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return RemoveNodesFromGroupRequestMultiError(errors) } return nil } -// RemoveNodesFromGroupRequestMultiError is an error wrapping multiple -// validation errors returned by RemoveNodesFromGroupRequest.ValidateAll() if -// the designated constraints aren't met. -type RemoveNodesFromGroupRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RemoveNodesFromGroupRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RemoveNodesFromGroupRequestMultiError) AllErrors() []error { return m } - // RemoveNodesFromGroupRequestValidationError is the validation error returned // by RemoveNodesFromGroupRequest.Validate if the designated constraints // aren't met. @@ -34543,52 +20860,19 @@ var _RemoveNodesFromGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9 // Validate checks the field values on RemoveNodesFromGroupResponse 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. +// violated, an error is returned. func (m *RemoveNodesFromGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RemoveNodesFromGroupResponse 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 -// RemoveNodesFromGroupResponseMultiError, or nil if none found. -func (m *RemoveNodesFromGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *RemoveNodesFromGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, RemoveNodesFromGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, RemoveNodesFromGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RemoveNodesFromGroupResponseValidationError{ field: "Data", @@ -34598,26 +20882,7 @@ func (m *RemoveNodesFromGroupResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, RemoveNodesFromGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, RemoveNodesFromGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RemoveNodesFromGroupResponseValidationError{ field: "WebAnnotations", @@ -34627,30 +20892,9 @@ func (m *RemoveNodesFromGroupResponse) validate(all bool) error { } } - if len(errors) > 0 { - return RemoveNodesFromGroupResponseMultiError(errors) - } - return nil } -// RemoveNodesFromGroupResponseMultiError is an error wrapping multiple -// validation errors returned by RemoveNodesFromGroupResponse.ValidateAll() if -// the designated constraints aren't met. -type RemoveNodesFromGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RemoveNodesFromGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RemoveNodesFromGroupResponseMultiError) AllErrors() []error { return m } - // RemoveNodesFromGroupResponseValidationError is the validation error returned // by RemoveNodesFromGroupResponse.Validate if the designated constraints // aren't met. @@ -34710,68 +20954,38 @@ var _ interface { // Validate checks the field values on CleanNodesInGroupRequest 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. +// violated, an error is returned. func (m *CleanNodesInGroupRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CleanNodesInGroupRequest 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 -// CleanNodesInGroupRequestMultiError, or nil if none found. -func (m *CleanNodesInGroupRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CleanNodesInGroupRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - err := CleanNodesInGroupRequestValidationError{ + return CleanNodesInGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := CleanNodesInGroupRequestValidationError{ + return CleanNodesInGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_CleanNodesInGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := CleanNodesInGroupRequestValidationError{ + return CleanNodesInGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := len(m.GetNodes()); l < 1 || l > 100 { - err := CleanNodesInGroupRequestValidationError{ + return CleanNodesInGroupRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 100 items, inclusive", } - if !all { - return err - } - errors = append(errors, err) } _CleanNodesInGroupRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -34780,14 +20994,10 @@ func (m *CleanNodesInGroupRequest) validate(all bool) error { _, _ = idx, item if _, exists := _CleanNodesInGroupRequest_Nodes_Unique[item]; exists { - err := CleanNodesInGroupRequestValidationError{ + return CleanNodesInGroupRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } - if !all { - return err - } - errors = append(errors, err) } else { _CleanNodesInGroupRequest_Nodes_Unique[item] = struct{}{} } @@ -34796,62 +21006,29 @@ func (m *CleanNodesInGroupRequest) validate(all bool) error { } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - err := CleanNodesInGroupRequestValidationError{ + return CleanNodesInGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CleanNodesInGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := CleanNodesInGroupRequestValidationError{ + return CleanNodesInGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - err := CleanNodesInGroupRequestValidationError{ + return CleanNodesInGroupRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return CleanNodesInGroupRequestMultiError(errors) } return nil } -// CleanNodesInGroupRequestMultiError is an error wrapping multiple validation -// errors returned by CleanNodesInGroupRequest.ValidateAll() if the designated -// constraints aren't met. -type CleanNodesInGroupRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CleanNodesInGroupRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CleanNodesInGroupRequestMultiError) AllErrors() []error { return m } - // CleanNodesInGroupRequestValidationError is the validation error returned by // CleanNodesInGroupRequest.Validate if the designated constraints aren't met. type CleanNodesInGroupRequestValidationError struct { @@ -34914,52 +21091,19 @@ var _CleanNodesInGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-z // Validate checks the field values on CleanNodesInGroupResponse 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. +// violated, an error is returned. func (m *CleanNodesInGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CleanNodesInGroupResponse 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 -// CleanNodesInGroupResponseMultiError, or nil if none found. -func (m *CleanNodesInGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CleanNodesInGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CleanNodesInGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CleanNodesInGroupResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupResponseValidationError{ field: "Data", @@ -34969,26 +21113,7 @@ func (m *CleanNodesInGroupResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CleanNodesInGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CleanNodesInGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupResponseValidationError{ field: "WebAnnotations", @@ -34998,30 +21123,9 @@ func (m *CleanNodesInGroupResponse) validate(all bool) error { } } - if len(errors) > 0 { - return CleanNodesInGroupResponseMultiError(errors) - } - return nil } -// CleanNodesInGroupResponseMultiError is an error wrapping multiple validation -// errors returned by CleanNodesInGroupResponse.ValidateAll() if the -// designated constraints aren't met. -type CleanNodesInGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CleanNodesInGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CleanNodesInGroupResponseMultiError) AllErrors() []error { return m } - // CleanNodesInGroupResponseValidationError is the validation error returned by // CleanNodesInGroupResponse.Validate if the designated constraints aren't met. type CleanNodesInGroupResponseValidationError struct { @@ -35080,127 +21184,64 @@ var _ interface { // Validate checks the field values on CleanNodesInGroupV2Request 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. +// violated, an error is returned. func (m *CleanNodesInGroupV2Request) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CleanNodesInGroupV2Request 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 -// CleanNodesInGroupV2RequestMultiError, or nil if none found. -func (m *CleanNodesInGroupV2Request) ValidateAll() error { - return m.validate(true) -} - -func (m *CleanNodesInGroupV2Request) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - err := CleanNodesInGroupV2RequestValidationError{ + return CleanNodesInGroupV2RequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := CleanNodesInGroupV2RequestValidationError{ + return CleanNodesInGroupV2RequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_CleanNodesInGroupV2Request_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := CleanNodesInGroupV2RequestValidationError{ + return CleanNodesInGroupV2RequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodes()) < 1 { - err := CleanNodesInGroupV2RequestValidationError{ + return CleanNodesInGroupV2RequestValidationError{ field: "Nodes", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - err := CleanNodesInGroupV2RequestValidationError{ + return CleanNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CleanNodesInGroupV2Request_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := CleanNodesInGroupV2RequestValidationError{ + return CleanNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - err := CleanNodesInGroupV2RequestValidationError{ + return CleanNodesInGroupV2RequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return CleanNodesInGroupV2RequestMultiError(errors) } return nil } -// CleanNodesInGroupV2RequestMultiError is an error wrapping multiple -// validation errors returned by CleanNodesInGroupV2Request.ValidateAll() if -// the designated constraints aren't met. -type CleanNodesInGroupV2RequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CleanNodesInGroupV2RequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CleanNodesInGroupV2RequestMultiError) AllErrors() []error { return m } - // CleanNodesInGroupV2RequestValidationError is the validation error returned // by CleanNodesInGroupV2Request.Validate if the designated constraints aren't met. type CleanNodesInGroupV2RequestValidationError struct { @@ -35263,52 +21304,19 @@ var _CleanNodesInGroupV2Request_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a // Validate checks the field values on CleanNodesInGroupV2Response 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. +// violated, an error is returned. func (m *CleanNodesInGroupV2Response) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CleanNodesInGroupV2Response 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 -// CleanNodesInGroupV2ResponseMultiError, or nil if none found. -func (m *CleanNodesInGroupV2Response) ValidateAll() error { - return m.validate(true) -} - -func (m *CleanNodesInGroupV2Response) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupV2ResponseValidationError{ field: "Data", @@ -35318,26 +21326,7 @@ func (m *CleanNodesInGroupV2Response) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupV2ResponseValidationError{ field: "WebAnnotations", @@ -35347,30 +21336,9 @@ func (m *CleanNodesInGroupV2Response) validate(all bool) error { } } - if len(errors) > 0 { - return CleanNodesInGroupV2ResponseMultiError(errors) - } - return nil } -// CleanNodesInGroupV2ResponseMultiError is an error wrapping multiple -// validation errors returned by CleanNodesInGroupV2Response.ValidateAll() if -// the designated constraints aren't met. -type CleanNodesInGroupV2ResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CleanNodesInGroupV2ResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CleanNodesInGroupV2ResponseMultiError) AllErrors() []error { return m } - // CleanNodesInGroupV2ResponseValidationError is the validation error returned // by CleanNodesInGroupV2Response.Validate if the designated constraints // aren't met. @@ -35430,74 +21398,31 @@ var _ interface { // Validate checks the field values on ListNodesInGroupV2Request 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. +// violated, an error is returned. func (m *ListNodesInGroupV2Request) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNodesInGroupV2Request 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 -// ListNodesInGroupV2RequestMultiError, or nil if none found. -func (m *ListNodesInGroupV2Request) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNodesInGroupV2Request) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - err := ListNodesInGroupV2RequestValidationError{ + return ListNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_ListNodesInGroupV2Request_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := ListNodesInGroupV2RequestValidationError{ + return ListNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Output - if len(errors) > 0 { - return ListNodesInGroupV2RequestMultiError(errors) - } - return nil } -// ListNodesInGroupV2RequestMultiError is an error wrapping multiple validation -// errors returned by ListNodesInGroupV2Request.ValidateAll() if the -// designated constraints aren't met. -type ListNodesInGroupV2RequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNodesInGroupV2RequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNodesInGroupV2RequestMultiError) AllErrors() []error { return m } - // ListNodesInGroupV2RequestValidationError is the validation error returned by // ListNodesInGroupV2Request.Validate if the designated constraints aren't met. type ListNodesInGroupV2RequestValidationError struct { @@ -35558,26 +21483,12 @@ var _ListNodesInGroupV2Request_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a- // Validate checks the field values on ListNodesInGroupV2Response 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. +// violated, an error is returned. func (m *ListNodesInGroupV2Response) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNodesInGroupV2Response 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 -// ListNodesInGroupV2ResponseMultiError, or nil if none found. -func (m *ListNodesInGroupV2Response) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNodesInGroupV2Response) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -35587,26 +21498,7 @@ func (m *ListNodesInGroupV2Response) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListNodesInGroupV2ResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListNodesInGroupV2ResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupV2ResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -35618,26 +21510,7 @@ func (m *ListNodesInGroupV2Response) validate(all bool) error { } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListNodesInGroupV2ResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListNodesInGroupV2ResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupV2ResponseValidationError{ field: "WebAnnotations", @@ -35647,30 +21520,9 @@ func (m *ListNodesInGroupV2Response) validate(all bool) error { } } - if len(errors) > 0 { - return ListNodesInGroupV2ResponseMultiError(errors) - } - return nil } -// ListNodesInGroupV2ResponseMultiError is an error wrapping multiple -// validation errors returned by ListNodesInGroupV2Response.ValidateAll() if -// the designated constraints aren't met. -type ListNodesInGroupV2ResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNodesInGroupV2ResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNodesInGroupV2ResponseMultiError) AllErrors() []error { return m } - // ListNodesInGroupV2ResponseValidationError is the validation error returned // by ListNodesInGroupV2Response.Validate if the designated constraints aren't met. type ListNodesInGroupV2ResponseValidationError struct { @@ -35728,27 +21580,13 @@ var _ interface { } = ListNodesInGroupV2ResponseValidationError{} // Validate checks the field values on NodeGroupNode 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NodeGroupNode) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeGroupNode 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 NodeGroupNodeMultiError, or -// nil if none found. -func (m *NodeGroupNode) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeGroupNode) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeID // no validation rules for InnerIP @@ -35785,30 +21623,9 @@ func (m *NodeGroupNode) validate(all bool) error { // no validation rules for NodeName - if len(errors) > 0 { - return NodeGroupNodeMultiError(errors) - } - return nil } -// NodeGroupNodeMultiError is an error wrapping multiple validation errors -// returned by NodeGroupNode.ValidateAll() if the designated constraints -// aren't met. -type NodeGroupNodeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeGroupNodeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeGroupNodeMultiError) AllErrors() []error { return m } - // NodeGroupNodeValidationError is the validation error returned by // NodeGroupNode.Validate if the designated constraints aren't met. type NodeGroupNodeValidationError struct { @@ -35865,26 +21682,12 @@ var _ interface { // Validate checks the field values on ListNodesInGroupResponse 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. +// violated, an error is returned. func (m *ListNodesInGroupResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNodesInGroupResponse 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 -// ListNodesInGroupResponseMultiError, or nil if none found. -func (m *ListNodesInGroupResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNodesInGroupResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -35894,26 +21697,7 @@ func (m *ListNodesInGroupResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListNodesInGroupResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListNodesInGroupResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -35925,26 +21709,7 @@ func (m *ListNodesInGroupResponse) validate(all bool) error { } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListNodesInGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListNodesInGroupResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupResponseValidationError{ field: "WebAnnotations", @@ -35954,30 +21719,9 @@ func (m *ListNodesInGroupResponse) validate(all bool) error { } } - if len(errors) > 0 { - return ListNodesInGroupResponseMultiError(errors) - } - return nil } -// ListNodesInGroupResponseMultiError is an error wrapping multiple validation -// errors returned by ListNodesInGroupResponse.ValidateAll() if the designated -// constraints aren't met. -type ListNodesInGroupResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNodesInGroupResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNodesInGroupResponseMultiError) AllErrors() []error { return m } - // ListNodesInGroupResponseValidationError is the validation error returned by // ListNodesInGroupResponse.Validate if the designated constraints aren't met. type ListNodesInGroupResponseValidationError struct { @@ -36036,105 +21780,50 @@ var _ interface { // Validate checks the field values on UpdateGroupMinMaxSizeRequest 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. +// violated, an error is returned. func (m *UpdateGroupMinMaxSizeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateGroupMinMaxSizeRequest 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 -// UpdateGroupMinMaxSizeRequestMultiError, or nil if none found. -func (m *UpdateGroupMinMaxSizeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateGroupMinMaxSizeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - err := UpdateGroupMinMaxSizeRequestValidationError{ + return UpdateGroupMinMaxSizeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateGroupMinMaxSizeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := UpdateGroupMinMaxSizeRequestValidationError{ + return UpdateGroupMinMaxSizeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if m.GetMinSize() < 0 { - err := UpdateGroupMinMaxSizeRequestValidationError{ + return UpdateGroupMinMaxSizeRequestValidationError{ field: "MinSize", reason: "value must be greater than or equal to 0", } - if !all { - return err - } - errors = append(errors, err) } if m.GetMaxSize() < 0 { - err := UpdateGroupMinMaxSizeRequestValidationError{ + return UpdateGroupMinMaxSizeRequestValidationError{ field: "MaxSize", reason: "value must be greater than or equal to 0", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetOperator()); l < 1 || l > 100 { - err := UpdateGroupMinMaxSizeRequestValidationError{ + return UpdateGroupMinMaxSizeRequestValidationError{ field: "Operator", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UpdateGroupMinMaxSizeRequestMultiError(errors) } return nil } -// UpdateGroupMinMaxSizeRequestMultiError is an error wrapping multiple -// validation errors returned by UpdateGroupMinMaxSizeRequest.ValidateAll() if -// the designated constraints aren't met. -type UpdateGroupMinMaxSizeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateGroupMinMaxSizeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateGroupMinMaxSizeRequestMultiError) AllErrors() []error { return m } - // UpdateGroupMinMaxSizeRequestValidationError is the validation error returned // by UpdateGroupMinMaxSizeRequest.Validate if the designated constraints // aren't met. @@ -36196,52 +21885,19 @@ var _UpdateGroupMinMaxSizeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on UpdateGroupMinMaxSizeResponse 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. +// violated, an error is returned. func (m *UpdateGroupMinMaxSizeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateGroupMinMaxSizeResponse 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 -// UpdateGroupMinMaxSizeResponseMultiError, or nil if none found. -func (m *UpdateGroupMinMaxSizeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateGroupMinMaxSizeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateGroupMinMaxSizeResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateGroupMinMaxSizeResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupMinMaxSizeResponseValidationError{ field: "WebAnnotations", @@ -36251,30 +21907,9 @@ func (m *UpdateGroupMinMaxSizeResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateGroupMinMaxSizeResponseMultiError(errors) - } - return nil } -// UpdateGroupMinMaxSizeResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateGroupMinMaxSizeResponse.ValidateAll() -// if the designated constraints aren't met. -type UpdateGroupMinMaxSizeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateGroupMinMaxSizeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateGroupMinMaxSizeResponseMultiError) AllErrors() []error { return m } - // UpdateGroupMinMaxSizeResponseValidationError is the validation error // returned by UpdateGroupMinMaxSizeResponse.Validate if the designated // constraints aren't met. @@ -36334,71 +21969,30 @@ var _ interface { // Validate checks the field values on UpdateGroupAsTimeRangeRequest 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. +// violated, an error is returned. func (m *UpdateGroupAsTimeRangeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateGroupAsTimeRangeRequest 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 -// UpdateGroupAsTimeRangeRequestMultiError, or nil if none found. -func (m *UpdateGroupAsTimeRangeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateGroupAsTimeRangeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - err := UpdateGroupAsTimeRangeRequestValidationError{ + return UpdateGroupAsTimeRangeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateGroupAsTimeRangeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := UpdateGroupAsTimeRangeRequestValidationError{ + return UpdateGroupAsTimeRangeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } for idx, item := range m.GetTimeRanges() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateGroupAsTimeRangeRequestValidationError{ - field: fmt.Sprintf("TimeRanges[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateGroupAsTimeRangeRequestValidationError{ - field: fmt.Sprintf("TimeRanges[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupAsTimeRangeRequestValidationError{ field: fmt.Sprintf("TimeRanges[%v]", idx), @@ -36412,30 +22006,9 @@ func (m *UpdateGroupAsTimeRangeRequest) validate(all bool) error { // no validation rules for Operator - if len(errors) > 0 { - return UpdateGroupAsTimeRangeRequestMultiError(errors) - } - return nil } -// UpdateGroupAsTimeRangeRequestMultiError is an error wrapping multiple -// validation errors returned by UpdateGroupAsTimeRangeRequest.ValidateAll() -// if the designated constraints aren't met. -type UpdateGroupAsTimeRangeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateGroupAsTimeRangeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateGroupAsTimeRangeRequestMultiError) AllErrors() []error { return m } - // UpdateGroupAsTimeRangeRequestValidationError is the validation error // returned by UpdateGroupAsTimeRangeRequest.Validate if the designated // constraints aren't met. @@ -36497,52 +22070,19 @@ var _UpdateGroupAsTimeRangeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on UpdateGroupAsTimeRangeResponse 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. +// violated, an error is returned. func (m *UpdateGroupAsTimeRangeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateGroupAsTimeRangeResponse 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 -// UpdateGroupAsTimeRangeResponseMultiError, or nil if none found. -func (m *UpdateGroupAsTimeRangeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateGroupAsTimeRangeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateGroupAsTimeRangeResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateGroupAsTimeRangeResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupAsTimeRangeResponseValidationError{ field: "WebAnnotations", @@ -36552,30 +22092,9 @@ func (m *UpdateGroupAsTimeRangeResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateGroupAsTimeRangeResponseMultiError(errors) - } - return nil } -// UpdateGroupAsTimeRangeResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateGroupAsTimeRangeResponse.ValidateAll() -// if the designated constraints aren't met. -type UpdateGroupAsTimeRangeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateGroupAsTimeRangeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateGroupAsTimeRangeResponseMultiError) AllErrors() []error { return m } - // UpdateGroupAsTimeRangeResponseValidationError is the validation error // returned by UpdateGroupAsTimeRangeResponse.Validate if the designated // constraints aren't met. @@ -36635,74 +22154,29 @@ var _ interface { // Validate checks the field values on TransNodeGroupToNodeTemplateRequest 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. +// are violated, an error is returned. func (m *TransNodeGroupToNodeTemplateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TransNodeGroupToNodeTemplateRequest -// 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 -// TransNodeGroupToNodeTemplateRequestMultiError, or nil if none found. -func (m *TransNodeGroupToNodeTemplateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *TransNodeGroupToNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 1 || l > 100 { - err := TransNodeGroupToNodeTemplateRequestValidationError{ + return TransNodeGroupToNodeTemplateRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_TransNodeGroupToNodeTemplateRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := TransNodeGroupToNodeTemplateRequestValidationError{ + return TransNodeGroupToNodeTemplateRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return TransNodeGroupToNodeTemplateRequestMultiError(errors) } return nil } -// TransNodeGroupToNodeTemplateRequestMultiError is an error wrapping multiple -// validation errors returned by -// TransNodeGroupToNodeTemplateRequest.ValidateAll() if the designated -// constraints aren't met. -type TransNodeGroupToNodeTemplateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TransNodeGroupToNodeTemplateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TransNodeGroupToNodeTemplateRequestMultiError) AllErrors() []error { return m } - // TransNodeGroupToNodeTemplateRequestValidationError is the validation error // returned by TransNodeGroupToNodeTemplateRequest.Validate if the designated // constraints aren't met. @@ -36764,53 +22238,19 @@ var _TransNodeGroupToNodeTemplateRequest_NodeGroupID_Pattern = regexp.MustCompil // Validate checks the field values on TransNodeGroupToNodeTemplateResponse // 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. +// rules are violated, an error is returned. func (m *TransNodeGroupToNodeTemplateResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TransNodeGroupToNodeTemplateResponse -// 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 -// TransNodeGroupToNodeTemplateResponseMultiError, or nil if none found. -func (m *TransNodeGroupToNodeTemplateResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *TransNodeGroupToNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetTemplate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TransNodeGroupToNodeTemplateResponseValidationError{ - field: "Template", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TransNodeGroupToNodeTemplateResponseValidationError{ - field: "Template", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTemplate()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TransNodeGroupToNodeTemplateResponseValidationError{ field: "Template", @@ -36820,31 +22260,9 @@ func (m *TransNodeGroupToNodeTemplateResponse) validate(all bool) error { } } - if len(errors) > 0 { - return TransNodeGroupToNodeTemplateResponseMultiError(errors) - } - return nil } -// TransNodeGroupToNodeTemplateResponseMultiError is an error wrapping multiple -// validation errors returned by -// TransNodeGroupToNodeTemplateResponse.ValidateAll() if the designated -// constraints aren't met. -type TransNodeGroupToNodeTemplateResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TransNodeGroupToNodeTemplateResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TransNodeGroupToNodeTemplateResponseMultiError) AllErrors() []error { return m } - // TransNodeGroupToNodeTemplateResponseValidationError is the validation error // returned by TransNodeGroupToNodeTemplateResponse.Validate if the designated // constraints aren't met. @@ -36904,85 +22322,38 @@ var _ interface { // Validate checks the field values on UpdateGroupDesiredSizeRequest 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. +// violated, an error is returned. func (m *UpdateGroupDesiredSizeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateGroupDesiredSizeRequest 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 -// UpdateGroupDesiredSizeRequestMultiError, or nil if none found. -func (m *UpdateGroupDesiredSizeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateGroupDesiredSizeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - err := UpdateGroupDesiredSizeRequestValidationError{ + return UpdateGroupDesiredSizeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateGroupDesiredSizeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := UpdateGroupDesiredSizeRequestValidationError{ + return UpdateGroupDesiredSizeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for DesiredSize if utf8.RuneCountInString(m.GetOperator()) > 100 { - err := UpdateGroupDesiredSizeRequestValidationError{ + return UpdateGroupDesiredSizeRequestValidationError{ field: "Operator", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UpdateGroupDesiredSizeRequestMultiError(errors) } return nil } -// UpdateGroupDesiredSizeRequestMultiError is an error wrapping multiple -// validation errors returned by UpdateGroupDesiredSizeRequest.ValidateAll() -// if the designated constraints aren't met. -type UpdateGroupDesiredSizeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateGroupDesiredSizeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateGroupDesiredSizeRequestMultiError) AllErrors() []error { return m } - // UpdateGroupDesiredSizeRequestValidationError is the validation error // returned by UpdateGroupDesiredSizeRequest.Validate if the designated // constraints aren't met. @@ -37044,52 +22415,19 @@ var _UpdateGroupDesiredSizeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on UpdateGroupDesiredSizeResponse 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. +// violated, an error is returned. func (m *UpdateGroupDesiredSizeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateGroupDesiredSizeResponse 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 -// UpdateGroupDesiredSizeResponseMultiError, or nil if none found. -func (m *UpdateGroupDesiredSizeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateGroupDesiredSizeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateGroupDesiredSizeResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateGroupDesiredSizeResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupDesiredSizeResponseValidationError{ field: "WebAnnotations", @@ -37099,30 +22437,9 @@ func (m *UpdateGroupDesiredSizeResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateGroupDesiredSizeResponseMultiError(errors) - } - return nil } -// UpdateGroupDesiredSizeResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateGroupDesiredSizeResponse.ValidateAll() -// if the designated constraints aren't met. -type UpdateGroupDesiredSizeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateGroupDesiredSizeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateGroupDesiredSizeResponseMultiError) AllErrors() []error { return m } - // UpdateGroupDesiredSizeResponseValidationError is the validation error // returned by UpdateGroupDesiredSizeResponse.Validate if the designated // constraints aren't met. @@ -37182,87 +22499,40 @@ var _ interface { // Validate checks the field values on UpdateGroupDesiredNodeRequest 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. +// violated, an error is returned. func (m *UpdateGroupDesiredNodeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateGroupDesiredNodeRequest 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 -// UpdateGroupDesiredNodeRequestMultiError, or nil if none found. -func (m *UpdateGroupDesiredNodeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateGroupDesiredNodeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - err := UpdateGroupDesiredNodeRequestValidationError{ + return UpdateGroupDesiredNodeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateGroupDesiredNodeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := UpdateGroupDesiredNodeRequestValidationError{ + return UpdateGroupDesiredNodeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for DesiredNode if utf8.RuneCountInString(m.GetOperator()) > 100 { - err := UpdateGroupDesiredNodeRequestValidationError{ + return UpdateGroupDesiredNodeRequestValidationError{ field: "Operator", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Manual - if len(errors) > 0 { - return UpdateGroupDesiredNodeRequestMultiError(errors) - } - return nil } -// UpdateGroupDesiredNodeRequestMultiError is an error wrapping multiple -// validation errors returned by UpdateGroupDesiredNodeRequest.ValidateAll() -// if the designated constraints aren't met. -type UpdateGroupDesiredNodeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateGroupDesiredNodeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateGroupDesiredNodeRequestMultiError) AllErrors() []error { return m } - // UpdateGroupDesiredNodeRequestValidationError is the validation error // returned by UpdateGroupDesiredNodeRequest.Validate if the designated // constraints aren't met. @@ -37324,52 +22594,19 @@ var _UpdateGroupDesiredNodeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on UpdateGroupDesiredNodeResponse 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. +// violated, an error is returned. func (m *UpdateGroupDesiredNodeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateGroupDesiredNodeResponse 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 -// UpdateGroupDesiredNodeResponseMultiError, or nil if none found. -func (m *UpdateGroupDesiredNodeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateGroupDesiredNodeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupDesiredNodeResponseValidationError{ field: "Data", @@ -37379,26 +22616,7 @@ func (m *UpdateGroupDesiredNodeResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupDesiredNodeResponseValidationError{ field: "WebAnnotations", @@ -37408,30 +22626,9 @@ func (m *UpdateGroupDesiredNodeResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateGroupDesiredNodeResponseMultiError(errors) - } - return nil } -// UpdateGroupDesiredNodeResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateGroupDesiredNodeResponse.ValidateAll() -// if the designated constraints aren't met. -type UpdateGroupDesiredNodeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateGroupDesiredNodeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateGroupDesiredNodeResponseMultiError) AllErrors() []error { return m } - // UpdateGroupDesiredNodeResponseValidationError is the validation error // returned by UpdateGroupDesiredNodeResponse.Validate if the designated // constraints aren't met. @@ -37491,72 +22688,29 @@ var _ interface { // Validate checks the field values on EnableNodeGroupAutoScaleRequest 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. +// violated, an error is returned. func (m *EnableNodeGroupAutoScaleRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on EnableNodeGroupAutoScaleRequest 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 -// EnableNodeGroupAutoScaleRequestMultiError, or nil if none found. -func (m *EnableNodeGroupAutoScaleRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *EnableNodeGroupAutoScaleRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - err := EnableNodeGroupAutoScaleRequestValidationError{ + return EnableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_EnableNodeGroupAutoScaleRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := EnableNodeGroupAutoScaleRequestValidationError{ + return EnableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return EnableNodeGroupAutoScaleRequestMultiError(errors) } return nil } -// EnableNodeGroupAutoScaleRequestMultiError is an error wrapping multiple -// validation errors returned by EnableNodeGroupAutoScaleRequest.ValidateAll() -// if the designated constraints aren't met. -type EnableNodeGroupAutoScaleRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m EnableNodeGroupAutoScaleRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m EnableNodeGroupAutoScaleRequestMultiError) AllErrors() []error { return m } - // EnableNodeGroupAutoScaleRequestValidationError is the validation error // returned by EnableNodeGroupAutoScaleRequest.Validate if the designated // constraints aren't met. @@ -37618,53 +22772,19 @@ var _EnableNodeGroupAutoScaleRequest_NodeGroupID_Pattern = regexp.MustCompile("^ // Validate checks the field values on EnableNodeGroupAutoScaleResponse 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. +// are violated, an error is returned. func (m *EnableNodeGroupAutoScaleResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on EnableNodeGroupAutoScaleResponse 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 -// EnableNodeGroupAutoScaleResponseMultiError, or nil if none found. -func (m *EnableNodeGroupAutoScaleResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *EnableNodeGroupAutoScaleResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, EnableNodeGroupAutoScaleResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, EnableNodeGroupAutoScaleResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return EnableNodeGroupAutoScaleResponseValidationError{ field: "WebAnnotations", @@ -37674,31 +22794,9 @@ func (m *EnableNodeGroupAutoScaleResponse) validate(all bool) error { } } - if len(errors) > 0 { - return EnableNodeGroupAutoScaleResponseMultiError(errors) - } - return nil } -// EnableNodeGroupAutoScaleResponseMultiError is an error wrapping multiple -// validation errors returned by -// EnableNodeGroupAutoScaleResponse.ValidateAll() if the designated -// constraints aren't met. -type EnableNodeGroupAutoScaleResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m EnableNodeGroupAutoScaleResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m EnableNodeGroupAutoScaleResponseMultiError) AllErrors() []error { return m } - // EnableNodeGroupAutoScaleResponseValidationError is the validation error // returned by EnableNodeGroupAutoScaleResponse.Validate if the designated // constraints aren't met. @@ -37758,74 +22856,29 @@ var _ interface { // Validate checks the field values on DisableNodeGroupAutoScaleRequest 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. +// are violated, an error is returned. func (m *DisableNodeGroupAutoScaleRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DisableNodeGroupAutoScaleRequest 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 -// DisableNodeGroupAutoScaleRequestMultiError, or nil if none found. -func (m *DisableNodeGroupAutoScaleRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DisableNodeGroupAutoScaleRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - err := DisableNodeGroupAutoScaleRequestValidationError{ + return DisableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_DisableNodeGroupAutoScaleRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - err := DisableNodeGroupAutoScaleRequestValidationError{ + return DisableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return DisableNodeGroupAutoScaleRequestMultiError(errors) } return nil } -// DisableNodeGroupAutoScaleRequestMultiError is an error wrapping multiple -// validation errors returned by -// DisableNodeGroupAutoScaleRequest.ValidateAll() if the designated -// constraints aren't met. -type DisableNodeGroupAutoScaleRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DisableNodeGroupAutoScaleRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DisableNodeGroupAutoScaleRequestMultiError) AllErrors() []error { return m } - // DisableNodeGroupAutoScaleRequestValidationError is the validation error // returned by DisableNodeGroupAutoScaleRequest.Validate if the designated // constraints aren't met. @@ -37887,53 +22940,19 @@ var _DisableNodeGroupAutoScaleRequest_NodeGroupID_Pattern = regexp.MustCompile(" // Validate checks the field values on DisableNodeGroupAutoScaleResponse 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. +// are violated, an error is returned. func (m *DisableNodeGroupAutoScaleResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DisableNodeGroupAutoScaleResponse -// 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 -// DisableNodeGroupAutoScaleResponseMultiError, or nil if none found. -func (m *DisableNodeGroupAutoScaleResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DisableNodeGroupAutoScaleResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DisableNodeGroupAutoScaleResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DisableNodeGroupAutoScaleResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DisableNodeGroupAutoScaleResponseValidationError{ field: "WebAnnotations", @@ -37943,31 +22962,9 @@ func (m *DisableNodeGroupAutoScaleResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DisableNodeGroupAutoScaleResponseMultiError(errors) - } - return nil } -// DisableNodeGroupAutoScaleResponseMultiError is an error wrapping multiple -// validation errors returned by -// DisableNodeGroupAutoScaleResponse.ValidateAll() if the designated -// constraints aren't met. -type DisableNodeGroupAutoScaleResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DisableNodeGroupAutoScaleResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DisableNodeGroupAutoScaleResponseMultiError) AllErrors() []error { return m } - // DisableNodeGroupAutoScaleResponseValidationError is the validation error // returned by DisableNodeGroupAutoScaleResponse.Validate if the designated // constraints aren't met. @@ -38026,38 +23023,20 @@ var _ interface { } = DisableNodeGroupAutoScaleResponseValidationError{} // Validate checks the field values on CreateTaskRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CreateTaskRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateTaskRequest 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 -// CreateTaskRequestMultiError, or nil if none found. -func (m *CreateTaskRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateTaskRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for TaskType if _, ok := _CreateTaskRequest_Status_InLookup[m.GetStatus()]; !ok { - err := CreateTaskRequestValidationError{ + return CreateTaskRequestValidationError{ field: "Status", reason: "value must be in list [INITIALIZING RUNNING SUCCESS FAILED TIMEOUT]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Message @@ -38071,165 +23050,83 @@ func (m *CreateTaskRequest) validate(all bool) error { // no validation rules for CurrentStep if len(m.GetStepSequence()) < 1 { - err := CreateTaskRequestValidationError{ + return CreateTaskRequestValidationError{ field: "StepSequence", reason: "value must contain at least 1 item(s)", } - if !all { - return err - } - errors = append(errors, err) } if l := len(m.GetSteps()); l < 1 || l > 20 { - err := CreateTaskRequestValidationError{ + return CreateTaskRequestValidationError{ field: "Steps", reason: "value must contain between 1 and 20 pairs, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - { - sorted_keys := make([]string, len(m.GetSteps())) - i := 0 - for key := range m.GetSteps() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetSteps()[key] - _ = val - - // no validation rules for Steps[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + } + + for key, val := range m.GetSteps() { + _ = val + + // no validation rules for Steps[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - err := CreateTaskRequestValidationError{ + return CreateTaskRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := CreateTaskRequestValidationError{ + return CreateTaskRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateTaskRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := CreateTaskRequestValidationError{ + return CreateTaskRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetProjectID()); l < 2 || l > 32 { - err := CreateTaskRequestValidationError{ + return CreateTaskRequestValidationError{ field: "ProjectID", reason: "value length must be between 2 and 32 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateTaskRequest_ProjectID_Pattern.MatchString(m.GetProjectID()) { - err := CreateTaskRequestValidationError{ + return CreateTaskRequestValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - err := CreateTaskRequestValidationError{ + return CreateTaskRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for LastUpdate - if len(errors) > 0 { - return CreateTaskRequestMultiError(errors) - } - return nil } -// CreateTaskRequestMultiError is an error wrapping multiple validation errors -// returned by CreateTaskRequest.ValidateAll() if the designated constraints -// aren't met. -type CreateTaskRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateTaskRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateTaskRequestMultiError) AllErrors() []error { return m } - // CreateTaskRequestValidationError is the validation error returned by // CreateTaskRequest.Validate if the designated constraints aren't met. type CreateTaskRequestValidationError struct { @@ -38300,52 +23197,19 @@ var _CreateTaskRequest_ProjectID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on CreateTaskResponse 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. +// violated, an error is returned. func (m *CreateTaskResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateTaskResponse 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 -// CreateTaskResponseMultiError, or nil if none found. -func (m *CreateTaskResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateTaskResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateTaskResponseValidationError{ field: "Data", @@ -38355,30 +23219,9 @@ func (m *CreateTaskResponse) validate(all bool) error { } } - if len(errors) > 0 { - return CreateTaskResponseMultiError(errors) - } - return nil } -// CreateTaskResponseMultiError is an error wrapping multiple validation errors -// returned by CreateTaskResponse.ValidateAll() if the designated constraints -// aren't met. -type CreateTaskResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateTaskResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateTaskResponseMultiError) AllErrors() []error { return m } - // CreateTaskResponseValidationError is the validation error returned by // CreateTaskResponse.Validate if the designated constraints aren't met. type CreateTaskResponseValidationError struct { @@ -38436,84 +23279,37 @@ var _ interface { } = CreateTaskResponseValidationError{} // Validate checks the field values on RetryTaskRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *RetryTaskRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RetryTaskRequest 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 -// RetryTaskRequestMultiError, or nil if none found. -func (m *RetryTaskRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *RetryTaskRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 1024 { - err := RetryTaskRequestValidationError{ + return RetryTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_RetryTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - err := RetryTaskRequestValidationError{ + return RetryTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - err := RetryTaskRequestValidationError{ + return RetryTaskRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return RetryTaskRequestMultiError(errors) } return nil } -// RetryTaskRequestMultiError is an error wrapping multiple validation errors -// returned by RetryTaskRequest.ValidateAll() if the designated constraints -// aren't met. -type RetryTaskRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RetryTaskRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RetryTaskRequestMultiError) AllErrors() []error { return m } - // RetryTaskRequestValidationError is the validation error returned by // RetryTaskRequest.Validate if the designated constraints aren't met. type RetryTaskRequestValidationError struct { @@ -38571,53 +23367,20 @@ var _ interface { var _RetryTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on RetryTaskResponse 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *RetryTaskResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RetryTaskResponse 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 -// RetryTaskResponseMultiError, or nil if none found. -func (m *RetryTaskResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *RetryTaskResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, RetryTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, RetryTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RetryTaskResponseValidationError{ field: "Data", @@ -38627,30 +23390,9 @@ func (m *RetryTaskResponse) validate(all bool) error { } } - if len(errors) > 0 { - return RetryTaskResponseMultiError(errors) - } - return nil } -// RetryTaskResponseMultiError is an error wrapping multiple validation errors -// returned by RetryTaskResponse.ValidateAll() if the designated constraints -// aren't met. -type RetryTaskResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RetryTaskResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RetryTaskResponseMultiError) AllErrors() []error { return m } - // RetryTaskResponseValidationError is the validation error returned by // RetryTaskResponse.Validate if the designated constraints aren't met. type RetryTaskResponseValidationError struct { @@ -38708,84 +23450,37 @@ var _ interface { } = RetryTaskResponseValidationError{} // Validate checks the field values on SkipTaskRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *SkipTaskRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SkipTaskRequest 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 -// SkipTaskRequestMultiError, or nil if none found. -func (m *SkipTaskRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *SkipTaskRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 1024 { - err := SkipTaskRequestValidationError{ + return SkipTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_SkipTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - err := SkipTaskRequestValidationError{ + return SkipTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - err := SkipTaskRequestValidationError{ + return SkipTaskRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return SkipTaskRequestMultiError(errors) } return nil } -// SkipTaskRequestMultiError is an error wrapping multiple validation errors -// returned by SkipTaskRequest.ValidateAll() if the designated constraints -// aren't met. -type SkipTaskRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SkipTaskRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SkipTaskRequestMultiError) AllErrors() []error { return m } - // SkipTaskRequestValidationError is the validation error returned by // SkipTaskRequest.Validate if the designated constraints aren't met. type SkipTaskRequestValidationError struct { @@ -38843,53 +23538,20 @@ var _ interface { var _SkipTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on SkipTaskResponse 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *SkipTaskResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SkipTaskResponse 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 -// SkipTaskResponseMultiError, or nil if none found. -func (m *SkipTaskResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *SkipTaskResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SkipTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SkipTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SkipTaskResponseValidationError{ field: "Data", @@ -38899,30 +23561,9 @@ func (m *SkipTaskResponse) validate(all bool) error { } } - if len(errors) > 0 { - return SkipTaskResponseMultiError(errors) - } - return nil } -// SkipTaskResponseMultiError is an error wrapping multiple validation errors -// returned by SkipTaskResponse.ValidateAll() if the designated constraints -// aren't met. -type SkipTaskResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SkipTaskResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SkipTaskResponseMultiError) AllErrors() []error { return m } - // SkipTaskResponseValidationError is the validation error returned by // SkipTaskResponse.Validate if the designated constraints aren't met. type SkipTaskResponseValidationError struct { @@ -38978,58 +23619,32 @@ var _ interface { } = SkipTaskResponseValidationError{} // Validate checks the field values on UpdateTaskRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *UpdateTaskRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateTaskRequest 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 -// UpdateTaskRequestMultiError, or nil if none found. -func (m *UpdateTaskRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateTaskRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 36 { - err := UpdateTaskRequestValidationError{ + return UpdateTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 36 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_UpdateTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - err := UpdateTaskRequestValidationError{ + return UpdateTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _UpdateTaskRequest_Status_InLookup[m.GetStatus()]; !ok { - err := UpdateTaskRequestValidationError{ + return UpdateTaskRequestValidationError{ field: "Status", reason: "value must be in list [INITIALIZING RUNNING SUCCESS FAILURE TIMEOUT]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Message @@ -39041,97 +23656,39 @@ func (m *UpdateTaskRequest) validate(all bool) error { // no validation rules for CurrentStep if l := len(m.GetSteps()); l < 1 || l > 20 { - err := UpdateTaskRequestValidationError{ + return UpdateTaskRequestValidationError{ field: "Steps", reason: "value must contain between 1 and 20 pairs, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - { - sorted_keys := make([]string, len(m.GetSteps())) - i := 0 - for key := range m.GetSteps() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetSteps()[key] - _ = val - - // no validation rules for Steps[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + } + + for key, val := range m.GetSteps() { + _ = val + + // no validation rules for Steps[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } + } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - err := UpdateTaskRequestValidationError{ + return UpdateTaskRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UpdateTaskRequestMultiError(errors) } return nil } -// UpdateTaskRequestMultiError is an error wrapping multiple validation errors -// returned by UpdateTaskRequest.ValidateAll() if the designated constraints -// aren't met. -type UpdateTaskRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateTaskRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateTaskRequestMultiError) AllErrors() []error { return m } - // UpdateTaskRequestValidationError is the validation error returned by // UpdateTaskRequest.Validate if the designated constraints aren't met. type UpdateTaskRequestValidationError struct { @@ -39200,52 +23757,19 @@ var _UpdateTaskRequest_Status_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateTaskResponse 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. +// violated, an error is returned. func (m *UpdateTaskResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateTaskResponse 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 -// UpdateTaskResponseMultiError, or nil if none found. -func (m *UpdateTaskResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateTaskResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateTaskResponseValidationError{ field: "Data", @@ -39255,30 +23779,9 @@ func (m *UpdateTaskResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateTaskResponseMultiError(errors) - } - return nil } -// UpdateTaskResponseMultiError is an error wrapping multiple validation errors -// returned by UpdateTaskResponse.ValidateAll() if the designated constraints -// aren't met. -type UpdateTaskResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateTaskResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateTaskResponseMultiError) AllErrors() []error { return m } - // UpdateTaskResponseValidationError is the validation error returned by // UpdateTaskResponse.Validate if the designated constraints aren't met. type UpdateTaskResponseValidationError struct { @@ -39336,75 +23839,32 @@ var _ interface { } = UpdateTaskResponseValidationError{} // Validate checks the field values on DeleteTaskRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *DeleteTaskRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteTaskRequest 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 -// DeleteTaskRequestMultiError, or nil if none found. -func (m *DeleteTaskRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteTaskRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 36 { - err := DeleteTaskRequestValidationError{ + return DeleteTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 36 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - err := DeleteTaskRequestValidationError{ + return DeleteTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for IsForce - if len(errors) > 0 { - return DeleteTaskRequestMultiError(errors) - } - return nil } -// DeleteTaskRequestMultiError is an error wrapping multiple validation errors -// returned by DeleteTaskRequest.ValidateAll() if the designated constraints -// aren't met. -type DeleteTaskRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteTaskRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteTaskRequestMultiError) AllErrors() []error { return m } - // DeleteTaskRequestValidationError is the validation error returned by // DeleteTaskRequest.Validate if the designated constraints aren't met. type DeleteTaskRequestValidationError struct { @@ -39465,52 +23925,19 @@ var _DeleteTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteTaskResponse 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. +// violated, an error is returned. func (m *DeleteTaskResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteTaskResponse 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 -// DeleteTaskResponseMultiError, or nil if none found. -func (m *DeleteTaskResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteTaskResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteTaskResponseValidationError{ field: "Data", @@ -39520,30 +23947,9 @@ func (m *DeleteTaskResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteTaskResponseMultiError(errors) - } - return nil } -// DeleteTaskResponseMultiError is an error wrapping multiple validation errors -// returned by DeleteTaskResponse.ValidateAll() if the designated constraints -// aren't met. -type DeleteTaskResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteTaskResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteTaskResponseMultiError) AllErrors() []error { return m } - // DeleteTaskResponseValidationError is the validation error returned by // DeleteTaskResponse.Validate if the designated constraints aren't met. type DeleteTaskResponseValidationError struct { @@ -39601,73 +24007,30 @@ var _ interface { } = DeleteTaskResponseValidationError{} // Validate checks the field values on GetTaskRequest 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *GetTaskRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetTaskRequest 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 GetTaskRequestMultiError, -// or nil if none found. -func (m *GetTaskRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetTaskRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 36 { - err := GetTaskRequestValidationError{ + return GetTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 36 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_GetTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - err := GetTaskRequestValidationError{ + return GetTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return GetTaskRequestMultiError(errors) } return nil } -// GetTaskRequestMultiError is an error wrapping multiple validation errors -// returned by GetTaskRequest.ValidateAll() if the designated constraints -// aren't met. -type GetTaskRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetTaskRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetTaskRequestMultiError) AllErrors() []error { return m } - // GetTaskRequestValidationError is the validation error returned by // GetTaskRequest.Validate if the designated constraints aren't met. type GetTaskRequestValidationError struct { @@ -39725,53 +24088,20 @@ var _ interface { var _GetTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GetTaskResponse 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *GetTaskResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetTaskResponse 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 -// GetTaskResponseMultiError, or nil if none found. -func (m *GetTaskResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetTaskResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTaskResponseValidationError{ field: "Data", @@ -39781,30 +24111,9 @@ func (m *GetTaskResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetTaskResponseMultiError(errors) - } - return nil } -// GetTaskResponseMultiError is an error wrapping multiple validation errors -// returned by GetTaskResponse.ValidateAll() if the designated constraints -// aren't met. -type GetTaskResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetTaskResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetTaskResponseMultiError) AllErrors() []error { return m } - // GetTaskResponseValidationError is the validation error returned by // GetTaskResponse.Validate if the designated constraints aren't met. type GetTaskResponseValidationError struct { @@ -39860,69 +24169,39 @@ var _ interface { } = GetTaskResponseValidationError{} // Validate checks the field values on ListTaskRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ListTaskRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListTaskRequest 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 -// ListTaskRequestMultiError, or nil if none found. -func (m *ListTaskRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListTaskRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetClusterID()) > 100 { - err := ListTaskRequestValidationError{ + return ListTaskRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 32 { - err := ListTaskRequestValidationError{ + return ListTaskRequestValidationError{ field: "ProjectID", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetCreator()) > 20 { - err := ListTaskRequestValidationError{ + return ListTaskRequestValidationError{ field: "Creator", reason: "value length must be at most 20 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetUpdater()) > 20 { - err := ListTaskRequestValidationError{ + return ListTaskRequestValidationError{ field: "Updater", reason: "value length must be at most 20 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for TaskType @@ -39933,30 +24212,9 @@ func (m *ListTaskRequest) validate(all bool) error { // no validation rules for NodeGroupID - if len(errors) > 0 { - return ListTaskRequestMultiError(errors) - } - return nil } -// ListTaskRequestMultiError is an error wrapping multiple validation errors -// returned by ListTaskRequest.ValidateAll() if the designated constraints -// aren't met. -type ListTaskRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListTaskRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListTaskRequestMultiError) AllErrors() []error { return m } - // ListTaskRequestValidationError is the validation error returned by // ListTaskRequest.Validate if the designated constraints aren't met. type ListTaskRequestValidationError struct { @@ -40012,27 +24270,13 @@ var _ interface { } = ListTaskRequestValidationError{} // Validate checks the field values on ListTaskResponse 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ListTaskResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListTaskResponse 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 -// ListTaskResponseMultiError, or nil if none found. -func (m *ListTaskResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListTaskResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -40042,26 +24286,7 @@ func (m *ListTaskResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListTaskResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListTaskResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -40073,26 +24298,7 @@ func (m *ListTaskResponse) validate(all bool) error { } - if all { - switch v := interface{}(m.GetLatestTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListTaskResponseValidationError{ - field: "LatestTask", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListTaskResponseValidationError{ - field: "LatestTask", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetLatestTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetLatestTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskResponseValidationError{ field: "LatestTask", @@ -40102,30 +24308,9 @@ func (m *ListTaskResponse) validate(all bool) error { } } - if len(errors) > 0 { - return ListTaskResponseMultiError(errors) - } - return nil } -// ListTaskResponseMultiError is an error wrapping multiple validation errors -// returned by ListTaskResponse.ValidateAll() if the designated constraints -// aren't met. -type ListTaskResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListTaskResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListTaskResponseMultiError) AllErrors() []error { return m } - // ListTaskResponseValidationError is the validation error returned by // ListTaskResponse.Validate if the designated constraints aren't met. type ListTaskResponseValidationError struct { @@ -40182,26 +24367,12 @@ var _ interface { // Validate checks the field values on CreateAutoScalingOptionRequest 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. +// violated, an error is returned. func (m *CreateAutoScalingOptionRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateAutoScalingOptionRequest 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 -// CreateAutoScalingOptionRequestMultiError, or nil if none found. -func (m *CreateAutoScalingOptionRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for IsScaleDownEnable // no validation rules for Expander @@ -40229,47 +24400,31 @@ func (m *CreateAutoScalingOptionRequest) validate(all bool) error { // no validation rules for UnregisteredNodeRemovalTime if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - err := CreateAutoScalingOptionRequestValidationError{ + return CreateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := CreateAutoScalingOptionRequestValidationError{ + return CreateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateAutoScalingOptionRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := CreateAutoScalingOptionRequestValidationError{ + return CreateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - err := CreateAutoScalingOptionRequestValidationError{ + return CreateAutoScalingOptionRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Provider @@ -40284,26 +24439,7 @@ func (m *CreateAutoScalingOptionRequest) validate(all bool) error { // no validation rules for MaxNodeProvisionTime - if all { - switch v := interface{}(m.GetScaleUpFromZero()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateAutoScalingOptionRequestValidationError{ - field: "ScaleUpFromZero", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateAutoScalingOptionRequestValidationError{ - field: "ScaleUpFromZero", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateAutoScalingOptionRequestValidationError{ field: "ScaleUpFromZero", @@ -40317,26 +24453,7 @@ func (m *CreateAutoScalingOptionRequest) validate(all bool) error { // no validation rules for ScaleDownDelayAfterDelete - if all { - switch v := interface{}(m.GetScaleDownDelayAfterFailure()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateAutoScalingOptionRequestValidationError{ - field: "ScaleDownDelayAfterFailure", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateAutoScalingOptionRequestValidationError{ - field: "ScaleDownDelayAfterFailure", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleDownDelayAfterFailure()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleDownDelayAfterFailure()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterFailure", @@ -40352,30 +24469,9 @@ func (m *CreateAutoScalingOptionRequest) validate(all bool) error { // no validation rules for BufferResourceMemRatio - if len(errors) > 0 { - return CreateAutoScalingOptionRequestMultiError(errors) - } - return nil } -// CreateAutoScalingOptionRequestMultiError is an error wrapping multiple -// validation errors returned by CreateAutoScalingOptionRequest.ValidateAll() -// if the designated constraints aren't met. -type CreateAutoScalingOptionRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateAutoScalingOptionRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateAutoScalingOptionRequestMultiError) AllErrors() []error { return m } - // CreateAutoScalingOptionRequestValidationError is the validation error // returned by CreateAutoScalingOptionRequest.Validate if the designated // constraints aren't met. @@ -40437,52 +24533,19 @@ var _CreateAutoScalingOptionRequest_ClusterID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on CreateAutoScalingOptionResponse 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. +// violated, an error is returned. func (m *CreateAutoScalingOptionResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateAutoScalingOptionResponse 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 -// CreateAutoScalingOptionResponseMultiError, or nil if none found. -func (m *CreateAutoScalingOptionResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateAutoScalingOptionResponseValidationError{ field: "Data", @@ -40492,30 +24555,9 @@ func (m *CreateAutoScalingOptionResponse) validate(all bool) error { } } - if len(errors) > 0 { - return CreateAutoScalingOptionResponseMultiError(errors) - } - return nil } -// CreateAutoScalingOptionResponseMultiError is an error wrapping multiple -// validation errors returned by CreateAutoScalingOptionResponse.ValidateAll() -// if the designated constraints aren't met. -type CreateAutoScalingOptionResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateAutoScalingOptionResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateAutoScalingOptionResponseMultiError) AllErrors() []error { return m } - // CreateAutoScalingOptionResponseValidationError is the validation error // returned by CreateAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -40575,103 +24617,50 @@ var _ interface { // Validate checks the field values on UpdateAutoScalingOptionRequest 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. +// violated, an error is returned. func (m *UpdateAutoScalingOptionRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateAutoScalingOptionRequest 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 -// UpdateAutoScalingOptionRequestMultiError, or nil if none found. -func (m *UpdateAutoScalingOptionRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for IsScaleDownEnable if _, ok := _UpdateAutoScalingOptionRequest_Expander_InLookup[m.GetExpander()]; !ok { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "Expander", reason: "value must be in list [random least-waste most-pods priority]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxEmptyBulkDelete(); val < 1 || val > 100 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "MaxEmptyBulkDelete", reason: "value must be inside range [1, 100]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownDelay(); val < 60 || val > 86400 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelay", reason: "value must be inside range [60, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownUnneededTime(); val < 60 || val > 86400 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownUnneededTime", reason: "value must be inside range [60, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownUtilizationThreahold(); val < 0 || val > 80 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownUtilizationThreahold", reason: "value must be inside range [0, 80]", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetSkipNodesWithLocalStorage()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "SkipNodesWithLocalStorage", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "SkipNodesWithLocalStorage", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSkipNodesWithLocalStorage()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetSkipNodesWithLocalStorage()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "SkipNodesWithLocalStorage", @@ -40681,26 +24670,7 @@ func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetSkipNodesWithSystemPods()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "SkipNodesWithSystemPods", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "SkipNodesWithSystemPods", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSkipNodesWithSystemPods()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetSkipNodesWithSystemPods()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "SkipNodesWithSystemPods", @@ -40710,26 +24680,7 @@ func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetIgnoreDaemonSetsUtilization()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "IgnoreDaemonSetsUtilization", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "IgnoreDaemonSetsUtilization", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetIgnoreDaemonSetsUtilization()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetIgnoreDaemonSetsUtilization()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "IgnoreDaemonSetsUtilization", @@ -40740,71 +24691,47 @@ func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { } if val := m.GetOkTotalUnreadyCount(); val < 0 || val > 320000 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "OkTotalUnreadyCount", reason: "value must be inside range [0, 320000]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxTotalUnreadyPercentage(); val < 0 || val > 100 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "MaxTotalUnreadyPercentage", reason: "value must be inside range [0, 100]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownUnreadyTime(); val < 1200 || val > 86400 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownUnreadyTime", reason: "value must be inside range [1200, 86400]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for UnregisteredNodeRemovalTime if utf8.RuneCountInString(m.GetProjectID()) > 32 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ProjectID", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterID()) > 100 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Provider @@ -40814,71 +24741,36 @@ func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { if wrapper := m.GetBufferResourceRatio(); wrapper != nil { if val := wrapper.GetValue(); val < 0 || val > 100 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "BufferResourceRatio", reason: "value must be inside range [0, 100]", } - if !all { - return err - } - errors = append(errors, err) } } if val := m.GetMaxGracefulTerminationSec(); val < 60 || val > 86400 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "MaxGracefulTerminationSec", reason: "value must be inside range [60, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScanInterval(); val < 5 || val > 86400 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ScanInterval", reason: "value must be inside range [5, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxNodeProvisionTime(); val < 900 || val > 86400 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "MaxNodeProvisionTime", reason: "value must be inside range [900, 86400]", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetScaleUpFromZero()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "ScaleUpFromZero", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "ScaleUpFromZero", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleUpFromZero", @@ -40889,84 +24781,45 @@ func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { } if val := m.GetScaleDownDelayAfterAdd(); val < 1200 || val > 86400 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterAdd", reason: "value must be inside range [1200, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownDelayAfterDelete(); val < 0 || val > 86400 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterDelete", reason: "value must be inside range [0, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if wrapper := m.GetScaleDownDelayAfterFailure(); wrapper != nil { if val := wrapper.GetValue(); val < 60 || val > 86400 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterFailure", reason: "value must be inside range [60, 86400]", } - if !all { - return err - } - errors = append(errors, err) } } if val := m.GetBufferResourceCpuRatio(); val < 0 || val > 100 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "BufferResourceCpuRatio", reason: "value must be inside range [0, 100]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetBufferResourceMemRatio(); val < 0 || val > 100 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "BufferResourceMemRatio", reason: "value must be inside range [0, 100]", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetModule()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "Module", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "Module", @@ -40976,26 +24829,7 @@ func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebhook()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "Webhook", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "Webhook", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "Webhook", @@ -41007,26 +24841,7 @@ func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { // no validation rules for OnlyUpdateInfo - if all { - switch v := interface{}(m.GetExpendablePodsPriorityCutoff()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "ExpendablePodsPriorityCutoff", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ - field: "ExpendablePodsPriorityCutoff", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "ExpendablePodsPriorityCutoff", @@ -41039,42 +24854,17 @@ func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { if wrapper := m.GetNewPodScaleUpDelay(); wrapper != nil { if wrapper.GetValue() < 0 { - err := UpdateAutoScalingOptionRequestValidationError{ + return UpdateAutoScalingOptionRequestValidationError{ field: "NewPodScaleUpDelay", reason: "value must be greater than or equal to 0", } - if !all { - return err - } - errors = append(errors, err) } } - if len(errors) > 0 { - return UpdateAutoScalingOptionRequestMultiError(errors) - } - return nil } -// UpdateAutoScalingOptionRequestMultiError is an error wrapping multiple -// validation errors returned by UpdateAutoScalingOptionRequest.ValidateAll() -// if the designated constraints aren't met. -type UpdateAutoScalingOptionRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateAutoScalingOptionRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateAutoScalingOptionRequestMultiError) AllErrors() []error { return m } - // UpdateAutoScalingOptionRequestValidationError is the validation error // returned by UpdateAutoScalingOptionRequest.Validate if the designated // constraints aren't met. @@ -41141,52 +24931,19 @@ var _UpdateAutoScalingOptionRequest_Expander_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateAutoScalingOptionResponse 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. +// violated, an error is returned. func (m *UpdateAutoScalingOptionResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateAutoScalingOptionResponse 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 -// UpdateAutoScalingOptionResponseMultiError, or nil if none found. -func (m *UpdateAutoScalingOptionResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionResponseValidationError{ field: "Data", @@ -41196,26 +24953,7 @@ func (m *UpdateAutoScalingOptionResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -41225,30 +24963,9 @@ func (m *UpdateAutoScalingOptionResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateAutoScalingOptionResponseMultiError(errors) - } - return nil } -// UpdateAutoScalingOptionResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateAutoScalingOptionResponse.ValidateAll() -// if the designated constraints aren't met. -type UpdateAutoScalingOptionResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateAutoScalingOptionResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateAutoScalingOptionResponseMultiError) AllErrors() []error { return m } - // UpdateAutoScalingOptionResponseValidationError is the validation error // returned by UpdateAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -41308,65 +25025,24 @@ var _ interface { // Validate checks the field values on UpdateAsOptionDeviceProviderRequest 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. +// are violated, an error is returned. func (m *UpdateAsOptionDeviceProviderRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateAsOptionDeviceProviderRequest -// 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 -// UpdateAsOptionDeviceProviderRequestMultiError, or nil if none found. -func (m *UpdateAsOptionDeviceProviderRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateAsOptionDeviceProviderRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetClusterID()) > 100 { - err := UpdateAsOptionDeviceProviderRequestValidationError{ + return UpdateAsOptionDeviceProviderRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Provider - if len(errors) > 0 { - return UpdateAsOptionDeviceProviderRequestMultiError(errors) - } - return nil } -// UpdateAsOptionDeviceProviderRequestMultiError is an error wrapping multiple -// validation errors returned by -// UpdateAsOptionDeviceProviderRequest.ValidateAll() if the designated -// constraints aren't met. -type UpdateAsOptionDeviceProviderRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateAsOptionDeviceProviderRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateAsOptionDeviceProviderRequestMultiError) AllErrors() []error { return m } - // UpdateAsOptionDeviceProviderRequestValidationError is the validation error // returned by UpdateAsOptionDeviceProviderRequest.Validate if the designated // constraints aren't met. @@ -41426,58 +25102,21 @@ var _ interface { // Validate checks the field values on UpdateAsOptionDeviceProviderResponse // 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. +// rules are violated, an error is returned. func (m *UpdateAsOptionDeviceProviderResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateAsOptionDeviceProviderResponse -// 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 -// UpdateAsOptionDeviceProviderResponseMultiError, or nil if none found. -func (m *UpdateAsOptionDeviceProviderResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateAsOptionDeviceProviderResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return UpdateAsOptionDeviceProviderResponseMultiError(errors) - } - return nil } -// UpdateAsOptionDeviceProviderResponseMultiError is an error wrapping multiple -// validation errors returned by -// UpdateAsOptionDeviceProviderResponse.ValidateAll() if the designated -// constraints aren't met. -type UpdateAsOptionDeviceProviderResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateAsOptionDeviceProviderResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateAsOptionDeviceProviderResponseMultiError) AllErrors() []error { return m } - // UpdateAsOptionDeviceProviderResponseValidationError is the validation error // returned by UpdateAsOptionDeviceProviderResponse.Validate if the designated // constraints aren't met. @@ -41537,81 +25176,47 @@ var _ interface { // Validate checks the field values on SyncAutoScalingOptionRequest 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. +// violated, an error is returned. func (m *SyncAutoScalingOptionRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SyncAutoScalingOptionRequest 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 -// SyncAutoScalingOptionRequestMultiError, or nil if none found. -func (m *SyncAutoScalingOptionRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *SyncAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for IsScaleDownEnable if _, ok := _SyncAutoScalingOptionRequest_Expander_InLookup[m.GetExpander()]; !ok { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "Expander", reason: "value must be in list [random least-waste most-pods priority]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxEmptyBulkDelete(); val < 1 || val > 100 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "MaxEmptyBulkDelete", reason: "value must be inside range [1, 100]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownDelay(); val < 60 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelay", reason: "value must be inside range [60, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownUnneededTime(); val < 60 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownUnneededTime", reason: "value must be inside range [60, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownUtilizationThreahold(); val < 0 || val > 80 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownUtilizationThreahold", reason: "value must be inside range [0, 80]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for SkipNodesWithLocalStorage @@ -41621,148 +25226,85 @@ func (m *SyncAutoScalingOptionRequest) validate(all bool) error { // no validation rules for IgnoreDaemonSetsUtilization if val := m.GetOkTotalUnreadyCount(); val < 0 || val > 320000 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "OkTotalUnreadyCount", reason: "value must be inside range [0, 320000]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxTotalUnreadyPercentage(); val < 0 || val > 100 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "MaxTotalUnreadyPercentage", reason: "value must be inside range [0, 100]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownUnreadyTime(); val < 1200 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownUnreadyTime", reason: "value must be inside range [1200, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterID()) > 100 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ScaleDownGpuUtilizationThreshold if val := m.GetBufferResourceRatio(); val < 0 || val > 100 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "BufferResourceRatio", reason: "value must be inside range [0, 100]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxGracefulTerminationSec(); val < 60 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "MaxGracefulTerminationSec", reason: "value must be inside range [60, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScanInterval(); val < 5 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "ScanInterval", reason: "value must be inside range [5, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxNodeProvisionTime(); val < 900 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "MaxNodeProvisionTime", reason: "value must be inside range [900, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxNodeStartupTime(); val < 900 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "MaxNodeStartupTime", reason: "value must be inside range [900, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetMaxNodeStartScheduleTime(); val < 900 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "MaxNodeStartScheduleTime", reason: "value must be inside range [900, 86400]", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetScaleUpFromZero()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SyncAutoScalingOptionRequestValidationError{ - field: "ScaleUpFromZero", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SyncAutoScalingOptionRequestValidationError{ - field: "ScaleUpFromZero", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionRequestValidationError{ field: "ScaleUpFromZero", @@ -41773,84 +25315,45 @@ func (m *SyncAutoScalingOptionRequest) validate(all bool) error { } if val := m.GetScaleDownDelayAfterAdd(); val < 1200 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterAdd", reason: "value must be inside range [1200, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetScaleDownDelayAfterDelete(); val < 0 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterDelete", reason: "value must be inside range [0, 86400]", } - if !all { - return err - } - errors = append(errors, err) } if wrapper := m.GetScaleDownDelayAfterFailure(); wrapper != nil { if val := wrapper.GetValue(); val < 60 || val > 86400 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterFailure", reason: "value must be inside range [60, 86400]", } - if !all { - return err - } - errors = append(errors, err) } } if val := m.GetBufferResourceCpuRatio(); val < 0 || val > 100 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "BufferResourceCpuRatio", reason: "value must be inside range [0, 100]", } - if !all { - return err - } - errors = append(errors, err) } if val := m.GetBufferResourceMemRatio(); val < 0 || val > 100 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "BufferResourceMemRatio", reason: "value must be inside range [0, 100]", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetWebhook()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SyncAutoScalingOptionRequestValidationError{ - field: "Webhook", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SyncAutoScalingOptionRequestValidationError{ - field: "Webhook", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionRequestValidationError{ field: "Webhook", @@ -41860,26 +25363,7 @@ func (m *SyncAutoScalingOptionRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetExpendablePodsPriorityCutoff()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SyncAutoScalingOptionRequestValidationError{ - field: "ExpendablePodsPriorityCutoff", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SyncAutoScalingOptionRequestValidationError{ - field: "ExpendablePodsPriorityCutoff", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionRequestValidationError{ field: "ExpendablePodsPriorityCutoff", @@ -41892,42 +25376,17 @@ func (m *SyncAutoScalingOptionRequest) validate(all bool) error { if wrapper := m.GetNewPodScaleUpDelay(); wrapper != nil { if wrapper.GetValue() < 0 { - err := SyncAutoScalingOptionRequestValidationError{ + return SyncAutoScalingOptionRequestValidationError{ field: "NewPodScaleUpDelay", reason: "value must be greater than or equal to 0", } - if !all { - return err - } - errors = append(errors, err) } } - if len(errors) > 0 { - return SyncAutoScalingOptionRequestMultiError(errors) - } - return nil } -// SyncAutoScalingOptionRequestMultiError is an error wrapping multiple -// validation errors returned by SyncAutoScalingOptionRequest.ValidateAll() if -// the designated constraints aren't met. -type SyncAutoScalingOptionRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SyncAutoScalingOptionRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SyncAutoScalingOptionRequestMultiError) AllErrors() []error { return m } - // SyncAutoScalingOptionRequestValidationError is the validation error returned // by SyncAutoScalingOptionRequest.Validate if the designated constraints // aren't met. @@ -41994,52 +25453,19 @@ var _SyncAutoScalingOptionRequest_Expander_InLookup = map[string]struct{}{ // Validate checks the field values on SyncAutoScalingOptionResponse 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. +// violated, an error is returned. func (m *SyncAutoScalingOptionResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SyncAutoScalingOptionResponse 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 -// SyncAutoScalingOptionResponseMultiError, or nil if none found. -func (m *SyncAutoScalingOptionResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *SyncAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SyncAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SyncAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionResponseValidationError{ field: "Data", @@ -42049,26 +25475,7 @@ func (m *SyncAutoScalingOptionResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SyncAutoScalingOptionResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SyncAutoScalingOptionResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -42078,30 +25485,9 @@ func (m *SyncAutoScalingOptionResponse) validate(all bool) error { } } - if len(errors) > 0 { - return SyncAutoScalingOptionResponseMultiError(errors) - } - return nil } -// SyncAutoScalingOptionResponseMultiError is an error wrapping multiple -// validation errors returned by SyncAutoScalingOptionResponse.ValidateAll() -// if the designated constraints aren't met. -type SyncAutoScalingOptionResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SyncAutoScalingOptionResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SyncAutoScalingOptionResponseMultiError) AllErrors() []error { return m } - // SyncAutoScalingOptionResponseValidationError is the validation error // returned by SyncAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -42161,85 +25547,38 @@ var _ interface { // Validate checks the field values on DeleteAutoScalingOptionRequest 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. +// violated, an error is returned. func (m *DeleteAutoScalingOptionRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteAutoScalingOptionRequest 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 -// DeleteAutoScalingOptionRequestMultiError, or nil if none found. -func (m *DeleteAutoScalingOptionRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - err := DeleteAutoScalingOptionRequestValidationError{ + return DeleteAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := DeleteAutoScalingOptionRequestValidationError{ + return DeleteAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_DeleteAutoScalingOptionRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := DeleteAutoScalingOptionRequestValidationError{ + return DeleteAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for IsForce - if len(errors) > 0 { - return DeleteAutoScalingOptionRequestMultiError(errors) - } - return nil } -// DeleteAutoScalingOptionRequestMultiError is an error wrapping multiple -// validation errors returned by DeleteAutoScalingOptionRequest.ValidateAll() -// if the designated constraints aren't met. -type DeleteAutoScalingOptionRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteAutoScalingOptionRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteAutoScalingOptionRequestMultiError) AllErrors() []error { return m } - // DeleteAutoScalingOptionRequestValidationError is the validation error // returned by DeleteAutoScalingOptionRequest.Validate if the designated // constraints aren't met. @@ -42301,52 +25640,19 @@ var _DeleteAutoScalingOptionRequest_ClusterID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on DeleteAutoScalingOptionResponse 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. +// violated, an error is returned. func (m *DeleteAutoScalingOptionResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteAutoScalingOptionResponse 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 -// DeleteAutoScalingOptionResponseMultiError, or nil if none found. -func (m *DeleteAutoScalingOptionResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteAutoScalingOptionResponseValidationError{ field: "Data", @@ -42356,26 +25662,7 @@ func (m *DeleteAutoScalingOptionResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -42385,30 +25672,9 @@ func (m *DeleteAutoScalingOptionResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteAutoScalingOptionResponseMultiError(errors) - } - return nil } -// DeleteAutoScalingOptionResponseMultiError is an error wrapping multiple -// validation errors returned by DeleteAutoScalingOptionResponse.ValidateAll() -// if the designated constraints aren't met. -type DeleteAutoScalingOptionResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteAutoScalingOptionResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteAutoScalingOptionResponseMultiError) AllErrors() []error { return m } - // DeleteAutoScalingOptionResponseValidationError is the validation error // returned by DeleteAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -42468,85 +25734,38 @@ var _ interface { // Validate checks the field values on GetAutoScalingOptionRequest 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. +// violated, an error is returned. func (m *GetAutoScalingOptionRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetAutoScalingOptionRequest 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 -// GetAutoScalingOptionRequestMultiError, or nil if none found. -func (m *GetAutoScalingOptionRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - err := GetAutoScalingOptionRequestValidationError{ + return GetAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - err := GetAutoScalingOptionRequestValidationError{ + return GetAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } - if !all { - return err - } - errors = append(errors, err) } if !_GetAutoScalingOptionRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := GetAutoScalingOptionRequestValidationError{ + return GetAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Provider - if len(errors) > 0 { - return GetAutoScalingOptionRequestMultiError(errors) - } - return nil } -// GetAutoScalingOptionRequestMultiError is an error wrapping multiple -// validation errors returned by GetAutoScalingOptionRequest.ValidateAll() if -// the designated constraints aren't met. -type GetAutoScalingOptionRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetAutoScalingOptionRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetAutoScalingOptionRequestMultiError) AllErrors() []error { return m } - // GetAutoScalingOptionRequestValidationError is the validation error returned // by GetAutoScalingOptionRequest.Validate if the designated constraints // aren't met. @@ -42608,52 +25827,19 @@ var _GetAutoScalingOptionRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a- // Validate checks the field values on GetAutoScalingOptionResponse 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. +// violated, an error is returned. func (m *GetAutoScalingOptionResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetAutoScalingOptionResponse 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 -// GetAutoScalingOptionResponseMultiError, or nil if none found. -func (m *GetAutoScalingOptionResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetAutoScalingOptionResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetAutoScalingOptionResponseValidationError{ field: "Data", @@ -42663,26 +25849,7 @@ func (m *GetAutoScalingOptionResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetAutoScalingOptionResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetAutoScalingOptionResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -42692,30 +25859,9 @@ func (m *GetAutoScalingOptionResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetAutoScalingOptionResponseMultiError(errors) - } - return nil } -// GetAutoScalingOptionResponseMultiError is an error wrapping multiple -// validation errors returned by GetAutoScalingOptionResponse.ValidateAll() if -// the designated constraints aren't met. -type GetAutoScalingOptionResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetAutoScalingOptionResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetAutoScalingOptionResponseMultiError) AllErrors() []error { return m } - // GetAutoScalingOptionResponseValidationError is the validation error returned // by GetAutoScalingOptionResponse.Validate if the designated constraints // aren't met. @@ -42775,94 +25921,43 @@ var _ interface { // Validate checks the field values on ListAutoScalingOptionRequest 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. +// violated, an error is returned. func (m *ListAutoScalingOptionRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListAutoScalingOptionRequest 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 -// ListAutoScalingOptionRequestMultiError, or nil if none found. -func (m *ListAutoScalingOptionRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetClusterID()) > 100 { - err := ListAutoScalingOptionRequestValidationError{ + return ListAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 32 { - err := ListAutoScalingOptionRequestValidationError{ + return ListAutoScalingOptionRequestValidationError{ field: "ProjectID", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetCreator()) > 20 { - err := ListAutoScalingOptionRequestValidationError{ + return ListAutoScalingOptionRequestValidationError{ field: "Creator", reason: "value length must be at most 20 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetUpdater()) > 20 { - err := ListAutoScalingOptionRequestValidationError{ + return ListAutoScalingOptionRequestValidationError{ field: "Updater", reason: "value length must be at most 20 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return ListAutoScalingOptionRequestMultiError(errors) } return nil } -// ListAutoScalingOptionRequestMultiError is an error wrapping multiple -// validation errors returned by ListAutoScalingOptionRequest.ValidateAll() if -// the designated constraints aren't met. -type ListAutoScalingOptionRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListAutoScalingOptionRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListAutoScalingOptionRequestMultiError) AllErrors() []error { return m } - // ListAutoScalingOptionRequestValidationError is the validation error returned // by ListAutoScalingOptionRequest.Validate if the designated constraints // aren't met. @@ -42922,26 +26017,12 @@ var _ interface { // Validate checks the field values on ListAutoScalingOptionResponse 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. +// violated, an error is returned. func (m *ListAutoScalingOptionResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListAutoScalingOptionResponse 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 -// ListAutoScalingOptionResponseMultiError, or nil if none found. -func (m *ListAutoScalingOptionResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -42951,26 +26032,7 @@ func (m *ListAutoScalingOptionResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListAutoScalingOptionResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListAutoScalingOptionResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListAutoScalingOptionResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -42982,30 +26044,9 @@ func (m *ListAutoScalingOptionResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListAutoScalingOptionResponseMultiError(errors) - } - return nil } -// ListAutoScalingOptionResponseMultiError is an error wrapping multiple -// validation errors returned by ListAutoScalingOptionResponse.ValidateAll() -// if the designated constraints aren't met. -type ListAutoScalingOptionResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListAutoScalingOptionResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListAutoScalingOptionResponseMultiError) AllErrors() []error { return m } - // ListAutoScalingOptionResponseValidationError is the validation error // returned by ListAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -43065,76 +26106,33 @@ var _ interface { // Validate checks the field values on UpdateAutoScalingStatusRequest 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. +// violated, an error is returned. func (m *UpdateAutoScalingStatusRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateAutoScalingStatusRequest 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 -// UpdateAutoScalingStatusRequestMultiError, or nil if none found. -func (m *UpdateAutoScalingStatusRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateAutoScalingStatusRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Enable if utf8.RuneCountInString(m.GetClusterID()) > 100 { - err := UpdateAutoScalingStatusRequestValidationError{ + return UpdateAutoScalingStatusRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } - if !all { - return err - } - errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - err := UpdateAutoScalingStatusRequestValidationError{ + return UpdateAutoScalingStatusRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Provider - if len(errors) > 0 { - return UpdateAutoScalingStatusRequestMultiError(errors) - } - return nil } -// UpdateAutoScalingStatusRequestMultiError is an error wrapping multiple -// validation errors returned by UpdateAutoScalingStatusRequest.ValidateAll() -// if the designated constraints aren't met. -type UpdateAutoScalingStatusRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateAutoScalingStatusRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateAutoScalingStatusRequestMultiError) AllErrors() []error { return m } - // UpdateAutoScalingStatusRequestValidationError is the validation error // returned by UpdateAutoScalingStatusRequest.Validate if the designated // constraints aren't met. @@ -43194,52 +26192,19 @@ var _ interface { // Validate checks the field values on UpdateAutoScalingStatusResponse 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. +// violated, an error is returned. func (m *UpdateAutoScalingStatusResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateAutoScalingStatusResponse 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 -// UpdateAutoScalingStatusResponseMultiError, or nil if none found. -func (m *UpdateAutoScalingStatusResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateAutoScalingStatusResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingStatusResponseValidationError{ field: "Data", @@ -43249,26 +26214,7 @@ func (m *UpdateAutoScalingStatusResponse) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingStatusResponseValidationError{ field: "WebAnnotations", @@ -43278,30 +26224,9 @@ func (m *UpdateAutoScalingStatusResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateAutoScalingStatusResponseMultiError(errors) - } - return nil } -// UpdateAutoScalingStatusResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateAutoScalingStatusResponse.ValidateAll() -// if the designated constraints aren't met. -type UpdateAutoScalingStatusResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateAutoScalingStatusResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateAutoScalingStatusResponseMultiError) AllErrors() []error { return m } - // UpdateAutoScalingStatusResponseValidationError is the validation error // returned by UpdateAutoScalingStatusResponse.Validate if the designated // constraints aren't met. @@ -43360,27 +26285,13 @@ var _ interface { } = UpdateAutoScalingStatusResponseValidationError{} // Validate checks the field values on ServiceRoleInfo 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ServiceRoleInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ServiceRoleInfo 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 -// ServiceRoleInfoMultiError, or nil if none found. -func (m *ServiceRoleInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ServiceRoleInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for RoleName // no validation rules for RoleID @@ -43389,30 +26300,9 @@ func (m *ServiceRoleInfo) validate(all bool) error { // no validation rules for Description - if len(errors) > 0 { - return ServiceRoleInfoMultiError(errors) - } - return nil } -// ServiceRoleInfoMultiError is an error wrapping multiple validation errors -// returned by ServiceRoleInfo.ValidateAll() if the designated constraints -// aren't met. -type ServiceRoleInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ServiceRoleInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ServiceRoleInfoMultiError) AllErrors() []error { return m } - // ServiceRoleInfoValidationError is the validation error returned by // ServiceRoleInfo.Validate if the designated constraints aren't met. type ServiceRoleInfoValidationError struct { @@ -43469,74 +26359,31 @@ var _ interface { // Validate checks the field values on GetServiceRolesRequest 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. +// violated, an error is returned. func (m *GetServiceRolesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetServiceRolesRequest 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 -// GetServiceRolesRequestMultiError, or nil if none found. -func (m *GetServiceRolesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetServiceRolesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := GetServiceRolesRequestValidationError{ + return GetServiceRolesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AccountID if _, ok := _GetServiceRolesRequest_RoleType_InLookup[m.GetRoleType()]; !ok { - err := GetServiceRolesRequestValidationError{ + return GetServiceRolesRequestValidationError{ field: "RoleType", reason: "value must be in list [cluster nodeGroup]", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return GetServiceRolesRequestMultiError(errors) } return nil } -// GetServiceRolesRequestMultiError is an error wrapping multiple validation -// errors returned by GetServiceRolesRequest.ValidateAll() if the designated -// constraints aren't met. -type GetServiceRolesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetServiceRolesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetServiceRolesRequestMultiError) AllErrors() []error { return m } - // GetServiceRolesRequestValidationError is the validation error returned by // GetServiceRolesRequest.Validate if the designated constraints aren't met. type GetServiceRolesRequestValidationError struct { @@ -43600,26 +26447,12 @@ var _GetServiceRolesRequest_RoleType_InLookup = map[string]struct{}{ // Validate checks the field values on GetServiceRolesResponse 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. +// violated, an error is returned. func (m *GetServiceRolesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetServiceRolesResponse 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 -// GetServiceRolesResponseMultiError, or nil if none found. -func (m *GetServiceRolesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetServiceRolesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -43629,26 +26462,7 @@ func (m *GetServiceRolesResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetServiceRolesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetServiceRolesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetServiceRolesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -43660,30 +26474,9 @@ func (m *GetServiceRolesResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetServiceRolesResponseMultiError(errors) - } - return nil } -// GetServiceRolesResponseMultiError is an error wrapping multiple validation -// errors returned by GetServiceRolesResponse.ValidateAll() if the designated -// constraints aren't met. -type GetServiceRolesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetServiceRolesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetServiceRolesResponseMultiError) AllErrors() []error { return m } - // GetServiceRolesResponseValidationError is the validation error returned by // GetServiceRolesResponse.Validate if the designated constraints aren't met. type GetServiceRolesResponseValidationError struct { @@ -43741,57 +26534,22 @@ var _ interface { } = GetServiceRolesResponseValidationError{} // Validate checks the field values on ResourceGroupInfo 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *ResourceGroupInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ResourceGroupInfo 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 -// ResourceGroupInfoMultiError, or nil if none found. -func (m *ResourceGroupInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ResourceGroupInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Name // no validation rules for Region // no validation rules for ProvisioningState - if len(errors) > 0 { - return ResourceGroupInfoMultiError(errors) - } - return nil } -// ResourceGroupInfoMultiError is an error wrapping multiple validation errors -// returned by ResourceGroupInfo.ValidateAll() if the designated constraints -// aren't met. -type ResourceGroupInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ResourceGroupInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ResourceGroupInfoMultiError) AllErrors() []error { return m } - // ResourceGroupInfoValidationError is the validation error returned by // ResourceGroupInfo.Validate if the designated constraints aren't met. type ResourceGroupInfoValidationError struct { @@ -43850,63 +26608,24 @@ var _ interface { // Validate checks the field values on GetResourceGroupsRequest 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. +// violated, an error is returned. func (m *GetResourceGroupsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetResourceGroupsRequest 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 -// GetResourceGroupsRequestMultiError, or nil if none found. -func (m *GetResourceGroupsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetResourceGroupsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := GetResourceGroupsRequestValidationError{ + return GetResourceGroupsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AccountID - if len(errors) > 0 { - return GetResourceGroupsRequestMultiError(errors) - } - return nil } -// GetResourceGroupsRequestMultiError is an error wrapping multiple validation -// errors returned by GetResourceGroupsRequest.ValidateAll() if the designated -// constraints aren't met. -type GetResourceGroupsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetResourceGroupsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetResourceGroupsRequestMultiError) AllErrors() []error { return m } - // GetResourceGroupsRequestValidationError is the validation error returned by // GetResourceGroupsRequest.Validate if the designated constraints aren't met. type GetResourceGroupsRequestValidationError struct { @@ -43965,26 +26684,12 @@ var _ interface { // Validate checks the field values on GetResourceGroupsResponse 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. +// violated, an error is returned. func (m *GetResourceGroupsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetResourceGroupsResponse 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 -// GetResourceGroupsResponseMultiError, or nil if none found. -func (m *GetResourceGroupsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetResourceGroupsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -43994,26 +26699,7 @@ func (m *GetResourceGroupsResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetResourceGroupsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetResourceGroupsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetResourceGroupsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -44025,30 +26711,9 @@ func (m *GetResourceGroupsResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetResourceGroupsResponseMultiError(errors) - } - return nil } -// GetResourceGroupsResponseMultiError is an error wrapping multiple validation -// errors returned by GetResourceGroupsResponse.ValidateAll() if the -// designated constraints aren't met. -type GetResourceGroupsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetResourceGroupsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetResourceGroupsResponseMultiError) AllErrors() []error { return m } - // GetResourceGroupsResponseValidationError is the validation error returned by // GetResourceGroupsResponse.Validate if the designated constraints aren't met. type GetResourceGroupsResponseValidationError struct { @@ -44106,56 +26771,21 @@ var _ interface { } = GetResourceGroupsResponseValidationError{} // Validate checks the field values on RegionInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *RegionInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RegionInfo 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 RegionInfoMultiError, or -// nil if none found. -func (m *RegionInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *RegionInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Region // no validation rules for RegionName // no validation rules for RegionState - if len(errors) > 0 { - return RegionInfoMultiError(errors) - } - return nil } -// RegionInfoMultiError is an error wrapping multiple validation errors -// returned by RegionInfo.ValidateAll() if the designated constraints aren't met. -type RegionInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RegionInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RegionInfoMultiError) AllErrors() []error { return m } - // RegionInfoValidationError is the validation error returned by // RegionInfo.Validate if the designated constraints aren't met. type RegionInfoValidationError struct { @@ -44212,63 +26842,24 @@ var _ interface { // Validate checks the field values on GetCloudRegionsRequest 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. +// violated, an error is returned. func (m *GetCloudRegionsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudRegionsRequest 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 -// GetCloudRegionsRequestMultiError, or nil if none found. -func (m *GetCloudRegionsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudRegionsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := GetCloudRegionsRequestValidationError{ + return GetCloudRegionsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AccountID - if len(errors) > 0 { - return GetCloudRegionsRequestMultiError(errors) - } - return nil } -// GetCloudRegionsRequestMultiError is an error wrapping multiple validation -// errors returned by GetCloudRegionsRequest.ValidateAll() if the designated -// constraints aren't met. -type GetCloudRegionsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudRegionsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudRegionsRequestMultiError) AllErrors() []error { return m } - // GetCloudRegionsRequestValidationError is the validation error returned by // GetCloudRegionsRequest.Validate if the designated constraints aren't met. type GetCloudRegionsRequestValidationError struct { @@ -44327,26 +26918,12 @@ var _ interface { // Validate checks the field values on GetCloudRegionsResponse 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. +// violated, an error is returned. func (m *GetCloudRegionsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudRegionsResponse 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 -// GetCloudRegionsResponseMultiError, or nil if none found. -func (m *GetCloudRegionsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudRegionsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -44356,26 +26933,7 @@ func (m *GetCloudRegionsResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetCloudRegionsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetCloudRegionsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudRegionsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -44387,30 +26945,9 @@ func (m *GetCloudRegionsResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetCloudRegionsResponseMultiError(errors) - } - return nil } -// GetCloudRegionsResponseMultiError is an error wrapping multiple validation -// errors returned by GetCloudRegionsResponse.ValidateAll() if the designated -// constraints aren't met. -type GetCloudRegionsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudRegionsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudRegionsResponseMultiError) AllErrors() []error { return m } - // GetCloudRegionsResponseValidationError is the validation error returned by // GetCloudRegionsResponse.Validate if the designated constraints aren't met. type GetCloudRegionsResponseValidationError struct { @@ -44468,27 +27005,12 @@ var _ interface { } = GetCloudRegionsResponseValidationError{} // Validate checks the field values on ZoneInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *ZoneInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ZoneInfo 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 ZoneInfoMultiError, or nil -// if none found. -func (m *ZoneInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ZoneInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ZoneID // no validation rules for Zone @@ -44499,29 +27021,9 @@ func (m *ZoneInfo) validate(all bool) error { // no validation rules for SubnetNum - if len(errors) > 0 { - return ZoneInfoMultiError(errors) - } - return nil } -// ZoneInfoMultiError is an error wrapping multiple validation errors returned -// by ZoneInfo.ValidateAll() if the designated constraints aren't met. -type ZoneInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ZoneInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ZoneInfoMultiError) AllErrors() []error { return m } - // ZoneInfoValidationError is the validation error returned by // ZoneInfo.Validate if the designated constraints aren't met. type ZoneInfoValidationError struct { @@ -44577,27 +27079,13 @@ var _ interface { } = ZoneInfoValidationError{} // Validate checks the field values on CloudClusterInfo 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CloudClusterInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudClusterInfo 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 -// CloudClusterInfoMultiError, or nil if none found. -func (m *CloudClusterInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudClusterInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID // no validation rules for ClusterName @@ -44616,30 +27104,9 @@ func (m *CloudClusterInfo) validate(all bool) error { // no validation rules for ClusterLevel - if len(errors) > 0 { - return CloudClusterInfoMultiError(errors) - } - return nil } -// CloudClusterInfoMultiError is an error wrapping multiple validation errors -// returned by CloudClusterInfo.ValidateAll() if the designated constraints -// aren't met. -type CloudClusterInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudClusterInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudClusterInfoMultiError) AllErrors() []error { return m } - // CloudClusterInfoValidationError is the validation error returned by // CloudClusterInfo.Validate if the designated constraints aren't met. type CloudClusterInfoValidationError struct { @@ -44696,85 +27163,38 @@ var _ interface { // Validate checks the field values on ListCloudRegionClusterRequest 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. +// violated, an error is returned. func (m *ListCloudRegionClusterRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudRegionClusterRequest 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 -// ListCloudRegionClusterRequestMultiError, or nil if none found. -func (m *ListCloudRegionClusterRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudRegionClusterRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListCloudRegionClusterRequestValidationError{ + return ListCloudRegionClusterRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) < 2 { - err := ListCloudRegionClusterRequestValidationError{ + return ListCloudRegionClusterRequestValidationError{ field: "Region", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) < 2 { - err := ListCloudRegionClusterRequestValidationError{ + return ListCloudRegionClusterRequestValidationError{ field: "AccountID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for ResourceGroupName - if len(errors) > 0 { - return ListCloudRegionClusterRequestMultiError(errors) - } - return nil } -// ListCloudRegionClusterRequestMultiError is an error wrapping multiple -// validation errors returned by ListCloudRegionClusterRequest.ValidateAll() -// if the designated constraints aren't met. -type ListCloudRegionClusterRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudRegionClusterRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudRegionClusterRequestMultiError) AllErrors() []error { return m } - // ListCloudRegionClusterRequestValidationError is the validation error // returned by ListCloudRegionClusterRequest.Validate if the designated // constraints aren't met. @@ -44834,26 +27254,12 @@ var _ interface { // Validate checks the field values on ListCloudRegionClusterResponse 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. +// violated, an error is returned. func (m *ListCloudRegionClusterResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudRegionClusterResponse 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 -// ListCloudRegionClusterResponseMultiError, or nil if none found. -func (m *ListCloudRegionClusterResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudRegionClusterResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -44863,26 +27269,7 @@ func (m *ListCloudRegionClusterResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudRegionClusterResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudRegionClusterResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudRegionClusterResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -44894,30 +27281,9 @@ func (m *ListCloudRegionClusterResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudRegionClusterResponseMultiError(errors) - } - return nil } -// ListCloudRegionClusterResponseMultiError is an error wrapping multiple -// validation errors returned by ListCloudRegionClusterResponse.ValidateAll() -// if the designated constraints aren't met. -type ListCloudRegionClusterResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudRegionClusterResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudRegionClusterResponseMultiError) AllErrors() []error { return m } - // ListCloudRegionClusterResponseValidationError is the validation error // returned by ListCloudRegionClusterResponse.Validate if the designated // constraints aren't met. @@ -44977,35 +27343,17 @@ var _ interface { // Validate checks the field values on GetCloudRegionZonesRequest 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. +// violated, an error is returned. func (m *GetCloudRegionZonesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudRegionZonesRequest 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 -// GetCloudRegionZonesRequestMultiError, or nil if none found. -func (m *GetCloudRegionZonesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudRegionZonesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := GetCloudRegionZonesRequestValidationError{ + return GetCloudRegionZonesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region @@ -45016,30 +27364,9 @@ func (m *GetCloudRegionZonesRequest) validate(all bool) error { // no validation rules for State - if len(errors) > 0 { - return GetCloudRegionZonesRequestMultiError(errors) - } - return nil } -// GetCloudRegionZonesRequestMultiError is an error wrapping multiple -// validation errors returned by GetCloudRegionZonesRequest.ValidateAll() if -// the designated constraints aren't met. -type GetCloudRegionZonesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudRegionZonesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudRegionZonesRequestMultiError) AllErrors() []error { return m } - // GetCloudRegionZonesRequestValidationError is the validation error returned // by GetCloudRegionZonesRequest.Validate if the designated constraints aren't met. type GetCloudRegionZonesRequestValidationError struct { @@ -45098,26 +27425,12 @@ var _ interface { // Validate checks the field values on GetCloudRegionZonesResponse 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. +// violated, an error is returned. func (m *GetCloudRegionZonesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudRegionZonesResponse 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 -// GetCloudRegionZonesResponseMultiError, or nil if none found. -func (m *GetCloudRegionZonesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudRegionZonesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -45127,26 +27440,7 @@ func (m *GetCloudRegionZonesResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetCloudRegionZonesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetCloudRegionZonesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudRegionZonesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -45158,30 +27452,9 @@ func (m *GetCloudRegionZonesResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetCloudRegionZonesResponseMultiError(errors) - } - return nil } -// GetCloudRegionZonesResponseMultiError is an error wrapping multiple -// validation errors returned by GetCloudRegionZonesResponse.ValidateAll() if -// the designated constraints aren't met. -type GetCloudRegionZonesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudRegionZonesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudRegionZonesResponseMultiError) AllErrors() []error { return m } - // GetCloudRegionZonesResponseValidationError is the validation error returned // by GetCloudRegionZonesResponse.Validate if the designated constraints // aren't met. @@ -45240,27 +27513,13 @@ var _ interface { } = GetCloudRegionZonesResponseValidationError{} // Validate checks the field values on OperationLog 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *OperationLog) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on OperationLog 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 OperationLogMultiError, or -// nil if none found. -func (m *OperationLog) ValidateAll() error { - return m.validate(true) -} - -func (m *OperationLog) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ResourceType // no validation rules for ResourceID @@ -45279,29 +27538,9 @@ func (m *OperationLog) validate(all bool) error { // no validation rules for ResourceName - if len(errors) > 0 { - return OperationLogMultiError(errors) - } - return nil } -// OperationLogMultiError is an error wrapping multiple validation errors -// returned by OperationLog.ValidateAll() if the designated constraints aren't met. -type OperationLogMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m OperationLogMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m OperationLogMultiError) AllErrors() []error { return m } - // OperationLogValidationError is the validation error returned by // OperationLog.Validate if the designated constraints aren't met. type OperationLogValidationError struct { @@ -45357,27 +27596,13 @@ var _ interface { } = OperationLogValidationError{} // Validate checks the field values on TaskOperationLog 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *TaskOperationLog) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TaskOperationLog 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 -// TaskOperationLogMultiError, or nil if none found. -func (m *TaskOperationLog) ValidateAll() error { - return m.validate(true) -} - -func (m *TaskOperationLog) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ResourceType // no validation rules for ResourceID @@ -45400,30 +27625,9 @@ func (m *TaskOperationLog) validate(all bool) error { // no validation rules for ResourceName - if len(errors) > 0 { - return TaskOperationLogMultiError(errors) - } - return nil } -// TaskOperationLogMultiError is an error wrapping multiple validation errors -// returned by TaskOperationLog.ValidateAll() if the designated constraints -// aren't met. -type TaskOperationLogMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TaskOperationLogMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TaskOperationLogMultiError) AllErrors() []error { return m } - // TaskOperationLogValidationError is the validation error returned by // TaskOperationLog.Validate if the designated constraints aren't met. type TaskOperationLogValidationError struct { @@ -45479,27 +27683,13 @@ var _ interface { } = TaskOperationLogValidationError{} // Validate checks the field values on TaskStepLog 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *TaskStepLog) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TaskStepLog 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 TaskStepLogMultiError, or -// nil if none found. -func (m *TaskStepLog) ValidateAll() error { - return m.validate(true) -} - -func (m *TaskStepLog) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for TaskID // no validation rules for StepName @@ -45510,29 +27700,9 @@ func (m *TaskStepLog) validate(all bool) error { // no validation rules for CreateTime - if len(errors) > 0 { - return TaskStepLogMultiError(errors) - } - return nil } -// TaskStepLogMultiError is an error wrapping multiple validation errors -// returned by TaskStepLog.ValidateAll() if the designated constraints aren't met. -type TaskStepLogMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TaskStepLogMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TaskStepLogMultiError) AllErrors() []error { return m } - // TaskStepLogValidationError is the validation error returned by // TaskStepLog.Validate if the designated constraints aren't met. type TaskStepLogValidationError struct { @@ -45589,35 +27759,17 @@ var _ interface { // Validate checks the field values on ListCloudInstanceTypeRequest 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. +// violated, an error is returned. func (m *ListCloudInstanceTypeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudInstanceTypeRequest 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 -// ListCloudInstanceTypeRequestMultiError, or nil if none found. -func (m *ListCloudInstanceTypeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudInstanceTypeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListCloudInstanceTypeRequestValidationError{ + return ListCloudInstanceTypeRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region @@ -45625,25 +27777,17 @@ func (m *ListCloudInstanceTypeRequest) validate(all bool) error { // no validation rules for AccountID if utf8.RuneCountInString(m.GetZone()) > 32 { - err := ListCloudInstanceTypeRequestValidationError{ + return ListCloudInstanceTypeRequestValidationError{ field: "Zone", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodeFamily()) > 32 { - err := ListCloudInstanceTypeRequestValidationError{ + return ListCloudInstanceTypeRequestValidationError{ field: "NodeFamily", reason: "value length must be at most 32 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Cpu @@ -45655,40 +27799,15 @@ func (m *ListCloudInstanceTypeRequest) validate(all bool) error { // no validation rules for Provider if _, ok := _ListCloudInstanceTypeRequest_ResourceType_InLookup[m.GetResourceType()]; !ok { - err := ListCloudInstanceTypeRequestValidationError{ + return ListCloudInstanceTypeRequestValidationError{ field: "ResourceType", reason: "value must be in list [ online offline]", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return ListCloudInstanceTypeRequestMultiError(errors) } return nil } -// ListCloudInstanceTypeRequestMultiError is an error wrapping multiple -// validation errors returned by ListCloudInstanceTypeRequest.ValidateAll() if -// the designated constraints aren't met. -type ListCloudInstanceTypeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudInstanceTypeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudInstanceTypeRequestMultiError) AllErrors() []error { return m } - // ListCloudInstanceTypeRequestValidationError is the validation error returned // by ListCloudInstanceTypeRequest.Validate if the designated constraints // aren't met. @@ -45754,26 +27873,12 @@ var _ListCloudInstanceTypeRequest_ResourceType_InLookup = map[string]struct{}{ // Validate checks the field values on ListCloudInstanceTypeResponse 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. +// violated, an error is returned. func (m *ListCloudInstanceTypeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudInstanceTypeResponse 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 -// ListCloudInstanceTypeResponseMultiError, or nil if none found. -func (m *ListCloudInstanceTypeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudInstanceTypeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -45783,26 +27888,7 @@ func (m *ListCloudInstanceTypeResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudInstanceTypeResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudInstanceTypeResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudInstanceTypeResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -45814,30 +27900,9 @@ func (m *ListCloudInstanceTypeResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudInstanceTypeResponseMultiError(errors) - } - return nil } -// ListCloudInstanceTypeResponseMultiError is an error wrapping multiple -// validation errors returned by ListCloudInstanceTypeResponse.ValidateAll() -// if the designated constraints aren't met. -type ListCloudInstanceTypeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudInstanceTypeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudInstanceTypeResponseMultiError) AllErrors() []error { return m } - // ListCloudInstanceTypeResponseValidationError is the validation error // returned by ListCloudInstanceTypeResponse.Validate if the designated // constraints aren't met. @@ -45896,27 +27961,13 @@ var _ interface { } = ListCloudInstanceTypeResponseValidationError{} // Validate checks the field values on InstanceType 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *InstanceType) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on InstanceType 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 InstanceTypeMultiError, or -// nil if none found. -func (m *InstanceType) ValidateAll() error { - return m.validate(true) -} - -func (m *InstanceType) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeType // no validation rules for TypeName @@ -45937,26 +27988,7 @@ func (m *InstanceType) validate(all bool) error { // no validation rules for ResourcePoolID - if all { - switch v := interface{}(m.GetSystemDisk()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InstanceTypeValidationError{ - field: "SystemDisk", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InstanceTypeValidationError{ - field: "SystemDisk", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTypeValidationError{ field: "SystemDisk", @@ -45969,26 +28001,7 @@ func (m *InstanceType) validate(all bool) error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InstanceTypeValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InstanceTypeValidationError{ - field: fmt.Sprintf("DataDisks[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTypeValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -46000,29 +28013,9 @@ func (m *InstanceType) validate(all bool) error { } - if len(errors) > 0 { - return InstanceTypeMultiError(errors) - } - return nil } -// InstanceTypeMultiError is an error wrapping multiple validation errors -// returned by InstanceType.ValidateAll() if the designated constraints aren't met. -type InstanceTypeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m InstanceTypeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m InstanceTypeMultiError) AllErrors() []error { return m } - // InstanceTypeValidationError is the validation error returned by // InstanceType.Validate if the designated constraints aren't met. type InstanceTypeValidationError struct { @@ -46079,58 +28072,31 @@ var _ interface { // Validate checks the field values on GetMasterSuggestedMachinesRequest 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. +// are violated, an error is returned. func (m *GetMasterSuggestedMachinesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetMasterSuggestedMachinesRequest -// 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 -// GetMasterSuggestedMachinesRequestMultiError, or nil if none found. -func (m *GetMasterSuggestedMachinesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetMasterSuggestedMachinesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := GetMasterSuggestedMachinesRequestValidationError{ + return GetMasterSuggestedMachinesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) < 2 { - err := GetMasterSuggestedMachinesRequestValidationError{ + return GetMasterSuggestedMachinesRequestValidationError{ field: "Region", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _GetMasterSuggestedMachinesRequest_Level_InLookup[m.GetLevel()]; !ok { - err := GetMasterSuggestedMachinesRequestValidationError{ + return GetMasterSuggestedMachinesRequestValidationError{ field: "Level", reason: "value must be in list [L100 L500 L1000 L2000]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AccountID @@ -46143,31 +28109,9 @@ func (m *GetMasterSuggestedMachinesRequest) validate(all bool) error { // no validation rules for Zones - if len(errors) > 0 { - return GetMasterSuggestedMachinesRequestMultiError(errors) - } - return nil } -// GetMasterSuggestedMachinesRequestMultiError is an error wrapping multiple -// validation errors returned by -// GetMasterSuggestedMachinesRequest.ValidateAll() if the designated -// constraints aren't met. -type GetMasterSuggestedMachinesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetMasterSuggestedMachinesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetMasterSuggestedMachinesRequestMultiError) AllErrors() []error { return m } - // GetMasterSuggestedMachinesRequestValidationError is the validation error // returned by GetMasterSuggestedMachinesRequest.Validate if the designated // constraints aren't met. @@ -46234,27 +28178,12 @@ var _GetMasterSuggestedMachinesRequest_Level_InLookup = map[string]struct{}{ // Validate checks the field values on GetMasterSuggestedMachinesResponse 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. +// are violated, an error is returned. func (m *GetMasterSuggestedMachinesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetMasterSuggestedMachinesResponse -// 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 -// GetMasterSuggestedMachinesResponseMultiError, or nil if none found. -func (m *GetMasterSuggestedMachinesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetMasterSuggestedMachinesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -46264,26 +28193,7 @@ func (m *GetMasterSuggestedMachinesResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetMasterSuggestedMachinesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetMasterSuggestedMachinesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetMasterSuggestedMachinesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -46295,31 +28205,9 @@ func (m *GetMasterSuggestedMachinesResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetMasterSuggestedMachinesResponseMultiError(errors) - } - return nil } -// GetMasterSuggestedMachinesResponseMultiError is an error wrapping multiple -// validation errors returned by -// GetMasterSuggestedMachinesResponse.ValidateAll() if the designated -// constraints aren't met. -type GetMasterSuggestedMachinesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetMasterSuggestedMachinesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetMasterSuggestedMachinesResponseMultiError) AllErrors() []error { return m } - // GetMasterSuggestedMachinesResponseValidationError is the validation error // returned by GetMasterSuggestedMachinesResponse.Validate if the designated // constraints aren't met. @@ -46379,35 +28267,17 @@ var _ interface { // Validate checks the field values on ListCloudInstancesRequest 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. +// violated, an error is returned. func (m *ListCloudInstancesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudInstancesRequest 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 -// ListCloudInstancesRequestMultiError, or nil if none found. -func (m *ListCloudInstancesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudInstancesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListCloudInstancesRequestValidationError{ + return ListCloudInstancesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region @@ -46415,40 +28285,15 @@ func (m *ListCloudInstancesRequest) validate(all bool) error { // no validation rules for AccountID if utf8.RuneCountInString(m.GetIpList()) < 1 { - err := ListCloudInstancesRequestValidationError{ + return ListCloudInstancesRequestValidationError{ field: "IpList", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return ListCloudInstancesRequestMultiError(errors) } return nil } -// ListCloudInstancesRequestMultiError is an error wrapping multiple validation -// errors returned by ListCloudInstancesRequest.ValidateAll() if the -// designated constraints aren't met. -type ListCloudInstancesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudInstancesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudInstancesRequestMultiError) AllErrors() []error { return m } - // ListCloudInstancesRequestValidationError is the validation error returned by // ListCloudInstancesRequest.Validate if the designated constraints aren't met. type ListCloudInstancesRequestValidationError struct { @@ -46507,26 +28352,12 @@ var _ interface { // Validate checks the field values on ListCloudInstancesResponse 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. +// violated, an error is returned. func (m *ListCloudInstancesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudInstancesResponse 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 -// ListCloudInstancesResponseMultiError, or nil if none found. -func (m *ListCloudInstancesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudInstancesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -46536,26 +28367,7 @@ func (m *ListCloudInstancesResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudInstancesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudInstancesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudInstancesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -46567,30 +28379,9 @@ func (m *ListCloudInstancesResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudInstancesResponseMultiError(errors) - } - return nil } -// ListCloudInstancesResponseMultiError is an error wrapping multiple -// validation errors returned by ListCloudInstancesResponse.ValidateAll() if -// the designated constraints aren't met. -type ListCloudInstancesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudInstancesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudInstancesResponseMultiError) AllErrors() []error { return m } - // ListCloudInstancesResponseValidationError is the validation error returned // by ListCloudInstancesResponse.Validate if the designated constraints aren't met. type ListCloudInstancesResponseValidationError struct { @@ -46648,27 +28439,12 @@ var _ interface { } = ListCloudInstancesResponseValidationError{} // Validate checks the field values on CloudNode 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *CloudNode) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudNode 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 CloudNodeMultiError, or nil -// if none found. -func (m *CloudNode) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudNode) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeID // no validation rules for InnerIP @@ -46695,29 +28471,9 @@ func (m *CloudNode) validate(all bool) error { // no validation rules for CloudRegionNode - if len(errors) > 0 { - return CloudNodeMultiError(errors) - } - return nil } -// CloudNodeMultiError is an error wrapping multiple validation errors returned -// by CloudNode.ValidateAll() if the designated constraints aren't met. -type CloudNodeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudNodeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudNodeMultiError) AllErrors() []error { return m } - // CloudNodeValidationError is the validation error returned by // CloudNode.Validate if the designated constraints aren't met. type CloudNodeValidationError struct { @@ -46774,65 +28530,26 @@ var _ interface { // Validate checks the field values on GetCloudAccountTypeRequest 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. +// violated, an error is returned. func (m *GetCloudAccountTypeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudAccountTypeRequest 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 -// GetCloudAccountTypeRequestMultiError, or nil if none found. -func (m *GetCloudAccountTypeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudAccountTypeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := GetCloudAccountTypeRequestValidationError{ + return GetCloudAccountTypeRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region // no validation rules for AccountID - if len(errors) > 0 { - return GetCloudAccountTypeRequestMultiError(errors) - } - return nil } -// GetCloudAccountTypeRequestMultiError is an error wrapping multiple -// validation errors returned by GetCloudAccountTypeRequest.ValidateAll() if -// the designated constraints aren't met. -type GetCloudAccountTypeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudAccountTypeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudAccountTypeRequestMultiError) AllErrors() []error { return m } - // GetCloudAccountTypeRequestValidationError is the validation error returned // by GetCloudAccountTypeRequest.Validate if the designated constraints aren't met. type GetCloudAccountTypeRequestValidationError struct { @@ -46891,52 +28608,19 @@ var _ interface { // Validate checks the field values on GetCloudAccountTypeResponse 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. +// violated, an error is returned. func (m *GetCloudAccountTypeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudAccountTypeResponse 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 -// GetCloudAccountTypeResponseMultiError, or nil if none found. -func (m *GetCloudAccountTypeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudAccountTypeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetCloudAccountTypeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetCloudAccountTypeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudAccountTypeResponseValidationError{ field: "Data", @@ -46946,30 +28630,9 @@ func (m *GetCloudAccountTypeResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetCloudAccountTypeResponseMultiError(errors) - } - return nil } -// GetCloudAccountTypeResponseMultiError is an error wrapping multiple -// validation errors returned by GetCloudAccountTypeResponse.ValidateAll() if -// the designated constraints aren't met. -type GetCloudAccountTypeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudAccountTypeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudAccountTypeResponseMultiError) AllErrors() []error { return m } - // GetCloudAccountTypeResponseValidationError is the validation error returned // by GetCloudAccountTypeResponse.Validate if the designated constraints // aren't met. @@ -47028,53 +28691,18 @@ var _ interface { } = GetCloudAccountTypeResponseValidationError{} // Validate checks the field values on CloudAccountType 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CloudAccountType) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudAccountType 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 -// CloudAccountTypeMultiError, or nil if none found. -func (m *CloudAccountType) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudAccountType) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Type - if len(errors) > 0 { - return CloudAccountTypeMultiError(errors) - } - return nil } -// CloudAccountTypeMultiError is an error wrapping multiple validation errors -// returned by CloudAccountType.ValidateAll() if the designated constraints -// aren't met. -type CloudAccountTypeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudAccountTypeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudAccountTypeMultiError) AllErrors() []error { return m } - // CloudAccountTypeValidationError is the validation error returned by // CloudAccountType.Validate if the designated constraints aren't met. type CloudAccountTypeValidationError struct { @@ -47131,76 +28759,31 @@ var _ interface { // Validate checks the field values on GetCloudBandwidthPackagesRequest 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. +// are violated, an error is returned. func (m *GetCloudBandwidthPackagesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudBandwidthPackagesRequest 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 -// GetCloudBandwidthPackagesRequestMultiError, or nil if none found. -func (m *GetCloudBandwidthPackagesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudBandwidthPackagesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 1 { - err := GetCloudBandwidthPackagesRequestValidationError{ + return GetCloudBandwidthPackagesRequestValidationError{ field: "CloudID", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) < 1 { - err := GetCloudBandwidthPackagesRequestValidationError{ + return GetCloudBandwidthPackagesRequestValidationError{ field: "Region", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AccountID - if len(errors) > 0 { - return GetCloudBandwidthPackagesRequestMultiError(errors) - } - return nil } -// GetCloudBandwidthPackagesRequestMultiError is an error wrapping multiple -// validation errors returned by -// GetCloudBandwidthPackagesRequest.ValidateAll() if the designated -// constraints aren't met. -type GetCloudBandwidthPackagesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudBandwidthPackagesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudBandwidthPackagesRequestMultiError) AllErrors() []error { return m } - // GetCloudBandwidthPackagesRequestValidationError is the validation error // returned by GetCloudBandwidthPackagesRequest.Validate if the designated // constraints aren't met. @@ -47260,27 +28843,12 @@ var _ interface { // Validate checks the field values on GetCloudBandwidthPackagesResponse 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. +// are violated, an error is returned. func (m *GetCloudBandwidthPackagesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetCloudBandwidthPackagesResponse -// 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 -// GetCloudBandwidthPackagesResponseMultiError, or nil if none found. -func (m *GetCloudBandwidthPackagesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetCloudBandwidthPackagesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -47290,26 +28858,7 @@ func (m *GetCloudBandwidthPackagesResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetCloudBandwidthPackagesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetCloudBandwidthPackagesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudBandwidthPackagesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -47321,31 +28870,9 @@ func (m *GetCloudBandwidthPackagesResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetCloudBandwidthPackagesResponseMultiError(errors) - } - return nil } -// GetCloudBandwidthPackagesResponseMultiError is an error wrapping multiple -// validation errors returned by -// GetCloudBandwidthPackagesResponse.ValidateAll() if the designated -// constraints aren't met. -type GetCloudBandwidthPackagesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetCloudBandwidthPackagesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetCloudBandwidthPackagesResponseMultiError) AllErrors() []error { return m } - // GetCloudBandwidthPackagesResponseValidationError is the validation error // returned by GetCloudBandwidthPackagesResponse.Validate if the designated // constraints aren't met. @@ -47405,26 +28932,12 @@ var _ interface { // Validate checks the field values on BandwidthPackageInfo 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. +// violated, an error is returned. func (m *BandwidthPackageInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on BandwidthPackageInfo 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 -// BandwidthPackageInfoMultiError, or nil if none found. -func (m *BandwidthPackageInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *BandwidthPackageInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Id // no validation rules for Name @@ -47435,30 +28948,9 @@ func (m *BandwidthPackageInfo) validate(all bool) error { // no validation rules for Bandwidth - if len(errors) > 0 { - return BandwidthPackageInfoMultiError(errors) - } - return nil } -// BandwidthPackageInfoMultiError is an error wrapping multiple validation -// errors returned by BandwidthPackageInfo.ValidateAll() if the designated -// constraints aren't met. -type BandwidthPackageInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m BandwidthPackageInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m BandwidthPackageInfoMultiError) AllErrors() []error { return m } - // BandwidthPackageInfoValidationError is the validation error returned by // BandwidthPackageInfo.Validate if the designated constraints aren't met. type BandwidthPackageInfoValidationError struct { @@ -47517,35 +29009,17 @@ var _ interface { // Validate checks the field values on ListCloudOsImageRequest 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. +// violated, an error is returned. func (m *ListCloudOsImageRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudOsImageRequest 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 -// ListCloudOsImageRequestMultiError, or nil if none found. -func (m *ListCloudOsImageRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudOsImageRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListCloudOsImageRequestValidationError{ + return ListCloudOsImageRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region @@ -47556,30 +29030,9 @@ func (m *ListCloudOsImageRequest) validate(all bool) error { // no validation rules for ProjectID - if len(errors) > 0 { - return ListCloudOsImageRequestMultiError(errors) - } - return nil } -// ListCloudOsImageRequestMultiError is an error wrapping multiple validation -// errors returned by ListCloudOsImageRequest.ValidateAll() if the designated -// constraints aren't met. -type ListCloudOsImageRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudOsImageRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudOsImageRequestMultiError) AllErrors() []error { return m } - // ListCloudOsImageRequestValidationError is the validation error returned by // ListCloudOsImageRequest.Validate if the designated constraints aren't met. type ListCloudOsImageRequestValidationError struct { @@ -47638,26 +29091,12 @@ var _ interface { // Validate checks the field values on ListCloudOsImageResponse 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. +// violated, an error is returned. func (m *ListCloudOsImageResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudOsImageResponse 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 -// ListCloudOsImageResponseMultiError, or nil if none found. -func (m *ListCloudOsImageResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudOsImageResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -47667,26 +29106,7 @@ func (m *ListCloudOsImageResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudOsImageResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudOsImageResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudOsImageResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -47698,30 +29118,9 @@ func (m *ListCloudOsImageResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudOsImageResponseMultiError(errors) - } - return nil } -// ListCloudOsImageResponseMultiError is an error wrapping multiple validation -// errors returned by ListCloudOsImageResponse.ValidateAll() if the designated -// constraints aren't met. -type ListCloudOsImageResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudOsImageResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudOsImageResponseMultiError) AllErrors() []error { return m } - // ListCloudOsImageResponseValidationError is the validation error returned by // ListCloudOsImageResponse.Validate if the designated constraints aren't met. type ListCloudOsImageResponseValidationError struct { @@ -47779,26 +29178,12 @@ var _ interface { } = ListCloudOsImageResponseValidationError{} // Validate checks the field values on OsImage 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *OsImage) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on OsImage 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 OsImageMultiError, or nil if none found. -func (m *OsImage) ValidateAll() error { - return m.validate(true) -} - -func (m *OsImage) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ImageID // no validation rules for Alias @@ -47818,26 +29203,7 @@ func (m *OsImage) validate(all bool) error { for idx, item := range m.GetClusters() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, OsImageValidationError{ - field: fmt.Sprintf("Clusters[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, OsImageValidationError{ - field: fmt.Sprintf("Clusters[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return OsImageValidationError{ field: fmt.Sprintf("Clusters[%v]", idx), @@ -47849,29 +29215,9 @@ func (m *OsImage) validate(all bool) error { } - if len(errors) > 0 { - return OsImageMultiError(errors) - } - return nil } -// OsImageMultiError is an error wrapping multiple validation errors returned -// by OsImage.ValidateAll() if the designated constraints aren't met. -type OsImageMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m OsImageMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m OsImageMultiError) AllErrors() []error { return m } - // OsImageValidationError is the validation error returned by OsImage.Validate // if the designated constraints aren't met. type OsImageValidationError struct { @@ -47927,54 +29273,20 @@ var _ interface { } = OsImageValidationError{} // Validate checks the field values on ClusterInfo 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *ClusterInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ClusterInfo 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 ClusterInfoMultiError, or -// nil if none found. -func (m *ClusterInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ClusterInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterName // no validation rules for ClusterID - if len(errors) > 0 { - return ClusterInfoMultiError(errors) - } - return nil } -// ClusterInfoMultiError is an error wrapping multiple validation errors -// returned by ClusterInfo.ValidateAll() if the designated constraints aren't met. -type ClusterInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ClusterInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ClusterInfoMultiError) AllErrors() []error { return m } - // ClusterInfoValidationError is the validation error returned by // ClusterInfo.Validate if the designated constraints aren't met. type ClusterInfoValidationError struct { @@ -48031,63 +29343,24 @@ var _ interface { // Validate checks the field values on ListCloudRuntimeInfoRequest 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. +// violated, an error is returned. func (m *ListCloudRuntimeInfoRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudRuntimeInfoRequest 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 -// ListCloudRuntimeInfoRequestMultiError, or nil if none found. -func (m *ListCloudRuntimeInfoRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudRuntimeInfoRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListCloudRuntimeInfoRequestValidationError{ + return ListCloudRuntimeInfoRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return ListCloudRuntimeInfoRequestMultiError(errors) } return nil } -// ListCloudRuntimeInfoRequestMultiError is an error wrapping multiple -// validation errors returned by ListCloudRuntimeInfoRequest.ValidateAll() if -// the designated constraints aren't met. -type ListCloudRuntimeInfoRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudRuntimeInfoRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudRuntimeInfoRequestMultiError) AllErrors() []error { return m } - // ListCloudRuntimeInfoRequestValidationError is the validation error returned // by ListCloudRuntimeInfoRequest.Validate if the designated constraints // aren't met. @@ -48147,102 +29420,38 @@ var _ interface { // Validate checks the field values on ListCloudRuntimeInfoResponse 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. +// violated, an error is returned. func (m *ListCloudRuntimeInfoResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudRuntimeInfoResponse 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 -// ListCloudRuntimeInfoResponseMultiError, or nil if none found. -func (m *ListCloudRuntimeInfoResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudRuntimeInfoResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - { - sorted_keys := make([]string, len(m.GetData())) - i := 0 - for key := range m.GetData() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetData()[key] - _ = val - - // no validation rules for Data[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudRuntimeInfoResponseValidationError{ - field: fmt.Sprintf("Data[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudRuntimeInfoResponseValidationError{ - field: fmt.Sprintf("Data[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ListCloudRuntimeInfoResponseValidationError{ - field: fmt.Sprintf("Data[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + for key, val := range m.GetData() { + _ = val + + // no validation rules for Data[key] + + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListCloudRuntimeInfoResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } - } - if len(errors) > 0 { - return ListCloudRuntimeInfoResponseMultiError(errors) } return nil } -// ListCloudRuntimeInfoResponseMultiError is an error wrapping multiple -// validation errors returned by ListCloudRuntimeInfoResponse.ValidateAll() if -// the designated constraints aren't met. -type ListCloudRuntimeInfoResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudRuntimeInfoResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudRuntimeInfoResponseMultiError) AllErrors() []error { return m } - // ListCloudRuntimeInfoResponseValidationError is the validation error returned // by ListCloudRuntimeInfoResponse.Validate if the designated constraints // aren't met. @@ -48301,51 +29510,16 @@ var _ interface { } = ListCloudRuntimeInfoResponseValidationError{} // Validate checks the field values on RunTimeVersion 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *RunTimeVersion) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on RunTimeVersion 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 RunTimeVersionMultiError, -// or nil if none found. -func (m *RunTimeVersion) ValidateAll() error { - return m.validate(true) -} - -func (m *RunTimeVersion) validate(all bool) error { if m == nil { return nil } - var errors []error - - if len(errors) > 0 { - return RunTimeVersionMultiError(errors) - } - return nil } -// RunTimeVersionMultiError is an error wrapping multiple validation errors -// returned by RunTimeVersion.ValidateAll() if the designated constraints -// aren't met. -type RunTimeVersionMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RunTimeVersionMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RunTimeVersionMultiError) AllErrors() []error { return m } - // RunTimeVersionValidationError is the validation error returned by // RunTimeVersion.Validate if the designated constraints aren't met. type RunTimeVersionValidationError struct { @@ -48402,65 +29576,26 @@ var _ interface { // Validate checks the field values on ListCloudProjectsRequest 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. +// violated, an error is returned. func (m *ListCloudProjectsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudProjectsRequest 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 -// ListCloudProjectsRequestMultiError, or nil if none found. -func (m *ListCloudProjectsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudProjectsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListCloudProjectsRequestValidationError{ + return ListCloudProjectsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region // no validation rules for AccountID - if len(errors) > 0 { - return ListCloudProjectsRequestMultiError(errors) - } - return nil } -// ListCloudProjectsRequestMultiError is an error wrapping multiple validation -// errors returned by ListCloudProjectsRequest.ValidateAll() if the designated -// constraints aren't met. -type ListCloudProjectsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudProjectsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudProjectsRequestMultiError) AllErrors() []error { return m } - // ListCloudProjectsRequestValidationError is the validation error returned by // ListCloudProjectsRequest.Validate if the designated constraints aren't met. type ListCloudProjectsRequestValidationError struct { @@ -48519,26 +29654,12 @@ var _ interface { // Validate checks the field values on ListCloudProjectsResponse 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. +// violated, an error is returned. func (m *ListCloudProjectsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudProjectsResponse 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 -// ListCloudProjectsResponseMultiError, or nil if none found. -func (m *ListCloudProjectsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudProjectsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -48548,26 +29669,7 @@ func (m *ListCloudProjectsResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudProjectsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudProjectsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudProjectsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -48579,30 +29681,9 @@ func (m *ListCloudProjectsResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudProjectsResponseMultiError(errors) - } - return nil } -// ListCloudProjectsResponseMultiError is an error wrapping multiple validation -// errors returned by ListCloudProjectsResponse.ValidateAll() if the -// designated constraints aren't met. -type ListCloudProjectsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudProjectsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudProjectsResponseMultiError) AllErrors() []error { return m } - // ListCloudProjectsResponseValidationError is the validation error returned by // ListCloudProjectsResponse.Validate if the designated constraints aren't met. type ListCloudProjectsResponseValidationError struct { @@ -48660,54 +29741,20 @@ var _ interface { } = ListCloudProjectsResponseValidationError{} // Validate checks the field values on CloudProject 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *CloudProject) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudProject 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 CloudProjectMultiError, or -// nil if none found. -func (m *CloudProject) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudProject) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectID // no validation rules for ProjectName - if len(errors) > 0 { - return CloudProjectMultiError(errors) - } - return nil } -// CloudProjectMultiError is an error wrapping multiple validation errors -// returned by CloudProject.ValidateAll() if the designated constraints aren't met. -type CloudProjectMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudProjectMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudProjectMultiError) AllErrors() []error { return m } - // CloudProjectValidationError is the validation error returned by // CloudProject.Validate if the designated constraints aren't met. type CloudProjectValidationError struct { @@ -48764,35 +29811,17 @@ var _ interface { // Validate checks the field values on ListCloudVpcsRequest 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. +// violated, an error is returned. func (m *ListCloudVpcsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudVpcsRequest 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 -// ListCloudVpcsRequestMultiError, or nil if none found. -func (m *ListCloudVpcsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudVpcsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListCloudVpcsRequestValidationError{ + return ListCloudVpcsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region @@ -48803,30 +29832,9 @@ func (m *ListCloudVpcsRequest) validate(all bool) error { // no validation rules for ResourceGroupName - if len(errors) > 0 { - return ListCloudVpcsRequestMultiError(errors) - } - return nil } -// ListCloudVpcsRequestMultiError is an error wrapping multiple validation -// errors returned by ListCloudVpcsRequest.ValidateAll() if the designated -// constraints aren't met. -type ListCloudVpcsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudVpcsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudVpcsRequestMultiError) AllErrors() []error { return m } - // ListCloudVpcsRequestValidationError is the validation error returned by // ListCloudVpcsRequest.Validate if the designated constraints aren't met. type ListCloudVpcsRequestValidationError struct { @@ -48885,26 +29893,12 @@ var _ interface { // Validate checks the field values on ListCloudVpcsResponse 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. +// violated, an error is returned. func (m *ListCloudVpcsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudVpcsResponse 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 -// ListCloudVpcsResponseMultiError, or nil if none found. -func (m *ListCloudVpcsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudVpcsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -48914,26 +29908,7 @@ func (m *ListCloudVpcsResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudVpcsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudVpcsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudVpcsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -48945,30 +29920,9 @@ func (m *ListCloudVpcsResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudVpcsResponseMultiError(errors) - } - return nil } -// ListCloudVpcsResponseMultiError is an error wrapping multiple validation -// errors returned by ListCloudVpcsResponse.ValidateAll() if the designated -// constraints aren't met. -type ListCloudVpcsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudVpcsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudVpcsResponseMultiError) AllErrors() []error { return m } - // ListCloudVpcsResponseValidationError is the validation error returned by // ListCloudVpcsResponse.Validate if the designated constraints aren't met. type ListCloudVpcsResponseValidationError struct { @@ -49026,27 +29980,12 @@ var _ interface { } = ListCloudVpcsResponseValidationError{} // Validate checks the field values on CloudVpc 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *CloudVpc) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudVpc 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 CloudVpcMultiError, or nil -// if none found. -func (m *CloudVpc) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudVpc) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Name // no validation rules for VpcId @@ -49058,26 +29997,7 @@ func (m *CloudVpc) validate(all bool) error { for idx, item := range m.GetCidrs() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudVpcValidationError{ - field: fmt.Sprintf("Cidrs[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudVpcValidationError{ - field: fmt.Sprintf("Cidrs[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVpcValidationError{ field: fmt.Sprintf("Cidrs[%v]", idx), @@ -49091,29 +30011,9 @@ func (m *CloudVpc) validate(all bool) error { // no validation rules for AllocateIpNum - if len(errors) > 0 { - return CloudVpcMultiError(errors) - } - return nil } -// CloudVpcMultiError is an error wrapping multiple validation errors returned -// by CloudVpc.ValidateAll() if the designated constraints aren't met. -type CloudVpcMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudVpcMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudVpcMultiError) AllErrors() []error { return m } - // CloudVpcValidationError is the validation error returned by // CloudVpc.Validate if the designated constraints aren't met. type CloudVpcValidationError struct { @@ -49169,55 +30069,20 @@ var _ interface { } = CloudVpcValidationError{} // Validate checks the field values on AssistantCidr 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *AssistantCidr) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AssistantCidr 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 AssistantCidrMultiError, or -// nil if none found. -func (m *AssistantCidr) ValidateAll() error { - return m.validate(true) -} - -func (m *AssistantCidr) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Cidr // no validation rules for CidrType - if len(errors) > 0 { - return AssistantCidrMultiError(errors) - } - return nil } -// AssistantCidrMultiError is an error wrapping multiple validation errors -// returned by AssistantCidr.ValidateAll() if the designated constraints -// aren't met. -type AssistantCidrMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AssistantCidrMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AssistantCidrMultiError) AllErrors() []error { return m } - // AssistantCidrValidationError is the validation error returned by // AssistantCidr.Validate if the designated constraints aren't met. type AssistantCidrValidationError struct { @@ -49274,35 +30139,17 @@ var _ interface { // Validate checks the field values on ListCloudSubnetsRequest 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. +// violated, an error is returned. func (m *ListCloudSubnetsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudSubnetsRequest 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 -// ListCloudSubnetsRequestMultiError, or nil if none found. -func (m *ListCloudSubnetsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudSubnetsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListCloudSubnetsRequestValidationError{ + return ListCloudSubnetsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region @@ -49321,30 +30168,9 @@ func (m *ListCloudSubnetsRequest) validate(all bool) error { // no validation rules for Name - if len(errors) > 0 { - return ListCloudSubnetsRequestMultiError(errors) - } - return nil } -// ListCloudSubnetsRequestMultiError is an error wrapping multiple validation -// errors returned by ListCloudSubnetsRequest.ValidateAll() if the designated -// constraints aren't met. -type ListCloudSubnetsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudSubnetsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudSubnetsRequestMultiError) AllErrors() []error { return m } - // ListCloudSubnetsRequestValidationError is the validation error returned by // ListCloudSubnetsRequest.Validate if the designated constraints aren't met. type ListCloudSubnetsRequestValidationError struct { @@ -49403,26 +30229,12 @@ var _ interface { // Validate checks the field values on ListCloudSubnetsResponse 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. +// violated, an error is returned. func (m *ListCloudSubnetsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudSubnetsResponse 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 -// ListCloudSubnetsResponseMultiError, or nil if none found. -func (m *ListCloudSubnetsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudSubnetsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -49432,26 +30244,7 @@ func (m *ListCloudSubnetsResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudSubnetsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudSubnetsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudSubnetsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -49463,30 +30256,9 @@ func (m *ListCloudSubnetsResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudSubnetsResponseMultiError(errors) - } - return nil } -// ListCloudSubnetsResponseMultiError is an error wrapping multiple validation -// errors returned by ListCloudSubnetsResponse.ValidateAll() if the designated -// constraints aren't met. -type ListCloudSubnetsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudSubnetsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudSubnetsResponseMultiError) AllErrors() []error { return m } - // ListCloudSubnetsResponseValidationError is the validation error returned by // ListCloudSubnetsResponse.Validate if the designated constraints aren't met. type ListCloudSubnetsResponseValidationError struct { @@ -49544,26 +30316,12 @@ var _ interface { } = ListCloudSubnetsResponseValidationError{} // Validate checks the field values on Subnet 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Subnet) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Subnet 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 SubnetMultiError, or nil if none found. -func (m *Subnet) ValidateAll() error { - return m.validate(true) -} - -func (m *Subnet) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for VpcID // no validation rules for SubnetID @@ -49580,26 +30338,7 @@ func (m *Subnet) validate(all bool) error { // no validation rules for ZoneName - if all { - switch v := interface{}(m.GetCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, SubnetValidationError{ - field: "Cluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, SubnetValidationError{ - field: "Cluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SubnetValidationError{ field: "Cluster", @@ -49609,29 +30348,9 @@ func (m *Subnet) validate(all bool) error { } } - if len(errors) > 0 { - return SubnetMultiError(errors) - } - return nil } -// SubnetMultiError is an error wrapping multiple validation errors returned by -// Subnet.ValidateAll() if the designated constraints aren't met. -type SubnetMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SubnetMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SubnetMultiError) AllErrors() []error { return m } - // SubnetValidationError is the validation error returned by Subnet.Validate if // the designated constraints aren't met. type SubnetValidationError struct { @@ -49688,35 +30407,17 @@ var _ interface { // Validate checks the field values on CheckCidrConflictFromVpcRequest 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. +// violated, an error is returned. func (m *CheckCidrConflictFromVpcRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CheckCidrConflictFromVpcRequest 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 -// CheckCidrConflictFromVpcRequestMultiError, or nil if none found. -func (m *CheckCidrConflictFromVpcRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CheckCidrConflictFromVpcRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := CheckCidrConflictFromVpcRequestValidationError{ + return CheckCidrConflictFromVpcRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for VpcId @@ -49724,42 +30425,17 @@ func (m *CheckCidrConflictFromVpcRequest) validate(all bool) error { // no validation rules for Cidr if utf8.RuneCountInString(m.GetRegion()) < 2 { - err := CheckCidrConflictFromVpcRequestValidationError{ + return CheckCidrConflictFromVpcRequestValidationError{ field: "Region", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for AccountID - if len(errors) > 0 { - return CheckCidrConflictFromVpcRequestMultiError(errors) - } - return nil } -// CheckCidrConflictFromVpcRequestMultiError is an error wrapping multiple -// validation errors returned by CheckCidrConflictFromVpcRequest.ValidateAll() -// if the designated constraints aren't met. -type CheckCidrConflictFromVpcRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CheckCidrConflictFromVpcRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CheckCidrConflictFromVpcRequestMultiError) AllErrors() []error { return m } - // CheckCidrConflictFromVpcRequestValidationError is the validation error // returned by CheckCidrConflictFromVpcRequest.Validate if the designated // constraints aren't met. @@ -49819,53 +30495,19 @@ var _ interface { // Validate checks the field values on CheckCidrConflictFromVpcResponse 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. +// are violated, an error is returned. func (m *CheckCidrConflictFromVpcResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CheckCidrConflictFromVpcResponse 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 -// CheckCidrConflictFromVpcResponseMultiError, or nil if none found. -func (m *CheckCidrConflictFromVpcResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CheckCidrConflictFromVpcResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CheckCidrConflictFromVpcResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CheckCidrConflictFromVpcResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CheckCidrConflictFromVpcResponseValidationError{ field: "Data", @@ -49875,31 +30517,9 @@ func (m *CheckCidrConflictFromVpcResponse) validate(all bool) error { } } - if len(errors) > 0 { - return CheckCidrConflictFromVpcResponseMultiError(errors) - } - return nil } -// CheckCidrConflictFromVpcResponseMultiError is an error wrapping multiple -// validation errors returned by -// CheckCidrConflictFromVpcResponse.ValidateAll() if the designated -// constraints aren't met. -type CheckCidrConflictFromVpcResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CheckCidrConflictFromVpcResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CheckCidrConflictFromVpcResponseMultiError) AllErrors() []error { return m } - // CheckCidrConflictFromVpcResponseValidationError is the validation error // returned by CheckCidrConflictFromVpcResponse.Validate if the designated // constraints aren't met. @@ -49958,50 +30578,16 @@ var _ interface { } = CheckCidrConflictFromVpcResponseValidationError{} // Validate checks the field values on ConflictInfo 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *ConflictInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ConflictInfo 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 ConflictInfoMultiError, or -// nil if none found. -func (m *ConflictInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ConflictInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - - if len(errors) > 0 { - return ConflictInfoMultiError(errors) - } - return nil } -// ConflictInfoMultiError is an error wrapping multiple validation errors -// returned by ConflictInfo.ValidateAll() if the designated constraints aren't met. -type ConflictInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ConflictInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ConflictInfoMultiError) AllErrors() []error { return m } - // ConflictInfoValidationError is the validation error returned by // ConflictInfo.Validate if the designated constraints aren't met. type ConflictInfoValidationError struct { @@ -50058,35 +30644,17 @@ var _ interface { // Validate checks the field values on ListCloudSecurityGroupsRequest 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. +// violated, an error is returned. func (m *ListCloudSecurityGroupsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudSecurityGroupsRequest 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 -// ListCloudSecurityGroupsRequestMultiError, or nil if none found. -func (m *ListCloudSecurityGroupsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudSecurityGroupsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListCloudSecurityGroupsRequestValidationError{ + return ListCloudSecurityGroupsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region @@ -50095,30 +30663,9 @@ func (m *ListCloudSecurityGroupsRequest) validate(all bool) error { // no validation rules for ResourceGroupName - if len(errors) > 0 { - return ListCloudSecurityGroupsRequestMultiError(errors) - } - return nil } -// ListCloudSecurityGroupsRequestMultiError is an error wrapping multiple -// validation errors returned by ListCloudSecurityGroupsRequest.ValidateAll() -// if the designated constraints aren't met. -type ListCloudSecurityGroupsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudSecurityGroupsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudSecurityGroupsRequestMultiError) AllErrors() []error { return m } - // ListCloudSecurityGroupsRequestValidationError is the validation error // returned by ListCloudSecurityGroupsRequest.Validate if the designated // constraints aren't met. @@ -50178,26 +30725,12 @@ var _ interface { // Validate checks the field values on ListCloudSecurityGroupsResponse 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. +// violated, an error is returned. func (m *ListCloudSecurityGroupsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudSecurityGroupsResponse 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 -// ListCloudSecurityGroupsResponseMultiError, or nil if none found. -func (m *ListCloudSecurityGroupsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudSecurityGroupsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -50207,26 +30740,7 @@ func (m *ListCloudSecurityGroupsResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudSecurityGroupsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudSecurityGroupsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudSecurityGroupsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -50238,30 +30752,9 @@ func (m *ListCloudSecurityGroupsResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudSecurityGroupsResponseMultiError(errors) - } - return nil } -// ListCloudSecurityGroupsResponseMultiError is an error wrapping multiple -// validation errors returned by ListCloudSecurityGroupsResponse.ValidateAll() -// if the designated constraints aren't met. -type ListCloudSecurityGroupsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudSecurityGroupsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudSecurityGroupsResponseMultiError) AllErrors() []error { return m } - // ListCloudSecurityGroupsResponseValidationError is the validation error // returned by ListCloudSecurityGroupsResponse.Validate if the designated // constraints aren't met. @@ -50321,35 +30814,17 @@ var _ interface { // Validate checks the field values on ListKeyPairsRequest 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. +// violated, an error is returned. func (m *ListKeyPairsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListKeyPairsRequest 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 -// ListKeyPairsRequestMultiError, or nil if none found. -func (m *ListKeyPairsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListKeyPairsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetCloudID()) < 2 { - err := ListKeyPairsRequestValidationError{ + return ListKeyPairsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Region @@ -50358,30 +30833,9 @@ func (m *ListKeyPairsRequest) validate(all bool) error { // no validation rules for ResourceGroupName - if len(errors) > 0 { - return ListKeyPairsRequestMultiError(errors) - } - return nil } -// ListKeyPairsRequestMultiError is an error wrapping multiple validation -// errors returned by ListKeyPairsRequest.ValidateAll() if the designated -// constraints aren't met. -type ListKeyPairsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListKeyPairsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListKeyPairsRequestMultiError) AllErrors() []error { return m } - // ListKeyPairsRequestValidationError is the validation error returned by // ListKeyPairsRequest.Validate if the designated constraints aren't met. type ListKeyPairsRequestValidationError struct { @@ -50440,26 +30894,12 @@ var _ interface { // Validate checks the field values on ListKeyPairsResponse 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. +// violated, an error is returned. func (m *ListKeyPairsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListKeyPairsResponse 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 -// ListKeyPairsResponseMultiError, or nil if none found. -func (m *ListKeyPairsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListKeyPairsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -50469,26 +30909,7 @@ func (m *ListKeyPairsResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListKeyPairsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListKeyPairsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListKeyPairsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -50500,30 +30921,9 @@ func (m *ListKeyPairsResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListKeyPairsResponseMultiError(errors) - } - return nil } -// ListKeyPairsResponseMultiError is an error wrapping multiple validation -// errors returned by ListKeyPairsResponse.ValidateAll() if the designated -// constraints aren't met. -type ListKeyPairsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListKeyPairsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListKeyPairsResponseMultiError) AllErrors() []error { return m } - // ListKeyPairsResponseValidationError is the validation error returned by // ListKeyPairsResponse.Validate if the designated constraints aren't met. type ListKeyPairsResponseValidationError struct { @@ -50581,55 +30981,21 @@ var _ interface { } = ListKeyPairsResponseValidationError{} // Validate checks the field values on KeyPair 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *KeyPair) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on KeyPair 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 KeyPairMultiError, or nil if none found. -func (m *KeyPair) ValidateAll() error { - return m.validate(true) -} - -func (m *KeyPair) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for KeyID // no validation rules for KeyName // no validation rules for Description - if len(errors) > 0 { - return KeyPairMultiError(errors) - } - return nil } -// KeyPairMultiError is an error wrapping multiple validation errors returned -// by KeyPair.ValidateAll() if the designated constraints aren't met. -type KeyPairMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m KeyPairMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m KeyPairMultiError) AllErrors() []error { return m } - // KeyPairValidationError is the validation error returned by KeyPair.Validate // if the designated constraints aren't met. type KeyPairValidationError struct { @@ -50686,26 +31052,12 @@ var _ interface { // Validate checks the field values on ListOperationLogsRequest 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. +// violated, an error is returned. func (m *ListOperationLogsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListOperationLogsRequest 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 -// ListOperationLogsRequestMultiError, or nil if none found. -func (m *ListOperationLogsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListOperationLogsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ResourceType // no validation rules for ResourceID @@ -50715,25 +31067,17 @@ func (m *ListOperationLogsRequest) validate(all bool) error { // no validation rules for EndTime if m.GetLimit() <= 0 { - err := ListOperationLogsRequestValidationError{ + return ListOperationLogsRequestValidationError{ field: "Limit", reason: "value must be greater than 0", } - if !all { - return err - } - errors = append(errors, err) } if m.GetPage() <= 0 { - err := ListOperationLogsRequestValidationError{ + return ListOperationLogsRequestValidationError{ field: "Page", reason: "value must be greater than 0", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Simple @@ -50758,30 +31102,9 @@ func (m *ListOperationLogsRequest) validate(all bool) error { // no validation rules for ResourceName - if len(errors) > 0 { - return ListOperationLogsRequestMultiError(errors) - } - return nil } -// ListOperationLogsRequestMultiError is an error wrapping multiple validation -// errors returned by ListOperationLogsRequest.ValidateAll() if the designated -// constraints aren't met. -type ListOperationLogsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListOperationLogsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListOperationLogsRequestMultiError) AllErrors() []error { return m } - // ListOperationLogsRequestValidationError is the validation error returned by // ListOperationLogsRequest.Validate if the designated constraints aren't met. type ListOperationLogsRequestValidationError struct { @@ -50840,76 +31163,33 @@ var _ interface { // Validate checks the field values on ListTaskStepLogsRequest 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. +// violated, an error is returned. func (m *ListTaskStepLogsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListTaskStepLogsRequest 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 -// ListTaskStepLogsRequestMultiError, or nil if none found. -func (m *ListTaskStepLogsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListTaskStepLogsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for TaskID // no validation rules for StepName if m.GetPage() <= 0 { - err := ListTaskStepLogsRequestValidationError{ + return ListTaskStepLogsRequestValidationError{ field: "Page", reason: "value must be greater than 0", } - if !all { - return err - } - errors = append(errors, err) } if m.GetLimit() <= 0 { - err := ListTaskStepLogsRequestValidationError{ + return ListTaskStepLogsRequestValidationError{ field: "Limit", reason: "value must be greater than 0", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return ListTaskStepLogsRequestMultiError(errors) } return nil } -// ListTaskStepLogsRequestMultiError is an error wrapping multiple validation -// errors returned by ListTaskStepLogsRequest.ValidateAll() if the designated -// constraints aren't met. -type ListTaskStepLogsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListTaskStepLogsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListTaskStepLogsRequestMultiError) AllErrors() []error { return m } - // ListTaskStepLogsRequestValidationError is the validation error returned by // ListTaskStepLogsRequest.Validate if the designated constraints aren't met. type ListTaskStepLogsRequestValidationError struct { @@ -50968,52 +31248,19 @@ var _ interface { // Validate checks the field values on ListOperationLogsResponse 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. +// violated, an error is returned. func (m *ListOperationLogsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListOperationLogsResponse 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 -// ListOperationLogsResponseMultiError, or nil if none found. -func (m *ListOperationLogsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListOperationLogsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListOperationLogsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListOperationLogsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListOperationLogsResponseValidationError{ field: "Data", @@ -51023,30 +31270,9 @@ func (m *ListOperationLogsResponse) validate(all bool) error { } } - if len(errors) > 0 { - return ListOperationLogsResponseMultiError(errors) - } - return nil } -// ListOperationLogsResponseMultiError is an error wrapping multiple validation -// errors returned by ListOperationLogsResponse.ValidateAll() if the -// designated constraints aren't met. -type ListOperationLogsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListOperationLogsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListOperationLogsResponseMultiError) AllErrors() []error { return m } - // ListOperationLogsResponseValidationError is the validation error returned by // ListOperationLogsResponse.Validate if the designated constraints aren't met. type ListOperationLogsResponseValidationError struct { @@ -51105,52 +31331,17 @@ var _ interface { // Validate checks the field values on ListTaskRecordsRequest 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. +// violated, an error is returned. func (m *ListTaskRecordsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListTaskRecordsRequest 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 -// ListTaskRecordsRequestMultiError, or nil if none found. -func (m *ListTaskRecordsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListTaskRecordsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for TaskID - if len(errors) > 0 { - return ListTaskRecordsRequestMultiError(errors) - } - return nil } -// ListTaskRecordsRequestMultiError is an error wrapping multiple validation -// errors returned by ListTaskRecordsRequest.ValidateAll() if the designated -// constraints aren't met. -type ListTaskRecordsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListTaskRecordsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListTaskRecordsRequestMultiError) AllErrors() []error { return m } - // ListTaskRecordsRequestValidationError is the validation error returned by // ListTaskRecordsRequest.Validate if the designated constraints aren't met. type ListTaskRecordsRequestValidationError struct { @@ -51209,52 +31400,19 @@ var _ interface { // Validate checks the field values on ListTaskRecordsResponse 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. +// violated, an error is returned. func (m *ListTaskRecordsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListTaskRecordsResponse 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 -// ListTaskRecordsResponseMultiError, or nil if none found. -func (m *ListTaskRecordsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListTaskRecordsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListTaskRecordsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListTaskRecordsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskRecordsResponseValidationError{ field: "Data", @@ -51264,30 +31422,9 @@ func (m *ListTaskRecordsResponse) validate(all bool) error { } } - if len(errors) > 0 { - return ListTaskRecordsResponseMultiError(errors) - } - return nil } -// ListTaskRecordsResponseMultiError is an error wrapping multiple validation -// errors returned by ListTaskRecordsResponse.ValidateAll() if the designated -// constraints aren't met. -type ListTaskRecordsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListTaskRecordsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListTaskRecordsResponseMultiError) AllErrors() []error { return m } - // ListTaskRecordsResponseValidationError is the validation error returned by // ListTaskRecordsResponse.Validate if the designated constraints aren't met. type ListTaskRecordsResponseValidationError struct { @@ -51346,51 +31483,18 @@ var _ interface { // Validate checks the field values on TaskRecordsResponseData 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. +// violated, an error is returned. func (m *TaskRecordsResponseData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TaskRecordsResponseData 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 -// TaskRecordsResponseDataMultiError, or nil if none found. -func (m *TaskRecordsResponseData) ValidateAll() error { - return m.validate(true) -} - -func (m *TaskRecordsResponseData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Status for idx, item := range m.GetStep() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TaskRecordsResponseDataValidationError{ - field: fmt.Sprintf("Step[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TaskRecordsResponseDataValidationError{ - field: fmt.Sprintf("Step[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TaskRecordsResponseDataValidationError{ field: fmt.Sprintf("Step[%v]", idx), @@ -51402,30 +31506,9 @@ func (m *TaskRecordsResponseData) validate(all bool) error { } - if len(errors) > 0 { - return TaskRecordsResponseDataMultiError(errors) - } - return nil } -// TaskRecordsResponseDataMultiError is an error wrapping multiple validation -// errors returned by TaskRecordsResponseData.ValidateAll() if the designated -// constraints aren't met. -type TaskRecordsResponseDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TaskRecordsResponseDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TaskRecordsResponseDataMultiError) AllErrors() []error { return m } - // TaskRecordsResponseDataValidationError is the validation error returned by // TaskRecordsResponseData.Validate if the designated constraints aren't met. type TaskRecordsResponseDataValidationError struct { @@ -51483,27 +31566,13 @@ var _ interface { } = TaskRecordsResponseDataValidationError{} // Validate checks the field values on TaskRecordStep 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *TaskRecordStep) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TaskRecordStep 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 TaskRecordStepMultiError, -// or nil if none found. -func (m *TaskRecordStep) ValidateAll() error { - return m.validate(true) -} - -func (m *TaskRecordStep) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Name // no validation rules for Status @@ -51515,26 +31584,7 @@ func (m *TaskRecordStep) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TaskRecordStepValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TaskRecordStepValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TaskRecordStepValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -51546,30 +31596,9 @@ func (m *TaskRecordStep) validate(all bool) error { } - if len(errors) > 0 { - return TaskRecordStepMultiError(errors) - } - return nil } -// TaskRecordStepMultiError is an error wrapping multiple validation errors -// returned by TaskRecordStep.ValidateAll() if the designated constraints -// aren't met. -type TaskRecordStepMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TaskRecordStepMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TaskRecordStepMultiError) AllErrors() []error { return m } - // TaskRecordStepValidationError is the validation error returned by // TaskRecordStep.Validate if the designated constraints aren't met. type TaskRecordStepValidationError struct { @@ -51626,56 +31655,21 @@ var _ interface { // Validate checks the field values on TaskRecordStepData 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. +// violated, an error is returned. func (m *TaskRecordStepData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TaskRecordStepData 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 -// TaskRecordStepDataMultiError, or nil if none found. -func (m *TaskRecordStepData) ValidateAll() error { - return m.validate(true) -} - -func (m *TaskRecordStepData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Log // no validation rules for Timestamp // no validation rules for Level - if len(errors) > 0 { - return TaskRecordStepDataMultiError(errors) - } - return nil } -// TaskRecordStepDataMultiError is an error wrapping multiple validation errors -// returned by TaskRecordStepData.ValidateAll() if the designated constraints -// aren't met. -type TaskRecordStepDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TaskRecordStepDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TaskRecordStepDataMultiError) AllErrors() []error { return m } - // TaskRecordStepDataValidationError is the validation error returned by // TaskRecordStepData.Validate if the designated constraints aren't met. type TaskRecordStepDataValidationError struct { @@ -51734,51 +31728,18 @@ var _ interface { // Validate checks the field values on ListOperationLogsResponseData 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. +// violated, an error is returned. func (m *ListOperationLogsResponseData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListOperationLogsResponseData 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 -// ListOperationLogsResponseDataMultiError, or nil if none found. -func (m *ListOperationLogsResponseData) ValidateAll() error { - return m.validate(true) -} - -func (m *ListOperationLogsResponseData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Count for idx, item := range m.GetResults() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListOperationLogsResponseDataValidationError{ - field: fmt.Sprintf("Results[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListOperationLogsResponseDataValidationError{ - field: fmt.Sprintf("Results[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListOperationLogsResponseDataValidationError{ field: fmt.Sprintf("Results[%v]", idx), @@ -51790,30 +31751,9 @@ func (m *ListOperationLogsResponseData) validate(all bool) error { } - if len(errors) > 0 { - return ListOperationLogsResponseDataMultiError(errors) - } - return nil } -// ListOperationLogsResponseDataMultiError is an error wrapping multiple -// validation errors returned by ListOperationLogsResponseData.ValidateAll() -// if the designated constraints aren't met. -type ListOperationLogsResponseDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListOperationLogsResponseDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListOperationLogsResponseDataMultiError) AllErrors() []error { return m } - // ListOperationLogsResponseDataValidationError is the validation error // returned by ListOperationLogsResponseData.Validate if the designated // constraints aren't met. @@ -51873,26 +31813,12 @@ var _ interface { // Validate checks the field values on OperationLogDetail 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. +// violated, an error is returned. func (m *OperationLogDetail) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on OperationLogDetail 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 -// OperationLogDetailMultiError, or nil if none found. -func (m *OperationLogDetail) ValidateAll() error { - return m.validate(true) -} - -func (m *OperationLogDetail) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ResourceType // no validation rules for ResourceID @@ -51905,26 +31831,7 @@ func (m *OperationLogDetail) validate(all bool) error { // no validation rules for CreateTime - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, OperationLogDetailValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, OperationLogDetailValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return OperationLogDetailValidationError{ field: "Task", @@ -51940,30 +31847,9 @@ func (m *OperationLogDetail) validate(all bool) error { // no validation rules for ResourceName - if len(errors) > 0 { - return OperationLogDetailMultiError(errors) - } - return nil } -// OperationLogDetailMultiError is an error wrapping multiple validation errors -// returned by OperationLogDetail.ValidateAll() if the designated constraints -// aren't met. -type OperationLogDetailMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m OperationLogDetailMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m OperationLogDetailMultiError) AllErrors() []error { return m } - // OperationLogDetailValidationError is the validation error returned by // OperationLogDetail.Validate if the designated constraints aren't met. type OperationLogDetailValidationError struct { @@ -52022,52 +31908,19 @@ var _ interface { // Validate checks the field values on ListTaskStepLogsResponse 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. +// violated, an error is returned. func (m *ListTaskStepLogsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListTaskStepLogsResponse 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 -// ListTaskStepLogsResponseMultiError, or nil if none found. -func (m *ListTaskStepLogsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListTaskStepLogsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListTaskStepLogsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListTaskStepLogsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskStepLogsResponseValidationError{ field: "Data", @@ -52077,30 +31930,9 @@ func (m *ListTaskStepLogsResponse) validate(all bool) error { } } - if len(errors) > 0 { - return ListTaskStepLogsResponseMultiError(errors) - } - return nil } -// ListTaskStepLogsResponseMultiError is an error wrapping multiple validation -// errors returned by ListTaskStepLogsResponse.ValidateAll() if the designated -// constraints aren't met. -type ListTaskStepLogsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListTaskStepLogsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListTaskStepLogsResponseMultiError) AllErrors() []error { return m } - // ListTaskStepLogsResponseValidationError is the validation error returned by // ListTaskStepLogsResponse.Validate if the designated constraints aren't met. type ListTaskStepLogsResponseValidationError struct { @@ -52159,51 +31991,18 @@ var _ interface { // Validate checks the field values on ListTaskStepLogsResponseData 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. +// violated, an error is returned. func (m *ListTaskStepLogsResponseData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListTaskStepLogsResponseData 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 -// ListTaskStepLogsResponseDataMultiError, or nil if none found. -func (m *ListTaskStepLogsResponseData) ValidateAll() error { - return m.validate(true) -} - -func (m *ListTaskStepLogsResponseData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Count for idx, item := range m.GetResults() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListTaskStepLogsResponseDataValidationError{ - field: fmt.Sprintf("Results[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListTaskStepLogsResponseDataValidationError{ - field: fmt.Sprintf("Results[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskStepLogsResponseDataValidationError{ field: fmt.Sprintf("Results[%v]", idx), @@ -52215,30 +32014,9 @@ func (m *ListTaskStepLogsResponseData) validate(all bool) error { } - if len(errors) > 0 { - return ListTaskStepLogsResponseDataMultiError(errors) - } - return nil } -// ListTaskStepLogsResponseDataMultiError is an error wrapping multiple -// validation errors returned by ListTaskStepLogsResponseData.ValidateAll() if -// the designated constraints aren't met. -type ListTaskStepLogsResponseDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListTaskStepLogsResponseDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListTaskStepLogsResponseDataMultiError) AllErrors() []error { return m } - // ListTaskStepLogsResponseDataValidationError is the validation error returned // by ListTaskStepLogsResponseData.Validate if the designated constraints // aren't met. @@ -52297,27 +32075,13 @@ var _ interface { } = ListTaskStepLogsResponseDataValidationError{} // Validate checks the field values on TaskStepLogDetail 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *TaskStepLogDetail) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TaskStepLogDetail 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 -// TaskStepLogDetailMultiError, or nil if none found. -func (m *TaskStepLogDetail) ValidateAll() error { - return m.validate(true) -} - -func (m *TaskStepLogDetail) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for TaskID // no validation rules for StepName @@ -52328,30 +32092,9 @@ func (m *TaskStepLogDetail) validate(all bool) error { // no validation rules for CreateTime - if len(errors) > 0 { - return TaskStepLogDetailMultiError(errors) - } - return nil } -// TaskStepLogDetailMultiError is an error wrapping multiple validation errors -// returned by TaskStepLogDetail.ValidateAll() if the designated constraints -// aren't met. -type TaskStepLogDetailMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TaskStepLogDetailMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TaskStepLogDetailMultiError) AllErrors() []error { return m } - // TaskStepLogDetailValidationError is the validation error returned by // TaskStepLogDetail.Validate if the designated constraints aren't met. type TaskStepLogDetailValidationError struct { @@ -52410,65 +32153,26 @@ var _ interface { // Validate checks the field values on CleanDbHistoryDataRequest 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. +// violated, an error is returned. func (m *CleanDbHistoryDataRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CleanDbHistoryDataRequest 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 -// CleanDbHistoryDataRequestMultiError, or nil if none found. -func (m *CleanDbHistoryDataRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CleanDbHistoryDataRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if _, ok := _CleanDbHistoryDataRequest_DataType_InLookup[m.GetDataType()]; !ok { - err := CleanDbHistoryDataRequestValidationError{ + return CleanDbHistoryDataRequestValidationError{ field: "DataType", reason: "value must be in list [task operationlog]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for StartTime // no validation rules for EndTime - if len(errors) > 0 { - return CleanDbHistoryDataRequestMultiError(errors) - } - return nil } -// CleanDbHistoryDataRequestMultiError is an error wrapping multiple validation -// errors returned by CleanDbHistoryDataRequest.ValidateAll() if the -// designated constraints aren't met. -type CleanDbHistoryDataRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CleanDbHistoryDataRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CleanDbHistoryDataRequestMultiError) AllErrors() []error { return m } - // CleanDbHistoryDataRequestValidationError is the validation error returned by // CleanDbHistoryDataRequest.Validate if the designated constraints aren't met. type CleanDbHistoryDataRequestValidationError struct { @@ -52532,56 +32236,21 @@ var _CleanDbHistoryDataRequest_DataType_InLookup = map[string]struct{}{ // Validate checks the field values on CleanDbHistoryDataResponse 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. +// violated, an error is returned. func (m *CleanDbHistoryDataResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CleanDbHistoryDataResponse 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 -// CleanDbHistoryDataResponseMultiError, or nil if none found. -func (m *CleanDbHistoryDataResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CleanDbHistoryDataResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if len(errors) > 0 { - return CleanDbHistoryDataResponseMultiError(errors) - } - return nil } -// CleanDbHistoryDataResponseMultiError is an error wrapping multiple -// validation errors returned by CleanDbHistoryDataResponse.ValidateAll() if -// the designated constraints aren't met. -type CleanDbHistoryDataResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CleanDbHistoryDataResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CleanDbHistoryDataResponseMultiError) AllErrors() []error { return m } - // CleanDbHistoryDataResponseValidationError is the validation error returned // by CleanDbHistoryDataResponse.Validate if the designated constraints aren't met. type CleanDbHistoryDataResponseValidationError struct { @@ -52639,57 +32308,22 @@ var _ interface { } = CleanDbHistoryDataResponseValidationError{} // Validate checks the field values on SecurityGroup 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *SecurityGroup) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SecurityGroup 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 SecurityGroupMultiError, or -// nil if none found. -func (m *SecurityGroup) ValidateAll() error { - return m.validate(true) -} - -func (m *SecurityGroup) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for SecurityGroupID // no validation rules for SecurityGroupName // no validation rules for Description - if len(errors) > 0 { - return SecurityGroupMultiError(errors) - } - return nil } -// SecurityGroupMultiError is an error wrapping multiple validation errors -// returned by SecurityGroup.ValidateAll() if the designated constraints -// aren't met. -type SecurityGroupMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SecurityGroupMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SecurityGroupMultiError) AllErrors() []error { return m } - // SecurityGroupValidationError is the validation error returned by // SecurityGroup.Validate if the designated constraints aren't met. type SecurityGroupValidationError struct { @@ -52746,49 +32380,16 @@ var _ interface { // Validate checks the field values on NodeOperationStatus 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. +// violated, an error is returned. func (m *NodeOperationStatus) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeOperationStatus 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 -// NodeOperationStatusMultiError, or nil if none found. -func (m *NodeOperationStatus) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeOperationStatus) validate(all bool) error { if m == nil { return nil } - var errors []error - for idx, item := range m.GetFail() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeOperationStatusValidationError{ - field: fmt.Sprintf("Fail[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeOperationStatusValidationError{ - field: fmt.Sprintf("Fail[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeOperationStatusValidationError{ field: fmt.Sprintf("Fail[%v]", idx), @@ -52803,26 +32404,7 @@ func (m *NodeOperationStatus) validate(all bool) error { for idx, item := range m.GetSuccess() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeOperationStatusValidationError{ - field: fmt.Sprintf("Success[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeOperationStatusValidationError{ - field: fmt.Sprintf("Success[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeOperationStatusValidationError{ field: fmt.Sprintf("Success[%v]", idx), @@ -52834,30 +32416,9 @@ func (m *NodeOperationStatus) validate(all bool) error { } - if len(errors) > 0 { - return NodeOperationStatusMultiError(errors) - } - return nil } -// NodeOperationStatusMultiError is an error wrapping multiple validation -// errors returned by NodeOperationStatus.ValidateAll() if the designated -// constraints aren't met. -type NodeOperationStatusMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeOperationStatusMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeOperationStatusMultiError) AllErrors() []error { return m } - // NodeOperationStatusValidationError is the validation error returned by // NodeOperationStatus.Validate if the designated constraints aren't met. type NodeOperationStatusValidationError struct { @@ -52916,54 +32477,19 @@ var _ interface { // Validate checks the field values on NodeOperationStatusInfo 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. +// violated, an error is returned. func (m *NodeOperationStatusInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeOperationStatusInfo 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 -// NodeOperationStatusInfoMultiError, or nil if none found. -func (m *NodeOperationStatusInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeOperationStatusInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeName // no validation rules for Message - if len(errors) > 0 { - return NodeOperationStatusInfoMultiError(errors) - } - return nil } -// NodeOperationStatusInfoMultiError is an error wrapping multiple validation -// errors returned by NodeOperationStatusInfo.ValidateAll() if the designated -// constraints aren't met. -type NodeOperationStatusInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeOperationStatusInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeOperationStatusInfoMultiError) AllErrors() []error { return m } - // NodeOperationStatusInfoValidationError is the validation error returned by // NodeOperationStatusInfo.Validate if the designated constraints aren't met. type NodeOperationStatusInfoValidationError struct { @@ -53021,36 +32547,18 @@ var _ interface { } = NodeOperationStatusInfoValidationError{} // Validate checks the field values on DrainNodeRequest 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *DrainNodeRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DrainNodeRequest 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 -// DrainNodeRequestMultiError, or nil if none found. -func (m *DrainNodeRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DrainNodeRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if len(m.GetClusterID()) < 1 { - err := DrainNodeRequestValidationError{ + return DrainNodeRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Force @@ -53073,30 +32581,9 @@ func (m *DrainNodeRequest) validate(all bool) error { // no validation rules for DryRun - if len(errors) > 0 { - return DrainNodeRequestMultiError(errors) - } - return nil } -// DrainNodeRequestMultiError is an error wrapping multiple validation errors -// returned by DrainNodeRequest.ValidateAll() if the designated constraints -// aren't met. -type DrainNodeRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DrainNodeRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DrainNodeRequestMultiError) AllErrors() []error { return m } - // DrainNodeRequestValidationError is the validation error returned by // DrainNodeRequest.Validate if the designated constraints aren't met. type DrainNodeRequestValidationError struct { @@ -53152,53 +32639,20 @@ var _ interface { } = DrainNodeRequestValidationError{} // Validate checks the field values on DrainNodeResponse 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *DrainNodeResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DrainNodeResponse 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 -// DrainNodeResponseMultiError, or nil if none found. -func (m *DrainNodeResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DrainNodeResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DrainNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DrainNodeResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DrainNodeResponseValidationError{ field: "Data", @@ -53208,30 +32662,9 @@ func (m *DrainNodeResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DrainNodeResponseMultiError(errors) - } - return nil } -// DrainNodeResponseMultiError is an error wrapping multiple validation errors -// returned by DrainNodeResponse.ValidateAll() if the designated constraints -// aren't met. -type DrainNodeResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DrainNodeResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DrainNodeResponseMultiError) AllErrors() []error { return m } - // DrainNodeResponseValidationError is the validation error returned by // DrainNodeResponse.Validate if the designated constraints aren't met. type DrainNodeResponseValidationError struct { @@ -53289,64 +32722,25 @@ var _ interface { } = DrainNodeResponseValidationError{} // Validate checks the field values on NodeAnnotation 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NodeAnnotation) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeAnnotation 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 NodeAnnotationMultiError, -// or nil if none found. -func (m *NodeAnnotation) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeAnnotation) validate(all bool) error { if m == nil { return nil } - var errors []error - if len(m.GetNodeName()) < 1 { - err := NodeAnnotationValidationError{ + return NodeAnnotationValidationError{ field: "NodeName", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Annotations - if len(errors) > 0 { - return NodeAnnotationMultiError(errors) - } - return nil } -// NodeAnnotationMultiError is an error wrapping multiple validation errors -// returned by NodeAnnotation.ValidateAll() if the designated constraints -// aren't met. -type NodeAnnotationMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeAnnotationMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeAnnotationMultiError) AllErrors() []error { return m } - // NodeAnnotationValidationError is the validation error returned by // NodeAnnotation.Validate if the designated constraints aren't met. type NodeAnnotationValidationError struct { @@ -53403,60 +32797,23 @@ var _ interface { // Validate checks the field values on UpdateNodeAnnotationsRequest 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. +// violated, an error is returned. func (m *UpdateNodeAnnotationsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeAnnotationsRequest 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 -// UpdateNodeAnnotationsRequestMultiError, or nil if none found. -func (m *UpdateNodeAnnotationsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeAnnotationsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if len(m.GetClusterID()) < 1 { - err := UpdateNodeAnnotationsRequestValidationError{ + return UpdateNodeAnnotationsRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) } for idx, item := range m.GetNodes() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeAnnotationsRequestValidationError{ - field: fmt.Sprintf("Nodes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeAnnotationsRequestValidationError{ - field: fmt.Sprintf("Nodes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeAnnotationsRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -53468,30 +32825,9 @@ func (m *UpdateNodeAnnotationsRequest) validate(all bool) error { } - if len(errors) > 0 { - return UpdateNodeAnnotationsRequestMultiError(errors) - } - return nil } -// UpdateNodeAnnotationsRequestMultiError is an error wrapping multiple -// validation errors returned by UpdateNodeAnnotationsRequest.ValidateAll() if -// the designated constraints aren't met. -type UpdateNodeAnnotationsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeAnnotationsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeAnnotationsRequestMultiError) AllErrors() []error { return m } - // UpdateNodeAnnotationsRequestValidationError is the validation error returned // by UpdateNodeAnnotationsRequest.Validate if the designated constraints // aren't met. @@ -53551,52 +32887,19 @@ var _ interface { // Validate checks the field values on UpdateNodeAnnotationsResponse 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. +// violated, an error is returned. func (m *UpdateNodeAnnotationsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeAnnotationsResponse 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 -// UpdateNodeAnnotationsResponseMultiError, or nil if none found. -func (m *UpdateNodeAnnotationsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeAnnotationsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeAnnotationsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeAnnotationsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeAnnotationsResponseValidationError{ field: "Data", @@ -53606,30 +32909,9 @@ func (m *UpdateNodeAnnotationsResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateNodeAnnotationsResponseMultiError(errors) - } - return nil } -// UpdateNodeAnnotationsResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateNodeAnnotationsResponse.ValidateAll() -// if the designated constraints aren't met. -type UpdateNodeAnnotationsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeAnnotationsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeAnnotationsResponseMultiError) AllErrors() []error { return m } - // UpdateNodeAnnotationsResponseValidationError is the validation error // returned by UpdateNodeAnnotationsResponse.Validate if the designated // constraints aren't met. @@ -53688,63 +32970,24 @@ var _ interface { } = UpdateNodeAnnotationsResponseValidationError{} // Validate checks the field values on NodeLabel 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NodeLabel) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeLabel 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 NodeLabelMultiError, or nil -// if none found. -func (m *NodeLabel) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeLabel) validate(all bool) error { if m == nil { return nil } - var errors []error - if len(m.GetNodeName()) < 1 { - err := NodeLabelValidationError{ + return NodeLabelValidationError{ field: "NodeName", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Labels - if len(errors) > 0 { - return NodeLabelMultiError(errors) - } - return nil } -// NodeLabelMultiError is an error wrapping multiple validation errors returned -// by NodeLabel.ValidateAll() if the designated constraints aren't met. -type NodeLabelMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeLabelMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeLabelMultiError) AllErrors() []error { return m } - // NodeLabelValidationError is the validation error returned by // NodeLabel.Validate if the designated constraints aren't met. type NodeLabelValidationError struct { @@ -53801,49 +33044,16 @@ var _ interface { // Validate checks the field values on UpdateNodeLabelsRequest 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. +// violated, an error is returned. func (m *UpdateNodeLabelsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeLabelsRequest 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 -// UpdateNodeLabelsRequestMultiError, or nil if none found. -func (m *UpdateNodeLabelsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeLabelsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - for idx, item := range m.GetNodes() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeLabelsRequestValidationError{ - field: fmt.Sprintf("Nodes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeLabelsRequestValidationError{ - field: fmt.Sprintf("Nodes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeLabelsRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -53856,40 +33066,15 @@ func (m *UpdateNodeLabelsRequest) validate(all bool) error { } if len(m.GetClusterID()) < 1 { - err := UpdateNodeLabelsRequestValidationError{ + return UpdateNodeLabelsRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UpdateNodeLabelsRequestMultiError(errors) } return nil } -// UpdateNodeLabelsRequestMultiError is an error wrapping multiple validation -// errors returned by UpdateNodeLabelsRequest.ValidateAll() if the designated -// constraints aren't met. -type UpdateNodeLabelsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeLabelsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeLabelsRequestMultiError) AllErrors() []error { return m } - // UpdateNodeLabelsRequestValidationError is the validation error returned by // UpdateNodeLabelsRequest.Validate if the designated constraints aren't met. type UpdateNodeLabelsRequestValidationError struct { @@ -53948,52 +33133,19 @@ var _ interface { // Validate checks the field values on UpdateNodeLabelsResponse 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. +// violated, an error is returned. func (m *UpdateNodeLabelsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeLabelsResponse 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 -// UpdateNodeLabelsResponseMultiError, or nil if none found. -func (m *UpdateNodeLabelsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeLabelsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeLabelsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeLabelsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeLabelsResponseValidationError{ field: "Data", @@ -54003,30 +33155,9 @@ func (m *UpdateNodeLabelsResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateNodeLabelsResponseMultiError(errors) - } - return nil } -// UpdateNodeLabelsResponseMultiError is an error wrapping multiple validation -// errors returned by UpdateNodeLabelsResponse.ValidateAll() if the designated -// constraints aren't met. -type UpdateNodeLabelsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeLabelsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeLabelsResponseMultiError) AllErrors() []error { return m } - // UpdateNodeLabelsResponseValidationError is the validation error returned by // UpdateNodeLabelsResponse.Validate if the designated constraints aren't met. type UpdateNodeLabelsResponseValidationError struct { @@ -54084,61 +33215,23 @@ var _ interface { } = UpdateNodeLabelsResponseValidationError{} // Validate checks the field values on NodeTaint 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NodeTaint) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeTaint 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 NodeTaintMultiError, or nil -// if none found. -func (m *NodeTaint) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeTaint) validate(all bool) error { if m == nil { return nil } - var errors []error - if len(m.GetNodeName()) < 1 { - err := NodeTaintValidationError{ + return NodeTaintValidationError{ field: "NodeName", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) } for idx, item := range m.GetTaints() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NodeTaintValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NodeTaintValidationError{ - field: fmt.Sprintf("Taints[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTaintValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -54150,29 +33243,9 @@ func (m *NodeTaint) validate(all bool) error { } - if len(errors) > 0 { - return NodeTaintMultiError(errors) - } - return nil } -// NodeTaintMultiError is an error wrapping multiple validation errors returned -// by NodeTaint.ValidateAll() if the designated constraints aren't met. -type NodeTaintMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeTaintMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeTaintMultiError) AllErrors() []error { return m } - // NodeTaintValidationError is the validation error returned by // NodeTaint.Validate if the designated constraints aren't met. type NodeTaintValidationError struct { @@ -54229,49 +33302,16 @@ var _ interface { // Validate checks the field values on UpdateNodeTaintsRequest 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. +// violated, an error is returned. func (m *UpdateNodeTaintsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeTaintsRequest 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 -// UpdateNodeTaintsRequestMultiError, or nil if none found. -func (m *UpdateNodeTaintsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeTaintsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - for idx, item := range m.GetNodes() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTaintsRequestValidationError{ - field: fmt.Sprintf("Nodes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTaintsRequestValidationError{ - field: fmt.Sprintf("Nodes[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTaintsRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -54284,40 +33324,15 @@ func (m *UpdateNodeTaintsRequest) validate(all bool) error { } if len(m.GetClusterID()) < 1 { - err := UpdateNodeTaintsRequestValidationError{ + return UpdateNodeTaintsRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return UpdateNodeTaintsRequestMultiError(errors) } return nil } -// UpdateNodeTaintsRequestMultiError is an error wrapping multiple validation -// errors returned by UpdateNodeTaintsRequest.ValidateAll() if the designated -// constraints aren't met. -type UpdateNodeTaintsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeTaintsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeTaintsRequestMultiError) AllErrors() []error { return m } - // UpdateNodeTaintsRequestValidationError is the validation error returned by // UpdateNodeTaintsRequest.Validate if the designated constraints aren't met. type UpdateNodeTaintsRequestValidationError struct { @@ -54376,52 +33391,19 @@ var _ interface { // Validate checks the field values on UpdateNodeTaintsResponse 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. +// violated, an error is returned. func (m *UpdateNodeTaintsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateNodeTaintsResponse 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 -// UpdateNodeTaintsResponseMultiError, or nil if none found. -func (m *UpdateNodeTaintsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateNodeTaintsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateNodeTaintsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateNodeTaintsResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTaintsResponseValidationError{ field: "Data", @@ -54431,30 +33413,9 @@ func (m *UpdateNodeTaintsResponse) validate(all bool) error { } } - if len(errors) > 0 { - return UpdateNodeTaintsResponseMultiError(errors) - } - return nil } -// UpdateNodeTaintsResponseMultiError is an error wrapping multiple validation -// errors returned by UpdateNodeTaintsResponse.ValidateAll() if the designated -// constraints aren't met. -type UpdateNodeTaintsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateNodeTaintsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateNodeTaintsResponseMultiError) AllErrors() []error { return m } - // UpdateNodeTaintsResponseValidationError is the validation error returned by // UpdateNodeTaintsResponse.Validate if the designated constraints aren't met. type UpdateNodeTaintsResponseValidationError struct { @@ -54512,51 +33473,16 @@ var _ interface { } = UpdateNodeTaintsResponseValidationError{} // Validate checks the field values on HealthRequest 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *HealthRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on HealthRequest 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 HealthRequestMultiError, or -// nil if none found. -func (m *HealthRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *HealthRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - - if len(errors) > 0 { - return HealthRequestMultiError(errors) - } - return nil } -// HealthRequestMultiError is an error wrapping multiple validation errors -// returned by HealthRequest.ValidateAll() if the designated constraints -// aren't met. -type HealthRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m HealthRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m HealthRequestMultiError) AllErrors() []error { return m } - // HealthRequestValidationError is the validation error returned by // HealthRequest.Validate if the designated constraints aren't met. type HealthRequestValidationError struct { @@ -54612,57 +33538,22 @@ var _ interface { } = HealthRequestValidationError{} // Validate checks the field values on HealthResponse 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *HealthResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on HealthResponse 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 HealthResponseMultiError, -// or nil if none found. -func (m *HealthResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *HealthResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Available - if len(errors) > 0 { - return HealthResponseMultiError(errors) - } - return nil } -// HealthResponseMultiError is an error wrapping multiple validation errors -// returned by HealthResponse.ValidateAll() if the designated constraints -// aren't met. -type HealthResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m HealthResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m HealthResponseMultiError) AllErrors() []error { return m } - // HealthResponseValidationError is the validation error returned by // HealthResponse.Validate if the designated constraints aren't met. type HealthResponseValidationError struct { @@ -54719,52 +33610,17 @@ var _ interface { // Validate checks the field values on ListResourceSchemaRequest 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. +// violated, an error is returned. func (m *ListResourceSchemaRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListResourceSchemaRequest 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 -// ListResourceSchemaRequestMultiError, or nil if none found. -func (m *ListResourceSchemaRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListResourceSchemaRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID - if len(errors) > 0 { - return ListResourceSchemaRequestMultiError(errors) - } - return nil } -// ListResourceSchemaRequestMultiError is an error wrapping multiple validation -// errors returned by ListResourceSchemaRequest.ValidateAll() if the -// designated constraints aren't met. -type ListResourceSchemaRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListResourceSchemaRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListResourceSchemaRequestMultiError) AllErrors() []error { return m } - // ListResourceSchemaRequestValidationError is the validation error returned by // ListResourceSchemaRequest.Validate if the designated constraints aren't met. type ListResourceSchemaRequestValidationError struct { @@ -54823,54 +33679,19 @@ var _ interface { // Validate checks the field values on GetResourceSchemaRequest 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. +// violated, an error is returned. func (m *GetResourceSchemaRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetResourceSchemaRequest 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 -// GetResourceSchemaRequestMultiError, or nil if none found. -func (m *GetResourceSchemaRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetResourceSchemaRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for Name - if len(errors) > 0 { - return GetResourceSchemaRequestMultiError(errors) - } - return nil } -// GetResourceSchemaRequestMultiError is an error wrapping multiple validation -// errors returned by GetResourceSchemaRequest.ValidateAll() if the designated -// constraints aren't met. -type GetResourceSchemaRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetResourceSchemaRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetResourceSchemaRequestMultiError) AllErrors() []error { return m } - // GetResourceSchemaRequestValidationError is the validation error returned by // GetResourceSchemaRequest.Validate if the designated constraints aren't met. type GetResourceSchemaRequestValidationError struct { @@ -54929,26 +33750,12 @@ var _ interface { // Validate checks the field values on QueryPermByActionIDReqData 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. +// violated, an error is returned. func (m *QueryPermByActionIDReqData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on QueryPermByActionIDReqData 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 -// QueryPermByActionIDReqDataMultiError, or nil if none found. -func (m *QueryPermByActionIDReqData) ValidateAll() error { - return m.validate(true) -} - -func (m *QueryPermByActionIDReqData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectId // no validation rules for ClusterId @@ -54960,40 +33767,15 @@ func (m *QueryPermByActionIDReqData) validate(all bool) error { // no validation rules for AccountId if utf8.RuneCountInString(m.GetOperator()) < 1 { - err := QueryPermByActionIDReqDataValidationError{ + return QueryPermByActionIDReqDataValidationError{ field: "Operator", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return QueryPermByActionIDReqDataMultiError(errors) } return nil } -// QueryPermByActionIDReqDataMultiError is an error wrapping multiple -// validation errors returned by QueryPermByActionIDReqData.ValidateAll() if -// the designated constraints aren't met. -type QueryPermByActionIDReqDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m QueryPermByActionIDReqDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m QueryPermByActionIDReqDataMultiError) AllErrors() []error { return m } - // QueryPermByActionIDReqDataValidationError is the validation error returned // by QueryPermByActionIDReqData.Validate if the designated constraints aren't met. type QueryPermByActionIDReqDataValidationError struct { @@ -55052,48 +33834,15 @@ var _ interface { // Validate checks the field values on QueryPermByActionIDRequest 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. +// violated, an error is returned. func (m *QueryPermByActionIDRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on QueryPermByActionIDRequest 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 -// QueryPermByActionIDRequestMultiError, or nil if none found. -func (m *QueryPermByActionIDRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *QueryPermByActionIDRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ActionID - if all { - switch v := interface{}(m.GetPermCtx()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, QueryPermByActionIDRequestValidationError{ - field: "PermCtx", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, QueryPermByActionIDRequestValidationError{ - field: "PermCtx", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetPermCtx()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetPermCtx()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return QueryPermByActionIDRequestValidationError{ field: "PermCtx", @@ -55103,30 +33852,9 @@ func (m *QueryPermByActionIDRequest) validate(all bool) error { } } - if len(errors) > 0 { - return QueryPermByActionIDRequestMultiError(errors) - } - return nil } -// QueryPermByActionIDRequestMultiError is an error wrapping multiple -// validation errors returned by QueryPermByActionIDRequest.ValidateAll() if -// the designated constraints aren't met. -type QueryPermByActionIDRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m QueryPermByActionIDRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m QueryPermByActionIDRequestMultiError) AllErrors() []error { return m } - // QueryPermByActionIDRequestValidationError is the validation error returned // by QueryPermByActionIDRequest.Validate if the designated constraints aren't met. type QueryPermByActionIDRequestValidationError struct { @@ -55184,95 +33912,32 @@ var _ interface { } = QueryPermByActionIDRequestValidationError{} // Validate checks the field values on Perms 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *Perms) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Perms 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 PermsMultiError, or nil if none found. -func (m *Perms) ValidateAll() error { - return m.validate(true) -} - -func (m *Perms) validate(all bool) error { if m == nil { return nil } - var errors []error + for key, val := range m.GetPerms() { + _ = val - { - sorted_keys := make([]string, len(m.GetPerms())) - i := 0 - for key := range m.GetPerms() { - sorted_keys[i] = key - i++ - } - sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) - for _, key := range sorted_keys { - val := m.GetPerms()[key] - _ = val + // no validation rules for Perms[key] - // no validation rules for Perms[key] - - if all { - switch v := interface{}(val).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, PermsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, PermsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return PermsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, - } + if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return PermsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, } } - } - } - if len(errors) > 0 { - return PermsMultiError(errors) } return nil } -// PermsMultiError is an error wrapping multiple validation errors returned by -// Perms.ValidateAll() if the designated constraints aren't met. -type PermsMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m PermsMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m PermsMultiError) AllErrors() []error { return m } - // PermsValidationError is the validation error returned by Perms.Validate if // the designated constraints aren't met. type PermsValidationError struct { @@ -55329,48 +33994,15 @@ var _ interface { // Validate checks the field values on QueryPermByActionIDResponse 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. +// violated, an error is returned. func (m *QueryPermByActionIDResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on QueryPermByActionIDResponse 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 -// QueryPermByActionIDResponseMultiError, or nil if none found. -func (m *QueryPermByActionIDResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *QueryPermByActionIDResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, QueryPermByActionIDResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, QueryPermByActionIDResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return QueryPermByActionIDResponseValidationError{ field: "Data", @@ -55380,30 +34012,9 @@ func (m *QueryPermByActionIDResponse) validate(all bool) error { } } - if len(errors) > 0 { - return QueryPermByActionIDResponseMultiError(errors) - } - return nil } -// QueryPermByActionIDResponseMultiError is an error wrapping multiple -// validation errors returned by QueryPermByActionIDResponse.ValidateAll() if -// the designated constraints aren't met. -type QueryPermByActionIDResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m QueryPermByActionIDResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m QueryPermByActionIDResponseMultiError) AllErrors() []error { return m } - // QueryPermByActionIDResponseValidationError is the validation error returned // by QueryPermByActionIDResponse.Validate if the designated constraints // aren't met. @@ -55462,53 +34073,19 @@ var _ interface { } = QueryPermByActionIDResponseValidationError{} // Validate checks the field values on CommonResp 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *CommonResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CommonResp 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 CommonRespMultiError, or -// nil if none found. -func (m *CommonResp) ValidateAll() error { - return m.validate(true) -} - -func (m *CommonResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CommonRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CommonRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CommonRespValidationError{ field: "Data", @@ -55518,29 +34095,9 @@ func (m *CommonResp) validate(all bool) error { } } - if len(errors) > 0 { - return CommonRespMultiError(errors) - } - return nil } -// CommonRespMultiError is an error wrapping multiple validation errors -// returned by CommonResp.ValidateAll() if the designated constraints aren't met. -type CommonRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CommonRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CommonRespMultiError) AllErrors() []error { return m } - // CommonRespValidationError is the validation error returned by // CommonResp.Validate if the designated constraints aren't met. type CommonRespValidationError struct { @@ -55596,53 +34153,20 @@ var _ interface { } = CommonRespValidationError{} // Validate checks the field values on CommonListResp 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *CommonListResp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CommonListResp 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 CommonListRespMultiError, -// or nil if none found. -func (m *CommonListResp) ValidateAll() error { - return m.validate(true) -} - -func (m *CommonListResp) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CommonListRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CommonListRespValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CommonListRespValidationError{ field: "Data", @@ -55652,30 +34176,9 @@ func (m *CommonListResp) validate(all bool) error { } } - if len(errors) > 0 { - return CommonListRespMultiError(errors) - } - return nil } -// CommonListRespMultiError is an error wrapping multiple validation errors -// returned by CommonListResp.ValidateAll() if the designated constraints -// aren't met. -type CommonListRespMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CommonListRespMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CommonListRespMultiError) AllErrors() []error { return m } - // CommonListRespValidationError is the validation error returned by // CommonListResp.Validate if the designated constraints aren't met. type CommonListRespValidationError struct { @@ -55732,50 +34235,15 @@ var _ interface { // Validate checks the field values on ListBKCloudRequest 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. +// violated, an error is returned. func (m *ListBKCloudRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListBKCloudRequest 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 -// ListBKCloudRequestMultiError, or nil if none found. -func (m *ListBKCloudRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListBKCloudRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - - if len(errors) > 0 { - return ListBKCloudRequestMultiError(errors) - } - return nil } -// ListBKCloudRequestMultiError is an error wrapping multiple validation errors -// returned by ListBKCloudRequest.ValidateAll() if the designated constraints -// aren't met. -type ListBKCloudRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListBKCloudRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListBKCloudRequestMultiError) AllErrors() []error { return m } - // ListBKCloudRequestValidationError is the validation error returned by // ListBKCloudRequest.Validate if the designated constraints aren't met. type ListBKCloudRequestValidationError struct { @@ -55834,70 +34302,29 @@ var _ interface { // Validate checks the field values on ListCCTopologyRequest 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. +// violated, an error is returned. func (m *ListCCTopologyRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCCTopologyRequest 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 -// ListCCTopologyRequestMultiError, or nil if none found. -func (m *ListCCTopologyRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCCTopologyRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - err := ListCCTopologyRequestValidationError{ + return ListCCTopologyRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_ListCCTopologyRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - err := ListCCTopologyRequestValidationError{ + return ListCCTopologyRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for BizID - if all { - switch v := interface{}(m.GetFilterInter()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCCTopologyRequestValidationError{ - field: "FilterInter", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCCTopologyRequestValidationError{ - field: "FilterInter", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetFilterInter()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetFilterInter()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCCTopologyRequestValidationError{ field: "FilterInter", @@ -55907,30 +34334,9 @@ func (m *ListCCTopologyRequest) validate(all bool) error { } } - if len(errors) > 0 { - return ListCCTopologyRequestMultiError(errors) - } - return nil } -// ListCCTopologyRequestMultiError is an error wrapping multiple validation -// errors returned by ListCCTopologyRequest.ValidateAll() if the designated -// constraints aren't met. -type ListCCTopologyRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCCTopologyRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCCTopologyRequestMultiError) AllErrors() []error { return m } - // ListCCTopologyRequestValidationError is the validation error returned by // ListCCTopologyRequest.Validate if the designated constraints aren't met. type ListCCTopologyRequestValidationError struct { @@ -55991,76 +34397,33 @@ var _ListCCTopologyRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-] // Validate checks the field values on GetBkSopsTemplateListRequest 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. +// violated, an error is returned. func (m *GetBkSopsTemplateListRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetBkSopsTemplateListRequest 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 -// GetBkSopsTemplateListRequestMultiError, or nil if none found. -func (m *GetBkSopsTemplateListRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetBkSopsTemplateListRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for BusinessID // no validation rules for Operator if _, ok := _GetBkSopsTemplateListRequest_TemplateSource_InLookup[m.GetTemplateSource()]; !ok { - err := GetBkSopsTemplateListRequestValidationError{ + return GetBkSopsTemplateListRequestValidationError{ field: "TemplateSource", reason: "value must be in list [business common ]", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _GetBkSopsTemplateListRequest_Scope_InLookup[m.GetScope()]; !ok { - err := GetBkSopsTemplateListRequestValidationError{ + return GetBkSopsTemplateListRequestValidationError{ field: "Scope", reason: "value must be in list [cmdb_biz project ]", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return GetBkSopsTemplateListRequestMultiError(errors) } return nil } -// GetBkSopsTemplateListRequestMultiError is an error wrapping multiple -// validation errors returned by GetBkSopsTemplateListRequest.ValidateAll() if -// the designated constraints aren't met. -type GetBkSopsTemplateListRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetBkSopsTemplateListRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetBkSopsTemplateListRequestMultiError) AllErrors() []error { return m } - // GetBkSopsTemplateListRequestValidationError is the validation error returned // by GetBkSopsTemplateListRequest.Validate if the designated constraints // aren't met. @@ -56132,26 +34495,12 @@ var _GetBkSopsTemplateListRequest_Scope_InLookup = map[string]struct{}{ // Validate checks the field values on GetBkSopsTemplateListResponse 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. +// violated, an error is returned. func (m *GetBkSopsTemplateListResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetBkSopsTemplateListResponse 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 -// GetBkSopsTemplateListResponseMultiError, or nil if none found. -func (m *GetBkSopsTemplateListResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetBkSopsTemplateListResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -56159,26 +34508,7 @@ func (m *GetBkSopsTemplateListResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetBkSopsTemplateListResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetBkSopsTemplateListResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBkSopsTemplateListResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -56190,30 +34520,9 @@ func (m *GetBkSopsTemplateListResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetBkSopsTemplateListResponseMultiError(errors) - } - return nil } -// GetBkSopsTemplateListResponseMultiError is an error wrapping multiple -// validation errors returned by GetBkSopsTemplateListResponse.ValidateAll() -// if the designated constraints aren't met. -type GetBkSopsTemplateListResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetBkSopsTemplateListResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetBkSopsTemplateListResponseMultiError) AllErrors() []error { return m } - // GetBkSopsTemplateListResponseValidationError is the validation error // returned by GetBkSopsTemplateListResponse.Validate if the designated // constraints aren't met. @@ -56272,27 +34581,13 @@ var _ interface { } = GetBkSopsTemplateListResponseValidationError{} // Validate checks the field values on TemplateInfo 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *TemplateInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TemplateInfo 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 TemplateInfoMultiError, or -// nil if none found. -func (m *TemplateInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *TemplateInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for TemplateName // no validation rules for TemplateID @@ -56307,29 +34602,9 @@ func (m *TemplateInfo) validate(all bool) error { // no validation rules for ProjectID - if len(errors) > 0 { - return TemplateInfoMultiError(errors) - } - return nil } -// TemplateInfoMultiError is an error wrapping multiple validation errors -// returned by TemplateInfo.ValidateAll() if the designated constraints aren't met. -type TemplateInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TemplateInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TemplateInfoMultiError) AllErrors() []error { return m } - // TemplateInfoValidationError is the validation error returned by // TemplateInfo.Validate if the designated constraints aren't met. type TemplateInfoValidationError struct { @@ -56386,26 +34661,12 @@ var _ interface { // Validate checks the field values on GetBkSopsTemplateInfoRequest 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. +// violated, an error is returned. func (m *GetBkSopsTemplateInfoRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetBkSopsTemplateInfoRequest 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 -// GetBkSopsTemplateInfoRequestMultiError, or nil if none found. -func (m *GetBkSopsTemplateInfoRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetBkSopsTemplateInfoRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for BusinessID // no validation rules for TemplateID @@ -56413,51 +34674,22 @@ func (m *GetBkSopsTemplateInfoRequest) validate(all bool) error { // no validation rules for Operator if _, ok := _GetBkSopsTemplateInfoRequest_TemplateSource_InLookup[m.GetTemplateSource()]; !ok { - err := GetBkSopsTemplateInfoRequestValidationError{ + return GetBkSopsTemplateInfoRequestValidationError{ field: "TemplateSource", reason: "value must be in list [business common ]", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _GetBkSopsTemplateInfoRequest_Scope_InLookup[m.GetScope()]; !ok { - err := GetBkSopsTemplateInfoRequestValidationError{ + return GetBkSopsTemplateInfoRequestValidationError{ field: "Scope", reason: "value must be in list [cmdb_biz project ]", } - if !all { - return err - } - errors = append(errors, err) - } - - if len(errors) > 0 { - return GetBkSopsTemplateInfoRequestMultiError(errors) } return nil } -// GetBkSopsTemplateInfoRequestMultiError is an error wrapping multiple -// validation errors returned by GetBkSopsTemplateInfoRequest.ValidateAll() if -// the designated constraints aren't met. -type GetBkSopsTemplateInfoRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetBkSopsTemplateInfoRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetBkSopsTemplateInfoRequestMultiError) AllErrors() []error { return m } - // GetBkSopsTemplateInfoRequestValidationError is the validation error returned // by GetBkSopsTemplateInfoRequest.Validate if the designated constraints // aren't met. @@ -56529,50 +34761,17 @@ var _GetBkSopsTemplateInfoRequest_Scope_InLookup = map[string]struct{}{ // Validate checks the field values on GetBkSopsTemplateInfoResponse 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. +// violated, an error is returned. func (m *GetBkSopsTemplateInfoResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetBkSopsTemplateInfoResponse 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 -// GetBkSopsTemplateInfoResponseMultiError, or nil if none found. -func (m *GetBkSopsTemplateInfoResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetBkSopsTemplateInfoResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetBkSopsTemplateInfoResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetBkSopsTemplateInfoResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBkSopsTemplateInfoResponseValidationError{ field: "Data", @@ -56582,30 +34781,9 @@ func (m *GetBkSopsTemplateInfoResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetBkSopsTemplateInfoResponseMultiError(errors) - } - return nil } -// GetBkSopsTemplateInfoResponseMultiError is an error wrapping multiple -// validation errors returned by GetBkSopsTemplateInfoResponse.ValidateAll() -// if the designated constraints aren't met. -type GetBkSopsTemplateInfoResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetBkSopsTemplateInfoResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetBkSopsTemplateInfoResponseMultiError) AllErrors() []error { return m } - // GetBkSopsTemplateInfoResponseValidationError is the validation error // returned by GetBkSopsTemplateInfoResponse.Validate if the designated // constraints aren't met. @@ -56665,51 +34843,18 @@ var _ interface { // Validate checks the field values on TemplateDetailInfo 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. +// violated, an error is returned. func (m *TemplateDetailInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TemplateDetailInfo 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 -// TemplateDetailInfoMultiError, or nil if none found. -func (m *TemplateDetailInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *TemplateDetailInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for TemplateUrl for idx, item := range m.GetValues() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TemplateDetailInfoValidationError{ - field: fmt.Sprintf("Values[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TemplateDetailInfoValidationError{ - field: fmt.Sprintf("Values[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TemplateDetailInfoValidationError{ field: fmt.Sprintf("Values[%v]", idx), @@ -56721,30 +34866,9 @@ func (m *TemplateDetailInfo) validate(all bool) error { } - if len(errors) > 0 { - return TemplateDetailInfoMultiError(errors) - } - return nil } -// TemplateDetailInfoMultiError is an error wrapping multiple validation errors -// returned by TemplateDetailInfo.ValidateAll() if the designated constraints -// aren't met. -type TemplateDetailInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TemplateDetailInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TemplateDetailInfoMultiError) AllErrors() []error { return m } - // TemplateDetailInfoValidationError is the validation error returned by // TemplateDetailInfo.Validate if the designated constraints aren't met. type TemplateDetailInfoValidationError struct { @@ -56802,27 +34926,13 @@ var _ interface { } = TemplateDetailInfoValidationError{} // Validate checks the field values on ConstantValue 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *ConstantValue) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ConstantValue 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 ConstantValueMultiError, or -// nil if none found. -func (m *ConstantValue) ValidateAll() error { - return m.validate(true) -} - -func (m *ConstantValue) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Key // no validation rules for Name @@ -56831,30 +34941,9 @@ func (m *ConstantValue) validate(all bool) error { // no validation rules for Desc - if len(errors) > 0 { - return ConstantValueMultiError(errors) - } - return nil } -// ConstantValueMultiError is an error wrapping multiple validation errors -// returned by ConstantValue.ValidateAll() if the designated constraints -// aren't met. -type ConstantValueMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ConstantValueMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ConstantValueMultiError) AllErrors() []error { return m } - // ConstantValueValidationError is the validation error returned by // ConstantValue.Validate if the designated constraints aren't met. type ConstantValueValidationError struct { @@ -56911,54 +35000,19 @@ var _ interface { // Validate checks the field values on GetInnerTemplateValuesRequest 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. +// violated, an error is returned. func (m *GetInnerTemplateValuesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetInnerTemplateValuesRequest 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 -// GetInnerTemplateValuesRequestMultiError, or nil if none found. -func (m *GetInnerTemplateValuesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetInnerTemplateValuesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ClusterID // no validation rules for Operator - if len(errors) > 0 { - return GetInnerTemplateValuesRequestMultiError(errors) - } - return nil } -// GetInnerTemplateValuesRequestMultiError is an error wrapping multiple -// validation errors returned by GetInnerTemplateValuesRequest.ValidateAll() -// if the designated constraints aren't met. -type GetInnerTemplateValuesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetInnerTemplateValuesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetInnerTemplateValuesRequestMultiError) AllErrors() []error { return m } - // GetInnerTemplateValuesRequestValidationError is the validation error // returned by GetInnerTemplateValuesRequest.Validate if the designated // constraints aren't met. @@ -57018,26 +35072,12 @@ var _ interface { // Validate checks the field values on GetInnerTemplateValuesResponse 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. +// violated, an error is returned. func (m *GetInnerTemplateValuesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetInnerTemplateValuesResponse 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 -// GetInnerTemplateValuesResponseMultiError, or nil if none found. -func (m *GetInnerTemplateValuesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetInnerTemplateValuesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -57045,26 +35085,7 @@ func (m *GetInnerTemplateValuesResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetInnerTemplateValuesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetInnerTemplateValuesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetInnerTemplateValuesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -57076,30 +35097,9 @@ func (m *GetInnerTemplateValuesResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetInnerTemplateValuesResponseMultiError(errors) - } - return nil } -// GetInnerTemplateValuesResponseMultiError is an error wrapping multiple -// validation errors returned by GetInnerTemplateValuesResponse.ValidateAll() -// if the designated constraints aren't met. -type GetInnerTemplateValuesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetInnerTemplateValuesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetInnerTemplateValuesResponseMultiError) AllErrors() []error { return m } - // GetInnerTemplateValuesResponseValidationError is the validation error // returned by GetInnerTemplateValuesResponse.Validate if the designated // constraints aren't met. @@ -57158,27 +35158,13 @@ var _ interface { } = GetInnerTemplateValuesResponseValidationError{} // Validate checks the field values on TemplateValue 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *TemplateValue) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TemplateValue 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 TemplateValueMultiError, or -// nil if none found. -func (m *TemplateValue) ValidateAll() error { - return m.validate(true) -} - -func (m *TemplateValue) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Name // no validation rules for Desc @@ -57189,30 +35175,9 @@ func (m *TemplateValue) validate(all bool) error { // no validation rules for Value - if len(errors) > 0 { - return TemplateValueMultiError(errors) - } - return nil } -// TemplateValueMultiError is an error wrapping multiple validation errors -// returned by TemplateValue.ValidateAll() if the designated constraints -// aren't met. -type TemplateValueMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TemplateValueMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TemplateValueMultiError) AllErrors() []error { return m } - // TemplateValueValidationError is the validation error returned by // TemplateValue.Validate if the designated constraints aren't met. type TemplateValueValidationError struct { @@ -57269,96 +35234,45 @@ var _ interface { // Validate checks the field values on DebugBkSopsTaskRequest 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. +// violated, an error is returned. func (m *DebugBkSopsTaskRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DebugBkSopsTaskRequest 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 -// DebugBkSopsTaskRequestMultiError, or nil if none found. -func (m *DebugBkSopsTaskRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DebugBkSopsTaskRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if utf8.RuneCountInString(m.GetBusinessID()) < 1 { - err := DebugBkSopsTaskRequestValidationError{ + return DebugBkSopsTaskRequestValidationError{ field: "BusinessID", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetTemplateID()) < 1 { - err := DebugBkSopsTaskRequestValidationError{ + return DebugBkSopsTaskRequestValidationError{ field: "TemplateID", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetOperator()) < 1 { - err := DebugBkSopsTaskRequestValidationError{ + return DebugBkSopsTaskRequestValidationError{ field: "Operator", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } if _, ok := _DebugBkSopsTaskRequest_TemplateSource_InLookup[m.GetTemplateSource()]; !ok { - err := DebugBkSopsTaskRequestValidationError{ + return DebugBkSopsTaskRequestValidationError{ field: "TemplateSource", reason: "value must be in list [business common ]", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Constant - if len(errors) > 0 { - return DebugBkSopsTaskRequestMultiError(errors) - } - return nil } -// DebugBkSopsTaskRequestMultiError is an error wrapping multiple validation -// errors returned by DebugBkSopsTaskRequest.ValidateAll() if the designated -// constraints aren't met. -type DebugBkSopsTaskRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DebugBkSopsTaskRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DebugBkSopsTaskRequestMultiError) AllErrors() []error { return m } - // DebugBkSopsTaskRequestValidationError is the validation error returned by // DebugBkSopsTaskRequest.Validate if the designated constraints aren't met. type DebugBkSopsTaskRequestValidationError struct { @@ -57423,50 +35337,17 @@ var _DebugBkSopsTaskRequest_TemplateSource_InLookup = map[string]struct{}{ // Validate checks the field values on DebugBkSopsTaskResponse 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. +// violated, an error is returned. func (m *DebugBkSopsTaskResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DebugBkSopsTaskResponse 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 -// DebugBkSopsTaskResponseMultiError, or nil if none found. -func (m *DebugBkSopsTaskResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DebugBkSopsTaskResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DebugBkSopsTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DebugBkSopsTaskResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DebugBkSopsTaskResponseValidationError{ field: "Data", @@ -57476,30 +35357,9 @@ func (m *DebugBkSopsTaskResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DebugBkSopsTaskResponseMultiError(errors) - } - return nil } -// DebugBkSopsTaskResponseMultiError is an error wrapping multiple validation -// errors returned by DebugBkSopsTaskResponse.ValidateAll() if the designated -// constraints aren't met. -type DebugBkSopsTaskResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DebugBkSopsTaskResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DebugBkSopsTaskResponseMultiError) AllErrors() []error { return m } - // DebugBkSopsTaskResponseValidationError is the validation error returned by // DebugBkSopsTaskResponse.Validate if the designated constraints aren't met. type DebugBkSopsTaskResponseValidationError struct { @@ -57558,46 +35418,13 @@ var _ interface { // Validate checks the field values on DebugBkSopsTaskInfo 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. +// violated, an error is returned. func (m *DebugBkSopsTaskInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DebugBkSopsTaskInfo 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 -// DebugBkSopsTaskInfoMultiError, or nil if none found. -func (m *DebugBkSopsTaskInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *DebugBkSopsTaskInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - - if all { - switch v := interface{}(m.GetTask()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DebugBkSopsTaskInfoValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DebugBkSopsTaskInfoValidationError{ - field: "Task", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DebugBkSopsTaskInfoValidationError{ field: "Task", @@ -57607,30 +35434,9 @@ func (m *DebugBkSopsTaskInfo) validate(all bool) error { } } - if len(errors) > 0 { - return DebugBkSopsTaskInfoMultiError(errors) - } - return nil } -// DebugBkSopsTaskInfoMultiError is an error wrapping multiple validation -// errors returned by DebugBkSopsTaskInfo.ValidateAll() if the designated -// constraints aren't met. -type DebugBkSopsTaskInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DebugBkSopsTaskInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DebugBkSopsTaskInfoMultiError) AllErrors() []error { return m } - // DebugBkSopsTaskInfoValidationError is the validation error returned by // DebugBkSopsTaskInfo.Validate if the designated constraints aren't met. type DebugBkSopsTaskInfoValidationError struct { @@ -57688,27 +35494,13 @@ var _ interface { } = DebugBkSopsTaskInfoValidationError{} // Validate checks the field values on CloudModuleFlag 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *CloudModuleFlag) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CloudModuleFlag 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 -// CloudModuleFlagMultiError, or nil if none found. -func (m *CloudModuleFlag) ValidateAll() error { - return m.validate(true) -} - -func (m *CloudModuleFlag) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for Version @@ -57733,26 +35525,7 @@ func (m *CloudModuleFlag) validate(all bool) error { // no validation rules for FlagType - if all { - switch v := interface{}(m.GetRegex()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudModuleFlagValidationError{ - field: "Regex", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudModuleFlagValidationError{ - field: "Regex", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudModuleFlagValidationError{ field: "Regex", @@ -57762,26 +35535,7 @@ func (m *CloudModuleFlag) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetRange()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CloudModuleFlagValidationError{ - field: "Range", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CloudModuleFlagValidationError{ - field: "Range", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudModuleFlagValidationError{ field: "Range", @@ -57793,30 +35547,9 @@ func (m *CloudModuleFlag) validate(all bool) error { // no validation rules for NetworkType - if len(errors) > 0 { - return CloudModuleFlagMultiError(errors) - } - return nil } -// CloudModuleFlagMultiError is an error wrapping multiple validation errors -// returned by CloudModuleFlag.ValidateAll() if the designated constraints -// aren't met. -type CloudModuleFlagMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CloudModuleFlagMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CloudModuleFlagMultiError) AllErrors() []error { return m } - // CloudModuleFlagValidationError is the validation error returned by // CloudModuleFlag.Validate if the designated constraints aren't met. type CloudModuleFlagValidationError struct { @@ -57872,53 +35605,19 @@ var _ interface { } = CloudModuleFlagValidationError{} // Validate checks the field values on FlagInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *FlagInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on FlagInfo 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 FlagInfoMultiError, or nil -// if none found. -func (m *FlagInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *FlagInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for FlagName // no validation rules for FlagDesc // no validation rules for DefaultValue - if all { - switch v := interface{}(m.GetEnable()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, FlagInfoValidationError{ - field: "Enable", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, FlagInfoValidationError{ - field: "Enable", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return FlagInfoValidationError{ field: "Enable", @@ -57930,26 +35629,7 @@ func (m *FlagInfo) validate(all bool) error { // no validation rules for FlagType - if all { - switch v := interface{}(m.GetRegex()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, FlagInfoValidationError{ - field: "Regex", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, FlagInfoValidationError{ - field: "Regex", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return FlagInfoValidationError{ field: "Regex", @@ -57959,26 +35639,7 @@ func (m *FlagInfo) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetRange()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, FlagInfoValidationError{ - field: "Range", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, FlagInfoValidationError{ - field: "Range", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return FlagInfoValidationError{ field: "Range", @@ -57990,29 +35651,9 @@ func (m *FlagInfo) validate(all bool) error { // no validation rules for NetworkType - if len(errors) > 0 { - return FlagInfoMultiError(errors) - } - return nil } -// FlagInfoMultiError is an error wrapping multiple validation errors returned -// by FlagInfo.ValidateAll() if the designated constraints aren't met. -type FlagInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m FlagInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m FlagInfoMultiError) AllErrors() []error { return m } - // FlagInfoValidationError is the validation error returned by // FlagInfo.Validate if the designated constraints aren't met. type FlagInfoValidationError struct { @@ -58068,54 +35709,19 @@ var _ interface { } = FlagInfoValidationError{} // Validate checks the field values on ValueRegex 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *ValueRegex) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ValueRegex 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 ValueRegexMultiError, or -// nil if none found. -func (m *ValueRegex) ValidateAll() error { - return m.validate(true) -} - -func (m *ValueRegex) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Validator // no validation rules for Message - if len(errors) > 0 { - return ValueRegexMultiError(errors) - } - return nil } -// ValueRegexMultiError is an error wrapping multiple validation errors -// returned by ValueRegex.ValidateAll() if the designated constraints aren't met. -type ValueRegexMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ValueRegexMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ValueRegexMultiError) AllErrors() []error { return m } - // ValueRegexValidationError is the validation error returned by // ValueRegex.Validate if the designated constraints aren't met. type ValueRegexValidationError struct { @@ -58171,54 +35777,20 @@ var _ interface { } = ValueRegexValidationError{} // Validate checks the field values on NumberRange 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NumberRange) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NumberRange 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 NumberRangeMultiError, or -// nil if none found. -func (m *NumberRange) ValidateAll() error { - return m.validate(true) -} - -func (m *NumberRange) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Min // no validation rules for Max - if len(errors) > 0 { - return NumberRangeMultiError(errors) - } - return nil } -// NumberRangeMultiError is an error wrapping multiple validation errors -// returned by NumberRange.ValidateAll() if the designated constraints aren't met. -type NumberRangeMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NumberRangeMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NumberRangeMultiError) AllErrors() []error { return m } - // NumberRangeValidationError is the validation error returned by // NumberRange.Validate if the designated constraints aren't met. type NumberRangeValidationError struct { @@ -58275,75 +35847,34 @@ var _ interface { // Validate checks the field values on CreateCloudModuleFlagRequest 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. +// violated, an error is returned. func (m *CreateCloudModuleFlagRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateCloudModuleFlagRequest 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 -// CreateCloudModuleFlagRequestMultiError, or nil if none found. -func (m *CreateCloudModuleFlagRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for Version if utf8.RuneCountInString(m.GetModuleID()) < 1 { - err := CreateCloudModuleFlagRequestValidationError{ + return CreateCloudModuleFlagRequestValidationError{ field: "ModuleID", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } if len(m.GetFlagList()) < 1 { - err := CreateCloudModuleFlagRequestValidationError{ + return CreateCloudModuleFlagRequestValidationError{ field: "FlagList", reason: "value must contain at least 1 item(s)", } - if !all { - return err - } - errors = append(errors, err) } for idx, item := range m.GetFlagList() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateCloudModuleFlagRequestValidationError{ - field: fmt.Sprintf("FlagList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateCloudModuleFlagRequestValidationError{ - field: fmt.Sprintf("FlagList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudModuleFlagRequestValidationError{ field: fmt.Sprintf("FlagList[%v]", idx), @@ -58357,30 +35888,9 @@ func (m *CreateCloudModuleFlagRequest) validate(all bool) error { // no validation rules for Operator - if len(errors) > 0 { - return CreateCloudModuleFlagRequestMultiError(errors) - } - return nil } -// CreateCloudModuleFlagRequestMultiError is an error wrapping multiple -// validation errors returned by CreateCloudModuleFlagRequest.ValidateAll() if -// the designated constraints aren't met. -type CreateCloudModuleFlagRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateCloudModuleFlagRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateCloudModuleFlagRequestMultiError) AllErrors() []error { return m } - // CreateCloudModuleFlagRequestValidationError is the validation error returned // by CreateCloudModuleFlagRequest.Validate if the designated constraints // aren't met. @@ -58440,54 +35950,19 @@ var _ interface { // Validate checks the field values on CreateCloudModuleFlagResponse 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. +// violated, an error is returned. func (m *CreateCloudModuleFlagResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateCloudModuleFlagResponse 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 -// CreateCloudModuleFlagResponseMultiError, or nil if none found. -func (m *CreateCloudModuleFlagResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message - if len(errors) > 0 { - return CreateCloudModuleFlagResponseMultiError(errors) - } - return nil } -// CreateCloudModuleFlagResponseMultiError is an error wrapping multiple -// validation errors returned by CreateCloudModuleFlagResponse.ValidateAll() -// if the designated constraints aren't met. -type CreateCloudModuleFlagResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateCloudModuleFlagResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateCloudModuleFlagResponseMultiError) AllErrors() []error { return m } - // CreateCloudModuleFlagResponseValidationError is the validation error // returned by CreateCloudModuleFlagResponse.Validate if the designated // constraints aren't met. @@ -58547,26 +36022,12 @@ var _ interface { // Validate checks the field values on UpdateCloudModuleFlagRequest 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. +// violated, an error is returned. func (m *UpdateCloudModuleFlagRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateCloudModuleFlagRequest 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 -// UpdateCloudModuleFlagRequestMultiError, or nil if none found. -func (m *UpdateCloudModuleFlagRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for Version @@ -58574,39 +36035,16 @@ func (m *UpdateCloudModuleFlagRequest) validate(all bool) error { // no validation rules for ModuleID if len(m.GetFlagList()) < 1 { - err := UpdateCloudModuleFlagRequestValidationError{ + return UpdateCloudModuleFlagRequestValidationError{ field: "FlagList", reason: "value must contain at least 1 item(s)", } - if !all { - return err - } - errors = append(errors, err) } for idx, item := range m.GetFlagList() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, UpdateCloudModuleFlagRequestValidationError{ - field: fmt.Sprintf("FlagList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, UpdateCloudModuleFlagRequestValidationError{ - field: fmt.Sprintf("FlagList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudModuleFlagRequestValidationError{ field: fmt.Sprintf("FlagList[%v]", idx), @@ -58620,30 +36058,9 @@ func (m *UpdateCloudModuleFlagRequest) validate(all bool) error { // no validation rules for Operator - if len(errors) > 0 { - return UpdateCloudModuleFlagRequestMultiError(errors) - } - return nil } -// UpdateCloudModuleFlagRequestMultiError is an error wrapping multiple -// validation errors returned by UpdateCloudModuleFlagRequest.ValidateAll() if -// the designated constraints aren't met. -type UpdateCloudModuleFlagRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateCloudModuleFlagRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateCloudModuleFlagRequestMultiError) AllErrors() []error { return m } - // UpdateCloudModuleFlagRequestValidationError is the validation error returned // by UpdateCloudModuleFlagRequest.Validate if the designated constraints // aren't met. @@ -58703,54 +36120,19 @@ var _ interface { // Validate checks the field values on UpdateCloudModuleFlagResponse 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. +// violated, an error is returned. func (m *UpdateCloudModuleFlagResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UpdateCloudModuleFlagResponse 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 -// UpdateCloudModuleFlagResponseMultiError, or nil if none found. -func (m *UpdateCloudModuleFlagResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *UpdateCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message - if len(errors) > 0 { - return UpdateCloudModuleFlagResponseMultiError(errors) - } - return nil } -// UpdateCloudModuleFlagResponseMultiError is an error wrapping multiple -// validation errors returned by UpdateCloudModuleFlagResponse.ValidateAll() -// if the designated constraints aren't met. -type UpdateCloudModuleFlagResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UpdateCloudModuleFlagResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UpdateCloudModuleFlagResponseMultiError) AllErrors() []error { return m } - // UpdateCloudModuleFlagResponseValidationError is the validation error // returned by UpdateCloudModuleFlagResponse.Validate if the designated // constraints aren't met. @@ -58810,26 +36192,12 @@ var _ interface { // Validate checks the field values on DeleteCloudModuleFlagRequest 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. +// violated, an error is returned. func (m *DeleteCloudModuleFlagRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteCloudModuleFlagRequest 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 -// DeleteCloudModuleFlagRequestMultiError, or nil if none found. -func (m *DeleteCloudModuleFlagRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for Version @@ -58838,30 +36206,9 @@ func (m *DeleteCloudModuleFlagRequest) validate(all bool) error { // no validation rules for Operator - if len(errors) > 0 { - return DeleteCloudModuleFlagRequestMultiError(errors) - } - return nil } -// DeleteCloudModuleFlagRequestMultiError is an error wrapping multiple -// validation errors returned by DeleteCloudModuleFlagRequest.ValidateAll() if -// the designated constraints aren't met. -type DeleteCloudModuleFlagRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteCloudModuleFlagRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteCloudModuleFlagRequestMultiError) AllErrors() []error { return m } - // DeleteCloudModuleFlagRequestValidationError is the validation error returned // by DeleteCloudModuleFlagRequest.Validate if the designated constraints // aren't met. @@ -58921,54 +36268,19 @@ var _ interface { // Validate checks the field values on DeleteCloudModuleFlagResponse 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. +// violated, an error is returned. func (m *DeleteCloudModuleFlagResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteCloudModuleFlagResponse 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 -// DeleteCloudModuleFlagResponseMultiError, or nil if none found. -func (m *DeleteCloudModuleFlagResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message - if len(errors) > 0 { - return DeleteCloudModuleFlagResponseMultiError(errors) - } - return nil } -// DeleteCloudModuleFlagResponseMultiError is an error wrapping multiple -// validation errors returned by DeleteCloudModuleFlagResponse.ValidateAll() -// if the designated constraints aren't met. -type DeleteCloudModuleFlagResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteCloudModuleFlagResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteCloudModuleFlagResponseMultiError) AllErrors() []error { return m } - // DeleteCloudModuleFlagResponseValidationError is the validation error // returned by DeleteCloudModuleFlagResponse.Validate if the designated // constraints aren't met. @@ -59028,26 +36340,12 @@ var _ interface { // Validate checks the field values on ListCloudModuleFlagRequest 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. +// violated, an error is returned. func (m *ListCloudModuleFlagRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudModuleFlagRequest 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 -// ListCloudModuleFlagRequestMultiError, or nil if none found. -func (m *ListCloudModuleFlagRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for CloudID // no validation rules for Version @@ -59056,30 +36354,9 @@ func (m *ListCloudModuleFlagRequest) validate(all bool) error { // no validation rules for Operator - if len(errors) > 0 { - return ListCloudModuleFlagRequestMultiError(errors) - } - return nil } -// ListCloudModuleFlagRequestMultiError is an error wrapping multiple -// validation errors returned by ListCloudModuleFlagRequest.ValidateAll() if -// the designated constraints aren't met. -type ListCloudModuleFlagRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudModuleFlagRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudModuleFlagRequestMultiError) AllErrors() []error { return m } - // ListCloudModuleFlagRequestValidationError is the validation error returned // by ListCloudModuleFlagRequest.Validate if the designated constraints aren't met. type ListCloudModuleFlagRequestValidationError struct { @@ -59138,26 +36415,12 @@ var _ interface { // Validate checks the field values on ListCloudModuleFlagResponse 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. +// violated, an error is returned. func (m *ListCloudModuleFlagResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListCloudModuleFlagResponse 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 -// ListCloudModuleFlagResponseMultiError, or nil if none found. -func (m *ListCloudModuleFlagResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -59165,26 +36428,7 @@ func (m *ListCloudModuleFlagResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListCloudModuleFlagResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListCloudModuleFlagResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudModuleFlagResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -59196,30 +36440,9 @@ func (m *ListCloudModuleFlagResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListCloudModuleFlagResponseMultiError(errors) - } - return nil } -// ListCloudModuleFlagResponseMultiError is an error wrapping multiple -// validation errors returned by ListCloudModuleFlagResponse.ValidateAll() if -// the designated constraints aren't met. -type ListCloudModuleFlagResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListCloudModuleFlagResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListCloudModuleFlagResponseMultiError) AllErrors() []error { return m } - // ListCloudModuleFlagResponseValidationError is the validation error returned // by ListCloudModuleFlagResponse.Validate if the designated constraints // aren't met. @@ -59279,56 +36502,21 @@ var _ interface { // Validate checks the field values on GetExternalNodeScriptRequest 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. +// violated, an error is returned. func (m *GetExternalNodeScriptRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetExternalNodeScriptRequest 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 -// GetExternalNodeScriptRequestMultiError, or nil if none found. -func (m *GetExternalNodeScriptRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetExternalNodeScriptRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NodeGroupID // no validation rules for Operator // no validation rules for Internal - if len(errors) > 0 { - return GetExternalNodeScriptRequestMultiError(errors) - } - return nil } -// GetExternalNodeScriptRequestMultiError is an error wrapping multiple -// validation errors returned by GetExternalNodeScriptRequest.ValidateAll() if -// the designated constraints aren't met. -type GetExternalNodeScriptRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetExternalNodeScriptRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetExternalNodeScriptRequestMultiError) AllErrors() []error { return m } - // GetExternalNodeScriptRequestValidationError is the validation error returned // by GetExternalNodeScriptRequest.Validate if the designated constraints // aren't met. @@ -59388,26 +36576,12 @@ var _ interface { // Validate checks the field values on GetExternalNodeScriptResponse 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. +// violated, an error is returned. func (m *GetExternalNodeScriptResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetExternalNodeScriptResponse 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 -// GetExternalNodeScriptResponseMultiError, or nil if none found. -func (m *GetExternalNodeScriptResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetExternalNodeScriptResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -59416,26 +36590,7 @@ func (m *GetExternalNodeScriptResponse) validate(all bool) error { // no validation rules for Data - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetExternalNodeScriptResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetExternalNodeScriptResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetExternalNodeScriptResponseValidationError{ field: "WebAnnotations", @@ -59445,30 +36600,9 @@ func (m *GetExternalNodeScriptResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetExternalNodeScriptResponseMultiError(errors) - } - return nil } -// GetExternalNodeScriptResponseMultiError is an error wrapping multiple -// validation errors returned by GetExternalNodeScriptResponse.ValidateAll() -// if the designated constraints aren't met. -type GetExternalNodeScriptResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetExternalNodeScriptResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetExternalNodeScriptResponseMultiError) AllErrors() []error { return m } - // GetExternalNodeScriptResponseValidationError is the validation error // returned by GetExternalNodeScriptResponse.Validate if the designated // constraints aren't met. @@ -59527,52 +36661,17 @@ var _ interface { } = GetExternalNodeScriptResponseValidationError{} // Validate checks the field values on MapStruct 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *MapStruct) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on MapStruct 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 MapStructMultiError, or nil -// if none found. -func (m *MapStruct) ValidateAll() error { - return m.validate(true) -} - -func (m *MapStruct) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Values - if len(errors) > 0 { - return MapStructMultiError(errors) - } - return nil } -// MapStructMultiError is an error wrapping multiple validation errors returned -// by MapStruct.ValidateAll() if the designated constraints aren't met. -type MapStructMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MapStructMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MapStructMultiError) AllErrors() []error { return m } - // MapStructValidationError is the validation error returned by // MapStruct.Validate if the designated constraints aren't met. type MapStructValidationError struct { @@ -59629,54 +36728,19 @@ var _ interface { // Validate checks the field values on GetBatchCustomSettingRequest 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. +// violated, an error is returned. func (m *GetBatchCustomSettingRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetBatchCustomSettingRequest 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 -// GetBatchCustomSettingRequestMultiError, or nil if none found. -func (m *GetBatchCustomSettingRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetBatchCustomSettingRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ScopeType // no validation rules for ScopeId - if len(errors) > 0 { - return GetBatchCustomSettingRequestMultiError(errors) - } - return nil } -// GetBatchCustomSettingRequestMultiError is an error wrapping multiple -// validation errors returned by GetBatchCustomSettingRequest.ValidateAll() if -// the designated constraints aren't met. -type GetBatchCustomSettingRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetBatchCustomSettingRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetBatchCustomSettingRequestMultiError) AllErrors() []error { return m } - // GetBatchCustomSettingRequestValidationError is the validation error returned // by GetBatchCustomSettingRequest.Validate if the designated constraints // aren't met. @@ -59736,26 +36800,12 @@ var _ interface { // Validate checks the field values on GetBatchCustomSettingResponse 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. +// violated, an error is returned. func (m *GetBatchCustomSettingResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetBatchCustomSettingResponse 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 -// GetBatchCustomSettingResponseMultiError, or nil if none found. -func (m *GetBatchCustomSettingResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetBatchCustomSettingResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Success @@ -59764,26 +36814,7 @@ func (m *GetBatchCustomSettingResponse) validate(all bool) error { // no validation rules for RequestId - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetBatchCustomSettingResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetBatchCustomSettingResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBatchCustomSettingResponseValidationError{ field: "Data", @@ -59793,30 +36824,9 @@ func (m *GetBatchCustomSettingResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetBatchCustomSettingResponseMultiError(errors) - } - return nil } -// GetBatchCustomSettingResponseMultiError is an error wrapping multiple -// validation errors returned by GetBatchCustomSettingResponse.ValidateAll() -// if the designated constraints aren't met. -type GetBatchCustomSettingResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetBatchCustomSettingResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetBatchCustomSettingResponseMultiError) AllErrors() []error { return m } - // GetBatchCustomSettingResponseValidationError is the validation error // returned by GetBatchCustomSettingResponse.Validate if the designated // constraints aren't met. @@ -59875,54 +36885,19 @@ var _ interface { } = GetBatchCustomSettingResponseValidationError{} // Validate checks the field values on ScopeInfo 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *ScopeInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ScopeInfo 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 ScopeInfoMultiError, or nil -// if none found. -func (m *ScopeInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *ScopeInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ScopeType // no validation rules for ScopeId - if len(errors) > 0 { - return ScopeInfoMultiError(errors) - } - return nil } -// ScopeInfoMultiError is an error wrapping multiple validation errors returned -// by ScopeInfo.ValidateAll() if the designated constraints aren't met. -type ScopeInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ScopeInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ScopeInfoMultiError) AllErrors() []error { return m } - // ScopeInfoValidationError is the validation error returned by // ScopeInfo.Validate if the designated constraints aren't met. type ScopeInfoValidationError struct { @@ -59979,26 +36954,12 @@ var _ interface { // Validate checks the field values on GetBizTopologyHostRequest 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. +// violated, an error is returned. func (m *GetBizTopologyHostRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetBizTopologyHostRequest 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 -// GetBizTopologyHostRequestMultiError, or nil if none found. -func (m *GetBizTopologyHostRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetBizTopologyHostRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ScopeType // no validation rules for ScopeId @@ -60008,26 +36969,7 @@ func (m *GetBizTopologyHostRequest) validate(all bool) error { for idx, item := range m.GetScopeList() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetBizTopologyHostRequestValidationError{ - field: fmt.Sprintf("ScopeList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetBizTopologyHostRequestValidationError{ - field: fmt.Sprintf("ScopeList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBizTopologyHostRequestValidationError{ field: fmt.Sprintf("ScopeList[%v]", idx), @@ -60039,30 +36981,9 @@ func (m *GetBizTopologyHostRequest) validate(all bool) error { } - if len(errors) > 0 { - return GetBizTopologyHostRequestMultiError(errors) - } - return nil } -// GetBizTopologyHostRequestMultiError is an error wrapping multiple validation -// errors returned by GetBizTopologyHostRequest.ValidateAll() if the -// designated constraints aren't met. -type GetBizTopologyHostRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetBizTopologyHostRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetBizTopologyHostRequestMultiError) AllErrors() []error { return m } - // GetBizTopologyHostRequestValidationError is the validation error returned by // GetBizTopologyHostRequest.Validate if the designated constraints aren't met. type GetBizTopologyHostRequestValidationError struct { @@ -60121,26 +37042,12 @@ var _ interface { // Validate checks the field values on GetBizTopologyHostResponse 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. +// violated, an error is returned. func (m *GetBizTopologyHostResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetBizTopologyHostResponse 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 -// GetBizTopologyHostResponseMultiError, or nil if none found. -func (m *GetBizTopologyHostResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetBizTopologyHostResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Success @@ -60149,26 +37056,7 @@ func (m *GetBizTopologyHostResponse) validate(all bool) error { // no validation rules for RequestId - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetBizTopologyHostResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetBizTopologyHostResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBizTopologyHostResponseValidationError{ field: "Data", @@ -60178,30 +37066,9 @@ func (m *GetBizTopologyHostResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetBizTopologyHostResponseMultiError(errors) - } - return nil } -// GetBizTopologyHostResponseMultiError is an error wrapping multiple -// validation errors returned by GetBizTopologyHostResponse.ValidateAll() if -// the designated constraints aren't met. -type GetBizTopologyHostResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetBizTopologyHostResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetBizTopologyHostResponseMultiError) AllErrors() []error { return m } - // GetBizTopologyHostResponseValidationError is the validation error returned // by GetBizTopologyHostResponse.Validate if the designated constraints aren't met. type GetBizTopologyHostResponseValidationError struct { @@ -60259,54 +37126,19 @@ var _ interface { } = GetBizTopologyHostResponseValidationError{} // Validate checks the field values on NodeData 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NodeData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NodeData 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 NodeDataMultiError, or nil -// if none found. -func (m *NodeData) ValidateAll() error { - return m.validate(true) -} - -func (m *NodeData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ObjectId // no validation rules for InstanceId - if len(errors) > 0 { - return NodeDataMultiError(errors) - } - return nil } -// NodeDataMultiError is an error wrapping multiple validation errors returned -// by NodeData.ValidateAll() if the designated constraints aren't met. -type NodeDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NodeDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NodeDataMultiError) AllErrors() []error { return m } - // NodeDataValidationError is the validation error returned by // NodeData.Validate if the designated constraints aren't met. type NodeDataValidationError struct { @@ -60363,64 +37195,27 @@ var _ interface { // Validate checks the field values on GetTopologyNodesRequest 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. +// violated, an error is returned. func (m *GetTopologyNodesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetTopologyNodesRequest 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 -// GetTopologyNodesRequestMultiError, or nil if none found. -func (m *GetTopologyNodesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetTopologyNodesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ScopeType // no validation rules for ScopeId if len(m.GetNodeList()) < 1 { - err := GetTopologyNodesRequestValidationError{ + return GetTopologyNodesRequestValidationError{ field: "NodeList", reason: "value must contain at least 1 item(s)", } - if !all { - return err - } - errors = append(errors, err) } for idx, item := range m.GetNodeList() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetTopologyNodesRequestValidationError{ - field: fmt.Sprintf("NodeList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetTopologyNodesRequestValidationError{ - field: fmt.Sprintf("NodeList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesRequestValidationError{ field: fmt.Sprintf("NodeList[%v]", idx), @@ -60434,26 +37229,7 @@ func (m *GetTopologyNodesRequest) validate(all bool) error { // no validation rules for SearchContent - if all { - switch v := interface{}(m.GetAlive()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetTopologyNodesRequestValidationError{ - field: "Alive", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetTopologyNodesRequestValidationError{ - field: "Alive", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesRequestValidationError{ field: "Alive", @@ -60467,30 +37243,9 @@ func (m *GetTopologyNodesRequest) validate(all bool) error { // no validation rules for PageSize - if len(errors) > 0 { - return GetTopologyNodesRequestMultiError(errors) - } - return nil } -// GetTopologyNodesRequestMultiError is an error wrapping multiple validation -// errors returned by GetTopologyNodesRequest.ValidateAll() if the designated -// constraints aren't met. -type GetTopologyNodesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetTopologyNodesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetTopologyNodesRequestMultiError) AllErrors() []error { return m } - // GetTopologyNodesRequestValidationError is the validation error returned by // GetTopologyNodesRequest.Validate if the designated constraints aren't met. type GetTopologyNodesRequestValidationError struct { @@ -60549,26 +37304,12 @@ var _ interface { // Validate checks the field values on GetTopologyNodesResponse 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. +// violated, an error is returned. func (m *GetTopologyNodesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetTopologyNodesResponse 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 -// GetTopologyNodesResponseMultiError, or nil if none found. -func (m *GetTopologyNodesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetTopologyNodesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Success @@ -60577,26 +37318,7 @@ func (m *GetTopologyNodesResponse) validate(all bool) error { // no validation rules for RequestId - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetTopologyNodesResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetTopologyNodesResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesResponseValidationError{ field: "Data", @@ -60606,30 +37328,9 @@ func (m *GetTopologyNodesResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetTopologyNodesResponseMultiError(errors) - } - return nil } -// GetTopologyNodesResponseMultiError is an error wrapping multiple validation -// errors returned by GetTopologyNodesResponse.ValidateAll() if the designated -// constraints aren't met. -type GetTopologyNodesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetTopologyNodesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetTopologyNodesResponseMultiError) AllErrors() []error { return m } - // GetTopologyNodesResponseValidationError is the validation error returned by // GetTopologyNodesResponse.Validate if the designated constraints aren't met. type GetTopologyNodesResponseValidationError struct { @@ -60688,26 +37389,12 @@ var _ interface { // Validate checks the field values on GetTopologyNodesData 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. +// violated, an error is returned. func (m *GetTopologyNodesData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetTopologyNodesData 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 -// GetTopologyNodesDataMultiError, or nil if none found. -func (m *GetTopologyNodesData) ValidateAll() error { - return m.validate(true) -} - -func (m *GetTopologyNodesData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Start // no validation rules for PageSize @@ -60717,26 +37404,7 @@ func (m *GetTopologyNodesData) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetTopologyNodesDataValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetTopologyNodesDataValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesDataValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -60748,30 +37416,9 @@ func (m *GetTopologyNodesData) validate(all bool) error { } - if len(errors) > 0 { - return GetTopologyNodesDataMultiError(errors) - } - return nil } -// GetTopologyNodesDataMultiError is an error wrapping multiple validation -// errors returned by GetTopologyNodesData.ValidateAll() if the designated -// constraints aren't met. -type GetTopologyNodesDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetTopologyNodesDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetTopologyNodesDataMultiError) AllErrors() []error { return m } - // GetTopologyNodesDataValidationError is the validation error returned by // GetTopologyNodesData.Validate if the designated constraints aren't met. type GetTopologyNodesDataValidationError struct { @@ -60829,27 +37476,12 @@ var _ interface { } = GetTopologyNodesDataValidationError{} // Validate checks the field values on HostData 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *HostData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on HostData 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 HostDataMultiError, or nil -// if none found. -func (m *HostData) ValidateAll() error { - return m.validate(true) -} - -func (m *HostData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for HostId // no validation rules for Ip @@ -60862,26 +37494,7 @@ func (m *HostData) validate(all bool) error { // no validation rules for OsName - if all { - switch v := interface{}(m.GetCloudArea()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, HostDataValidationError{ - field: "CloudArea", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, HostDataValidationError{ - field: "CloudArea", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return HostDataValidationError{ field: "CloudArea", @@ -60891,29 +37504,9 @@ func (m *HostData) validate(all bool) error { } } - if len(errors) > 0 { - return HostDataMultiError(errors) - } - return nil } -// HostDataMultiError is an error wrapping multiple validation errors returned -// by HostData.ValidateAll() if the designated constraints aren't met. -type HostDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m HostDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m HostDataMultiError) AllErrors() []error { return m } - // HostDataValidationError is the validation error returned by // HostData.Validate if the designated constraints aren't met. type HostDataValidationError struct { @@ -60969,55 +37562,20 @@ var _ interface { } = HostDataValidationError{} // Validate checks the field values on HostCloudArea 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *HostCloudArea) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on HostCloudArea 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 HostCloudAreaMultiError, or -// nil if none found. -func (m *HostCloudArea) ValidateAll() error { - return m.validate(true) -} - -func (m *HostCloudArea) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Id // no validation rules for Name - if len(errors) > 0 { - return HostCloudAreaMultiError(errors) - } - return nil } -// HostCloudAreaMultiError is an error wrapping multiple validation errors -// returned by HostCloudArea.ValidateAll() if the designated constraints -// aren't met. -type HostCloudAreaMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m HostCloudAreaMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m HostCloudAreaMultiError) AllErrors() []error { return m } - // HostCloudAreaValidationError is the validation error returned by // HostCloudArea.Validate if the designated constraints aren't met. type HostCloudAreaValidationError struct { @@ -61074,64 +37632,27 @@ var _ interface { // Validate checks the field values on GetTopologyHostIdsNodesRequest 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. +// violated, an error is returned. func (m *GetTopologyHostIdsNodesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetTopologyHostIdsNodesRequest 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 -// GetTopologyHostIdsNodesRequestMultiError, or nil if none found. -func (m *GetTopologyHostIdsNodesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetTopologyHostIdsNodesRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ScopeType // no validation rules for ScopeId if len(m.GetNodeList()) < 1 { - err := GetTopologyHostIdsNodesRequestValidationError{ + return GetTopologyHostIdsNodesRequestValidationError{ field: "NodeList", reason: "value must contain at least 1 item(s)", } - if !all { - return err - } - errors = append(errors, err) } for idx, item := range m.GetNodeList() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetTopologyHostIdsNodesRequestValidationError{ - field: fmt.Sprintf("NodeList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetTopologyHostIdsNodesRequestValidationError{ - field: fmt.Sprintf("NodeList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyHostIdsNodesRequestValidationError{ field: fmt.Sprintf("NodeList[%v]", idx), @@ -61145,26 +37666,7 @@ func (m *GetTopologyHostIdsNodesRequest) validate(all bool) error { // no validation rules for SearchContent - if all { - switch v := interface{}(m.GetAlive()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetTopologyHostIdsNodesRequestValidationError{ - field: "Alive", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetTopologyHostIdsNodesRequestValidationError{ - field: "Alive", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyHostIdsNodesRequestValidationError{ field: "Alive", @@ -61178,30 +37680,9 @@ func (m *GetTopologyHostIdsNodesRequest) validate(all bool) error { // no validation rules for PageSize - if len(errors) > 0 { - return GetTopologyHostIdsNodesRequestMultiError(errors) - } - return nil } -// GetTopologyHostIdsNodesRequestMultiError is an error wrapping multiple -// validation errors returned by GetTopologyHostIdsNodesRequest.ValidateAll() -// if the designated constraints aren't met. -type GetTopologyHostIdsNodesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetTopologyHostIdsNodesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetTopologyHostIdsNodesRequestMultiError) AllErrors() []error { return m } - // GetTopologyHostIdsNodesRequestValidationError is the validation error // returned by GetTopologyHostIdsNodesRequest.Validate if the designated // constraints aren't met. @@ -61261,26 +37742,12 @@ var _ interface { // Validate checks the field values on GetTopologyHostIdsNodesResponse 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. +// violated, an error is returned. func (m *GetTopologyHostIdsNodesResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetTopologyHostIdsNodesResponse 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 -// GetTopologyHostIdsNodesResponseMultiError, or nil if none found. -func (m *GetTopologyHostIdsNodesResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetTopologyHostIdsNodesResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Success @@ -61289,26 +37756,7 @@ func (m *GetTopologyHostIdsNodesResponse) validate(all bool) error { // no validation rules for RequestId - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetTopologyHostIdsNodesResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetTopologyHostIdsNodesResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyHostIdsNodesResponseValidationError{ field: "Data", @@ -61318,30 +37766,9 @@ func (m *GetTopologyHostIdsNodesResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetTopologyHostIdsNodesResponseMultiError(errors) - } - return nil } -// GetTopologyHostIdsNodesResponseMultiError is an error wrapping multiple -// validation errors returned by GetTopologyHostIdsNodesResponse.ValidateAll() -// if the designated constraints aren't met. -type GetTopologyHostIdsNodesResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetTopologyHostIdsNodesResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetTopologyHostIdsNodesResponseMultiError) AllErrors() []error { return m } - // GetTopologyHostIdsNodesResponseValidationError is the validation error // returned by GetTopologyHostIdsNodesResponse.Validate if the designated // constraints aren't met. @@ -61401,26 +37828,12 @@ var _ interface { // Validate checks the field values on GetTopologyHostIdsNodesData 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. +// violated, an error is returned. func (m *GetTopologyHostIdsNodesData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetTopologyHostIdsNodesData 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 -// GetTopologyHostIdsNodesDataMultiError, or nil if none found. -func (m *GetTopologyHostIdsNodesData) ValidateAll() error { - return m.validate(true) -} - -func (m *GetTopologyHostIdsNodesData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Start // no validation rules for PageSize @@ -61430,26 +37843,7 @@ func (m *GetTopologyHostIdsNodesData) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetTopologyHostIdsNodesDataValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetTopologyHostIdsNodesDataValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyHostIdsNodesDataValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -61461,30 +37855,9 @@ func (m *GetTopologyHostIdsNodesData) validate(all bool) error { } - if len(errors) > 0 { - return GetTopologyHostIdsNodesDataMultiError(errors) - } - return nil } -// GetTopologyHostIdsNodesDataMultiError is an error wrapping multiple -// validation errors returned by GetTopologyHostIdsNodesData.ValidateAll() if -// the designated constraints aren't met. -type GetTopologyHostIdsNodesDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetTopologyHostIdsNodesDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetTopologyHostIdsNodesDataMultiError) AllErrors() []error { return m } - // GetTopologyHostIdsNodesDataValidationError is the validation error returned // by GetTopologyHostIdsNodesData.Validate if the designated constraints // aren't met. @@ -61543,49 +37916,16 @@ var _ interface { } = GetTopologyHostIdsNodesDataValidationError{} // Validate checks the field values on HostIDsNodeData 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *HostIDsNodeData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on HostIDsNodeData 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 -// HostIDsNodeDataMultiError, or nil if none found. -func (m *HostIDsNodeData) ValidateAll() error { - return m.validate(true) -} - -func (m *HostIDsNodeData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for HostId - if all { - switch v := interface{}(m.GetMeta()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, HostIDsNodeDataValidationError{ - field: "Meta", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, HostIDsNodeDataValidationError{ - field: "Meta", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetMeta()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetMeta()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return HostIDsNodeDataValidationError{ field: "Meta", @@ -61595,30 +37935,9 @@ func (m *HostIDsNodeData) validate(all bool) error { } } - if len(errors) > 0 { - return HostIDsNodeDataMultiError(errors) - } - return nil } -// HostIDsNodeDataMultiError is an error wrapping multiple validation errors -// returned by HostIDsNodeData.ValidateAll() if the designated constraints -// aren't met. -type HostIDsNodeDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m HostIDsNodeDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m HostIDsNodeDataMultiError) AllErrors() []error { return m } - // HostIDsNodeDataValidationError is the validation error returned by // HostIDsNodeData.Validate if the designated constraints aren't met. type HostIDsNodeDataValidationError struct { @@ -61674,55 +37993,21 @@ var _ interface { } = HostIDsNodeDataValidationError{} // Validate checks the field values on Meta 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. +// definition for this message. If any rules are violated, an error is returned. func (m *Meta) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Meta 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 MetaMultiError, or nil if none found. -func (m *Meta) ValidateAll() error { - return m.validate(true) -} - -func (m *Meta) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ScopeType // no validation rules for ScopeId // no validation rules for BkBizId - if len(errors) > 0 { - return MetaMultiError(errors) - } - return nil } -// MetaMultiError is an error wrapping multiple validation errors returned by -// Meta.ValidateAll() if the designated constraints aren't met. -type MetaMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MetaMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MetaMultiError) AllErrors() []error { return m } - // MetaValidationError is the validation error returned by Meta.Validate if the // designated constraints aren't met. type MetaValidationError struct { @@ -61779,26 +38064,12 @@ var _ interface { // Validate checks the field values on GetHostsDetailsRequest 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. +// violated, an error is returned. func (m *GetHostsDetailsRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetHostsDetailsRequest 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 -// GetHostsDetailsRequestMultiError, or nil if none found. -func (m *GetHostsDetailsRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetHostsDetailsRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ScopeType // no validation rules for ScopeId @@ -61806,26 +38077,7 @@ func (m *GetHostsDetailsRequest) validate(all bool) error { for idx, item := range m.GetHostList() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetHostsDetailsRequestValidationError{ - field: fmt.Sprintf("HostList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetHostsDetailsRequestValidationError{ - field: fmt.Sprintf("HostList[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetHostsDetailsRequestValidationError{ field: fmt.Sprintf("HostList[%v]", idx), @@ -61837,30 +38089,9 @@ func (m *GetHostsDetailsRequest) validate(all bool) error { } - if len(errors) > 0 { - return GetHostsDetailsRequestMultiError(errors) - } - return nil } -// GetHostsDetailsRequestMultiError is an error wrapping multiple validation -// errors returned by GetHostsDetailsRequest.ValidateAll() if the designated -// constraints aren't met. -type GetHostsDetailsRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetHostsDetailsRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetHostsDetailsRequestMultiError) AllErrors() []error { return m } - // GetHostsDetailsRequestValidationError is the validation error returned by // GetHostsDetailsRequest.Validate if the designated constraints aren't met. type GetHostsDetailsRequestValidationError struct { @@ -61919,26 +38150,12 @@ var _ interface { // Validate checks the field values on GetHostsDetailsResponse 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. +// violated, an error is returned. func (m *GetHostsDetailsResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetHostsDetailsResponse 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 -// GetHostsDetailsResponseMultiError, or nil if none found. -func (m *GetHostsDetailsResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetHostsDetailsResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Success @@ -61950,26 +38167,7 @@ func (m *GetHostsDetailsResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetHostsDetailsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetHostsDetailsResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetHostsDetailsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -61981,30 +38179,9 @@ func (m *GetHostsDetailsResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetHostsDetailsResponseMultiError(errors) - } - return nil } -// GetHostsDetailsResponseMultiError is an error wrapping multiple validation -// errors returned by GetHostsDetailsResponse.ValidateAll() if the designated -// constraints aren't met. -type GetHostsDetailsResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetHostsDetailsResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetHostsDetailsResponseMultiError) AllErrors() []error { return m } - // GetHostsDetailsResponseValidationError is the validation error returned by // GetHostsDetailsResponse.Validate if the designated constraints aren't met. type GetHostsDetailsResponseValidationError struct { @@ -62062,27 +38239,13 @@ var _ interface { } = GetHostsDetailsResponseValidationError{} // Validate checks the field values on HostDataWithMeta 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. +// in the proto definition for this message. If any rules are violated, an +// error is returned. func (m *HostDataWithMeta) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on HostDataWithMeta 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 -// HostDataWithMetaMultiError, or nil if none found. -func (m *HostDataWithMeta) ValidateAll() error { - return m.validate(true) -} - -func (m *HostDataWithMeta) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for HostId // no validation rules for Ip @@ -62095,26 +38258,7 @@ func (m *HostDataWithMeta) validate(all bool) error { // no validation rules for OsName - if all { - switch v := interface{}(m.GetCloudArea()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, HostDataWithMetaValidationError{ - field: "CloudArea", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, HostDataWithMetaValidationError{ - field: "CloudArea", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return HostDataWithMetaValidationError{ field: "CloudArea", @@ -62124,26 +38268,7 @@ func (m *HostDataWithMeta) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetMeta()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, HostDataWithMetaValidationError{ - field: "Meta", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, HostDataWithMetaValidationError{ - field: "Meta", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetMeta()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetMeta()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return HostDataWithMetaValidationError{ field: "Meta", @@ -62153,30 +38278,9 @@ func (m *HostDataWithMeta) validate(all bool) error { } } - if len(errors) > 0 { - return HostDataWithMetaMultiError(errors) - } - return nil } -// HostDataWithMetaMultiError is an error wrapping multiple validation errors -// returned by HostDataWithMeta.ValidateAll() if the designated constraints -// aren't met. -type HostDataWithMetaMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m HostDataWithMetaMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m HostDataWithMetaMultiError) AllErrors() []error { return m } - // HostDataWithMetaValidationError is the validation error returned by // HostDataWithMeta.Validate if the designated constraints aren't met. type HostDataWithMetaValidationError struct { @@ -62233,54 +38337,19 @@ var _ interface { // Validate checks the field values on GetScopeHostCheckRequest 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. +// violated, an error is returned. func (m *GetScopeHostCheckRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetScopeHostCheckRequest 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 -// GetScopeHostCheckRequestMultiError, or nil if none found. -func (m *GetScopeHostCheckRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetScopeHostCheckRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ScopeType // no validation rules for ScopeId - if len(errors) > 0 { - return GetScopeHostCheckRequestMultiError(errors) - } - return nil } -// GetScopeHostCheckRequestMultiError is an error wrapping multiple validation -// errors returned by GetScopeHostCheckRequest.ValidateAll() if the designated -// constraints aren't met. -type GetScopeHostCheckRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetScopeHostCheckRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetScopeHostCheckRequestMultiError) AllErrors() []error { return m } - // GetScopeHostCheckRequestValidationError is the validation error returned by // GetScopeHostCheckRequest.Validate if the designated constraints aren't met. type GetScopeHostCheckRequestValidationError struct { @@ -62339,26 +38408,12 @@ var _ interface { // Validate checks the field values on GetScopeHostCheckResponse 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. +// violated, an error is returned. func (m *GetScopeHostCheckResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetScopeHostCheckResponse 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 -// GetScopeHostCheckResponseMultiError, or nil if none found. -func (m *GetScopeHostCheckResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetScopeHostCheckResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Success @@ -62370,26 +38425,7 @@ func (m *GetScopeHostCheckResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetScopeHostCheckResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetScopeHostCheckResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetScopeHostCheckResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -62401,30 +38437,9 @@ func (m *GetScopeHostCheckResponse) validate(all bool) error { } - if len(errors) > 0 { - return GetScopeHostCheckResponseMultiError(errors) - } - return nil } -// GetScopeHostCheckResponseMultiError is an error wrapping multiple validation -// errors returned by GetScopeHostCheckResponse.ValidateAll() if the -// designated constraints aren't met. -type GetScopeHostCheckResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetScopeHostCheckResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetScopeHostCheckResponseMultiError) AllErrors() []error { return m } - // GetScopeHostCheckResponseValidationError is the validation error returned by // GetScopeHostCheckResponse.Validate if the designated constraints aren't met. type GetScopeHostCheckResponseValidationError struct { @@ -62482,56 +38497,22 @@ var _ interface { } = GetScopeHostCheckResponseValidationError{} // Validate checks the field values on NotifyConfig 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NotifyConfig) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NotifyConfig 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 NotifyConfigMultiError, or -// nil if none found. -func (m *NotifyConfig) ValidateAll() error { - return m.validate(true) -} - -func (m *NotifyConfig) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Server // no validation rules for DataId // no validation rules for AccessToken - if len(errors) > 0 { - return NotifyConfigMultiError(errors) - } - return nil } -// NotifyConfigMultiError is an error wrapping multiple validation errors -// returned by NotifyConfig.ValidateAll() if the designated constraints aren't met. -type NotifyConfigMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NotifyConfigMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NotifyConfigMultiError) AllErrors() []error { return m } - // NotifyConfigValidationError is the validation error returned by // NotifyConfig.Validate if the designated constraints aren't met. type NotifyConfigValidationError struct { @@ -62587,56 +38568,21 @@ var _ interface { } = NotifyConfigValidationError{} // Validate checks the field values on NotifyData 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. +// proto definition for this message. If any rules are violated, an error is returned. func (m *NotifyData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NotifyData 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 NotifyDataMultiError, or -// nil if none found. -func (m *NotifyData) ValidateAll() error { - return m.validate(true) -} - -func (m *NotifyData) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Enable // no validation rules for Title // no validation rules for Content - if len(errors) > 0 { - return NotifyDataMultiError(errors) - } - return nil } -// NotifyDataMultiError is an error wrapping multiple validation errors -// returned by NotifyData.ValidateAll() if the designated constraints aren't met. -type NotifyDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NotifyDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NotifyDataMultiError) AllErrors() []error { return m } - // NotifyDataValidationError is the validation error returned by // NotifyData.Validate if the designated constraints aren't met. type NotifyDataValidationError struct { @@ -62692,27 +38638,13 @@ var _ interface { } = NotifyDataValidationError{} // Validate checks the field values on NotifyTemplate 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *NotifyTemplate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on NotifyTemplate 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 NotifyTemplateMultiError, -// or nil if none found. -func (m *NotifyTemplate) ValidateAll() error { - return m.validate(true) -} - -func (m *NotifyTemplate) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for NotifyTemplateID // no validation rules for Name @@ -62725,26 +38657,7 @@ func (m *NotifyTemplate) validate(all bool) error { // no validation rules for Enable - if all { - switch v := interface{}(m.GetConfig()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "Config", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "Config", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "Config", @@ -62754,26 +38667,7 @@ func (m *NotifyTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCreateCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "CreateCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "CreateCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "CreateCluster", @@ -62783,26 +38677,7 @@ func (m *NotifyTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetDeleteCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "DeleteCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "DeleteCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "DeleteCluster", @@ -62812,26 +38687,7 @@ func (m *NotifyTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCreateNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "CreateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "CreateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "CreateNodeGroup", @@ -62841,26 +38697,7 @@ func (m *NotifyTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetDeleteNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "DeleteNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "DeleteNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "DeleteNodeGroup", @@ -62870,26 +38707,7 @@ func (m *NotifyTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetUpdateNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "UpdateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "UpdateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUpdateNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetUpdateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "UpdateNodeGroup", @@ -62899,26 +38717,7 @@ func (m *NotifyTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetGroupScaleOutNode()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "GroupScaleOutNode", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "GroupScaleOutNode", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetGroupScaleOutNode()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetGroupScaleOutNode()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "GroupScaleOutNode", @@ -62928,26 +38727,7 @@ func (m *NotifyTemplate) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetGroupScaleInNode()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "GroupScaleInNode", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, NotifyTemplateValidationError{ - field: "GroupScaleInNode", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetGroupScaleInNode()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetGroupScaleInNode()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "GroupScaleInNode", @@ -62967,30 +38747,9 @@ func (m *NotifyTemplate) validate(all bool) error { // no validation rules for UpdateTime - if len(errors) > 0 { - return NotifyTemplateMultiError(errors) - } - return nil } -// NotifyTemplateMultiError is an error wrapping multiple validation errors -// returned by NotifyTemplate.ValidateAll() if the designated constraints -// aren't met. -type NotifyTemplateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m NotifyTemplateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m NotifyTemplateMultiError) AllErrors() []error { return m } - // NotifyTemplateValidationError is the validation error returned by // NotifyTemplate.Validate if the designated constraints aren't met. type NotifyTemplateValidationError struct { @@ -63047,92 +38806,43 @@ var _ interface { // Validate checks the field values on CreateNotifyTemplateRequest 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. +// violated, an error is returned. func (m *CreateNotifyTemplateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateNotifyTemplateRequest 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 -// CreateNotifyTemplateRequestMultiError, or nil if none found. -func (m *CreateNotifyTemplateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateNotifyTemplateRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - if l := utf8.RuneCountInString(m.GetProjectID()); l < 1 || l > 2048 { - err := CreateNotifyTemplateRequestValidationError{ + return CreateNotifyTemplateRequestValidationError{ field: "ProjectID", reason: "value length must be between 1 and 2048 runes, inclusive", } - if !all { - return err - } - errors = append(errors, err) } if !_CreateNotifyTemplateRequest_ProjectID_Pattern.MatchString(m.GetProjectID()) { - err := CreateNotifyTemplateRequestValidationError{ + return CreateNotifyTemplateRequestValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } - if !all { - return err - } - errors = append(errors, err) } if utf8.RuneCountInString(m.GetName()) < 1 { - err := CreateNotifyTemplateRequestValidationError{ + return CreateNotifyTemplateRequestValidationError{ field: "Name", reason: "value length must be at least 1 runes", } - if !all { - return err - } - errors = append(errors, err) } // no validation rules for Desc if _, ok := _CreateNotifyTemplateRequest_NotifyType_InLookup[m.GetNotifyType()]; !ok { - err := CreateNotifyTemplateRequestValidationError{ + return CreateNotifyTemplateRequestValidationError{ field: "NotifyType", reason: "value must be in list [bk_monitor_event bk_monitor_metrics]", } - if !all { - return err - } - errors = append(errors, err) } - if all { - switch v := interface{}(m.GetEnable()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "Enable", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "Enable", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "Enable", @@ -63142,26 +38852,7 @@ func (m *CreateNotifyTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCreateCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "CreateCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "CreateCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "CreateCluster", @@ -63171,26 +38862,7 @@ func (m *CreateNotifyTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetDeleteCluster()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "DeleteCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "DeleteCluster", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "DeleteCluster", @@ -63200,26 +38872,7 @@ func (m *CreateNotifyTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetCreateNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "CreateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "CreateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "CreateNodeGroup", @@ -63229,26 +38882,7 @@ func (m *CreateNotifyTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetDeleteNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "DeleteNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "DeleteNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "DeleteNodeGroup", @@ -63258,26 +38892,7 @@ func (m *CreateNotifyTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetUpdateNodeGroup()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "UpdateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "UpdateNodeGroup", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUpdateNodeGroup()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetUpdateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "UpdateNodeGroup", @@ -63287,26 +38902,7 @@ func (m *CreateNotifyTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetGroupScaleOutNode()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "GroupScaleOutNode", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "GroupScaleOutNode", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetGroupScaleOutNode()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetGroupScaleOutNode()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "GroupScaleOutNode", @@ -63316,26 +38912,7 @@ func (m *CreateNotifyTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetGroupScaleInNode()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "GroupScaleInNode", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "GroupScaleInNode", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetGroupScaleInNode()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetGroupScaleInNode()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "GroupScaleInNode", @@ -63345,26 +38922,7 @@ func (m *CreateNotifyTemplateRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetConfig()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "Config", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateRequestValidationError{ - field: "Config", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "Config", @@ -63378,30 +38936,9 @@ func (m *CreateNotifyTemplateRequest) validate(all bool) error { // no validation rules for Creator - if len(errors) > 0 { - return CreateNotifyTemplateRequestMultiError(errors) - } - return nil } -// CreateNotifyTemplateRequestMultiError is an error wrapping multiple -// validation errors returned by CreateNotifyTemplateRequest.ValidateAll() if -// the designated constraints aren't met. -type CreateNotifyTemplateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateNotifyTemplateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateNotifyTemplateRequestMultiError) AllErrors() []error { return m } - // CreateNotifyTemplateRequestValidationError is the validation error returned // by CreateNotifyTemplateRequest.Validate if the designated constraints // aren't met. @@ -63468,52 +39005,19 @@ var _CreateNotifyTemplateRequest_NotifyType_InLookup = map[string]struct{}{ // Validate checks the field values on CreateNotifyTemplateResponse 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. +// violated, an error is returned. func (m *CreateNotifyTemplateResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CreateNotifyTemplateResponse 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 -// CreateNotifyTemplateResponseMultiError, or nil if none found. -func (m *CreateNotifyTemplateResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *CreateNotifyTemplateResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, CreateNotifyTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, CreateNotifyTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateResponseValidationError{ field: "WebAnnotations", @@ -63523,30 +39027,9 @@ func (m *CreateNotifyTemplateResponse) validate(all bool) error { } } - if len(errors) > 0 { - return CreateNotifyTemplateResponseMultiError(errors) - } - return nil } -// CreateNotifyTemplateResponseMultiError is an error wrapping multiple -// validation errors returned by CreateNotifyTemplateResponse.ValidateAll() if -// the designated constraints aren't met. -type CreateNotifyTemplateResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CreateNotifyTemplateResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CreateNotifyTemplateResponseMultiError) AllErrors() []error { return m } - // CreateNotifyTemplateResponseValidationError is the validation error returned // by CreateNotifyTemplateResponse.Validate if the designated constraints // aren't met. @@ -63606,54 +39089,19 @@ var _ interface { // Validate checks the field values on DeleteNotifyTemplateRequest 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. +// violated, an error is returned. func (m *DeleteNotifyTemplateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteNotifyTemplateRequest 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 -// DeleteNotifyTemplateRequestMultiError, or nil if none found. -func (m *DeleteNotifyTemplateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteNotifyTemplateRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectID // no validation rules for NotifyTemplateID - if len(errors) > 0 { - return DeleteNotifyTemplateRequestMultiError(errors) - } - return nil } -// DeleteNotifyTemplateRequestMultiError is an error wrapping multiple -// validation errors returned by DeleteNotifyTemplateRequest.ValidateAll() if -// the designated constraints aren't met. -type DeleteNotifyTemplateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteNotifyTemplateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteNotifyTemplateRequestMultiError) AllErrors() []error { return m } - // DeleteNotifyTemplateRequestValidationError is the validation error returned // by DeleteNotifyTemplateRequest.Validate if the designated constraints // aren't met. @@ -63713,52 +39161,19 @@ var _ interface { // Validate checks the field values on DeleteNotifyTemplateResponse 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. +// violated, an error is returned. func (m *DeleteNotifyTemplateResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on DeleteNotifyTemplateResponse 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 -// DeleteNotifyTemplateResponseMultiError, or nil if none found. -func (m *DeleteNotifyTemplateResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *DeleteNotifyTemplateResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetWebAnnotations()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, DeleteNotifyTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, DeleteNotifyTemplateResponseValidationError{ - field: "WebAnnotations", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNotifyTemplateResponseValidationError{ field: "WebAnnotations", @@ -63768,30 +39183,9 @@ func (m *DeleteNotifyTemplateResponse) validate(all bool) error { } } - if len(errors) > 0 { - return DeleteNotifyTemplateResponseMultiError(errors) - } - return nil } -// DeleteNotifyTemplateResponseMultiError is an error wrapping multiple -// validation errors returned by DeleteNotifyTemplateResponse.ValidateAll() if -// the designated constraints aren't met. -type DeleteNotifyTemplateResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m DeleteNotifyTemplateResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m DeleteNotifyTemplateResponseMultiError) AllErrors() []error { return m } - // DeleteNotifyTemplateResponseValidationError is the validation error returned // by DeleteNotifyTemplateResponse.Validate if the designated constraints // aren't met. @@ -63851,54 +39245,19 @@ var _ interface { // Validate checks the field values on ListNotifyTemplateRequest 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. +// violated, an error is returned. func (m *ListNotifyTemplateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNotifyTemplateRequest 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 -// ListNotifyTemplateRequestMultiError, or nil if none found. -func (m *ListNotifyTemplateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNotifyTemplateRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectID // no validation rules for NotifyTemplateID - if len(errors) > 0 { - return ListNotifyTemplateRequestMultiError(errors) - } - return nil } -// ListNotifyTemplateRequestMultiError is an error wrapping multiple validation -// errors returned by ListNotifyTemplateRequest.ValidateAll() if the -// designated constraints aren't met. -type ListNotifyTemplateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNotifyTemplateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNotifyTemplateRequestMultiError) AllErrors() []error { return m } - // ListNotifyTemplateRequestValidationError is the validation error returned by // ListNotifyTemplateRequest.Validate if the designated constraints aren't met. type ListNotifyTemplateRequestValidationError struct { @@ -63957,26 +39316,12 @@ var _ interface { // Validate checks the field values on ListNotifyTemplateResponse 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. +// violated, an error is returned. func (m *ListNotifyTemplateResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ListNotifyTemplateResponse 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 -// ListNotifyTemplateResponseMultiError, or nil if none found. -func (m *ListNotifyTemplateResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *ListNotifyTemplateResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message @@ -63986,26 +39331,7 @@ func (m *ListNotifyTemplateResponse) validate(all bool) error { for idx, item := range m.GetData() { _, _ = idx, item - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ListNotifyTemplateResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ListNotifyTemplateResponseValidationError{ - field: fmt.Sprintf("Data[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNotifyTemplateResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -64017,30 +39343,9 @@ func (m *ListNotifyTemplateResponse) validate(all bool) error { } - if len(errors) > 0 { - return ListNotifyTemplateResponseMultiError(errors) - } - return nil } -// ListNotifyTemplateResponseMultiError is an error wrapping multiple -// validation errors returned by ListNotifyTemplateResponse.ValidateAll() if -// the designated constraints aren't met. -type ListNotifyTemplateResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ListNotifyTemplateResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ListNotifyTemplateResponseMultiError) AllErrors() []error { return m } - // ListNotifyTemplateResponseValidationError is the validation error returned // by ListNotifyTemplateResponse.Validate if the designated constraints aren't met. type ListNotifyTemplateResponseValidationError struct { @@ -64099,26 +39404,12 @@ var _ interface { // Validate checks the field values on GetProviderResourceUsageRequest 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. +// violated, an error is returned. func (m *GetProviderResourceUsageRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetProviderResourceUsageRequest 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 -// GetProviderResourceUsageRequestMultiError, or nil if none found. -func (m *GetProviderResourceUsageRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *GetProviderResourceUsageRequest) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProviderID // no validation rules for Region @@ -64128,38 +39419,15 @@ func (m *GetProviderResourceUsageRequest) validate(all bool) error { if wrapper := m.GetRatio(); wrapper != nil { if val := wrapper.GetValue(); val < 0 || val > 100 { - err := GetProviderResourceUsageRequestValidationError{ + return GetProviderResourceUsageRequestValidationError{ field: "Ratio", reason: "value must be inside range [0, 100]", } - if !all { - return err - } - errors = append(errors, err) } } - if all { - switch v := interface{}(m.GetAvailable()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetProviderResourceUsageRequestValidationError{ - field: "Available", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetProviderResourceUsageRequestValidationError{ - field: "Available", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAvailable()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetAvailable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetProviderResourceUsageRequestValidationError{ field: "Available", @@ -64169,30 +39437,9 @@ func (m *GetProviderResourceUsageRequest) validate(all bool) error { } } - if len(errors) > 0 { - return GetProviderResourceUsageRequestMultiError(errors) - } - return nil } -// GetProviderResourceUsageRequestMultiError is an error wrapping multiple -// validation errors returned by GetProviderResourceUsageRequest.ValidateAll() -// if the designated constraints aren't met. -type GetProviderResourceUsageRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetProviderResourceUsageRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetProviderResourceUsageRequestMultiError) AllErrors() []error { return m } - // GetProviderResourceUsageRequestValidationError is the validation error // returned by GetProviderResourceUsageRequest.Validate if the designated // constraints aren't met. @@ -64252,53 +39499,19 @@ var _ interface { // Validate checks the field values on GetProviderResourceUsageResponse 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. +// are violated, an error is returned. func (m *GetProviderResourceUsageResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetProviderResourceUsageResponse 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 -// GetProviderResourceUsageResponseMultiError, or nil if none found. -func (m *GetProviderResourceUsageResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetProviderResourceUsageResponse) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for Code // no validation rules for Message // no validation rules for Result - if all { - switch v := interface{}(m.GetData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, GetProviderResourceUsageResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, GetProviderResourceUsageResponseValidationError{ - field: "Data", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetProviderResourceUsageResponseValidationError{ field: "Data", @@ -64308,31 +39521,9 @@ func (m *GetProviderResourceUsageResponse) validate(all bool) error { } } - if len(errors) > 0 { - return GetProviderResourceUsageResponseMultiError(errors) - } - return nil } -// GetProviderResourceUsageResponseMultiError is an error wrapping multiple -// validation errors returned by -// GetProviderResourceUsageResponse.ValidateAll() if the designated -// constraints aren't met. -type GetProviderResourceUsageResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetProviderResourceUsageResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetProviderResourceUsageResponseMultiError) AllErrors() []error { return m } - // GetProviderResourceUsageResponseValidationError is the validation error // returned by GetProviderResourceUsageResponse.Validate if the designated // constraints aren't met. @@ -64391,27 +39582,13 @@ var _ interface { } = GetProviderResourceUsageResponseValidationError{} // Validate checks the field values on BusinessInfo 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. +// the proto definition for this message. If any rules are violated, an error +// is returned. func (m *BusinessInfo) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on BusinessInfo 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 BusinessInfoMultiError, or -// nil if none found. -func (m *BusinessInfo) ValidateAll() error { - return m.validate(true) -} - -func (m *BusinessInfo) validate(all bool) error { if m == nil { return nil } - var errors []error - // no validation rules for ProjectId // no validation rules for ProjectName @@ -64450,29 +39627,9 @@ func (m *BusinessInfo) validate(all bool) error { // no validation rules for Url - if len(errors) > 0 { - return BusinessInfoMultiError(errors) - } - return nil } -// BusinessInfoMultiError is an error wrapping multiple validation errors -// returned by BusinessInfo.ValidateAll() if the designated constraints aren't met. -type BusinessInfoMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m BusinessInfoMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m BusinessInfoMultiError) AllErrors() []error { return m } - // BusinessInfoValidationError is the validation error returned by // BusinessInfo.Validate if the designated constraints aren't met. type BusinessInfoValidationError struct { diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto index c8a858f37e..5ba945075f 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto @@ -1671,6 +1671,10 @@ message Cluster { title: "isMixed", description: "标记该集群是否是混部集群" }]; + string clusterIamRole = 43[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "clusterIamRole", + description: "aws的iam role, 用于创建eks集群" + }]; } message Node { @@ -3460,9 +3464,7 @@ message NodeGroup { string clusterID = 3[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title: "clusterID", description: "节点组所关联的集群,该ID为BCS集群ID" - }, - (validate.rules).string = {min_len : 2, max_len : 100, pattern : "^[0-9a-zA-Z-]+$", prefix: "BCS-"} - ]; + }]; string region = 4[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title: "region", description: "节点组所关联区域信息" @@ -5234,6 +5236,10 @@ message CreateClusterReq { title: "isMixed", description: "标记该集群是否是混部集群, 默认是false" }]; + string clusterIamRole = 43[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "clusterIamRole", + description: "aws的iam role, 用于创建eks集群" + }]; } message CreateClusterResp { @@ -5700,6 +5706,10 @@ message ImportCloudMode { title: "resourceGroup", description: "集群所在的资源组(azure云)" }]; + repeated string nodeIps = 5[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "nodeIps", + description: "集群Master或者节点IP列表, 需要提前纳管至蓝鲸平台。通过反向代理实现集群纳管" + }]; } message ImportClusterReq { @@ -7118,6 +7128,11 @@ message ListClusterReq { title : "clusterID", description : "集群ID" }]; + bool all = 21 [ + (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "all", + description : "true时获取所有的集群信息,包括被软删除的集群; false时获取非DELETED状态的集群信息" + }]; } message ListClusterResp { diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json index a172702b28..4de8eafb24 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json @@ -28,7 +28,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -79,7 +79,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -113,7 +113,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -165,7 +165,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -199,7 +199,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -237,7 +237,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -256,7 +256,8 @@ "description": "isForce. 强制删除AutoScalingOption信息,即使未正常执行完成,也会进入终止。对于自定义cluster-autoscaler安装的场景下,是需要清理已部署的CA模块。", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -275,7 +276,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -316,7 +317,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -364,7 +365,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -405,7 +406,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -446,7 +447,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -500,7 +501,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -561,7 +562,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -595,7 +596,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -635,7 +636,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -661,7 +662,8 @@ "description": "editable. 对于SaaS层面该信息是否可编辑,BCS默认提供的预定义信息不可编译", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "creator", @@ -701,7 +703,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -735,7 +737,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -769,7 +771,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -800,7 +802,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -818,7 +820,8 @@ "name": "isForce", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -837,7 +840,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -878,7 +881,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -911,7 +914,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -963,7 +966,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1002,7 +1005,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1043,7 +1046,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1084,7 +1087,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1122,7 +1125,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1170,7 +1173,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1217,7 +1220,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1264,7 +1267,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1318,7 +1321,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1344,7 +1347,8 @@ "description": "isExtranet. 默认false 获取内网,是否获取外网访问的kubeconfig", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "accountID", @@ -1386,7 +1390,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1440,7 +1444,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1538,7 +1542,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1592,7 +1596,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1653,7 +1657,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1700,7 +1704,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1740,7 +1744,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1824,7 +1828,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1864,7 +1868,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1904,7 +1908,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1958,7 +1962,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2005,7 +2009,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2059,7 +2063,8 @@ "description": "injectCluster. 是否注入子网所属集群信息", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "resourceGroupName", @@ -2094,7 +2099,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2142,7 +2147,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2205,7 +2210,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2268,7 +2273,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2323,7 +2328,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2384,7 +2389,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2445,7 +2450,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2506,7 +2511,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2565,7 +2570,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2599,7 +2604,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2637,7 +2642,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2685,7 +2690,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2753,7 +2758,8 @@ "description": "isExclusive. 是否为业务独占集群", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "clusterType", @@ -2818,7 +2824,8 @@ "description": "isCommonCluster. 是否为公共集群,默认false", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "clusterID", @@ -2826,6 +2833,14 @@ "in": "query", "required": false, "type": "string" + }, + { + "name": "all", + "description": "all. true时获取所有的集群信息,包括被软删除的集群; false时获取非DELETED状态的集群信息", + "in": "query", + "required": false, + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -2844,7 +2859,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2878,7 +2893,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2912,7 +2927,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2931,7 +2946,8 @@ "description": "cloudInfo. 集群关联的云集群信息, 默认从数据库获取数据", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -2950,7 +2966,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2969,7 +2985,8 @@ "description": "isForced. 是否强制删除,默认false。强制删除会一并删除clustermanager管理的资源,例如节点,节点池等。强制删除周期较长,清理工作会进入长后台任务运行,集群信息不会立刻被清空,而是处于删除状态。", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "instanceDeleteMode", @@ -2983,7 +3000,8 @@ "description": "onlyDeleteInfo. 默认为false。设置为true时,仅删除cluster-manager所记录的信息,不会触发任何自动化流程。该参数可以与isForced同时协同工作。", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "operator", @@ -2997,7 +3015,8 @@ "description": "deleteClusterRecord. 管理员操作, 设置true时仅删除集群数据库记录", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -3016,7 +3035,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3057,7 +3076,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3083,7 +3102,8 @@ "description": "filterInter. 是否屏蔽空闲机池", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -3104,7 +3124,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3137,7 +3157,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3207,7 +3227,8 @@ "description": "showPwd. 节点密码是否展示(默认不展示)", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -3226,7 +3247,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3259,7 +3280,8 @@ "description": "isForce. 不管节点处于任何状态都强制删除,例如可能刚初始化,NotReady等", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "operator", @@ -3273,7 +3295,8 @@ "description": "onlyDeleteInfo. 默认为false。设置为true时,仅删除cluster-manager所记录的信息,不会触发任何自动化流程.", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "nodeTemplateID", @@ -3294,7 +3317,8 @@ "description": "是否是第三方节点(IDC节点). 下架第三方节点需置为true, 且必须关联nodeGroupID", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -3313,7 +3337,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3354,7 +3378,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3395,7 +3419,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3465,7 +3489,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3496,7 +3520,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3527,7 +3551,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3568,7 +3592,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3602,7 +3626,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3643,7 +3667,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3684,7 +3708,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3703,7 +3727,8 @@ "description": "enableFilter. enableFilter为true时, 输出结果按照是否开启弹性伸缩排序(开启的排序在后面)", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -3724,7 +3749,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3785,7 +3810,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3826,7 +3851,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3875,7 +3900,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3899,7 +3924,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3933,7 +3958,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3965,7 +3990,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3999,7 +4024,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4033,7 +4058,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4067,7 +4092,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4101,7 +4126,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4135,7 +4160,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4169,7 +4194,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4203,7 +4228,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4237,7 +4262,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4256,7 +4281,8 @@ "description": "showPwd. 节点密码是否展示(默认不展示)", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -4277,7 +4303,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4310,7 +4336,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4362,7 +4388,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4396,7 +4422,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4427,7 +4453,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4446,21 +4472,24 @@ "description": "isForce. 强制删除,包括清理节点池管理的机器。外部资源删除转入后台删除长任务对列,默认会返回Task信息方便确认进度。", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "reserveNodesInCluster", "description": "reserveNodesInCluster. 保留节点在集群中,仅删除节点池,解除节点与节点池关联。当且仅当强制删除时生效。", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "keepNodesInstance", "description": "keepNodesInstance. 节点从集群移除,清理资源,但不销毁机器,保留机器运行。当且仅当强制删除时生效。", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "operator", @@ -4474,7 +4503,8 @@ "description": "onlyDeleteInfo. onlyDeleteInfo仅删除数据,不执行流程", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -4493,7 +4523,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4534,7 +4564,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4575,7 +4605,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4616,7 +4646,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4657,7 +4687,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4698,7 +4728,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4739,7 +4769,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4780,7 +4810,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4811,7 +4841,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4850,7 +4880,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4891,7 +4921,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4924,7 +4954,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4965,7 +4995,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4991,7 +5021,8 @@ "description": "internal. 获取内网或外网脚本, 默认外网脚本", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -5012,7 +5043,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5036,7 +5067,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5094,14 +5125,16 @@ "description": "simple. 只展示 operationLogs 信息", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "taskIDNull", "description": "taskIDNull. 默认false,过滤taskID为空的场景; 当为true时,不过滤taskID为空的", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "clusterID", @@ -5136,7 +5169,8 @@ "description": "v2. 是否使用v2的查询版本", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "ipList", @@ -5185,7 +5219,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5226,7 +5260,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5280,7 +5314,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5318,7 +5352,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5359,7 +5393,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5397,7 +5431,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5435,7 +5469,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5483,7 +5517,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5521,7 +5555,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5562,7 +5596,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5602,7 +5636,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5665,7 +5699,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5698,7 +5732,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5738,7 +5772,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5750,7 +5784,8 @@ "description": "showVCluster. 展示vcluster集群的host共享集群(默认全部展示)", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -5771,7 +5806,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5851,7 +5886,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5885,7 +5920,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5916,7 +5951,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5935,7 +5970,8 @@ "description": "isForce. 强制删除Task信息,即使未正常执行完成,也会进入终止。", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -5954,7 +5990,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5995,7 +6031,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6036,7 +6072,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6077,7 +6113,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6110,7 +6146,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6166,7 +6202,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6200,7 +6236,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6219,7 +6255,8 @@ "description": "onlyDeleteInfo. 默认为false。设置为true时,仅删除cluster-manager所记录的信息,不会触发任何自动化流程。该参数可以与isForced同时协同工作。", "in": "query", "required": false, - "type": "boolean" + "type": "boolean", + "format": "boolean" }, { "name": "operator", @@ -6247,7 +6284,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6288,7 +6325,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6321,7 +6358,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6369,7 +6406,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6417,7 +6454,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6465,7 +6502,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6513,7 +6550,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6561,7 +6598,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6609,7 +6646,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6663,7 +6700,7 @@ } }, "default": { - "description": "An unexpected error response.", + "description": "An unexpected error response", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6767,9 +6804,7 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "具体行为流程动作定义", - "title": "plugins" + } } }, "description": "记录各模块功能自动化行为模板, 对接job系统, 完成自定义操作; 针对不同云的不同操作模版参数需自定义针对大部分操作,仅需要前置动作或后置动作即可. 可自由扩展", @@ -6812,6 +6847,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -6852,6 +6888,7 @@ }, "onlyCreateInfo": { "type": "boolean", + "format": "boolean", "description": "仅写入节点信息,默认是false。仅写入节点信息时,会通过cluster所属cloudprovider查询节点信息,并设置为RUNNING。", "title": "onlyCreateInfo" }, @@ -6867,6 +6904,7 @@ }, "isExternalNode": { "type": "boolean", + "format": "boolean", "description": "上架第三方节点需置为true, 且必须关联nodeGroupID", "title": "是否是第三方节点(IDC节点)" }, @@ -6899,6 +6937,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -6962,6 +7001,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7061,6 +7101,7 @@ }, "replaceUnhealthy": { "type": "boolean", + "format": "boolean", "description": "开启监控不健康节点替换服务,默认false。连续1分钟ping不通则视为不健康!", "title": "replaceUnhealthy" }, @@ -7079,6 +7120,7 @@ }, "autoUpgrade": { "type": "boolean", + "format": "boolean", "description": "开启自动升级GKE版本功能,如果集群为发布版本,则强制开启", "title": "autoUpgrade" }, @@ -7107,12 +7149,11 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "bksops模板默认通用参数,实际调用时根据实际行为可覆盖或定制化", - "title": "params" + } }, "allowSkipWhenFailed": { "type": "boolean", + "format": "boolean", "description": "allowSkipWhenFailed插件执行失败时是否允许跳过, 默认不允许跳过", "title": "allowSkipWhenFailed" } @@ -7157,6 +7198,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7191,7 +7233,8 @@ } }, "success": { - "type": "boolean" + "type": "boolean", + "format": "boolean" }, "message": { "type": "string" @@ -7223,6 +7266,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7273,6 +7317,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7280,9 +7325,7 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerNodeResult" - }, - "description": "返回node检查结果,key是IP", - "title": "data" + } } }, "description": "返回节点状态", @@ -7339,7 +7382,8 @@ "type": "string" }, "block": { - "type": "boolean" + "type": "boolean", + "format": "boolean" } } }, @@ -7359,6 +7403,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -7416,6 +7461,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7449,6 +7495,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7481,6 +7528,7 @@ }, "editable": { "type": "boolean", + "format": "boolean", "description": "对于SaaS层面该信息是否可编辑,BCS默认提供的预定义信息不可编译", "title": "editable" }, @@ -7488,17 +7536,13 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "通过标准运维实现的扩展流程或者插件", - "title": "opsPlugins" + } }, "extraPlugins": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "额外扩展流程,用于自定义扩展,该部分允许用户编辑", - "title": "extraPlugins" + } }, "cloudCredential": { "$ref": "#/definitions/clustermanagerCredential", @@ -7579,9 +7623,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "平台不同云的配置信息", - "title": "platformInfo" + } } }, "description": "云信息,多云管理下用于定义共享信息,BCS默认地提供蓝鲸云预定义,腾讯云预定义信息", @@ -7622,6 +7664,7 @@ }, "enable": { "type": "boolean", + "format": "boolean", "description": "cloud账号是否启用,默认是启用的", "title": "enable" }, @@ -7747,6 +7790,7 @@ "properties": { "cloudInternalEnable": { "type": "boolean", + "format": "boolean", "description": "cloud是否开启内部配置", "title": "cloudInternalEnable" }, @@ -7762,16 +7806,19 @@ }, "disableCreateCluster": { "type": "boolean", + "format": "boolean", "description": "cloud是否关闭创建集群特性", "title": "disableCreateCluster" }, "disableImportCluster": { "type": "boolean", + "format": "boolean", "description": "cloud是否关闭导入集群特性", "title": "disableImportCluster" }, "disableNodeGroup": { "type": "boolean", + "format": "boolean", "description": "cloud是否关闭节点池特性", "title": "disableNodeGroup" }, @@ -7782,6 +7829,7 @@ }, "disableCheckGroupResource": { "type": "boolean", + "format": "boolean", "description": "cloud是否关闭节点池资源quota校验开关", "title": "disableCheckGroupResource" } @@ -7809,6 +7857,7 @@ }, "autoFormatAndMount": { "type": "boolean", + "format": "boolean", "description": "是否自动化格式盘并挂载", "title": "autoFormatAndMount" }, @@ -7860,6 +7909,7 @@ }, "enable": { "type": "boolean", + "format": "boolean", "description": "是否启用该参数", "title": "enable" }, @@ -8057,6 +8107,7 @@ }, "cloudRegionNode": { "type": "boolean", + "format": "boolean", "description": "是否是该云的某个地域节点", "title": "cloudRegionNode" } @@ -8333,6 +8384,7 @@ }, "isExclusive": { "type": "boolean", + "format": "boolean", "description": "是否业务独占集群,默认为false", "title": "isExclusive" }, @@ -8345,9 +8397,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "集群标签", - "title": "labels" + } }, "creator": { "type": "string", @@ -8364,17 +8414,13 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "创建集群时进行BCS内置插件安装,该信息会索引云上默认配置信息进行对比与补充,Addons默认在集群正常初始化之后进行调用。", - "title": "bcsAddons" + } }, "extraAddons": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "创建集群时额外扩展传递的信息,该部分为预留二方/三方/服务商扩展使用,Addons默认在集群状态正常之后进行调用与安装。", - "title": "extraAddons" + } }, "systemID": { "type": "string", @@ -8390,9 +8436,7 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerNode" - }, - "description": "集群master IP列表", - "title": "master" + } }, "networkSettings": { "$ref": "#/definitions/clustermanagerNetworkSetting", @@ -8431,6 +8475,7 @@ }, "autoGenerateMasterNodes": { "type": "boolean", + "format": "boolean", "description": "创建集群是否使用已存在节点, 默认false, 即使用已经存在的节点, 从创建集群参数中获取", "title": "autoGenerateMasterNodes" }, @@ -8446,9 +8491,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息或者是针对不同云特性开关", - "title": "extraInfo" + } }, "moduleID": { "type": "string", @@ -8462,6 +8505,7 @@ }, "isCommonCluster": { "type": "boolean", + "format": "boolean", "description": "是否为公共集群,默认false(废弃)", "title": "isCommonCluster" }, @@ -8477,6 +8521,7 @@ }, "is_shared": { "type": "boolean", + "format": "boolean", "description": "是否为共享集群,默认false", "title": "is_shared" }, @@ -8502,8 +8547,14 @@ }, "isMixed": { "type": "boolean", + "format": "boolean", "description": "标记该集群是否是混部集群", "title": "isMixed" + }, + "clusterIamRole": { + "type": "string", + "description": "aws的iam role, 用于创建eks集群", + "title": "clusterIamRole" } }, "description": "记录集群信息,用于维护集群状态", @@ -8514,6 +8565,7 @@ "properties": { "IPVS": { "type": "boolean", + "format": "boolean", "description": "Kubernetes集群IPVS特性,默认为false", "title": "IPVS" }, @@ -8531,9 +8583,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "配置各模块自定义参数,预定义的key为KubeAPIServer,KubeController,Etcd,KubeScheduler。value为各模块进程启动参数,多个参数之间使用;间隔,例如Etcd: node-data-dir=/data/bcs/lib/etcd;", - "title": "extraArgs" + } }, "networkType": { "type": "string", @@ -8542,16 +8592,19 @@ }, "deletionProtection": { "type": "boolean", + "format": "boolean", "description": "是否启用集群删除保护", "title": "deletionProtection" }, "auditEnabled": { "type": "boolean", + "format": "boolean", "description": "是否开启审计开关", "title": "auditEnabled" }, "enableHa": { "type": "boolean", + "format": "boolean", "description": "自建集群是否开启高可用", "title": "enableHa" }, @@ -8567,6 +8620,7 @@ "properties": { "isScaleDownEnable": { "type": "boolean", + "format": "boolean", "description": "scale-down-enabled,是否允许缩容节点", "title": "isScaleDownEnable" }, @@ -8601,16 +8655,19 @@ }, "skipNodesWithLocalStorage": { "type": "boolean", + "format": "boolean", "description": "忽略有本地存储的节点,默认为false", "title": "skipNodesWithLocalStorage" }, "skipNodesWithSystemPods": { "type": "boolean", + "format": "boolean", "description": "忽略kube-system NS下非DaemonSet管理的Pod的节点,默认false", "title": "skipNodesWithSystemPods" }, "ignoreDaemonSetsUtilization": { "type": "boolean", + "format": "boolean", "description": "忽略DaemonSet的资源计算", "title": "ignoreDaemonSetsUtilization" }, @@ -8675,6 +8732,7 @@ }, "enableAutoscale": { "type": "boolean", + "format": "boolean", "description": "是否开启自动扩缩容,开启后会在该集群部署 ClusterAutoScaling 组件,默认为 false", "title": "enableAutoscale" }, @@ -8704,6 +8762,7 @@ }, "scaleUpFromZero": { "type": "boolean", + "format": "boolean", "description": "scale-up-from-zero,允许自动扩容(没有 ready 节点时)", "title": "scaleUpFromZero" }, @@ -8800,9 +8859,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "集群相关tag信息,用于集群管理标签信息注入. 可自定义设置, 可根据不同云实现业务定制tags(例如:可根据businessID绑定业务信息)", - "title": "clusterTags" + } }, "versionName": { "type": "string", @@ -8821,6 +8878,7 @@ }, "isAutoUpgradeClusterLevel": { "type": "boolean", + "format": "boolean", "description": "是否开启自动变配集群等级,针对托管集群生效", "title": "isAutoUpgradeClusterLevel" }, @@ -8841,6 +8899,7 @@ "properties": { "isExtranet": { "type": "boolean", + "format": "boolean", "description": "isExtranet集群内外网访问(true外网访问 false内网访问, 默认false)", "title": "isExtranet" }, @@ -9108,9 +9167,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "节点标签信息", - "title": "labels" + } }, "taints": { "type": "array", @@ -9172,9 +9229,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "节点注解信息", - "title": "annotations" + } }, "zoneName": { "type": "string", @@ -9211,6 +9266,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9242,6 +9298,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9327,6 +9384,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9348,6 +9406,7 @@ "properties": { "isScaleDownEnable": { "type": "boolean", + "format": "boolean", "description": "scale-down-enabled,是否允许缩容节点", "title": "isScaleDownEnable" }, @@ -9382,16 +9441,19 @@ }, "skipNodesWithLocalStorage": { "type": "boolean", + "format": "boolean", "description": "忽略有本地存储的节点,默认为false", "title": "skipNodesWithLocalStorage" }, "skipNodesWithSystemPods": { "type": "boolean", + "format": "boolean", "description": "忽略kube-system NS下非DaemonSet管理的Pod的节点,默认false", "title": "skipNodesWithSystemPods" }, "ignoreDaemonSetsUtilization": { "type": "boolean", + "format": "boolean", "description": "忽略DaemonSet的资源计算,默认false", "title": "ignoreDaemonSetsUtilization" }, @@ -9436,6 +9498,7 @@ }, "enableAutoscale": { "type": "boolean", + "format": "boolean", "description": "是否开启自动扩缩容,开启后会在该集群部署 ClusterAutoScaling 组件,默认为 false", "title": "enableAutoscale" }, @@ -9465,6 +9528,7 @@ }, "scaleUpFromZero": { "type": "boolean", + "format": "boolean", "description": "scale-up-from-zero,允许自动扩容(没有 ready 节点时)", "title": "scaleUpFromZero" }, @@ -9529,6 +9593,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9562,6 +9627,7 @@ }, "enable": { "type": "boolean", + "format": "boolean", "description": "cloud云账号是否开启,默认开启", "title": "enable" }, @@ -9601,6 +9667,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9689,6 +9756,7 @@ }, "editable": { "type": "boolean", + "format": "boolean", "description": "对于SaaS层面该信息是否可编辑,BCS默认提供的预定义信息不可编译", "title": "editable" }, @@ -9696,17 +9764,13 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "通过标准运维实现的扩展流程或者插件", - "title": "opsPlugins" + } }, "extraPlugins": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "额外扩展流程,用于自定义扩展,该部分允许用户编辑", - "title": "extraPlugins" + } }, "cloudCredential": { "$ref": "#/definitions/clustermanagerCredential", @@ -9772,9 +9836,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "平台不同云的配置信息", - "title": "platformInfo" + } } }, "description": "创建cloud请求", @@ -9802,6 +9864,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -9903,6 +9966,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -9958,6 +10022,7 @@ }, "isExclusive": { "type": "boolean", + "format": "boolean", "description": "是否为业务独占集群", "title": "isExclusive" }, @@ -9975,9 +10040,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "集群的labels,用于携带额外的信息,最大不得超过20个", - "title": "labels" + } }, "creator": { "type": "string", @@ -9986,6 +10049,7 @@ }, "onlyCreateInfo": { "type": "boolean", + "format": "boolean", "description": "仅创建集群信息,不进行真实集群创建,默认为false", "title": "onlyCreateInfo" }, @@ -9993,17 +10057,13 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "创建集群时进行BCS内置插件安装,该信息会索引云上默认配置信息进行对比与补充,如果填写错误直接报错", - "title": "bcsAddons" + } }, "extraAddons": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "创建集群时额外扩展传递的信息,该部分为预留二方/三方/服务商扩展使用,如果填错直接报错", - "title": "extraAddons" + } }, "cloudID": { "type": "string", @@ -10053,6 +10113,7 @@ }, "systemReinstall": { "type": "boolean", + "format": "boolean", "description": "是否重装master节点的系统,机器被托管情况下有效", "title": "systemReinstall" }, @@ -10068,6 +10129,7 @@ }, "autoGenerateMasterNodes": { "type": "boolean", + "format": "boolean", "description": "创建集群Master节点来源, 默认false表示使用已有节点; 为true时, 需要生成master instance", "title": "autoGenerateMasterNodes" }, @@ -10083,9 +10145,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息", - "title": "extraInfo" + } }, "moduleID": { "type": "string", @@ -10099,6 +10159,7 @@ }, "isCommonCluster": { "type": "boolean", + "format": "boolean", "description": "是否为公共集群,默认false(废弃)", "title": "isCommonCluster" }, @@ -10114,6 +10175,7 @@ }, "is_shared": { "type": "boolean", + "format": "boolean", "description": "是否为共享集群,默认false", "title": "is_shared" }, @@ -10137,8 +10199,14 @@ }, "isMixed": { "type": "boolean", + "format": "boolean", "description": "标记该集群是否是混部集群, 默认是false", "title": "isMixed" + }, + "clusterIamRole": { + "type": "string", + "description": "aws的iam role, 用于创建eks集群", + "title": "clusterIamRole" } }, "description": "创建集群请求,如果集群已经存在,直接报错。更新集群信息请使用Update接口", @@ -10173,6 +10241,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10220,6 +10289,7 @@ }, "enableAutoscale": { "type": "boolean", + "format": "boolean", "description": "是否开启弹性伸缩,默认false", "title": "enableAutoscale" }, @@ -10237,17 +10307,13 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化label信息", - "title": "labels" + } }, "taints": { "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化的污点信息(废弃)", - "title": "taints" + } }, "nodeOS": { "type": "string", @@ -10278,9 +10344,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化的资源标签信息", - "title": "tags" + } }, "nodeGroupType": { "type": "string", @@ -10305,6 +10369,7 @@ }, "onlyCreateInfo": { "type": "boolean", + "format": "boolean", "description": "onlyCreateInfo仅录入数据,不执行流程", "title": "onlyCreateInfo" } @@ -10337,6 +10402,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10389,9 +10455,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化label信息", - "title": "labels" + } }, "taints": { "type": "array", @@ -10434,9 +10498,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "配置各模块自定义参数,预定义的key为kubeletvalue为各模块进程启动参数,多个参数之间使用;间隔,例如Kubelet: root-dir=/var/lib/kubelet;", - "title": "extraArgs" + } }, "preStartUserScript": { "type": "string", @@ -10513,6 +10575,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10548,6 +10611,7 @@ }, "enable": { "type": "boolean", + "format": "boolean", "description": "是否开启通知", "title": "enable" }, @@ -10625,6 +10689,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10686,9 +10751,7 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerStep" - }, - "description": "任务详细步骤信息,主要用于信息确认,异常时", - "title": "steps" + } }, "clusterID": { "type": "string", @@ -10738,6 +10801,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10796,6 +10860,7 @@ }, "isExclusive": { "type": "boolean", + "format": "boolean", "description": "是否为业务独占集群", "title": "isExclusive" }, @@ -10818,9 +10883,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "集群的labels,用于携带额外的信息,最大不得超过20个", - "title": "labels" + } }, "creator": { "type": "string", @@ -10829,6 +10892,7 @@ }, "onlyCreateInfo": { "type": "boolean", + "format": "boolean", "description": "仅创建集群信息,不进行真实集群创建,默认为false", "title": "onlyCreateInfo" }, @@ -10864,9 +10928,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息", - "title": "extraInfo" + } }, "description": { "type": "string", @@ -10916,6 +10978,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11028,9 +11091,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "标准运维任务的全局变量参数", - "title": "constant" + } } }, "description": "调试标准运维任务请求参数", @@ -11085,6 +11146,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11116,6 +11178,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -11159,6 +11222,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11185,6 +11249,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11211,6 +11276,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -11239,6 +11305,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11281,6 +11348,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11327,6 +11395,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11353,6 +11422,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11390,6 +11460,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11416,6 +11487,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11442,6 +11514,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11499,6 +11572,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11536,21 +11610,24 @@ "title": "nodes" }, "force": { - "type": "boolean" + "type": "boolean", + "format": "boolean" }, "gracePeriodSeconds": { "type": "integer", "format": "int32" }, "ignoreAllDaemonSets": { - "type": "boolean" + "type": "boolean", + "format": "boolean" }, "timeout": { "type": "integer", "format": "int64" }, "deleteLocalData": { - "type": "boolean" + "type": "boolean", + "format": "boolean" }, "selector": { "type": "string" @@ -11559,14 +11636,16 @@ "type": "string" }, "disableEviction": { - "type": "boolean" + "type": "boolean", + "format": "boolean" }, "skipWaitForDeleteTimeoutSeconds": { "type": "integer", "format": "int64" }, "dryRun": { - "type": "boolean" + "type": "boolean", + "format": "boolean" } } }, @@ -11586,6 +11665,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11627,6 +11707,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11679,6 +11760,7 @@ "properties": { "canDeleted": { "type": "boolean", + "format": "boolean", "description": "集群列表的集群是否能够删除(集群无所属node节点时才允许删除)", "title": "canDeleted" }, @@ -11689,6 +11771,7 @@ }, "autoScale": { "type": "boolean", + "format": "boolean", "description": "集群是否支持弹性伸缩, 在云支持弹性伸缩的前提下, 某些类型集群支持弹性伸缩", "title": "autoScale" } @@ -11710,6 +11793,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11767,6 +11851,7 @@ }, "success": { "type": "boolean", + "format": "boolean", "description": "是否成功", "title": "success" }, @@ -11802,6 +11887,7 @@ }, "allScope": { "type": "boolean", + "format": "boolean", "description": "是否获取所有资源范围的拓扑结构,默认为false", "title": "allScope" }, @@ -11828,6 +11914,7 @@ }, "success": { "type": "boolean", + "format": "boolean", "description": "是否成功", "title": "success" }, @@ -11924,6 +12011,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11956,6 +12044,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11991,6 +12080,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12022,6 +12112,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12053,6 +12144,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12086,6 +12178,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12119,6 +12212,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12177,6 +12271,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12218,6 +12313,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12275,6 +12371,7 @@ }, "success": { "type": "boolean", + "format": "boolean", "description": "是否成功", "title": "success" }, @@ -12344,6 +12441,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12379,6 +12477,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12417,6 +12516,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12450,6 +12550,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12486,6 +12587,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12523,6 +12625,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12555,6 +12658,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12622,6 +12726,7 @@ }, "success": { "type": "boolean", + "format": "boolean", "description": "是否成功", "title": "success" }, @@ -12661,6 +12766,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12692,6 +12798,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12791,6 +12898,7 @@ }, "success": { "type": "boolean", + "format": "boolean", "description": "是否成功", "title": "success" }, @@ -12893,6 +13001,7 @@ }, "success": { "type": "boolean", + "format": "boolean", "description": "是否成功", "title": "success" }, @@ -12929,6 +13038,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -13108,6 +13218,7 @@ }, "inter": { "type": "boolean", + "format": "boolean", "description": "默认外网方式导入, 为true时候以内网方式导入. 该字段仅对云导入生效", "title": "inter" }, @@ -13115,6 +13226,14 @@ "type": "string", "description": "集群所在的资源组(azure云)", "title": "resourceGroup" + }, + "nodeIps": { + "type": "array", + "items": { + "type": "string" + }, + "description": "集群Master或者节点IP列表, 需要提前纳管至蓝鲸平台。通过反向代理实现集群纳管", + "title": "nodeIps" } }, "description": "云provider导入集群模式", @@ -13170,6 +13289,7 @@ }, "isExclusive": { "type": "boolean", + "format": "boolean", "description": "是否为业务独占集群,默认为true", "title": "isExclusive" }, @@ -13182,9 +13302,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "集群的labels,用于携带额外的信息,最大不得超过20个", - "title": "labels" + } }, "creator": { "type": "string", @@ -13210,9 +13328,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息", - "title": "extraInfo" + } }, "extraClusterID": { "type": "string", @@ -13226,6 +13342,7 @@ }, "is_shared": { "type": "boolean", + "format": "boolean", "description": "是否为共享集群,默认false", "title": "is_shared" }, @@ -13275,6 +13392,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -13404,11 +13522,13 @@ }, "isSecurityService": { "type": "boolean", + "format": "boolean", "description": "新实例启动时的是否开启云安全, 选填 qcloud默认开启", "title": "isSecurityService" }, "isMonitorService": { "type": "boolean", + "format": "boolean", "description": "新实例启动时的是否开启云监控, 选填 默认开启", "title": "isMonitorService" }, @@ -13550,6 +13670,7 @@ }, "publicIPAssigned": { "type": "boolean", + "format": "boolean", "description": "是否分配公网IP。默认为false。", "title": "publicIPAssigned" }, @@ -13619,6 +13740,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -13662,6 +13784,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -13758,11 +13881,13 @@ }, "isSecurityService": { "type": "boolean", + "format": "boolean", "description": "新实例启动时的是否开启云安全, 选填 yunti默认关闭", "title": "isSecurityService" }, "isMonitorService": { "type": "boolean", + "format": "boolean", "description": "新实例启动时的是否开启云监控, 选填 默认开启", "title": "isMonitorService" }, @@ -13780,9 +13905,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "节点通过selector的匹配策略,目前仅用作第三方节点匹配", - "title": "selector" + } }, "keyPair": { "$ref": "#/definitions/clustermanagerKeyInfo", @@ -13813,6 +13936,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -13848,6 +13972,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -13883,6 +14008,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -13923,6 +14049,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -13958,6 +14085,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14023,6 +14151,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14058,6 +14187,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14093,6 +14223,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14124,6 +14255,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14159,6 +14291,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14194,6 +14327,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14201,9 +14335,7 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerRunTimeVersion" - }, - "description": "获取到的信息", - "title": "data" + } } }, "description": "查询运行时信息列表返回", @@ -14229,6 +14361,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14264,6 +14397,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14299,6 +14433,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14334,6 +14469,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14369,6 +14505,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14405,6 +14542,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14445,6 +14583,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14460,9 +14599,7 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerExtraInfo" - }, - "description": "集群其他标识信息,cluster结构之外的数据获取", - "title": "clusterExtraInfo" + } }, "web_annotations": { "$ref": "#/definitions/clustermanagerWebAnnotations", @@ -14494,6 +14631,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14535,6 +14673,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14570,6 +14709,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14611,6 +14751,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14646,6 +14787,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14681,6 +14823,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14722,6 +14865,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14762,6 +14906,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14802,6 +14947,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14837,6 +14983,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14882,6 +15029,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14897,9 +15045,7 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerExtraInfo" - }, - "description": "集群其他标识信息,cluster结构之外的数据获取", - "title": "clusterExtraInfo" + } }, "web_annotations": { "$ref": "#/definitions/clustermanagerWebAnnotationsV2", @@ -14931,6 +15077,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14957,6 +15104,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14997,6 +15145,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -15082,6 +15231,7 @@ }, "all": { "type": "boolean", + "format": "boolean", "description": "all操作所有的账号迁移", "title": "all" } @@ -15108,6 +15258,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -15194,6 +15345,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -15227,17 +15379,13 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "命名空间标签", - "title": "labels" + } }, "annotations": { "type": "object", "additionalProperties": { "type": "string" - }, - "description": "命名空间注解", - "title": "annotations" + } }, "quota": { "$ref": "#/definitions/clustermanagerNamespaceQuota", @@ -15270,7 +15418,8 @@ "type": "string" }, "default": { - "type": "boolean" + "type": "boolean", + "format": "boolean" }, "name": { "type": "string" @@ -15304,6 +15453,7 @@ }, "enableVPCCni": { "type": "boolean", + "format": "boolean", "description": "enableVPCCni是否开启VPC-CNI网络模式(使能vpc-cni模式时,新增流程开启)", "title": "enableVPCCni" }, @@ -15322,6 +15472,7 @@ }, "isStaticIpMode": { "type": "boolean", + "format": "boolean", "description": "集群VPC-CNI模式是否为非固定IP,默认: FALSE 非固定IP", "title": "isStaticIpMode" }, @@ -15532,9 +15683,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "节点注解信息", - "title": "annotations" + } } } }, @@ -15603,6 +15752,7 @@ }, "enableAutoscale": { "type": "boolean", + "format": "boolean", "description": "是否开启弹性伸缩,默认false", "title": "enableAutoscale" }, @@ -15620,17 +15770,13 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化label信息", - "title": "labels" + } }, "taints": { "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化的污点信息", - "title": "taints" + } }, "nodeOS": { "type": "string", @@ -15683,9 +15829,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化的资源标签信息", - "title": "tags" + } }, "nodeGroupType": { "type": "string", @@ -15701,9 +15845,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "节点池扩展信,存储资源池类型等信息", - "title": "extraInfo" + } } }, "description": "节点组,对蓝鲸、腾讯云、AWS弹性伸缩能力封装", @@ -15940,9 +16082,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "节点标签信息", - "title": "labels" + } } } }, @@ -15999,6 +16139,7 @@ "properties": { "isExist": { "type": "boolean", + "format": "boolean", "description": "节点是否存在集群中", "title": "isExist" }, @@ -16037,17 +16178,13 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "节点通用的labels设置", - "title": "labels" + } }, "extraArgs": { "type": "object", "additionalProperties": { "type": "string" - }, - "description": "配置各模块自定义参数,预定义的key为kubeletvalue为各模块进程启动参数,多个参数之间使用;间隔,例如Kubelet: root-dir=/var/lib/kubelet;", - "title": "extraArgs" + } }, "taints": { "type": "array", @@ -16143,9 +16280,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化label信息", - "title": "labels" + } }, "taints": { "type": "array", @@ -16188,9 +16323,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "配置各模块自定义参数,预定义的key为kubeletvalue为各模块进程启动参数,多个参数之间使用;间隔,例如Kubelet: root-dir=/var/lib/kubelet;", - "title": "extraArgs" + } }, "preStartUserScript": { "type": "string", @@ -16263,9 +16396,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "节点annotation设置", - "title": "annotations" + } }, "maxPodsPerNode": { "type": "integer", @@ -16275,16 +16406,19 @@ }, "skipSystemInit": { "type": "boolean", + "format": "boolean", "description": "是否跳过执行系统初始化, 默认执行", "title": "skipSystemInit" }, "allowSkipScaleOutWhenFailed": { "type": "boolean", + "format": "boolean", "description": "扩容失败时是否允许跳过流程, 默认不允许跳过", "title": "allowSkipScaleOutWhenFailed" }, "allowSkipScaleInWhenFailed": { "type": "boolean", + "format": "boolean", "description": "缩容失败时是否允许跳过流程, 默认不允许跳过", "title": "skipSystemInit" } @@ -16319,6 +16453,7 @@ "properties": { "enable": { "type": "boolean", + "format": "boolean", "description": "操作是否开启通知", "title": "enable" }, @@ -16365,6 +16500,7 @@ }, "enable": { "type": "boolean", + "format": "boolean", "description": "是否开启通知", "title": "enable" }, @@ -16473,9 +16609,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "云上默认置入的区域信息,key是字符串,values是中文说明", - "title": "regions" + } } }, "description": "用于记录一些固定的系统信息,用于帮助OS层面信息展示", @@ -16775,6 +16909,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -16850,6 +16985,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -16909,6 +17045,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17043,6 +17180,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17075,9 +17213,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "步骤定义的参数,key、value对", - "title": "params" + } }, "retry": { "type": "integer", @@ -17128,6 +17264,7 @@ }, "skipOnFailed": { "type": "boolean", + "format": "boolean", "description": "失败时自动跳过某步骤,由用户设置。当设置失败跳过时,系统自动跳过当前失败步骤,执行后续流程", "title": "skipOnFailed" }, @@ -17138,6 +17275,7 @@ }, "allowSkip": { "type": "boolean", + "format": "boolean", "description": "标识该步骤失败时候是否允许用户手动跳过。当为true失败时候允许用户手动跳过, 为false失败时用户仅能通过重试解决", "title": "allowSkip" } @@ -17226,6 +17364,7 @@ }, "disable": { "type": "boolean", + "format": "boolean", "description": "开关集群网络模式, 默认打开", "title": "disable" }, @@ -17236,6 +17375,7 @@ }, "isStaticIpMode": { "type": "boolean", + "format": "boolean", "description": "是否开启静态IP模式", "title": "isStaticIpMode" }, @@ -17274,6 +17414,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17305,6 +17446,7 @@ "properties": { "isScaleDownEnable": { "type": "boolean", + "format": "boolean", "description": "scale-down-enabled,是否允许缩容节点", "title": "isScaleDownEnable" }, @@ -17339,16 +17481,19 @@ }, "skipNodesWithLocalStorage": { "type": "boolean", + "format": "boolean", "description": "忽略有本地存储的节点,默认为true", "title": "skipNodesWithLocalStorage" }, "skipNodesWithSystemPods": { "type": "boolean", + "format": "boolean", "description": "忽略kube-system NS下非DaemonSet管理的Pod的节点,默认true", "title": "skipNodesWithSystemPods" }, "ignoreDaemonSetsUtilization": { "type": "boolean", + "format": "boolean", "description": "忽略DaemonSet的资源计算, 默认为true", "title": "ignoreDaemonSetsUtilization" }, @@ -17424,6 +17569,7 @@ }, "scaleUpFromZero": { "type": "boolean", + "format": "boolean", "description": "scale-up-from-zero,允许自动扩容(没有 ready 节点时)", "title": "scaleUpFromZero" }, @@ -17498,6 +17644,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17590,9 +17737,7 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerStep" - }, - "description": "任务详细步骤信息,主要用于信息确认,异常时", - "title": "steps" + } }, "clusterID": { "type": "string", @@ -17621,6 +17766,7 @@ }, "forceTerminate": { "type": "boolean", + "format": "boolean", "description": "任务设置为强制终止,用于流程控制", "title": "forceTerminate" }, @@ -17628,9 +17774,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "公共参数,便于跨Step完成信息传递", - "title": "commonParams" + } }, "taskName": { "type": "string", @@ -17863,6 +18007,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17919,6 +18064,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17972,6 +18118,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -17982,6 +18129,7 @@ "properties": { "isScaleDownEnable": { "type": "boolean", + "format": "boolean", "description": "scale-down-enabled,是否允许缩容节点", "title": "isScaleDownEnable" }, @@ -18016,16 +18164,19 @@ }, "skipNodesWithLocalStorage": { "type": "boolean", + "format": "boolean", "description": "忽略有本地存储的节点,默认为false", "title": "skipNodesWithLocalStorage" }, "skipNodesWithSystemPods": { "type": "boolean", + "format": "boolean", "description": "忽略kube-system NS下非DaemonSet管理的Pod的节点,默认false", "title": "skipNodesWithSystemPods" }, "ignoreDaemonSetsUtilization": { "type": "boolean", + "format": "boolean", "description": "忽略DaemonSet的资源计算", "title": "ignoreDaemonSetsUtilization" }, @@ -18105,6 +18256,7 @@ }, "scaleUpFromZero": { "type": "boolean", + "format": "boolean", "description": "scale-up-from-zero,允许自动扩容(没有 ready 节点时)", "title": "scaleUpFromZero" }, @@ -18150,6 +18302,7 @@ }, "onlyUpdateInfo": { "type": "boolean", + "format": "boolean", "description": "仅更新CA组件配置参数信息,不触发流程", "title": "onlyUpdateInfo" }, @@ -18190,6 +18343,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18210,6 +18364,7 @@ "properties": { "enable": { "type": "boolean", + "format": "boolean", "description": "是否开启集群扩缩容", "title": "enable" }, @@ -18246,6 +18401,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18286,6 +18442,7 @@ }, "enable": { "type": "boolean", + "format": "boolean", "description": "cloud云账号是否开启,默认开启", "title": "enable" }, @@ -18329,6 +18486,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -18412,6 +18570,7 @@ }, "editable": { "type": "boolean", + "format": "boolean", "description": "对于SaaS层面该信息是否可编辑,BCS默认提供的预定义信息不可编译", "title": "editable" }, @@ -18419,17 +18578,13 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "通过标准运维实现的扩展流程或者插件", - "title": "opsPlugins" + } }, "extraPlugins": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "额外扩展流程,用于自定义扩展,该部分允许用户编辑", - "title": "extraPlugins" + } }, "cloudCredential": { "$ref": "#/definitions/clustermanagerCredential", @@ -18495,9 +18650,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "平台不同云的配置信息", - "title": "platformInfo" + } } }, "description": "创建项目请求", @@ -18523,6 +18676,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18622,6 +18776,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18708,6 +18863,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -18762,6 +18918,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18828,6 +18985,7 @@ }, "isExclusive": { "type": "boolean", + "format": "boolean", "description": "是否为业务独占集群", "title": "isExclusive" }, @@ -18845,9 +19003,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "集群的labels,用于携带额外的信息,最大不得超过20个", - "title": "labels" + } }, "updater": { "type": "string", @@ -18863,17 +19019,13 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "创建集群时进行BCS内置插件安装,该信息会索引云上默认配置信息进行对比与补充,如果填写错误直接报错", - "title": "bcsAddons" + } }, "extraAddons": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - }, - "description": "创建集群时额外扩展传递的信息,该部分为预留二方/三方/服务商扩展使用,如果填错直接报错", - "title": "extraAddons" + } }, "systemID": { "type": "string", @@ -18922,9 +19074,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息", - "title": "ExtraInfo" + } }, "moduleID": { "type": "string", @@ -18938,6 +19088,7 @@ }, "isCommonCluster": { "type": "boolean", + "format": "boolean", "description": "是否为公共集群,默认false", "title": "isCommonCluster" }, @@ -18953,6 +19104,7 @@ }, "is_shared": { "type": "boolean", + "format": "boolean", "description": "是否为共享集群,默认false", "title": "is_shared" }, @@ -18978,6 +19130,7 @@ }, "isMixed": { "type": "boolean", + "format": "boolean", "description": "标记该集群是否是混部集群", "title": "isMixed" } @@ -19004,6 +19157,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19070,6 +19224,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19103,6 +19258,7 @@ }, "manual": { "type": "boolean", + "format": "boolean", "description": "手动扩容操作,用户手动扩容操作不做数据回退清理,展示具体的步骤,支持用户重试", "title": "manual" } @@ -19131,6 +19287,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19191,6 +19348,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19251,6 +19409,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19297,6 +19456,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19338,6 +19498,7 @@ }, "enableAutoscale": { "type": "boolean", + "format": "boolean", "description": "是否开启弹性伸缩,默认false", "title": "enableAutoscale" }, @@ -19360,25 +19521,19 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化label信息", - "title": "labels" + } }, "taints": { "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化的污点信息", - "title": "taints" + } }, "tags": { "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化的资源标签信息", - "title": "tags" + } }, "nodeOS": { "type": "string", @@ -19418,6 +19573,7 @@ }, "onlyUpdateInfo": { "type": "boolean", + "format": "boolean", "description": "onlyUpdateInfo仅更新数据,不执行流程", "title": "onlyUpdateInfo" }, @@ -19425,9 +19581,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "节点池扩展息", - "title": "extraInfo" + } } }, "description": "更新NodeGroup请求", @@ -19449,6 +19603,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19498,6 +19653,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19568,6 +19724,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19618,6 +19775,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19661,9 +19819,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "新实例初始化label信息", - "title": "labels" + } }, "taints": { "type": "array", @@ -19706,9 +19862,7 @@ "type": "object", "additionalProperties": { "type": "string" - }, - "description": "配置各模块自定义参数,预定义的key为kubeletvalue为各模块进程启动参数,多个参数之间使用;间隔,例如Kubelet: root-dir=/var/lib/kubelet;", - "title": "extraArgs" + } }, "preStartUserScript": { "type": "string", @@ -19785,6 +19939,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19833,9 +19988,7 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerStep" - }, - "description": "任务详细步骤信息,主要用于信息确认,异常时", - "title": "steps" + } }, "updater": { "type": "string", @@ -19866,6 +20019,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19918,6 +20072,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19994,6 +20149,7 @@ }, "result": { "type": "boolean", + "format": "boolean", "description": "返回结果", "title": "result" } @@ -20088,7 +20244,8 @@ "type": "string" }, "enable": { - "type": "boolean" + "type": "boolean", + "format": "boolean" }, "flagType": { "type": "string" diff --git a/bcs-services/bcs-cluster-manager/conf/bcs-cluster-manager.json.template b/bcs-services/bcs-cluster-manager/conf/bcs-cluster-manager.json.template index ece9970ce8..a6535af58a 100644 --- a/bcs-services/bcs-cluster-manager/conf/bcs-cluster-manager.json.template +++ b/bcs-services/bcs-cluster-manager/conf/bcs-cluster-manager.json.template @@ -101,7 +101,8 @@ "chartName": "${bcsCAChartName}", "releaseName": "${bcsCAReleaseName}", "releaseNamespace": "${bcsCAReleaseNamespace}", - "isPublicRepo": ${bcsCAIsPublicRepo} + "isPublicRepo": ${bcsCAIsPublicRepo}, + "caImageRegistry": "${bcsCAImageRegistry}" }, "watch": { "chartName": "${bcsWatchChartName}", diff --git a/bcs-services/bcs-cluster-manager/i18n/lang/en.yaml b/bcs-services/bcs-cluster-manager/i18n/lang/en.yaml index 55dbf06216..a2c30751c2 100644 --- a/bcs-services/bcs-cluster-manager/i18n/lang/en.yaml +++ b/bcs-services/bcs-cluster-manager/i18n/lang/en.yaml @@ -83,6 +83,7 @@ CheckClusterCleanNodsTask: "check nodes clean finished" CheckCleanDBDataTask: "clean db data" ModifyInstancesVpcTask: "modify node vpc" CheckInstanceStateTask: "check cvm status" +ReturnNodesToResourcePoolTask: "return nodes to resource pool" # installGseAgent: "Install GSE Agent" # diff --git a/bcs-services/bcs-cluster-manager/i18n/lang/zh.yaml b/bcs-services/bcs-cluster-manager/i18n/lang/zh.yaml index 5b9f3870e8..050660fda5 100644 --- a/bcs-services/bcs-cluster-manager/i18n/lang/zh.yaml +++ b/bcs-services/bcs-cluster-manager/i18n/lang/zh.yaml @@ -83,6 +83,7 @@ CheckClusterCleanNodsTask: "检测清理节点完成" CheckCleanDBDataTask: "清理库数据" ModifyInstancesVpcTask: "变更机器vpc" CheckInstanceStateTask: "检测机器状态" +ReturnNodesToResourcePoolTask: "回收资源池节点" # installGseAgent: "安装 GSE Agent" # diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/create.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/create.go index 529fcd9738..c9f3c21a93 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/create.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/create.go @@ -103,6 +103,7 @@ func (ca *CreateAction) constructCluster(cloud *cmproto.Cloud) (*cmproto.Cluster IsShared: ca.req.IsShared, Creator: ca.req.Creator, CloudAccountID: ca.req.CloudAccountID, + ClusterIamRole: ca.req.ClusterIamRole, CreateTime: createTime, UpdateTime: createTime, Status: common.StatusInitialization, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go index c616ee8ec0..8764ad0f48 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go @@ -87,6 +87,9 @@ func (ia *ImportAction) constructCluster() *cmproto.Cluster { if ia.req.CloudMode.KubeConfig != "" { return common.KubeConfigImport } + if len(ia.req.CloudMode.NodeIps) > 0 { + return common.MachineImport + } return common.CloudImport }(), IsShared: ia.req.IsShared, @@ -104,6 +107,9 @@ func (ia *ImportAction) constructCluster() *cmproto.Cluster { if ia.req.GetCloudMode().GetResourceGroup() != "" { cls.ExtraInfo[common.ClusterResourceGroup] = ia.req.GetCloudMode().GetResourceGroup() } + if len(ia.req.GetCloudMode().GetNodeIps()) > 0 { + cls.ExtraInfo[common.ClusterMachineImportNodes] = strings.Join(ia.req.GetCloudMode().GetNodeIps(), ",") + } return cls } @@ -389,8 +395,8 @@ func (ia *ImportAction) commonValidate(req *cmproto.ImportClusterReq) error { return fmt.Errorf("ImportCluster CommonValidate failed: CloudMode empty") } - if req.CloudMode.CloudID == "" && req.CloudMode.KubeConfig == "" { - return fmt.Errorf("ImportCluster CommonValidate CloudMode cloudID&kubeConfig empty") + if req.CloudMode.CloudID == "" && req.CloudMode.KubeConfig == "" && len(req.CloudMode.NodeIps) == 0 { + return fmt.Errorf("ImportCluster CommonValidate CloudMode cloudID&kubeConfig&nodeIps empty") } err := ia.checkCloudModeValidate(req.CloudMode) if err != nil { diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/list.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/list.go index 1981986ae0..b81894eb90 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/list.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/list.go @@ -95,12 +95,19 @@ func (la *ListAction) validate() error { // getSharedCluster shared cluster func (la *ListAction) getSharedCluster() error { + conds := make([]*operator.Condition, 0) + condM := make(operator.M) condM["isshared"] = true condCluster := operator.NewLeafCondition(operator.Eq, condM) - condStatus := operator.NewLeafCondition(operator.Ne, operator.M{"status": common.StatusDeleted}) + conds = append(conds, condCluster) - branchCond := operator.NewBranchCondition(operator.And, condCluster, condStatus) + if !la.req.GetAll() { + condStatus := operator.NewLeafCondition(operator.Ne, operator.M{"status": common.StatusDeleted}) + conds = append(conds, condStatus) + } + + branchCond := operator.NewBranchCondition(operator.And, conds...) clusterList, err := la.model.ListCluster(la.ctx, branchCond, &storeopt.ListOption{}) if err != nil && !errors.Is(err, drivers.ErrTableRecordNotFound) { return err @@ -138,6 +145,8 @@ func (la *ListAction) getSharedCluster() error { func (la *ListAction) listCluster() error { getSharedCluster := true + conds := make([]*operator.Condition, 0) + condM := make(operator.M) if len(la.req.ClusterName) != 0 { condM["clustername"] = la.req.ClusterName @@ -173,11 +182,15 @@ func (la *ListAction) listCluster() error { if len(la.req.ClusterID) != 0 { condM["clusterid"] = la.req.ClusterID } - condCluster := operator.NewLeafCondition(operator.Eq, condM) - condStatus := operator.NewLeafCondition(operator.Ne, operator.M{"status": common.StatusDeleted}) + conds = append(conds, condCluster) + + if !la.req.All { + condStatus := operator.NewLeafCondition(operator.Ne, operator.M{"status": common.StatusDeleted}) + conds = append(conds, condStatus) + } + branchCond := operator.NewBranchCondition(operator.And, conds...) - branchCond := operator.NewBranchCondition(operator.And, condCluster, condStatus) clusterList, err := la.model.ListCluster(la.ctx, branchCond, &storeopt.ListOption{}) if err != nil && !errors.Is(err, drivers.ErrTableRecordNotFound) { return err diff --git a/bcs-services/bcs-cluster-manager/internal/auth/preset.go b/bcs-services/bcs-cluster-manager/internal/auth/preset.go index d34e37b87b..6bba9d05d2 100644 --- a/bcs-services/bcs-cluster-manager/internal/auth/preset.go +++ b/bcs-services/bcs-cluster-manager/internal/auth/preset.go @@ -92,7 +92,7 @@ var NoAuthMethod = []string{ "ClusterManager.ListOperationLogs", "ClusterManager.ListTaskStepLogs", - "ClusterManager.TaskRecords", + "ClusterManager.ListTaskRecords", "ClusterManager.ListResourceSchema", "ClusterManager.GetResourceSchema", diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/eks.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/eks.go index bb2c739b2a..270bb00c22 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/eks.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/eks.go @@ -40,6 +40,21 @@ func NewEksClient(opt *cloudprovider.CommonOption) (*EksClient, error) { }, nil } +// CreateEksCluster creates an eks cluster +func (cli *EksClient) CreateEksCluster(input *eks.CreateClusterInput) (*eks.Cluster, error) { + if cli == nil { + return nil, cloudprovider.ErrServerIsNil + } + + output, err := cli.eksClient.CreateCluster(input) + if err != nil { + return nil, err + } + + blog.Infof("eksClient create eks cluster[%s] success", *input.Name) + return output.Cluster, nil +} + // ListEksCluster get eks cluster list, region parameter init eks client func (cli *EksClient) ListEksCluster() ([]*string, error) { if cli == nil { @@ -52,6 +67,7 @@ func (cli *EksClient) ListEksCluster() ([]*string, error) { return nil, err } + blog.Infof("eksClient list eks clusters success") return output.Clusters, nil } @@ -69,9 +85,48 @@ func (cli *EksClient) GetEksCluster(clusterName string) (*eks.Cluster, error) { return nil, err } + blog.Infof("eksClient get eks cluster[%s] success", clusterName) + return output.Cluster, nil +} + +// DeleteEksCluster deletes the eks cluster +func (cli *EksClient) DeleteEksCluster(clusterName string) (*eks.Cluster, error) { + if cli == nil { + return nil, cloudprovider.ErrServerIsNil + } + + input := &eks.DeleteClusterInput{ + Name: aws.String(clusterName), + } + output, err := cli.eksClient.DeleteCluster(input) + if err != nil { + return nil, err + } + + blog.Infof("eksClient delete eks cluster[%s] success", clusterName) return output.Cluster, nil } +// ListNodegroups list eks node groups +func (cli *EksClient) ListNodegroups(clusterName string) ([]*string, error) { + blog.Infof("ListNodegroups in cluster[%s]", clusterName) + output, err := cli.eksClient.ListNodegroups(&eks.ListNodegroupsInput{ + ClusterName: aws.String(clusterName), + }, + ) + if err != nil { + return nil, err + } + + if output == nil || output.Nodegroups == nil { + blog.Errorf("ListNodegroups resp is nil") + return nil, fmt.Errorf("ListNodegroups resp is nil") + } + blog.Infof("ListNodegroups[%+v] successful", aws.StringValueSlice(output.Nodegroups)) + + return output.Nodegroups, nil +} + // CreateNodegroup creates eks node group func (cli *EksClient) CreateNodegroup(input *CreateNodegroupInput) (*eks.Nodegroup, error) { if cli == nil { diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/node.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/node.go index 6b0b1fc2ef..d1d68dd2c8 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/node.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/node.go @@ -137,6 +137,10 @@ func (nm *NodeManager) GetExternalNodeByIP(ip string, opt *cloudprovider.GetNode // ListExternalNodesByIP xxx func (nm *NodeManager) ListExternalNodesByIP(ips []string, opt *cloudprovider.ListNodesOption) ([]*proto.Node, error) { + if len(ips) == 0 { + return nil, nil + } + return nil, cloudprovider.ErrCloudNotImplemented } @@ -173,6 +177,10 @@ func (nm *NodeManager) GetNodeByIP(ip string, opt *cloudprovider.GetNodeOption) // ListNodesByIP list node by IP set func (nm *NodeManager) ListNodesByIP(ips []string, opt *cloudprovider.ListNodesOption) ([]*proto.Node, error) { + if len(ips) == 0 { + return nil, nil + } + return nil, cloudprovider.ErrCloudNotImplemented } diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/cluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/cluster.go index ea60b7bef3..f2569183dc 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/cluster.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/cluster.go @@ -40,7 +40,36 @@ type Cluster struct { // CreateCluster create kubenretes cluster according cloudprovider func (c *Cluster) CreateCluster(cls *proto.Cluster, opt *cloudprovider.CreateClusterOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + if cls == nil { + return nil, fmt.Errorf("%s CreateCluster cluster is empty", cloudName) + } + + if opt == nil || opt.Cloud == nil { + return nil, fmt.Errorf("%s CreateCluster cluster opt or cloud is empty", cloudName) + } + + if opt.Account == nil || len(opt.Account.SecretID) == 0 || len(opt.Account.SecretKey) == 0 || len(opt.Region) == 0 { + return nil, fmt.Errorf("%s CreateCluster opt lost valid crendential info", cloudName) + } + + mgr, err := cloudprovider.GetTaskManager(opt.Cloud.CloudProvider) + if err != nil { + blog.Errorf("get cloud %s TaskManager when CreateCluster %d failed, %s", + opt.Cloud.CloudID, cls.ClusterName, err.Error(), + ) + return nil, err + } + + // build create cluster task + task, err := mgr.BuildCreateClusterTask(cls, opt) + if err != nil { + blog.Errorf("build CreateCluster task for cluster %s with cloudprovider %s failed, %s", + cls.ClusterName, cls.Provider, err.Error(), + ) + return nil, err + } + + return task, nil } // CreateVirtualCluster create virtual cluster by cloud provider @@ -92,7 +121,34 @@ func (c *Cluster) ImportCluster(cls *proto.Cluster, opt *cloudprovider.ImportClu // DeleteCluster delete kubenretes cluster according cloudprovider func (c *Cluster) DeleteCluster(cls *proto.Cluster, opt *cloudprovider.DeleteClusterOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + if cls == nil { + return nil, fmt.Errorf("%s DeleteCluster cluster is empty", cloudName) + } + + if opt == nil || opt.Account == nil || len(opt.Account.SecretID) == 0 || + len(opt.Account.SecretKey) == 0 || len(opt.Region) == 0 { + return nil, fmt.Errorf("%s DeleteCluster cluster lost oprion", cloudName) + } + + // GetTaskManager for nodegroup manager initialization + mgr, err := cloudprovider.GetTaskManager(opt.Cloud.CloudProvider) + if err != nil { + blog.Errorf("get cloud %s TaskManager when DeleteCluster %d failed, %s", + opt.Cloud.CloudID, cls.ClusterName, err.Error(), + ) + return nil, err + } + + // build delete cluster task + task, err := mgr.BuildDeleteClusterTask(cls, opt) + if err != nil { + blog.Errorf("build DeleteCluster task for cluster %s with cloudprovider %s failed, %s", + cls.ClusterName, cls.Provider, err.Error(), + ) + return nil, err + } + + return task, nil } // GetCluster get kubenretes cluster detail information according cloudprovider diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/taskmgr.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/taskmgr.go index 0b6b07cbb9..d309e3f4dc 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/taskmgr.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/taskmgr.go @@ -25,6 +25,8 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/common" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/template" + icommon "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" ) var taskMgr sync.Once @@ -40,10 +42,21 @@ func newtask() *Task { works: make(map[string]interface{}), } - // import task + // create cluster task + task.works[createEKSClusterStep.StepMethod] = tasks.CreateEKSClusterTask + task.works[checkEKSClusterStatusStep.StepMethod] = tasks.CheckEKSClusterStatusTask + task.works[registerEKSClusterKubeConfigStep.StepMethod] = tasks.RegisterEKSClusterKubeConfigTask + task.works[checkCreateClusterNodeStatusStep.StepMethod] = tasks.CheckEKSClusterNodesStatusTask + task.works[updateEKSNodesToDBStep.StepMethod] = tasks.UpdateEKSNodesToDBTask + + // import cluster task task.works[importClusterNodesStep.StepMethod] = tasks.ImportClusterNodesTask task.works[registerClusterKubeConfigStep.StepMethod] = tasks.RegisterClusterKubeConfigTask + // delete cluster task + task.works[deleteEKSClusterStep.StepMethod] = tasks.DeleteEKSClusterTask + task.works[cleanClusterDBInfoStep.StepMethod] = tasks.CleanClusterDBInfoTask + // create nodeGroup task task.works[createCloudNodeGroupStep.StepMethod] = tasks.CreateCloudNodeGroupTask task.works[checkCloudNodeGroupStatusStep.StepMethod] = tasks.CheckCloudNodeGroupStatusTask @@ -89,9 +102,127 @@ func (t *Task) BuildDeleteVirtualClusterTask(cls *proto.Cluster, } // BuildCreateClusterTask build create cluster task -func (t *Task) BuildCreateClusterTask(cls *proto.Cluster, opt *cloudprovider.CreateClusterOption) ( - *proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented +func (t *Task) BuildCreateClusterTask(cls *proto.Cluster, opt *cloudprovider.CreateClusterOption) (*proto.Task, error) { // nolint + // validate request params + if cls == nil { + return nil, fmt.Errorf("BuildCreateClusterTask cluster info empty") + } + if opt == nil || opt.Cloud == nil { + return nil, fmt.Errorf("BuildCreateClusterTask TaskOptions is lost") + } + + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.CreateCluster), + TaskName: cloudprovider.CreateClusterTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: cls.ClusterID, + ProjectID: cls.ProjectID, + Creator: opt.Operator, + Updater: opt.Operator, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + } + // generate taskName + taskName := fmt.Sprintf(createClusterTaskTemplate, cls.ClusterID) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + + // setting all steps details + createClusterTask := &CreateClusterTaskOption{Cluster: cls, NodeGroupIDs: opt.NodeGroupIDs} + + // step0: createEKSCluster and return clusterID inject common paras + createClusterTask.BuildCreateClusterStep(task) + // step1: check cluster status by clusterID + createClusterTask.BuildCheckClusterStatusStep(task) + // step2: create node group + createClusterTask.BuildCreateCloudNodeGroupStep(task) + // step3: check cluster nodegroups status + createClusterTask.BuildCheckCloudNodeGroupStatusStep(task) + // step4: register managed cluster kubeConfig + createClusterTask.BuildRegisterClsKubeConfigStep(task) + // step5: check cluster nodegroups status + createClusterTask.BuildCheckClusterNodesStatusStep(task) + // step6: update nodes to DB + createClusterTask.BuildUpdateNodesToDBStep(task) + // step7: install cluster watch component + common.BuildWatchComponentTaskStep(task, cls, "") + // step8: 若需要则设置节点注解 + common.BuildNodeAnnotationsTaskStep(task, cls.ClusterID, nil, func() map[string]string { + if opt.NodeTemplate != nil && len(opt.NodeTemplate.GetAnnotations()) > 0 { + return opt.NodeTemplate.GetAnnotations() + } + return nil + }()) + + // step9 install gse agent + common.BuildInstallGseAgentTaskStep(task, &common.GseInstallInfo{ + ClusterId: cls.ClusterID, + BusinessId: cls.BusinessID, + CloudArea: cls.GetClusterBasicSettings().GetArea(), + User: cls.GetNodeSettings().GetWorkerLogin().GetInitLoginUsername(), + Passwd: cls.GetNodeSettings().GetWorkerLogin().GetInitLoginPassword(), + KeyInfo: cls.GetNodeSettings().GetWorkerLogin().GetKeyPair(), + AllowReviseCloudId: icommon.True, + }, cloudprovider.WithStepAllowSkip(true)) + + // step10: transfer host module + moduleID := cls.GetClusterBasicSettings().GetModule().GetWorkerModuleID() + if moduleID != "" { + common.BuildTransferHostModuleStep(task, cls.BusinessID, cls.GetClusterBasicSettings().GetModule(). + GetWorkerModuleID(), cls.GetClusterBasicSettings().GetModule().GetMasterModuleID()) + } + + // step11: 业务后置自定义流程: 支持标准运维任务 或者 后置脚本 + if opt.NodeTemplate != nil && len(opt.NodeTemplate.UserScript) > 0 { + common.BuildJobExecuteScriptStep(task, common.JobExecParas{ + ClusterID: cls.ClusterID, + Content: opt.NodeTemplate.UserScript, + // dynamic node ips + NodeIps: "", + Operator: opt.Operator, + StepName: common.PostInitStepJob, + Translate: common.PostInitJob, + }) + } + // business post define sops task or script + if opt.NodeTemplate != nil && opt.NodeTemplate.ScaleOutExtraAddons != nil { + err := template.BuildSopsFactory{ + StepName: template.UserAfterInit, + Cluster: cls, + Extra: template.ExtraInfo{ + // dynamic node ips + NodeIPList: "", + NodeOperator: opt.Operator, + ShowSopsUrl: true, + TranslateMethod: template.UserPostInit, + }}.BuildSopsStep(task, opt.NodeTemplate.ScaleOutExtraAddons, false) + if err != nil { + return nil, fmt.Errorf("BuildCreateClusterTask business BuildBkSopsStepAction failed: %v", err) + } + } + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildCreateClusterTask task StepSequence empty") + } + task.CurrentStep = task.StepSequence[0] + task.CommonParams[cloudprovider.OperatorKey.String()] = opt.Operator + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.CreateClusterJob.String() + + if len(opt.WorkerNodes) > 0 { + task.CommonParams[cloudprovider.WorkerNodeIPsKey.String()] = strings.Join(opt.WorkerNodes, ",") + } + if len(opt.MasterNodes) > 0 { + task.CommonParams[cloudprovider.MasterNodeIPsKey.String()] = strings.Join(opt.MasterNodes, ",") + } + + return task, nil } // BuildImportClusterTask build import cluster task @@ -155,7 +286,57 @@ func (t *Task) BuildImportClusterTask(cls *proto.Cluster, opt *cloudprovider.Imp // BuildDeleteClusterTask build deleteCluster task func (t *Task) BuildDeleteClusterTask(cls *proto.Cluster, opt *cloudprovider.DeleteClusterOption) ( *proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + // validate request params + if cls == nil { + return nil, fmt.Errorf("BuildDeleteClusterTask cluster info empty") + } + if opt == nil || opt.Operator == "" || opt.Cloud == nil || opt.Cluster == nil { + return nil, fmt.Errorf("BuildDeleteClusterTask TaskOptions is lost") + } + + // init task information + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.DeleteCluster), + TaskName: cloudprovider.DeleteClusterTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: cls.ClusterID, + ProjectID: cls.ProjectID, + Creator: opt.Operator, + Updater: opt.Operator, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + } + taskName := fmt.Sprintf(deleteClusterTaskTemplate, cls.ClusterID) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + task.CommonParams[cloudprovider.UserKey.String()] = opt.Operator + + // setting all steps details + deleteClusterTask := &DeleteClusterTaskOption{ + Cluster: cls, + DeleteMode: opt.DeleteMode.String(), + LastClusterStatus: opt.LatsClusterStatus, + } + // step1: DeleteEKSCluster delete tke cluster + deleteClusterTask.BuildDeleteEKSClusterStep(task) + // step2: update cluster DB info and associated data + deleteClusterTask.BuildCleanClusterDBInfoStep(task) + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildDeleteClusterTask task StepSequence empty") + } + task.CurrentStep = task.StepSequence[0] + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.DeleteClusterJob.String() + task.CommonParams[cloudprovider.OperatorKey.String()] = opt.Operator + + return task, nil } // BuildAddNodesToClusterTask build addNodes task diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/clean_nodes_ingroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/clean_nodes_ingroup.go index e986c16ecb..bd96f0ec34 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/clean_nodes_ingroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/clean_nodes_ingroup.go @@ -19,11 +19,11 @@ import ( "strings" "time" + "github.com/Tencent/bk-bcs/bcs-common/common/blog" "github.com/avast/retry-go" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/autoscaling" - "github.com/Tencent/bk-bcs/bcs-common/common/blog" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/utils" @@ -138,12 +138,11 @@ func removeAsgInstances(ctx context.Context, info *cloudprovider.CloudDependBasi ShouldDecrementDesiredCapacity: aws.Bool(true), }) if terErr != nil { - blog.Errorf("removeAsgInstances[%s] TerminateInstanceInAutoScalingGroup[%s] failed: %v", taskID, - id, terErr) + blog.Errorf("removeAsgInstances[%s] RemoveInstances[%s] failed: %v", taskID, id, terErr) return terErr } - blog.Infof("removeAsgInstances[%s] TerminateInstanceInAutoScalingGroup[%s] successful", taskID, id) + blog.Infof("removeAsgInstances[%s] RemoveInstances[%s] successful", taskID, id) return nil }, retry.Attempts(3)) diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/create_cluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/create_cluster.go new file mode 100644 index 0000000000..5fe1544ef7 --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/create_cluster.go @@ -0,0 +1,623 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package tasks + +import ( + "context" + "errors" + "fmt" + "strings" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + "github.com/avast/retry-go" + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/eks" + "github.com/aws/aws-sdk-go/service/iam" + + proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/actions" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api" + providerutils "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/clusterops" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/options" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/loop" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/utils" +) + +// CreateEKSClusterTask call aws interface to create cluster +func CreateEKSClusterTask(taskID string, stepName string) error { + start := time.Now() + + // get task and task current step + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + // previous step successful when retry task + if step == nil { + blog.Infof("CreateEKSClusterTask[%s]: current step[%s] successful and skip", taskID, stepName) + return nil + } + blog.Infof("CreateEKSClusterTask[%s]: task %s run step %s, system: %s, old state: %s, params %v", + taskID, taskID, stepName, step.System, step.Status, step.Params) + + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + cloudID := step.Params[cloudprovider.CloudIDKey.String()] + + // get dependent basic info + dependInfo, err := cloudprovider.GetClusterDependBasicInfo(cloudprovider.GetBasicInfoReq{ + ClusterID: clusterID, + CloudID: cloudID, + }) + if err != nil { + blog.Errorf("CreateEKSClusterTask[%s]: GetClusterDependBasicInfo for cluster %s in task %s "+ + "step %s failed, %s", taskID, clusterID, taskID, stepName, err.Error()) // nolint + retErr := fmt.Errorf("get cloud/project information failed, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // inject taskID + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) + // create cluster task + clsId, err := createEKSCluster(ctx, dependInfo) + if err != nil { + blog.Errorf("CreateEKSClusterTask[%s] createEKSCluster for cluster[%s] failed, %s", + taskID, clusterID, err.Error()) + retErr := fmt.Errorf("createEKSCluster err, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + + _ = cloudprovider.UpdateClusterErrMessage(clusterID, fmt.Sprintf("submit createCluster[%s] failed: %v", + dependInfo.Cluster.GetClusterID(), err)) + return retErr + } + + // update response information to task common params + if state.Task.CommonParams == nil { + state.Task.CommonParams = make(map[string]string) + } + state.Task.CommonParams[cloudprovider.CloudSystemID.String()] = clsId + + // update step + if err = state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("CreateEKSClusterTask[%s] task %s %s update to storage fatal", taskID, taskID, stepName) + return err + } + + return nil +} + +func createEKSCluster(ctx context.Context, info *cloudprovider.CloudDependBasicInfo) ( + string, error) { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + cluster := info.Cluster + + client, err := api.NewAWSClientSet(info.CmOption) + if err != nil { + return "", fmt.Errorf("create eksService failed") + } + + role, err := client.GetRole(&iam.GetRoleInput{RoleName: aws.String(cluster.GetClusterIamRole())}) + if err != nil { + blog.Errorf("GetRole[%s] failed, %v", taskID, err) + return "", err + } + + input := generateCreateClusterInput(info.Cluster, role.Arn) + + eksCluster, err := client.CreateEksCluster(input) + if err != nil { + return "", fmt.Errorf("call CreateEksCluster failed, %v", err) + } + + info.Cluster.SystemID = *eksCluster.Name + info.Cluster.VpcID = *eksCluster.ResourcesVpcConfig.VpcId + + err = cloudprovider.UpdateCluster(info.Cluster) + if err != nil { + blog.Errorf("createEKSCluster[%s] UpdateCluster[%s] failed %s", + taskID, info.Cluster.ClusterID, err.Error()) + retErr := fmt.Errorf("call createEKSCluster UpdateCluster[%s] api err: %s", + info.Cluster.ClusterID, err.Error()) + return "", retErr + } + blog.Infof("createEKSCluster[%s] run successful", taskID) + + return *eksCluster.Name, nil +} + +func generateCreateClusterInput(cluster *proto.Cluster, roleArn *string) *eks.CreateClusterInput { + subnets := strings.Split(cluster.ClusterBasicSettings.SubnetID, ",") + sgs := strings.Split(cluster.ClusterAdvanceSettings.ClusterConnectSetting.SecurityGroup, ",") + input := &eks.CreateClusterInput{ + Name: aws.String(cluster.ClusterName), + RoleArn: roleArn, + ResourcesVpcConfig: &eks.VpcConfigRequest{ + SubnetIds: aws.StringSlice(subnets), + SecurityGroupIds: aws.StringSlice(sgs), + EndpointPrivateAccess: aws.Bool(true), + EndpointPublicAccess: aws.Bool(cluster.ClusterAdvanceSettings.ClusterConnectSetting.Internet.PublicIPAssigned), + }, + Version: aws.String(cluster.ClusterBasicSettings.Version), + } + input.KubernetesNetworkConfig = generateKubernetesNetworkConfig(cluster) + if len(cluster.ClusterBasicSettings.ClusterTags) > 0 { + input.Tags = aws.StringMap(cluster.ClusterBasicSettings.ClusterTags) + } + + return input +} + +func generateKubernetesNetworkConfig(cluster *proto.Cluster) *eks.KubernetesNetworkConfigRequest { + req := &eks.KubernetesNetworkConfigRequest{} + if cluster != nil && cluster.NetworkSettings != nil { + switch cluster.NetworkSettings.ClusterIpType { + case "ipv4": + req.IpFamily = aws.String("ipv4") + req.ServiceIpv4Cidr = aws.String(cluster.NetworkSettings.ServiceIPv4CIDR) + case "ipv6": + req.IpFamily = aws.String("ipv6") + default: + req.IpFamily = aws.String("ipv4") + req.ServiceIpv4Cidr = aws.String(cluster.NetworkSettings.ServiceIPv4CIDR) + } + + } + + return req +} + +// CheckEKSClusterStatusTask check cluster status +func CheckEKSClusterStatusTask(taskID string, stepName string) error { + start := time.Now() + // get task and task current step + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + // previous step successful when retry task + if step == nil { + blog.Infof("CheckEKSClusterStatusTask[%s]: current step[%s] successful and skip", taskID, stepName) + return nil + } + blog.Infof("CheckEKSClusterStatusTask[%s]: task %s run step %s, system: %s, old state: %s, params %v", + taskID, taskID, stepName, step.System, step.Status, step.Params) + + // step login started here + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + cloudID := step.Params[cloudprovider.CloudIDKey.String()] + + dependInfo, err := cloudprovider.GetClusterDependBasicInfo(cloudprovider.GetBasicInfoReq{ + ClusterID: clusterID, + CloudID: cloudID, + }) + if err != nil { + blog.Errorf("CheckEKSClusterStatusTask[%s]: GetClusterDependBasicInfo for cluster %s in task %s "+ + "step %s failed, %s", taskID, clusterID, taskID, stepName, err.Error()) + retErr := fmt.Errorf("get cloud/project information failed, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // check cluster status + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) + err = checkClusterStatus(ctx, dependInfo) + if err != nil { + blog.Errorf("CheckEKSClusterStatusTask[%s] checkClusterStatus[%s] failed: %v", + taskID, clusterID, err) + retErr := fmt.Errorf("checkClusterStatus[%s] timeout|abnormal", clusterID) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // update step + if err = state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("CheckEKSClusterStatusTask[%s] task %s %s update to storage fatal", + taskID, taskID, stepName) + return err + } + + return nil +} + +// checkClusterStatus check cluster status +func checkClusterStatus(ctx context.Context, info *cloudprovider.CloudDependBasicInfo) error { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + + // get awsCloud client + cli, err := api.NewEksClient(info.CmOption) + if err != nil { + blog.Errorf("checkClusterStatus[%s] get aws client failed: %s", taskID, err.Error()) + retErr := fmt.Errorf("get cloud aws client err, %s", err.Error()) + return retErr + } + + var ( + failed = false + ) + + ctx, cancel := context.WithTimeout(ctx, 30*time.Minute) + defer cancel() + + // loop cluster status + err = loop.LoopDoFunc(ctx, func() error { + cluster, errGet := cli.GetEksCluster(info.Cluster.SystemID) + if errGet != nil { + blog.Errorf("checkClusterStatus[%s] failed: %v", taskID, errGet) + return nil + } + + blog.Infof("checkClusterStatus[%s] cluster[%s] current status[%s]", taskID, + info.Cluster.ClusterID, *cluster.Status) + + switch *cluster.Status { + case eks.ClusterStatusActive: + return loop.EndLoop + case eks.ClusterStatusFailed: + failed = true + return loop.EndLoop + } + + return nil + }, loop.LoopInterval(10*time.Second)) + if err != nil { + blog.Errorf("checkClusterStatus[%s] cluster[%s] failed: %v", taskID, info.Cluster.ClusterID, err) + return err + } + + if failed { + blog.Errorf("checkClusterStatus[%s] GetCluster[%s] failed: abnormal", taskID, info.Cluster.ClusterID) + retErr := fmt.Errorf("cluster[%s] status abnormal", info.Cluster.ClusterID) + return retErr + } + + return nil +} + +// RegisterEKSClusterKubeConfigTask register cluster kubeconfig +func RegisterEKSClusterKubeConfigTask(taskID string, stepName string) error { + start := time.Now() + + // get task and task current step + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + // previous step successful when retry task + if step == nil { + blog.Infof("RegisterAWSClusterKubeConfigTask[%s]: current step[%s] successful and skip", taskID, stepName) + return nil + } + blog.Infof("RegisterAWSClusterKubeConfigTask[%s] task %s run current step %s, system: %s, old state: %s, params %v", + taskID, taskID, stepName, step.System, step.Status, step.Params) + + // inject taskID + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) + + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + cloudID := step.Params[cloudprovider.CloudIDKey.String()] + + // handler logic + dependInfo, err := cloudprovider.GetClusterDependBasicInfo(cloudprovider.GetBasicInfoReq{ + ClusterID: clusterID, + CloudID: cloudID, + }) + if err != nil { + blog.Errorf("RegisterAWSClusterKubeConfigTask[%s] GetClusterDependBasicInfo in task %s step %s failed, %s", + taskID, taskID, stepName, err.Error()) + retErr := fmt.Errorf("get cloud/project information failed, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + err = importClusterCredential(ctx, dependInfo) + if err != nil { + blog.Errorf("RegisterAWSClusterKubeConfigTask[%s] importClusterCredential failed: %s", taskID, err.Error()) + retErr := fmt.Errorf("importClusterCredential failed %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + blog.Infof("RegisterAWSClusterKubeConfigTask[%s] importClusterCredential success", taskID) + + // update step + if err = state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("RegisterAWSClusterKubeConfigTask[%s:%s] update to storage fatal", taskID, stepName) + return err + } + + return nil +} + +// CheckEKSClusterNodesStatusTask check cluster nodes status +func CheckEKSClusterNodesStatusTask(taskID string, stepName string) error { + start := time.Now() + // get task and task current step + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + // previous step successful when retry task + if step == nil { + blog.Infof("CheckEKSClusterNodesStatusTask[%s]: current step[%s] successful and skip", taskID, stepName) + return nil + } + blog.Infof("CheckEKSClusterNodesStatusTask[%s]: task %s run step %s, system: %s, old state: %s, params %v", + taskID, taskID, stepName, step.System, step.Status, step.Params) + + // step login started here + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + cloudID := step.Params[cloudprovider.CloudIDKey.String()] + nodeGroupIDs := step.Params[cloudprovider.NodeGroupIDKey.String()] + state.Task.CommonParams[cloudprovider.SuccessNodeGroupIDsKey.String()] = nodeGroupIDs + + dependInfo, err := cloudprovider.GetClusterDependBasicInfo(cloudprovider.GetBasicInfoReq{ + ClusterID: clusterID, + CloudID: cloudID, + }) + if err != nil { + blog.Errorf("CheckEKSClusterNodesStatusTask[%s]: GetClusterDependBasicInfo for cluster %s in task %s "+ + "step %s failed, %s", taskID, clusterID, taskID, stepName, err.Error()) + retErr := fmt.Errorf("get cloud/project information failed, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // check cluster status + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) + addSuccessNodes, addFailureNodes, err := checkClusterNodesStatus(ctx, dependInfo, strings.Split(nodeGroupIDs, ",")) + if err != nil { + blog.Errorf("CheckEKSClusterStatusTask[%s] checkClusterStatus[%s] failed: %v", + taskID, clusterID, err) + retErr := fmt.Errorf("checkClusterStatus[%s] timeout|abnormal", clusterID) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // update response information to task common params + if state.Task.CommonParams == nil { + state.Task.CommonParams = make(map[string]string) + } + if len(addFailureNodes) > 0 { + state.Task.CommonParams[cloudprovider.FailedClusterNodeIDsKey.String()] = strings.Join(addFailureNodes, ",") + } + if len(addSuccessNodes) == 0 { + blog.Errorf("CheckCreateClusterNodeStatusTask[%s] nodes init failed", taskID) + retErr := fmt.Errorf("节点初始化失败, 请联系管理员") + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + state.Task.CommonParams[cloudprovider.SuccessClusterNodeIDsKey.String()] = strings.Join(addSuccessNodes, ",") + + // update step + if err = state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("CheckCreateClusterNodeStatusTask[%s] task %s %s update to storage fatal", taskID, taskID, stepName) + return err + } + + return nil +} + +func checkClusterNodesStatus(ctx context.Context, info *cloudprovider.CloudDependBasicInfo, // nolint + nodeGroupIDs []string) ([]string, []string, error) { + var totalNodesNum uint32 + var addSuccessNodes, addFailureNodes = make([]string, 0), make([]string, 0) + taskID := cloudprovider.GetTaskIDFromContext(ctx) + for _, ngID := range nodeGroupIDs { + nodeGroup, err := actions.GetNodeGroupByGroupID(cloudprovider.GetStorageModel(), ngID) + if err != nil { + return nil, nil, fmt.Errorf("get nodegroup information failed, %s", err.Error()) + } + // 运行至此, 认为节点池已创建成功 + err = cloudprovider.UpdateNodeGroupStatus(ngID, common.StatusRunning) + if err != nil { + blog.Errorf("checkClusterNodesStatus[%s] UpdateNodeGroupStatus failed, %s", taskID, err.Error()) + return nil, nil, fmt.Errorf("UpdateNodeGroupStatus failed, %s", err.Error()) + } + totalNodesNum += nodeGroup.AutoScaling.DesiredSize + } + + k8sOperator := clusterops.NewK8SOperator(options.GetGlobalCMOptions(), cloudprovider.GetStorageModel()) + + // wait node group state to normal + timeCtx, cancel := context.WithTimeout(context.TODO(), 10*time.Minute) + defer cancel() + + // wait all nodes to be ready + err := loop.LoopDoFunc(timeCtx, func() error { + running := make([]string, 0) + + nodes, err := k8sOperator.ListClusterNodes(context.Background(), info.Cluster.ClusterID) + if err != nil { + blog.Errorf("checkClusterNodesStatus[%s] cluster[%s] failed: %v", taskID, info.Cluster.ClusterID, err) + return nil + } + + for _, ins := range nodes { + if utils.CheckNodeIfReady(ins) { + blog.Infof("checkClusterNodesStatus[%s] node[%s] ready", taskID, ins.Name) + // get instanceID + providerID := strings.Split(ins.Spec.ProviderID, "/") + running = append(running, providerID[len(providerID)-1]) + } + } + + blog.Infof("checkClusterNodesStatus[%s] ready nodes[%+v]", taskID, running) + if len(running) == int(totalNodesNum) { + addSuccessNodes = running + return loop.EndLoop + } + + return nil + }, loop.LoopInterval(30*time.Second)) + // other error + if err != nil && !errors.Is(err, context.DeadlineExceeded) { + blog.Errorf("checkClusterNodesStatus[%s] check nodes status failed: %v", taskID, err) + return nil, nil, err + } + + // timeout error + if errors.Is(err, context.DeadlineExceeded) { + running, failure := make([]string, 0), make([]string, 0) + + nodes, err := k8sOperator.ListClusterNodes(context.Background(), info.Cluster.ClusterID) // nolint + if err != nil { + blog.Errorf("checkClusterNodesStatus[%s] cluster[%s] failed: %v", taskID, info.Cluster.ClusterID, err) + return nil, nil, err + } + + for _, ins := range nodes { + if utils.CheckNodeIfReady(ins) { + providerID := strings.Split(ins.Spec.ProviderID, "/") + running = append(running, providerID[len(providerID)-1]) + } else { + providerID := strings.Split(ins.Spec.ProviderID, "/") + failure = append(failure, providerID[len(providerID)-1]) + } + } + + addSuccessNodes = running + addFailureNodes = failure + } + blog.Infof("checkClusterNodesStatus[%s] success[%v] failure[%v]", taskID, addSuccessNodes, addFailureNodes) + + return addSuccessNodes, addFailureNodes, nil +} + +// UpdateEKSNodesToDBTask update AWS nodes +func UpdateEKSNodesToDBTask(taskID string, stepName string) error { + start := time.Now() + // get task and task current step + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + // previous step successful when retry task + if step == nil { + blog.Infof("UpdateNodesToDBTask[%s]: current step[%s] successful and skip", taskID, stepName) + return nil + } + blog.Infof("UpdateNodesToDBTask[%s]: task %s run step %s, system: %s, old state: %s, params %v", + taskID, taskID, stepName, step.System, step.Status, step.Params) + + // step login started here + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + cloudID := step.Params[cloudprovider.CloudIDKey.String()] + nodeGroupIDs := cloudprovider.ParseNodeIpOrIdFromCommonMap(state.Task.CommonParams, + cloudprovider.SuccessNodeGroupIDsKey.String(), ",") + + dependInfo, err := cloudprovider.GetClusterDependBasicInfo(cloudprovider.GetBasicInfoReq{ + ClusterID: clusterID, + CloudID: cloudID, + }) + if err != nil { + blog.Errorf("UpdateNodesToDBTask[%s]: GetClusterDependBasicInfo for cluster %s in task %s "+ + "step %s failed, %s", taskID, clusterID, taskID, stepName, err.Error()) + retErr := fmt.Errorf("get cloud/project information failed, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // check cluster status + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) + err = updateNodeToDB(ctx, state, dependInfo, nodeGroupIDs) + if err != nil { + blog.Errorf("UpdateNodesToDBTask[%s] checkNodesGroupStatus[%s] failed: %v", + taskID, clusterID, err) + retErr := fmt.Errorf("UpdateNodesToDBTask[%s] timeout|abnormal", clusterID) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // sync clusterData to pass-cc + providerutils.SyncClusterInfoToPassCC(taskID, dependInfo.Cluster) + + // sync cluster perms + providerutils.AuthClusterResourceCreatorPerm(ctx, dependInfo.Cluster.ClusterID, + dependInfo.Cluster.ClusterName, dependInfo.Cluster.Creator) + + // update step + if err = state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("UpdateNodesToDBTask[%s] task %s %s update to storage fatal", + taskID, taskID, stepName) + return err + } + + return nil +} + +func updateNodeToDB(ctx context.Context, state *cloudprovider.TaskState, info *cloudprovider.CloudDependBasicInfo, + nodeGroupIDs []string) error { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + addSuccessNodes := state.Task.CommonParams[cloudprovider.SuccessClusterNodeIDsKey.String()] + addFailureNodes := state.Task.CommonParams[cloudprovider.FailedClusterNodeIDsKey.String()] + + nodeIPs, instanceIDs := make([]string, 0), make([]string, 0) + nmClient := api.NodeManager{} + nodes := make([]*proto.Node, 0) + + successInstanceID := strings.Split(addSuccessNodes, ",") + failureInstanceID := strings.Split(addFailureNodes, ",") + if addSuccessNodes != "" { + instanceIDs = append(instanceIDs, successInstanceID...) + } + if addFailureNodes != "" { + instanceIDs = append(instanceIDs, failureInstanceID...) + } + + for _, ngID := range nodeGroupIDs { + nodeGroup, err := actions.GetNodeGroupByGroupID(cloudprovider.GetStorageModel(), ngID) + if err != nil { + return fmt.Errorf("updateNodeToDB GetNodeGroupByGroupID information failed, %s", err.Error()) + } + + info.NodeGroup = nodeGroup + + err = retry.Do(func() error { + nodes, err = nmClient.ListNodesByInstanceID(instanceIDs, &cloudprovider.ListNodesOption{ + Common: info.CmOption, + ClusterVPCID: info.Cluster.VpcID, + }) + if err != nil { + return err + } + return nil + }, retry.Attempts(3)) + if err != nil { + blog.Errorf("updateNodeToDB[%s] failed: %v", taskID, err) + return err + } + + for _, n := range nodes { + n.ClusterID = info.NodeGroup.ClusterID + n.NodeGroupID = info.NodeGroup.NodeGroupID + if utils.StringInSlice(n.NodeID, successInstanceID) { + n.Status = common.StatusRunning + nodeIPs = append(nodeIPs, n.InnerIP) + } else { + n.Status = common.StatusAddNodesFailed + } + + err = cloudprovider.SaveNodeInfoToDB(ctx, n, true) + if err != nil { + blog.Errorf("updateNodeToDB[%s] SaveNodeInfoToDB[%s] failed: %v", taskID, n.InnerIP, err) + } + } + } + state.Task.CommonParams[cloudprovider.NodeIPsKey.String()] = strings.Join(nodeIPs, ",") + + return nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/delete_cluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/delete_cluster.go new file mode 100644 index 0000000000..c7d638cedf --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/delete_cluster.go @@ -0,0 +1,199 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package tasks + +import ( + "context" + "fmt" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + "github.com/avast/retry-go" + "github.com/aws/aws-sdk-go/service/eks" + + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" + icommon "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/loop" +) + +// DeleteEKSClusterTask delete cluster task +func DeleteEKSClusterTask(taskID string, stepName string) error { + start := time.Now() + // get task information and validate + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + if step == nil { + return nil + } + + // step login started here + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + cloudID := step.Params[cloudprovider.CloudIDKey.String()] + dependInfo, err := cloudprovider.GetClusterDependBasicInfo(cloudprovider.GetBasicInfoReq{ + ClusterID: clusterID, + CloudID: cloudID, + }) + if err != nil { + blog.Errorf("DeleteEKSClusterTask[%s]: GetClusterDependBasicInfo failed: %s", taskID, err.Error()) + retErr := fmt.Errorf("DeleteEKSClusterTask GetClusterDependBasicInfo failed") + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) + err = deleteEKSCluster(ctx, dependInfo) + if err != nil { + blog.Errorf("DeleteEKSClusterTask[%s]: deleteEKSCluster failed: %s", taskID, err.Error()) + retErr := fmt.Errorf("DeleteEKSClusterTask deleteEKSCluster failed: %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + if err := state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("DeleteEKSClusterTask[%s]: %s update to storage fatal", taskID, stepName) + return err + } + return nil +} + +func deleteEKSCluster(ctx context.Context, info *cloudprovider.CloudDependBasicInfo) error { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + cluster := info.Cluster + // get aws client + cli, err := api.NewEksClient(info.CmOption) + if err != nil { + blog.Errorf("deleteEKSCluster[%s]: get aws client for cluster[%s] failed, %s", taskID, cluster.ClusterID, + err.Error()) + return fmt.Errorf("get aws client failed, %s", err.Error()) + } + + ngList, err := cli.ListNodegroups(cluster.SystemID) + if err != nil { + blog.Errorf("deleteEKSCluster[%s]: call aws ListNodegroups failed: %v", taskID, err) + return fmt.Errorf("call aws ListNodegroups failed: %s", err.Error()) + } + + // delete nodegroups first, or the cluster can't be deleted + for _, ng := range ngList { + err = retry.Do(func() error { + _, err = cli.DeleteNodegroup(&eks.DeleteNodegroupInput{ + NodegroupName: ng, + ClusterName: &cluster.SystemID}) + if err != nil { + return err + } + return nil + }, retry.Attempts(3)) + if err != nil { + blog.Errorf("deleteEKSCluster[%s] DeleteNodegroup[%s] failed: %v", taskID, *ng, err) + return err + } + } + + ctx, cancel := context.WithTimeout(ctx, 15*time.Minute) + defer cancel() + err = loop.LoopDoFunc(ctx, func() error { + ngList, err = cli.ListNodegroups(cluster.SystemID) + if err != nil { + blog.Errorf("deleteEKSCluster[%s]: call aws ListNodegroups failed: %v", taskID, err) + return fmt.Errorf("call aws ListNodegroups failed: %s", err.Error()) + } + + if len(ngList) != 0 { + blog.Infof("deleteEKSCluster[%s] %d nodegroups to be deleted", taskID, len(ngList)) + return nil + } + + blog.Infof("deleteEKSCluster[%s] all nodegroups have been deleted", taskID) + return loop.EndLoop + }, loop.LoopInterval(10*time.Second)) + if err != nil { + blog.Errorf("deleteEKSCluster[%s] delete nodegroups failed: %v", taskID, err) + return err + } + + _, err = cli.DeleteEksCluster(cluster.SystemID) + if err != nil { + blog.Errorf("deleteEKSCluster[%s]: call aws DeleteEKSCluster failed: %v", taskID, err) + return fmt.Errorf("call aws DeleteEKSCluster failed: %s", err.Error()) + } + + return nil +} + +// CleanClusterDBInfoTask clean cluster DB info +func CleanClusterDBInfoTask(taskID string, stepName string) error { + // delete node && nodeGroup && cluster + // get relative nodes by clusterID + start := time.Now() + // get task information and validate + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + if step == nil { + return nil + } + + // step login started here + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + cluster, err := cloudprovider.GetStorageModel().GetCluster(context.Background(), clusterID) + if err != nil { + blog.Errorf("CleanClusterDBInfoTask[%s]: get cluster for %s failed", taskID, clusterID) + retErr := fmt.Errorf("get cluster information failed, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // delete nodes + err = cloudprovider.GetStorageModel().DeleteNodesByClusterID(context.Background(), cluster.ClusterID) + if err != nil { + blog.Errorf("CleanClusterDBInfoTask[%s]: delete nodes for %s failed", taskID, clusterID) + retErr := fmt.Errorf("delete node for %s failed, %s", clusterID, err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + blog.Infof("CleanClusterDBInfoTask[%s]: delete nodes for cluster[%s] in DB successful", taskID, clusterID) + + // delete nodeGroup + err = cloudprovider.GetStorageModel().DeleteNodeGroupByClusterID(context.Background(), cluster.ClusterID) + if err != nil { + blog.Errorf("CleanClusterDBInfoTask[%s]: delete nodeGroups for %s failed", taskID, clusterID) + retErr := fmt.Errorf("delete nodeGroups for %s failed, %s", clusterID, err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + blog.Infof("CleanClusterDBInfoTask[%s]: delete nodeGroups for cluster[%s] in DB successful", taskID, clusterID) + + // delete cluster + cluster.Status = icommon.StatusDeleting + err = cloudprovider.GetStorageModel().UpdateCluster(context.Background(), cluster) + if err != nil { + blog.Errorf("CleanClusterDBInfoTask[%s]: delete cluster for %s failed", taskID, clusterID) + retErr := fmt.Errorf("delete cluster for %s failed, %s", clusterID, err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + blog.Infof("CleanClusterDBInfoTask[%s]: delete cluster[%s] in DB successful", taskID, clusterID) + + utils.SyncDeletePassCCCluster(taskID, cluster) + if err := state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("CleanClusterDBInfoTask[%s]: %s update to storage fatal", taskID, stepName) + return err + } + return nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/import_cluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/import_cluster.go index 0505317334..848b02892d 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/import_cluster.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/import_cluster.go @@ -14,7 +14,6 @@ package tasks import ( "context" - "encoding/json" "fmt" "time" @@ -28,7 +27,6 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/encrypt" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/types" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/utils" ) @@ -78,24 +76,6 @@ func RegisterClusterKubeConfigTask(taskID string, stepName string) error { return nil } -func importClusterCredential(ctx context.Context, data *cloudprovider.CloudDependBasicInfo) error { // nolint - configByte, err := encrypt.Decrypt(nil, data.Cluster.KubeConfig) - if err != nil { - return fmt.Errorf("failed to decode kubeconfig, %v", err) - } - typesConfig := &types.Config{} - err = json.Unmarshal([]byte(configByte), typesConfig) - if err != nil { - return fmt.Errorf("failed to unmarshal kubeconfig, %v", err) - } - err = cloudprovider.UpdateClusterCredentialByConfig(data.Cluster.ClusterID, typesConfig) - if err != nil { - return err - } - - return nil -} - // ImportClusterNodesTask call gkeInterface or kubeConfig import cluster nodes func ImportClusterNodesTask(taskID string, stepName string) error { start := time.Now() diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/utils.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/utils.go index fd63fd2489..01341ad526 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/utils.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/utils.go @@ -11,3 +11,54 @@ */ package tasks + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/encrypt" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/types" +) + +func importClusterCredential(ctx context.Context, data *cloudprovider.CloudDependBasicInfo) error { // nolint + kubeConfig := data.Cluster.KubeConfig + if len(kubeConfig) == 0 { + client, err := api.NewEksClient(data.CmOption) + if err != nil { + return fmt.Errorf("create eks client failed, %v", err) + } + + eksCluster, err := client.GetEksCluster(data.Cluster.SystemID) + if err != nil { + return fmt.Errorf("get eks cluster failed, %v", err) + } + + // generate kube config + kubeConfig, err = api.GetClusterKubeConfig(data.CmOption, eksCluster) + if err != nil { + return fmt.Errorf("get cluster kubeconfig failed, %v", err) + } + } + + // decrypt kube config + configByte, err := encrypt.Decrypt(nil, kubeConfig) + if err != nil { + return fmt.Errorf("failed to decrypt kubeconfig, %v", err) + } + + typesConfig := &types.Config{} + err = json.Unmarshal([]byte(configByte), typesConfig) + if err != nil { + return fmt.Errorf("failed to unmarshal kubeconfig, %v", err) + } + + err = cloudprovider.UpdateClusterCredentialByConfig(data.Cluster.ClusterID, typesConfig) + if err != nil { + return err + } + + return nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/utils.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/utils.go index 9b95f6ed61..5aece38898 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/utils.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/utils.go @@ -19,6 +19,7 @@ import ( proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + icommon "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" ) var ( @@ -27,6 +28,8 @@ var ( // awsCloud taskName const ( + // createClusterTaskTemplate bk-sops add task template + createClusterTaskTemplate = "aws-create cluster: %s" // importClusterTaskTemplate bk-sops add task template importClusterTaskTemplate = "aws-import cluster: %s" @@ -56,6 +59,28 @@ const ( // tasks var ( + // create cluster task + createEKSClusterStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-CreateEKSClusterTask", cloudName), + StepName: "创建集群", + } + checkEKSClusterStatusStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-CheckEKSClusterStatusTask", cloudName), + StepName: "检测集群状态", + } + checkCreateClusterNodeStatusStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-CheckCreateClusterNodeStatusTask", cloudName), + StepName: "检测集群节点状态", + } + registerEKSClusterKubeConfigStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-RegisterEKSClusterKubeConfigTask", cloudName), + StepName: "注册集群连接信息", + } + updateEKSNodesToDBStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-UpdateEKSNodesToDBTask", cloudName), + StepName: "更新任务状态", + } + // import cluster task importClusterNodesStep = cloudprovider.StepInfo{ StepMethod: fmt.Sprintf("%s-ImportClusterNodesTask", cloudName), @@ -66,6 +91,16 @@ var ( StepName: "注册集群kubeConfig认证", } + // delete cluster task + deleteEKSClusterStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-DeleteEKSClusterTask", cloudName), + StepName: "删除集群", + } + cleanClusterDBInfoStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-CleanClusterDBInfoTask", cloudName), + StepName: "清理集群数据", + } + // create nodeGroup task createCloudNodeGroupStep = cloudprovider.StepInfo{ StepMethod: fmt.Sprintf("%s-CreateCloudNodeGroupTask", cloudName), @@ -111,6 +146,99 @@ var ( } ) +// CreateClusterTaskOption 创建集群构建step子任务 +type CreateClusterTaskOption struct { + Cluster *proto.Cluster + NodeGroupIDs []string +} + +// BuildCreateClusterStep 创建集群任务 +func (cn *CreateClusterTaskOption) BuildCreateClusterStep(task *proto.Task) { + createStep := cloudprovider.InitTaskStep(createEKSClusterStep) + createStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Cluster.ClusterID + createStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + createStep.Params[cloudprovider.NodeGroupIDKey.String()] = strings.Join(cn.NodeGroupIDs, ",") + + task.Steps[createEKSClusterStep.StepMethod] = createStep + task.StepSequence = append(task.StepSequence, createEKSClusterStep.StepMethod) +} + +// BuildCheckClusterStatusStep 检测集群状态任务 +func (cn *CreateClusterTaskOption) BuildCheckClusterStatusStep(task *proto.Task) { + checkStep := cloudprovider.InitTaskStep(checkEKSClusterStatusStep) + checkStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Cluster.ClusterID + checkStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + + task.Steps[checkEKSClusterStatusStep.StepMethod] = checkStep + task.StepSequence = append(task.StepSequence, checkEKSClusterStatusStep.StepMethod) +} + +// BuildCreateCloudNodeGroupStep 通过云接口创建节点组 +func (cn *CreateClusterTaskOption) BuildCreateCloudNodeGroupStep(task *proto.Task) { + createStep := cloudprovider.InitTaskStep(createCloudNodeGroupStep) + + createStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Cluster.ClusterID + createStep.Params[cloudprovider.NodeGroupIDKey.String()] = strings.Join(cn.NodeGroupIDs, ",") + createStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + + task.Steps[createCloudNodeGroupStep.StepMethod] = createStep + task.StepSequence = append(task.StepSequence, createCloudNodeGroupStep.StepMethod) +} + +// BuildCheckCloudNodeGroupStatusStep 检测节点组状态 +func (cn *CreateClusterTaskOption) BuildCheckCloudNodeGroupStatusStep(task *proto.Task) { + checkStep := cloudprovider.InitTaskStep(checkCloudNodeGroupStatusStep) + + checkStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Cluster.ClusterID + checkStep.Params[cloudprovider.NodeGroupIDKey.String()] = strings.Join(cn.NodeGroupIDs, ",") + checkStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + + task.Steps[checkCloudNodeGroupStatusStep.StepMethod] = checkStep + task.StepSequence = append(task.StepSequence, checkCloudNodeGroupStatusStep.StepMethod) +} + +// BuildCheckClusterNodesStatusStep 检测创建集群节点状态任务 +func (cn *CreateClusterTaskOption) BuildCheckClusterNodesStatusStep(task *proto.Task) { + createStep := cloudprovider.InitTaskStep(checkCreateClusterNodeStatusStep) + createStep.Params[cloudprovider.NodeGroupIDKey.String()] = strings.Join(cn.NodeGroupIDs, ",") + createStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Cluster.ClusterID + createStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + + task.Steps[checkCreateClusterNodeStatusStep.StepMethod] = createStep + task.StepSequence = append(task.StepSequence, checkCreateClusterNodeStatusStep.StepMethod) +} + +// BuildUpdateNodesToDBStep 更新集群节点信息任务 +func (cn *CreateClusterTaskOption) BuildUpdateNodesToDBStep(task *proto.Task) { + updateStep := cloudprovider.InitTaskStep(updateEKSNodesToDBStep) + updateStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Cluster.ClusterID + updateStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + + task.Steps[updateEKSNodesToDBStep.StepMethod] = updateStep + task.StepSequence = append(task.StepSequence, updateEKSNodesToDBStep.StepMethod) +} + +// BuildRegisterClsKubeConfigStep 托管集群注册连接信息 +func (cn *CreateClusterTaskOption) BuildRegisterClsKubeConfigStep(task *proto.Task) { + registerStep := cloudprovider.InitTaskStep(registerEKSClusterKubeConfigStep) + registerStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Cluster.ClusterID + registerStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + registerStep.Params[cloudprovider.IsExtranetKey.String()] = icommon.True + + task.Steps[registerEKSClusterKubeConfigStep.StepMethod] = registerStep + task.StepSequence = append(task.StepSequence, registerEKSClusterKubeConfigStep.StepMethod) +} + +// BuildImportClusterNodesStep 纳管集群节点 +func (cn *CreateClusterTaskOption) BuildImportClusterNodesStep(task *proto.Task) { + importNodesStep := cloudprovider.InitTaskStep(importClusterNodesStep) + importNodesStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Cluster.ClusterID + importNodesStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + + task.Steps[importClusterNodesStep.StepMethod] = importNodesStep + task.StepSequence = append(task.StepSequence, importClusterNodesStep.StepMethod) +} + // ImportClusterTaskOption 纳管集群 type ImportClusterTaskOption struct { Cluster *proto.Cluster @@ -136,6 +264,35 @@ func (ic *ImportClusterTaskOption) BuildImportClusterNodesStep(task *proto.Task) task.StepSequence = append(task.StepSequence, importClusterNodesStep.StepMethod) } +// DeleteClusterTaskOption 删除集群 +type DeleteClusterTaskOption struct { + Cluster *proto.Cluster + DeleteMode string + LastClusterStatus string +} + +// BuildDeleteEKSClusterStep 删除集群 +func (dc *DeleteClusterTaskOption) BuildDeleteEKSClusterStep(task *proto.Task) { + deleteStep := cloudprovider.InitTaskStep(deleteEKSClusterStep) + deleteStep.Params[cloudprovider.ClusterIDKey.String()] = dc.Cluster.ClusterID + deleteStep.Params[cloudprovider.CloudIDKey.String()] = dc.Cluster.Provider + deleteStep.Params[cloudprovider.DeleteModeKey.String()] = dc.DeleteMode + deleteStep.Params[cloudprovider.LastClusterStatus.String()] = dc.LastClusterStatus + + task.Steps[deleteEKSClusterStep.StepMethod] = deleteStep + task.StepSequence = append(task.StepSequence, deleteEKSClusterStep.StepMethod) +} + +// BuildCleanClusterDBInfoStep 清理集群数据 +func (dc *DeleteClusterTaskOption) BuildCleanClusterDBInfoStep(task *proto.Task) { + updateStep := cloudprovider.InitTaskStep(cleanClusterDBInfoStep) + updateStep.Params[cloudprovider.ClusterIDKey.String()] = dc.Cluster.ClusterID + updateStep.Params[cloudprovider.CloudIDKey.String()] = dc.Cluster.Provider + + task.Steps[cleanClusterDBInfoStep.StepMethod] = updateStep + task.StepSequence = append(task.StepSequence, cleanClusterDBInfoStep.StepMethod) +} + // CreateNodeGroupTaskOption 创建节点组 type CreateNodeGroupTaskOption struct { Group *proto.NodeGroup diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/validate.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/validate.go index ea7ee05429..a63c874c44 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/validate.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/validate.go @@ -25,6 +25,7 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/clusterops" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/types" ) @@ -252,7 +253,27 @@ func (c *CloudValidate) CreateNodeGroupValidate(req *proto.CreateNodeGroupReques // CreateClusterValidate create cluster validate func (c *CloudValidate) CreateClusterValidate(req *proto.CreateClusterReq, opt *cloudprovider.CommonOption) error { - return cloudprovider.ErrCloudNotImplemented + if c == nil || req == nil || opt == nil { + return fmt.Errorf("%s CreateClusterValidate request&options is empty", cloudName) + } + + if len(opt.Account.SecretID) == 0 || len(opt.Account.SecretKey) == 0 || len(opt.Region) == 0 { + return fmt.Errorf("%s CreateClusterValidate lost valid crendential info", cloudName) + } + + if len(req.NodeGroups) == 0 { + return fmt.Errorf("%s CreateClusterValidate nodeGroup is empty", cloudName) + } + + // default not handle systemReinstall + req.SystemReinstall = true + + // cluster category + if len(req.ClusterCategory) == 0 { + req.ClusterCategory = common.Builder + } + + return nil } // AddNodesToClusterValidate addNodes validate diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/business/node.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/business/node.go new file mode 100644 index 0000000000..0a6f158969 --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/business/node.go @@ -0,0 +1,67 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package business xxx +package business + +import ( + "math" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + + proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/cmdb" +) + +// ListNodesByInstanceIP list node by IP set +func ListNodesByInstanceIP(ips []string) ([]*proto.Node, error) { + var nodes []*proto.Node + + hostDataList, err := cmdb.GetCmdbClient().QueryAllHostInfoWithoutBiz(ips) + if err != nil { + blog.Errorf("ListExternalNodesByIP failed: %v", err) + return nil, err + } + hostMap := make(map[string]cmdb.HostDetailData) + for i := range hostDataList { + hostMap[hostDataList[i].BKHostInnerIP] = hostDataList[i] + } + + for _, ip := range ips { + if host, ok := hostMap[ip]; ok { + node := &proto.Node{} + node.InnerIP = host.BKHostInnerIP + node.CPU = uint32(host.HostCpu) + node.Mem = uint32(math.Floor(float64(host.HostMem) / float64(1024))) + node.InstanceType = host.NormalDeviceType + node.Region = cmdb.GetCityZoneByCityName(host.IDCCityName) + node.NodeType = common.IDC.String() + + nodes = append(nodes, node) + } + } + + return nodes, nil +} + +// ListNodesByIP list node by IP set +func ListNodesByIP(region string, ips []string) ([]*proto.Node, error) { + var nodes []*proto.Node + for _, ip := range ips { + node := &proto.Node{} + node.InnerIP = ip + node.Region = region + nodes = append(nodes, node) + } + return nodes, nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/cluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/cluster.go index 5e356f0cf4..8bfad68d71 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/cluster.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/cluster.go @@ -10,6 +10,7 @@ * limitations under the License. */ +// Package blueking xxx package blueking import ( diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodegroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodegroup.go index cbf8226c42..0ec07863c6 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodegroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodegroup.go @@ -13,6 +13,10 @@ package blueking import ( + "fmt" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" ) @@ -28,20 +32,85 @@ type NodeGroup struct { // CreateNodeGroup create nodegroup by cloudprovider api, only create NodeGroup entity func (ng *NodeGroup) CreateNodeGroup(group *proto.NodeGroup, opt *cloudprovider.CreateNodeGroupOption) ( *proto.Task, error) { - return nil, nil + if opt.OnlyData { + return nil, nil + } + + mgr, err := cloudprovider.GetTaskManager(cloudName) + if err != nil { + return nil, err + } + task, err := mgr.BuildCreateNodeGroupTask(group, opt) + if err != nil { + return nil, err + } + return task, nil } // DeleteNodeGroup delete nodegroup by cloudprovider api, all nodes belong to NodeGroup // will be released. Task is backgroup automatic task func (ng *NodeGroup) DeleteNodeGroup(group *proto.NodeGroup, nodes []*proto.Node, opt *cloudprovider.DeleteNodeGroupOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + // validate request + if group == nil { + return nil, fmt.Errorf("lost clean nodes or group") + } + + if opt == nil || len(opt.Region) == 0 || opt.Account == nil || + len(opt.Account.SecretID) == 0 || len(opt.Account.SecretKey) == 0 || opt.Cloud == nil { + return nil, fmt.Errorf("lost connect cloud_provider auth information") + } + if opt.OnlyData { + return nil, nil + } + + mgr, err := cloudprovider.GetTaskManager(opt.Cloud.CloudProvider) + if err != nil { + return nil, err + } + task, err := mgr.BuildDeleteNodeGroupTask(group, nodes, opt) + if err != nil { + return nil, err + } + + return task, nil } // UpdateNodeGroup update specified nodegroup configuration func (ng *NodeGroup) UpdateNodeGroup( group *proto.NodeGroup, opt *cloudprovider.UpdateNodeGroupOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + if group == nil || opt == nil { + return nil, fmt.Errorf("UpdateNodeGroup group or opt is nil") + } + if opt.Cluster == nil || opt.Cloud == nil { + return nil, fmt.Errorf("UpdateNodeGroup lost validate data") + } + // only update nodegroup data, not build task + if opt.OnlyData { + return nil, nil + } + + if group.NodeGroupID == "" || group.ClusterID == "" { + return nil, fmt.Errorf("nodegroup id or cluster id is empty") + } + + err := cloudprovider.UpdateNodeGroupCloudAndModuleInfo(group.NodeGroupID, group.ConsumerID, + true, opt.Cluster.BusinessID) + if err != nil { + return nil, err + } + + // build task + mgr, err := cloudprovider.GetTaskManager(opt.Cloud.CloudProvider) + if err != nil { + return nil, err + } + task, err := mgr.BuildUpdateNodeGroupTask(group, &opt.CommonOption) + if err != nil { + return nil, err + } + + return task, nil } // GetNodesInGroup get all nodes belong to NodeGroup @@ -70,19 +139,101 @@ func (ng *NodeGroup) RemoveNodesFromGroup(nodes []*proto.Node, group *proto.Node // CleanNodesInGroup clean specified nodes in NodeGroup, func (ng *NodeGroup) CleanNodesInGroup(nodes []*proto.Node, group *proto.NodeGroup, opt *cloudprovider.CleanNodesOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + // validate request + if len(nodes) == 0 || group == nil { + return nil, fmt.Errorf("lost clean nodes or group") + } + if opt == nil || opt.Cluster == nil || opt.Cloud == nil { + return nil, fmt.Errorf("lost cluster or cloud information") + } + + mgr, err := cloudprovider.GetTaskManager(cloudName) + if err != nil { + blog.Errorf("get cloud %s TaskManager when CleanNodesInGroup %s failed, %s", + cloudName, group.Name, err.Error()) + return nil, err + } + task, err := mgr.BuildCleanNodesInGroupTask(nodes, group, opt) + if err != nil { + blog.Errorf("build CleanNodesInGroup task for cluster %s with cloudprovider %s failed, %s", + group.ClusterID, cloudName, err.Error()) + return nil, err + } + return task, nil } // UpdateDesiredNodes update nodegroup desired node func (ng *NodeGroup) UpdateDesiredNodes(desired uint32, group *proto.NodeGroup, opt *cloudprovider.UpdateDesiredNodeOption) (*cloudprovider.ScalingResponse, error) { - return nil, cloudprovider.ErrCloudNotImplemented + if group == nil || opt == nil || opt.Cluster == nil || opt.Cloud == nil { + return nil, fmt.Errorf("invalid request") + } + + // scaling nodes with desired, first get all node for status filtering + // check if nodes are already in cluster + goodNodes, err := cloudprovider.ListNodesInClusterNodePool(opt.Cluster.ClusterID, group.NodeGroupID) + if err != nil { + blog.Errorf("cloudprovider qcloud get NodeGroup %s all Nodes failed, %s", group.NodeGroupID, err.Error()) + return nil, err + } + + // check incoming nodes + inComingNodes, err := cloudprovider.GetNodesNumWhenApplyInstanceTask(opt.Cluster.ClusterID, group.NodeGroupID, + cloudprovider.GetTaskType(opt.Cloud.CloudProvider, cloudprovider.UpdateNodeGroupDesiredNode), + cloudprovider.TaskStatusRunning, + []string{cloudprovider.GetTaskType(opt.Cloud.CloudProvider, cloudprovider.ApplyInstanceMachinesTask)}) + if err != nil { + blog.Errorf("UpdateDesiredNodes GetNodesNumWhenApplyInstanceTask failed: %v", err) + return nil, err + } + + // cluster current node + current := len(goodNodes) + inComingNodes + + nodeNames := make([]string, 0) + for _, node := range goodNodes { + nodeNames = append(nodeNames, node.InnerIP) + } + blog.Infof("NodeGroup %s has total nodes %d, current capable nodes %d, current incoming nodes %d, "+ + "desired nodes %d, details %v", group.NodeGroupID, len(goodNodes), current, inComingNodes, desired, nodeNames) + + if current >= int(desired) { + blog.Infof("NodeGroup %s current capable nodes %d larger than desired %d nodes, nothing to do", + group.NodeGroupID, current, desired) + return &cloudprovider.ScalingResponse{ + ScalingUp: 0, + CapableNodes: nodeNames, + }, fmt.Errorf("NodeGroup %s UpdateDesiredNodes nodes %d larger than desired %d nodes", + group.NodeGroupID, current, desired) + } + + // current scale nodeNum + scalingUp := int(desired) - current + + return &cloudprovider.ScalingResponse{ + ScalingUp: uint32(scalingUp), + CapableNodes: nodeNames, + }, nil } // SwitchNodeGroupAutoScaling switch nodegroup autoscaling func (ng *NodeGroup) SwitchNodeGroupAutoScaling(group *proto.NodeGroup, enable bool, opt *cloudprovider.SwitchNodeGroupAutoScalingOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + mgr, err := cloudprovider.GetTaskManager(cloudName) + if err != nil { + blog.Errorf("get cloud %s TaskManager when SwitchNodeGroupAutoScaling %s failed, %s", + cloudName, group.NodeGroupID, err.Error(), + ) + return nil, err + } + task, err := mgr.BuildSwitchNodeGroupAutoScalingTask(group, enable, opt) + if err != nil { + blog.Errorf("build SwitchNodeGroupAutoScaling task for nodeGroup %s with cloudprovider %s failed, %s", + group.NodeGroupID, cloudName, err.Error(), + ) + return nil, err + } + return task, nil } // CreateAutoScalingOption create cluster autoscaling option, cloudprovider will @@ -104,13 +255,41 @@ func (ng *NodeGroup) DeleteAutoScalingOption(scalingOption *proto.ClusterAutoSca // Implementation is optional. func (ng *NodeGroup) UpdateAutoScalingOption(scalingOption *proto.ClusterAutoScalingOption, opt *cloudprovider.UpdateScalingOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + mgr, err := cloudprovider.GetTaskManager(cloudName) + if err != nil { + return nil, err + } + + err = cloudprovider.UpdateAutoScalingOptionModuleInfo(scalingOption.ClusterID) + if err != nil { + return nil, err + } + + task, err := mgr.BuildUpdateAutoScalingOptionTask(scalingOption, opt) + if err != nil { + return nil, err + } + return task, nil } // SwitchAutoScalingOptionStatus switch cluster autoscaling option status func (ng *NodeGroup) SwitchAutoScalingOptionStatus(scalingOption *proto.ClusterAutoScalingOption, enable bool, opt *cloudprovider.CommonOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + mgr, err := cloudprovider.GetTaskManager(cloudName) + if err != nil { + blog.Errorf("get cloud %s TaskManager when SwitchAutoScalingOptionStatus %s failed, %s", + cloudName, scalingOption.ClusterID, err.Error(), + ) + return nil, err + } + task, err := mgr.BuildSwitchAsOptionStatusTask(scalingOption, enable, opt) + if err != nil { + blog.Errorf("build SwitchAutoScalingOptionStatus task for cluster %s with cloudprovider %s failed, %s", + scalingOption.ClusterID, cloudName, err.Error(), + ) + return nil, err + } + return task, nil } // AddExternalNodeToCluster add external to cluster diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/api/node.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodemgr.go similarity index 96% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/api/node.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodemgr.go index fc1a08c9eb..5e0a43b477 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/api/node.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodemgr.go @@ -10,8 +10,8 @@ * limitations under the License. */ -// Package api xxx -package api +// Package blueking xxx +package blueking import ( "context" @@ -24,16 +24,12 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" ) -const ( - cloudProvider = "blueking" -) - var nodeMgr sync.Once func init() { nodeMgr.Do(func() { // init Node - cloudprovider.InitNodeManager(cloudProvider, &NodeManager{}) + cloudprovider.InitNodeManager(cloudName, &NodeManager{}) }) } @@ -60,7 +56,7 @@ func (nm *NodeManager) GetNodeByIP(ip string, opt *cloudprovider.GetNodeOption) // GetCloudRegions get regionInfo func (nm *NodeManager) GetCloudRegions(opt *cloudprovider.CommonOption) ([]*proto.RegionInfo, error) { // blueking cloud not need to implement interface - cloud, err := cloudprovider.GetStorageModel().GetCloudByProvider(context.Background(), cloudProvider) + cloud, err := cloudprovider.GetStorageModel().GetCloudByProvider(context.Background(), cloudName) if err != nil { return nil, err } diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/taskmgr.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/taskmgr.go index 6a564b35ec..c1198afa08 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/taskmgr.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/taskmgr.go @@ -10,10 +10,12 @@ * limitations under the License. */ +// Package blueking xxx package blueking import ( "fmt" + "strconv" "strings" "sync" "time" @@ -58,6 +60,18 @@ func newtask() *Task { // remove node from cluster task.works[updateRemoveNodeDBInfoStep.StepMethod] = tasks.UpdateRemoveNodeDBInfoTask + // create resource pool + task.works[createNodePoolStep.StepMethod] = tasks.CreateNodePoolTask + + // delete resource pool + task.works[deleteNodePoolStep.StepMethod] = tasks.DeleteNodePoolTask + + // apply nodes from resource pool + task.works[applyNodesFromResourcePoolStep.StepMethod] = tasks.ApplyNodesFromResourcePoolTask + + // return nodes to resource pool + task.works[returnNodesToResourcePoolStep.StepMethod] = tasks.ReturnNodesToResourcePoolTask + return task } @@ -199,10 +213,30 @@ func (t *Task) BuildImportClusterTask(cls *proto.Cluster, opt *cloudprovider.Imp CommonParams: make(map[string]string), ForceTerminate: false, } + taskName := fmt.Sprintf(importClusterTaskTemplate, cls.ClusterID) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName // setting all steps details - // step0: create cluster shield alarm step importNodesTask := &ImportClusterTaskOption{Cluster: cls} + + // step0: 集群节点导入方式需要 安装websocket模式的kubeAgent,打通集群连接 + if len(opt.CloudMode.GetNodeIps()) > 0 && opt.Cloud != nil && opt.Cloud.ClusterManagement != nil && + opt.Cloud.ClusterManagement.ImportCluster != nil { + err := template.BuildSopsFactory{ + StepName: template.SystemInit, + Cluster: cls, + Extra: template.ExtraInfo{ + BusinessID: cls.BusinessID, + Operator: opt.Operator, + NodeOperator: opt.Operator, + NodeIPList: strings.Join(opt.CloudMode.GetNodeIps(), ","), + }}.BuildSopsStep(task, opt.Cloud.ClusterManagement.ImportCluster, false) + if err != nil { + return nil, fmt.Errorf("BuildImportClusterTask BuildBkSopsStepAction failed: %v", err) + } + } + + // step0: import cluster nodes importNodesTask.BuildImportClusterNodesStep(task) // step1: install cluster watch component @@ -271,8 +305,7 @@ func (t *Task) BuildDeleteClusterTask(cls *proto.Cluster, opt *cloudprovider.Del taskName := fmt.Sprintf(deleteClusterTaskTemplate, cls.ClusterID) task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName - // step1: call bkops operation preAction - // validate bkops config + // step1: call bkops operation preAction to delete cluster if opt.Cloud != nil && opt.Cloud.ClusterManagement != nil && opt.Cloud.ClusterManagement.DeleteCluster != nil { step := &template.BkSopsStepAction{ TaskName: template.SystemInit, @@ -289,6 +322,26 @@ func (t *Task) BuildDeleteClusterTask(cls *proto.Cluster, opt *cloudprovider.Del } } + // step2: clean master nodes + if opt.Cloud != nil && opt.Cloud.ClusterManagement != nil && + opt.Cloud.ClusterManagement.DeleteNodesFromCluster != nil { + step := &template.BkSopsStepAction{ + TaskName: template.SystemInit, + Actions: opt.Cloud.ClusterManagement.DeleteNodesFromCluster.PreActions, + Plugins: opt.Cloud.ClusterManagement.DeleteNodesFromCluster.Plugins, + } + err := step.BuildBkSopsStepAction(task, cls, template.ExtraInfo{ + NodeIPList: strings.Join(cloudprovider.GetClusterMasterIPList(cls), ","), + NodeOperator: opt.Operator, + BusinessID: cls.BusinessID, + Operator: opt.Operator, + TranslateMethod: removeNodesFromClusterStep.StepMethod, + }) + if err != nil { + return nil, fmt.Errorf("BuildRemoveNodesFromClusterTask BuildBkSopsStepAction failed: %v", err) + } + } + // step2: update cluster DB info and associated data cleanClusterTask := &DeleteClusterTaskOption{Cluster: cls} cleanClusterTask.BuildCleanClusterDbInfoStep(task) @@ -304,6 +357,7 @@ func (t *Task) BuildDeleteClusterTask(cls *proto.Cluster, opt *cloudprovider.Del } // BuildAddNodesToClusterTask build addNodes task +// nolint funlen func (t *Task) BuildAddNodesToClusterTask(cls *proto.Cluster, nodes []*proto.Node, opt *cloudprovider.AddNodesOption) (*proto.Task, error) { // addNodesToCluster has only two steps: @@ -373,6 +427,22 @@ func (t *Task) BuildAddNodesToClusterTask(cls *proto.Cluster, nodes []*proto.Nod } } + // 混部集群需要执行混部节点流程 + if cls.GetIsMixed() && opt.Cloud != nil && opt.Cloud.ClusterManagement != nil && + opt.Cloud.ClusterManagement.CommonMixedAction != nil { + err := template.BuildSopsFactory{ + StepName: template.NodeMixedInitCh, + Cluster: cls, + Extra: template.ExtraInfo{ + NodeIPList: "", + ShowSopsUrl: true, + TranslateMethod: template.NodeMixedInit, + }}.BuildSopsStep(task, opt.Cloud.ClusterManagement.CommonMixedAction, false) + if err != nil { + return nil, fmt.Errorf("BuildScalingNodesTask BuildBkSopsStepAction failed: %v", err) + } + } + // step2: update DB node info by instanceIP addNodesTask := AddNodesTaskOption{ Cluster: cls, @@ -460,7 +530,7 @@ func (t *Task) BuildRemoveNodesFromClusterTask(cls *proto.Cluster, nodes []*prot TranslateMethod: removeNodesFromClusterStep.StepMethod, }) if err != nil { - return nil, fmt.Errorf("BuildAddNodesToClusterTask BuildBkSopsStepAction failed: %v", err) + return nil, fmt.Errorf("BuildRemoveNodesFromClusterTask BuildBkSopsStepAction failed: %v", err) } } @@ -482,12 +552,138 @@ func (t *Task) BuildRemoveNodesFromClusterTask(cls *proto.Cluster, nodes []*prot // BuildCleanNodesInGroupTask clean specified nodes in NodeGroup // including remove nodes from NodeGroup, clean data in nodes +// nolint funlen func (t *Task) BuildCleanNodesInGroupTask(nodes []*proto.Node, group *proto.NodeGroup, opt *cloudprovider.CleanNodesOption) (*proto.Task, error) { - // build task step1: move nodes out of nodegroup - //step2: delete nodes in cluster - //step3: delete nodes record in local storage - return nil, cloudprovider.ErrCloudNotImplemented + // clean nodeGroup nodes in cloud only has four steps: + // step1: cordon nodes + // step2: user define processes + // step3: delete nodes in cluster + // step4: return nodes to resource pool + + // validate request params + if nodes == nil { + return nil, fmt.Errorf("BuildCleanNodesInGroupTask nodes info empty") + } + if group == nil { + return nil, fmt.Errorf("BuildCleanNodesInGroupTask group info empty") + } + if opt == nil || len(opt.Operator) == 0 || opt.Cluster == nil { + return nil, fmt.Errorf("BuildCleanNodesInGroupTask TaskOptions is lost") + } + + var ( + nodeIPs = make([]string, 0) + nodeIDs, deviceIDs = make([]string, 0), make([]string, 0) + ) + for _, node := range nodes { + nodeIPs = append(nodeIPs, node.InnerIP) + nodeIDs = append(nodeIDs, node.NodeID) + deviceIDs = append(deviceIDs, node.DeviceID) + } + + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.CleanNodeGroupNodes), + TaskName: cloudprovider.CleanNodesInGroupTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: group.ClusterID, + ProjectID: group.ProjectID, + Creator: group.Creator, + Updater: group.Updater, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + NodeGroupID: group.NodeGroupID, + NodeIPList: nodeIPs, + } + // generate taskName + taskName := fmt.Sprintf(cleanNodeGroupNodesTaskTemplate, group.ClusterID, group.Name) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + + // setting all steps details + cleanNodeGroupNodes := &CleanNodesInGroupTaskOption{ + Group: group, + Cluster: opt.Cluster, + NodeIPs: nodeIPs, + NodeIDs: nodeIDs, + DeviceIDs: deviceIDs, + Operator: opt.Operator, + } + + // step1: cordon nodes + common.BuildCordonNodesTaskStep(task, opt.Cluster.GetClusterID(), nodeIPs) + + // step2: business user define processes, bksops or job + if group.NodeTemplate != nil && len(group.NodeTemplate.ScaleInPreScript) > 0 { + common.BuildJobExecuteScriptStep(task, common.JobExecParas{ + ClusterID: opt.Cluster.ClusterID, + Content: group.NodeTemplate.ScaleInPreScript, + NodeIps: strings.Join(nodeIPs, ","), + Operator: opt.Operator, + StepName: common.PreInitStepJob, + AllowSkipJobTask: group.NodeTemplate.AllowSkipScaleInWhenFailed, + Translate: common.PreInitJob, + }) + } + if group.NodeTemplate != nil && group.NodeTemplate.ScaleInExtraAddons != nil && + len(group.NodeTemplate.ScaleInExtraAddons.PreActions) > 0 { + err := template.BuildSopsFactory{ + StepName: template.UserPreInit, + Cluster: opt.Cluster, + Extra: template.ExtraInfo{ + NodeIPList: strings.Join(nodeIPs, ","), + NodeOperator: opt.Operator, + ShowSopsUrl: true, + TranslateMethod: template.UserBeforeInit, + }}.BuildSopsStep(task, group.NodeTemplate.ScaleInExtraAddons, true) + if err != nil { + return nil, fmt.Errorf("BuildCleanNodesInGroupTask ScaleInExtraAddons.PreActions "+ + "BuildBkSopsStepAction failed: %v", err) + } + } + + // step3: build sops task to delete node from cluster + if opt.Cloud != nil && opt.Cloud.ClusterManagement != nil && + opt.Cloud.ClusterManagement.DeleteNodesFromCluster != nil { + step := &template.BkSopsStepAction{ + TaskName: template.SystemInit, + Actions: opt.Cloud.ClusterManagement.DeleteNodesFromCluster.PreActions, + Plugins: opt.Cloud.ClusterManagement.DeleteNodesFromCluster.Plugins, + } + err := step.BuildBkSopsStepAction(task, opt.Cluster, template.ExtraInfo{ + NodeIPList: strings.Join(nodeIPs, ","), + NodeOperator: opt.Operator, + BusinessID: cloudprovider.GetBusinessID(opt.Cluster, opt.AsOption, group.NodeTemplate, false), + ModuleID: cloudprovider.GetScaleInModuleID(opt.AsOption, group.NodeTemplate), + Operator: opt.Operator, + TranslateMethod: removeNodesFromClusterStep.StepMethod, + }) + if err != nil { + return nil, fmt.Errorf("BuildCleanNodesInGroupTask BuildBkSopsStepAction failed: %v", err) + } + } + + // step4: return nodes to resource pool + cleanNodeGroupNodes.BuildReturnNodesToResourcePoolStep(task) + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildCleanNodesInGroupTask task StepSequence empty") + } + task.CurrentStep = task.StepSequence[0] + + // set global task paras + task.CommonParams[cloudprovider.NodeIDsKey.String()] = strings.Join(nodeIDs, ",") + task.CommonParams[cloudprovider.NodeIPsKey.String()] = strings.Join(nodeIPs, ",") + + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.CleanNodeGroupNodesJob.String() + return task, nil } // BuildDeleteNodeGroupTask when delete nodegroup, we need to create background @@ -496,18 +692,179 @@ func (t *Task) BuildCleanNodesInGroupTask(nodes []*proto.Node, group *proto.Node // @param group: need to delete func (t *Task) BuildDeleteNodeGroupTask(group *proto.NodeGroup, nodes []*proto.Node, opt *cloudprovider.DeleteNodeGroupOption) (*proto.Task, error) { - return nil, nil + // validate request params + if group == nil { + return nil, fmt.Errorf("BuildDeleteNodeGroupTask group info empty") + } + + if opt == nil || len(opt.Operator) == 0 || opt.Cloud == nil || opt.Cluster == nil { + return nil, fmt.Errorf("BuildDeleteNodeGroupTask TaskOptions is lost") + } + + var ( + nodeIPs, nodeIDs, deviceIDs = make([]string, 0), make([]string, 0), make([]string, 0) + ) + for _, node := range nodes { + nodeIPs = append(nodeIPs, node.InnerIP) + nodeIDs = append(nodeIDs, node.NodeID) + deviceIDs = append(deviceIDs, node.DeviceID) // nolint staticcheck (this result of append is never used) + } + + // init task information + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.DeleteNodeGroup), + TaskName: cloudprovider.DeleteNodeGroupTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: group.ClusterID, + ProjectID: group.ProjectID, + Creator: opt.Operator, + Updater: opt.Operator, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + NodeGroupID: group.NodeGroupID, + } + // generate taskName + taskName := fmt.Sprintf(deleteNodeGroupTaskTemplate, group.ClusterID, group.Name) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + + deleteNodeGroupOption := &DeleteNodeGroupOption{ + NodeGroup: group, + Cluster: opt.Cluster, + NodeIDs: nodeIDs, + NodeIPs: nodeIPs, + Operator: opt.Operator, + } + // step1: previous call successful and delete local storage information + deleteNodeGroupOption.BuildDeleteCloudNodeGroupStep(task) + // step2: delete nodeGroup from CA + common.BuildEnsureAutoScalerTaskStep(task, group.ClusterID, group.Provider) + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildDeleteNodeGroupTask task StepSequence empty") + } + task.CurrentStep = task.StepSequence[0] + + // Job-type + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.DeleteNodeGroupJob.String() + task.CommonParams[cloudprovider.NodeIPsKey.String()] = strings.Join(nodeIPs, ",") + task.CommonParams[cloudprovider.NodeIDsKey.String()] = strings.Join(nodeIDs, ",") + + return task, nil } // BuildCreateNodeGroupTask build create node group task func (t *Task) BuildCreateNodeGroupTask(group *proto.NodeGroup, opt *cloudprovider.CreateNodeGroupOption) ( *proto.Task, error) { - return nil, nil + // bluekingCloud create nodeGroup steps + // step1: create underlying resourcePool and update nodeGroup relative info + // step2: deploy node group to cluster + + // validate request params + if group == nil { + return nil, fmt.Errorf("BuildCreateNodeGroupTask group info empty") + } + if opt == nil || opt.Cluster == nil { + return nil, fmt.Errorf("BuildCreateNodeGroupTask TaskOptions is lost option or cluster") + } + err := opt.PoolInfo.Validate() + if err != nil { + return nil, err + } + + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.CreateNodeGroup), + TaskName: cloudprovider.CreateNodeGroupTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: group.ClusterID, + ProjectID: group.ProjectID, + Creator: group.Creator, + Updater: group.Updater, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + NodeGroupID: group.NodeGroupID, + } + // generate taskName + taskName := fmt.Sprintf(createNodeGroupTaskTemplate, group.ClusterID, group.Name) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + + // setting all steps details + createNodeGroupTask := &CreateNodeGroupOption{NodeGroup: group, + Cluster: opt.Cluster, PoolProvider: opt.PoolInfo.Provider, PoolID: opt.PoolInfo.ResourcePoolID} + // step1. call self resourcePool to create node group + createNodeGroupTask.BuildCreateCloudNodeGroupStep(task) + // step2. ensure autoscaler(安装/更新CA组件) in cluster + common.BuildEnsureAutoScalerTaskStep(task, group.ClusterID, group.Provider) + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildCreateNodeGroupTask task StepSequence empty") + } + + task.CurrentStep = task.StepSequence[0] + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.CreateNodeGroupJob.String() + + return task, nil } // BuildUpdateNodeGroupTask when update nodegroup, we need to create background task, func (t *Task) BuildUpdateNodeGroupTask(group *proto.NodeGroup, opt *cloudprovider.CommonOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + // validate request params + if group == nil { + return nil, fmt.Errorf("BuildUpdateNodeGroupTask group info empty") + } + if opt == nil { + return nil, fmt.Errorf("BuildUpdateNodeGroupTask TaskOptions is lost") + } + + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.UpdateNodeGroup), + TaskName: cloudprovider.UpdateNodeGroupTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: group.ClusterID, + ProjectID: group.ProjectID, + Creator: group.Creator, + Updater: group.Updater, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + NodeGroupID: group.NodeGroupID, + } + // generate taskName + taskName := fmt.Sprintf(updateNodeGroupTaskTemplate, group.ClusterID, group.NodeGroupID) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + + // setting all steps details + // step1. ensure auto scaler + common.BuildEnsureAutoScalerTaskStep(task, group.ClusterID, group.Provider) + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildUpdateNodeGroupTask task StepSequence empty") + } + task.CurrentStep = task.StepSequence[0] + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.UpdateNodeGroupJob.String() + return task, nil } // BuildMoveNodesToGroupTask when create cluster, we need to create background task, @@ -517,27 +874,304 @@ func (t *Task) BuildMoveNodesToGroupTask(nodes []*proto.Node, group *proto.NodeG } // BuildUpdateDesiredNodesTask build update desired nodes task +// nolint funlen func (t *Task) BuildUpdateDesiredNodesTask(desired uint32, group *proto.NodeGroup, opt *cloudprovider.UpdateDesiredNodeOption) (*proto.Task, error) { - return nil, nil + // UpdateDesiredNodesTask has five steps: + // 1. call resource interface to apply for Instances + // 2. call sops task to add nodes to cluster + // 3. add annotation to nodes + // 4. add labels to nodes + // 5. unCordon nodes + + // validate request params + if desired == 0 { + return nil, fmt.Errorf("BuildUpdateDesiredNodesTask desired nodes is zero") + } + if group == nil { + return nil, fmt.Errorf("BuildUpdateDesiredNodesTask group info is empty") + } + if opt == nil || len(opt.Operator) == 0 || opt.Cluster == nil { + return nil, fmt.Errorf("BuildUpdateDesiredNodesTask TaskOptions is lost") + } + + // init task information + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.UpdateNodeGroupDesiredNode), + TaskName: cloudprovider.UpdateDesiredNodesTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: group.ClusterID, + ProjectID: group.ProjectID, + Creator: opt.Operator, + Updater: opt.Operator, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + NodeGroupID: group.NodeGroupID, + } + + // generate taskName + taskName := fmt.Sprintf(updateNodeGroupDesiredNodeTemplate, group.ClusterID, group.Name) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + + // setting all steps details + updateDesiredNodes := &UpdateDesiredNodesTaskOption{ + Group: group, + Cluster: opt.Cluster, + Cloud: opt.Cloud, + Desired: desired, + Operator: opt.Operator, + } + + // step1: apply for Instance from resourcePool + updateDesiredNodes.BuildApplyInstanceStep(task) + + // 检测是否存在bkcc/检测是否安装agent/空闲检查等流程 + + // step2: call sops task to add nodes to cluster: install agent & trans module + if opt.Cloud != nil && opt.Cloud.ClusterManagement != nil && + opt.Cloud.ClusterManagement.AddNodesToCluster != nil && !group.GetNodeTemplate().GetSkipSystemInit() { + step := &template.BkSopsStepAction{ + TaskName: template.SystemInit, + Actions: opt.Cloud.ClusterManagement.AddNodesToCluster.PreActions, + Plugins: opt.Cloud.ClusterManagement.AddNodesToCluster.Plugins, + } + err := step.BuildBkSopsStepAction(task, opt.Cluster, template.ExtraInfo{ + NodeIPList: "", + NodeOperator: opt.Operator, + BusinessID: cloudprovider.GetBusinessID(opt.Cluster, opt.AsOption, group.NodeTemplate, true), + ModuleID: cloudprovider.GetScaleOutModuleID(opt.Cluster, opt.AsOption, group.NodeTemplate, + true), + Operator: opt.Operator, + TranslateMethod: addNodesToClusterStep.StepMethod, + }) + if err != nil { + return nil, fmt.Errorf("BuildUpdateDesiredNodesTask BuildBkSopsStepAction failed: %v", err) + } + } + + // transfer host module + moduleID := cloudprovider.GetTransModuleInfo(opt.Cluster, opt.AsOption, opt.NodeGroup) + if moduleID != "" { + common.BuildTransferHostModuleStep(task, opt.Cluster.BusinessID, moduleID, "") + } + + // step3: 业务扩容节点后置自定义流程: 支持job后置脚本和标准运维任务 + if group.NodeTemplate != nil && len(group.NodeTemplate.UserScript) > 0 { + common.BuildJobExecuteScriptStep(task, common.JobExecParas{ + ClusterID: group.ClusterID, + Content: group.NodeTemplate.UserScript, + NodeIps: "", + Operator: opt.Operator, + StepName: common.PostInitStepJob, + AllowSkipJobTask: group.NodeTemplate.GetAllowSkipScaleOutWhenFailed(), + Translate: common.PostInitJob, + }) + } + + // business define sops task + if group.NodeTemplate != nil && group.NodeTemplate.ScaleOutExtraAddons != nil { + err := template.BuildSopsFactory{ + StepName: template.UserAfterInit, + Cluster: opt.Cluster, + Extra: template.ExtraInfo{ + NodeIPList: "", + NodeOperator: opt.Operator, + ShowSopsUrl: true, + TranslateMethod: template.UserPostInit, + }}.BuildSopsStep(task, group.NodeTemplate.ScaleOutExtraAddons, false) + if err != nil { + return nil, fmt.Errorf("BuildUpdateDesiredNodesTask business BuildBkSopsStepAction failed: %v", err) + } + } + + // 混部集群需要执行混部节点流程 + if opt.Cluster.GetIsMixed() && opt.Cloud != nil && opt.Cloud.ClusterManagement != nil && + opt.Cloud.ClusterManagement.CommonMixedAction != nil { + err := template.BuildSopsFactory{ + StepName: template.NodeMixedInitCh, + Cluster: opt.Cluster, + Extra: template.ExtraInfo{ + NodeIPList: "", + ShowSopsUrl: true, + TranslateMethod: template.NodeMixedInit, + }}.BuildSopsStep(task, opt.Cloud.ClusterManagement.CommonMixedAction, false) + if err != nil { + return nil, fmt.Errorf("BuildUpdateDesiredNodesTask BuildBkSopsStepAction failed: %v", err) + } + } + + // step4: annotation nodes + updateDesiredNodes.BuildNodeAnnotationsStep(task) + // step5: nodes common labels: sZoneID / bizID + updateDesiredNodes.BuildNodeCommonLabelsStep(task) + // set node taint + common.BuildNodeTaintsTaskStep(task, opt.Cluster.ClusterID, nil, cloudprovider.GetTaintsByNg(opt.NodeGroup)) + // step6: set resourcePool labels + updateDesiredNodes.BuildResourcePoolDeviceLabelStep(task) + // step7: unCordon nodes + updateDesiredNodes.BuildUnCordonNodesStep(task) + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildUpdateDesiredNodesTask task StepSequence empty") + } + task.CurrentStep = task.StepSequence[0] + + // set common parameters && JobType + task.CommonParams[cloudprovider.ClusterIDKey.String()] = group.ClusterID + task.CommonParams[cloudprovider.ScalingNodesNumKey.String()] = strconv.Itoa(int(desired)) + // Job-type + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.UpdateNodeGroupDesiredNodeJob.String() + task.CommonParams[cloudprovider.ManualKey.String()] = strconv.FormatBool(opt.Manual) + + return task, nil } // BuildSwitchNodeGroupAutoScalingTask switch nodegroup auto scaling func (t *Task) BuildSwitchNodeGroupAutoScalingTask(group *proto.NodeGroup, enable bool, opt *cloudprovider.SwitchNodeGroupAutoScalingOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + // validate request params + if group == nil { + return nil, fmt.Errorf("BuildSwitchNodeGroupAutoScalingTask nodegroup info empty") + } + if opt == nil { + return nil, fmt.Errorf("BuildSwitchNodeGroupAutoScalingTask TaskOptions is lost") + } + + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.SwitchNodeGroupAutoScaling), + TaskName: cloudprovider.SwitchNodeGroupAutoScalingTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: group.ClusterID, + ProjectID: group.ProjectID, + Creator: group.Creator, + Updater: group.Updater, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + NodeGroupID: group.NodeGroupID, + } + // generate taskName + taskName := fmt.Sprintf(switchNodeGroupAutoScalingTaskTemplate, group.ClusterID, group.Name) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + + // step1. ensure auto scaler + common.BuildEnsureAutoScalerTaskStep(task, group.ClusterID, group.Provider) + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildSwitchNodeGroupAutoScalingTask task StepSequence empty") + } + task.CurrentStep = task.StepSequence[0] + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.SwitchNodeGroupAutoScalingJob.String() + + return task, nil } // BuildUpdateAutoScalingOptionTask update auto scaling option func (t *Task) BuildUpdateAutoScalingOptionTask(scalingOption *proto.ClusterAutoScalingOption, opt *cloudprovider.UpdateScalingOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + // validate request params + if scalingOption == nil { + return nil, fmt.Errorf("BuildUpdateAutoScalingOptionTask scaling option info empty") + } + if opt == nil { + return nil, fmt.Errorf("BuildUpdateAutoScalingOptionTask TaskOptions is lost") + } + + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.UpdateAutoScalingOption), + TaskName: cloudprovider.UpdateAutoScalingOptionTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: scalingOption.ClusterID, + ProjectID: scalingOption.ProjectID, + Creator: scalingOption.Creator, + Updater: scalingOption.Updater, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + } + // generate taskName + taskName := fmt.Sprintf(updateAutoScalingOptionTemplate, scalingOption.ClusterID) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + + // setting all steps details + // step1. ensure auto scaler + common.BuildEnsureAutoScalerTaskStep(task, scalingOption.ClusterID, scalingOption.Provider) + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildUpdateAutoScalingOptionTask task StepSequence empty") + } + task.CurrentStep = task.StepSequence[0] + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.UpdateAutoScalingOptionJob.String() + + return task, nil } // BuildSwitchAsOptionStatusTask switch auto scaling option status func (t *Task) BuildSwitchAsOptionStatusTask(scalingOption *proto.ClusterAutoScalingOption, enable bool, opt *cloudprovider.CommonOption) (*proto.Task, error) { - return nil, cloudprovider.ErrCloudNotImplemented + // validate request params + if scalingOption == nil { + return nil, fmt.Errorf("BuildSwitchAutoScalingOptionStatusTask scalingOption info empty") + } + if opt == nil { + return nil, fmt.Errorf("BuildSwitchAutoScalingOptionStatusTask TaskOptions is lost") + } + + nowStr := time.Now().Format(time.RFC3339) + task := &proto.Task{ + TaskID: uuid.New().String(), + TaskType: cloudprovider.GetTaskType(cloudName, cloudprovider.SwitchAutoScalingOptionStatus), + TaskName: cloudprovider.SwitchAutoScalingOptionStatusTask.String(), + Status: cloudprovider.TaskStatusInit, + Message: "task initializing", + Start: nowStr, + Steps: make(map[string]*proto.Step), + StepSequence: make([]string, 0), + ClusterID: scalingOption.ClusterID, + ProjectID: scalingOption.ProjectID, + Creator: scalingOption.Creator, + Updater: scalingOption.Updater, + LastUpdate: nowStr, + CommonParams: make(map[string]string), + ForceTerminate: false, + } + // generate taskName + taskName := fmt.Sprintf(switchAutoScalingOptionStatusTemplate, scalingOption.ClusterID) + task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + + // setting all steps details + // step1. ensure auto scaler + common.BuildEnsureAutoScalerTaskStep(task, scalingOption.ClusterID, scalingOption.Provider) + + // set current step + if len(task.StepSequence) == 0 { + return nil, fmt.Errorf("BuildSwitchAutoScalingOptionStatusTask task StepSequence empty") + } + task.CurrentStep = task.StepSequence[0] + task.CommonParams[cloudprovider.JobTypeKey.String()] = cloudprovider.SwitchAutoScalingOptionStatusJob.String() + return task, nil } // BuildAddExternalNodeToCluster add external to cluster diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/cleanNodesInGroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/cleanNodesInGroup.go new file mode 100644 index 0000000000..50e837dee7 --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/cleanNodesInGroup.go @@ -0,0 +1,93 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package tasks xxx +package tasks + +import ( + "context" + "fmt" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + providerutils "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" +) + +// ReturnNodesToResourcePoolTask clean nodes in group task for background running +func ReturnNodesToResourcePoolTask(taskID, stepName string) error { + start := time.Now() + + // get task and task current step + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + // previous step successful when retry task + if step == nil { + blog.Infof("ReturnNodesToResourcePoolTask[%s]: current step[%s] successful and skip", taskID, stepName) + return nil + } + blog.Infof("ReturnNodesToResourcePoolTask[%s] task %s run step %s, system: %s, old state: %s, params %v", + taskID, taskID, stepName, step.System, step.Status, step.Params) + + // extract valid parameter + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + nodeGroupID := step.Params[cloudprovider.NodeGroupIDKey.String()] + cloudID := step.Params[cloudprovider.CloudIDKey.String()] + operator := step.Params[cloudprovider.OperatorKey.String()] + + deviceList := cloudprovider.ParseNodeIpOrIdFromCommonMap(step.Params, cloudprovider.DeviceIDsKey.String(), ",") + nodeIPList := cloudprovider.ParseNodeIpOrIdFromCommonMap(step.Params, cloudprovider.NodeIPsKey.String(), ",") + + dependInfo, err := cloudprovider.GetClusterDependBasicInfo(cloudprovider.GetBasicInfoReq{ + ClusterID: clusterID, + CloudID: cloudID, + NodeGroupID: nodeGroupID, + }) + if err != nil { + // nolint goconst + blog.Errorf("ReturnNodesToResourcePoolTask[%s] GetClusterDependBasicInfo for NodeGroup %s to "+ + "clean Node in task %s "+ + "step %s failed, %s", taskID, nodeGroupID, taskID, stepName, err.Error()) + retErr := fmt.Errorf("get cloud/project information failed, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // inject taskID + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) + + // return IDC device to resource-manager + orderID, err := providerutils.DestroyDeviceList(ctx, dependInfo, deviceList, operator) + if err != nil { + blog.Errorf("ReturnNodesToResourcePoolTask[%s] destroyDeviceList[%v] from NodeGroup %s failed: %v", + taskID, nodeIPList, nodeGroupID, err.Error()) + _ = state.UpdateStepFailure(start, stepName, err) + return fmt.Errorf("ReturnNodesToResourcePoolTask destroyDeviceList failed %s", err.Error()) + } + + // update response information to task common params + if state.Task.CommonParams == nil { + state.Task.CommonParams = make(map[string]string) + } + state.Task.CommonParams[cloudprovider.OrderIDKey.String()] = orderID + + // update step + if err := state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("task %s %s update to storage fatal", taskID, stepName) + return err + } + return nil + +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/createCluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/createCluster.go index 0b351d3fc0..f4359e2353 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/createCluster.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/createCluster.go @@ -10,6 +10,7 @@ * limitations under the License. */ +// Package tasks xxx package tasks import ( diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/createNodeGroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/createNodeGroup.go new file mode 100644 index 0000000000..3d9d60b78d --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/createNodeGroup.go @@ -0,0 +1,83 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package tasks xxx +package tasks + +import ( + "context" + "fmt" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" +) + +// CreateNodePoolTask create nodePool +func CreateNodePoolTask(taskID, stepName string) error { + start := time.Now() + + // get task and task current step + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + // previous step successful when retry task + if step == nil { + blog.Infof("CreateNodePoolTask[%s]: current step[%s] successful and skip", taskID, stepName) + return nil + } + blog.Infof("CreateNodePoolTask[%s] run current step %s, system: %s, old state: %s, params %v", + taskID, stepName, step.System, step.Status, step.Params) + + // extract valid parameter + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + nodeGroupID := step.Params[cloudprovider.NodeGroupIDKey.String()] + cloudID := step.Params[cloudprovider.CloudIDKey.String()] + poolProvider := step.Params[cloudprovider.PoolProvider.String()] + resourcePoolID := step.Params[cloudprovider.PoolID.String()] + + dependInfo, err := cloudprovider.GetClusterDependBasicInfo(cloudprovider.GetBasicInfoReq{ + ClusterID: clusterID, + CloudID: cloudID, + NodeGroupID: nodeGroupID, + }) + if err != nil { + blog.Errorf("CreateNodePoolTask[%s] GetClusterDependBasicInfo for NodeGroup %s to clean Node in task %s "+ + "step %s failed, %s", taskID, nodeGroupID, taskID, stepName, err.Error()) + retErr := fmt.Errorf("getClusterDependBasicInfo failed, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // inject taskID + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) + err = utils.CreateResourcePoolAction(ctx, dependInfo, cloudprovider.ResourcePoolData{ + Provider: poolProvider, + ResourcePoolID: resourcePoolID, + }) + if err != nil { + blog.Errorf("CreateNodePoolTask[%s] createNodeGroupAction failed: %v", taskID, err.Error()) + retErr := fmt.Errorf("createNodeGroupAction failed, %s", err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // update step + if err := state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("CreateNodePoolTask[%s]: task %s %s update to storage fatal", taskID, taskID, stepName) + return err + } + return nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/deleteClusterTask.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/deleteCluster.go similarity index 99% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/deleteClusterTask.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/deleteCluster.go index 88cf9e0e30..21fc8aa078 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/deleteClusterTask.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/deleteCluster.go @@ -10,6 +10,7 @@ * limitations under the License. */ +// Package tasks xxx package tasks import ( diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/deleteNodeGroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/deleteNodeGroup.go new file mode 100644 index 0000000000..c9d08f0332 --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/deleteNodeGroup.go @@ -0,0 +1,77 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package tasks xxx +package tasks + +import ( + "context" + "fmt" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" +) + +// DeleteNodePoolTask delete node and nodeGroup in resource pool +func DeleteNodePoolTask(taskID, stepName string) error { + // step1: delete nodes + // step2: delete consumer + start := time.Now() + + // get task and task current step + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + // previous step successful when retry task + if step == nil { + blog.Infof("DeleteNodePoolTask[%s]: current step[%s] successful and skip", taskID, stepName) + return nil + } + blog.Infof("DeleteNodePoolTask[%s]: task %s run step %s, system: %s, old state: %s, params %v", + taskID, taskID, stepName, step.System, step.Status, step.Params) + + // step login started here + nodeGroupID := step.Params[cloudprovider.NodeGroupIDKey.String()] + group, err := cloudprovider.GetStorageModel().GetNodeGroup(context.Background(), nodeGroupID) + if err != nil { + blog.Errorf("DeleteNodePoolTask[%s]: get NodeGroup %s to clean Node in task %s step %s failed, %s", + taskID, nodeGroupID, taskID, stepName, err.Error()) + _ = state.UpdateStepFailure(start, stepName, err) + return fmt.Errorf("get NodeGroup failed %s", err.Error()) + } + + // step1: delete node db list + ipList := cloudprovider.ParseNodeIpOrIdFromCommonMap(step.Params, cloudprovider.NodeIPsKey.String(), ",") + err = cloudprovider.GetStorageModel().DeleteNodesByIPs(context.Background(), ipList) + if err != nil { + blog.Errorf("DeleteNodePoolTask[%s]: DeleteNodesByIPs failed: %v", taskID, err) + _ = state.UpdateStepFailure(start, stepName, err) + return fmt.Errorf("DeleteNodesByIPs failed %s", err.Error()) + } + + // step2: delete consumer + err = utils.DeleteResourcePoolAction(context.Background(), group.ConsumerID) + if err != nil { + blog.Errorf("DeleteNodePoolTask[%s] DeleteResourcePool failed: %v", taskID, err) + } + + // update step + if err := state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("DeleteNodePoolTask[%s]: task %s %s update to storage fatal", taskID, taskID, stepName) + return err + } + return nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/importCluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/importCluster.go index 1a765df7cf..20ba484bd6 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/importCluster.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/importCluster.go @@ -10,6 +10,7 @@ * limitations under the License. */ +// Package tasks xxx package tasks import ( @@ -27,9 +28,10 @@ import ( proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/api" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/business" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/clusterops" icommon "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/options" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/encrypt" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/types" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/utils" @@ -68,28 +70,12 @@ func ImportClusterNodesTask(taskID string, stepName string) error { return retErr } - // import cluster instances - err = importClusterInstances(basicInfo) - if err != nil { - blog.Errorf("ImportClusterNodesTask[%s]: importClusterInstances failed: %v", taskID, err) - retErr := fmt.Errorf("importClusterInstances failed, %s", err.Error()) - _ = state.UpdateStepFailure(start, stepName, retErr) - return retErr - } + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) - // update cluster info - err = cloudprovider.GetStorageModel().UpdateCluster(context.Background(), basicInfo.Cluster) + err = importClusterNodes(ctx, basicInfo) if err != nil { - blog.Errorf("ImportClusterNodesTask[%s]: UpdateCluster failed: %v", taskID, err) - retErr := fmt.Errorf("UpdateCluster failed, %s", err.Error()) - _ = state.UpdateStepFailure(start, stepName, retErr) - return retErr - } - // import cluster clusterCredential - err = importClusterCredential(basicInfo) - if err != nil { - blog.Errorf("ImportClusterNodesTask[%s]: importClusterCredential failed: %v", taskID, err) - retErr := fmt.Errorf("importClusterCredential failed, %s", err.Error()) + blog.Errorf("ImportClusterNodesTask[%s] failed: %v", taskID, err) + retErr := fmt.Errorf("ImportClusterNodesTask failed, %s", err.Error()) _ = state.UpdateStepFailure(start, stepName, retErr) return retErr } @@ -103,6 +89,34 @@ func ImportClusterNodesTask(taskID string, stepName string) error { return nil } +func importClusterNodes(ctx context.Context, basicInfo *cloudprovider.CloudDependBasicInfo) error { + taskId := cloudprovider.GetTaskIDFromContext(ctx) + + // import cluster instances + err := importClusterInstances(basicInfo) + if err != nil { + blog.Errorf("ImportClusterNodesTask[%s]: importClusterInstances failed: %v", taskId, err) + return err + } + + // update cluster info + err = cloudprovider.GetStorageModel().UpdateCluster(context.Background(), basicInfo.Cluster) + if err != nil { + blog.Errorf("ImportClusterNodesTask[%s]: UpdateCluster failed: %v", taskId, err) + return err + } + // import cluster clusterCredential + if basicInfo.Cluster.ImportCategory == icommon.KubeConfigImport { + err = importClusterCredential(basicInfo) + if err != nil { + blog.Errorf("ImportClusterNodesTask[%s]: importClusterCredential failed: %v", taskId, err) + return err + } + } + + return nil +} + func importClusterCredential(data *cloudprovider.CloudDependBasicInfo) error { kubeRet, err := encrypt.Decrypt(nil, data.Cluster.KubeConfig) if err != nil { @@ -125,7 +139,21 @@ func importClusterCredential(data *cloudprovider.CloudDependBasicInfo) error { } func importClusterInstances(data *cloudprovider.CloudDependBasicInfo) error { - masterIPs, nodeIPs, err := getClusterInstancesByKubeConfig(data) + var ( + err error + masterIPs, nodeIPs []types.NodeAddress + ) + + // 通过导入方式执行不同的流程 + switch data.Cluster.ImportCategory { + case icommon.KubeConfigImport: + masterIPs, nodeIPs, err = getClusterInstancesByKubeConfig(data) + case icommon.MachineImport: + masterIPs, nodeIPs, err = getClusterInstancesByK8sOps(data) + default: + retErr := fmt.Errorf("not supported importCategory: %s", data.Cluster.ImportCategory) + return retErr + } if err != nil { return err } @@ -209,6 +237,19 @@ func getNodeIP(node v1.Node) types.NodeAddress { return nodeAddress } +func getClusterInstancesByK8sOps(data *cloudprovider.CloudDependBasicInfo) ([]types.NodeAddress, + []types.NodeAddress, error) { + k8sOps := clusterops.NewK8SOperator(options.GetGlobalCMOptions(), cloudprovider.GetStorageModel()) + nodeList, err := k8sOps.ListClusterNodes(context.Background(), data.Cluster.GetClusterID()) + if err != nil { + return nil, nil, err + } + + masterIPs, nodeIPs := getMasterNodeIps(nodeList) + blog.Infof("get cluster[%s] masterIPs[%v] nodeIPs[%v]", data.Cluster.ClusterID, masterIPs, nodeIPs) + return masterIPs, nodeIPs, nil +} + func getClusterInstancesByKubeConfig(data *cloudprovider.CloudDependBasicInfo) ([]types.NodeAddress, []types.NodeAddress, error) { @@ -225,19 +266,30 @@ func getClusterInstancesByKubeConfig(data *cloudprovider.CloudDependBasicInfo) ( if err != nil { return nil, nil, err } + nodes := make([]*v1.Node, 0) + for i := range nodeList.Items { + nodes = append(nodes, &nodeList.Items[i]) + } + masterIPs, nodeIPs := getMasterNodeIps(nodes) + blog.Infof("get cluster[%s] masterIPs[%v] nodeIPs[%v]", data.Cluster.ClusterID, masterIPs, nodeIPs) + return masterIPs, nodeIPs, nil +} + +func getMasterNodeIps(nodes []*v1.Node) ([]types.NodeAddress, []types.NodeAddress) { masterIPs, nodeIPs := make([]types.NodeAddress, 0), make([]types.NodeAddress, 0) - for i := range nodeList.Items { - ip := getNodeIP(nodeList.Items[i]) - ok := utils.IsMasterNode(nodeList.Items[i].Labels) + + for i := range nodes { + ip := getNodeIP(*nodes[i]) + ok := utils.IsMasterNode(nodes[i].Labels) if ok { masterIPs = append(masterIPs, ip) continue } nodeIPs = append(nodeIPs, ip) } - blog.Infof("get cluster[%s] masterIPs[%v] nodeIPs[%v]", data.Cluster.ClusterID, masterIPs, nodeIPs) - return masterIPs, nodeIPs, nil + + return masterIPs, nodeIPs } func transInstanceIPToNodes(ipList []types.NodeAddress, opt *cloudprovider.ListNodesOption) ([]*proto.Node, error) { @@ -250,10 +302,7 @@ func transInstanceIPToNodes(ipList []types.NodeAddress, opt *cloudprovider.ListN ipAddressMap[ip.IPv4Address] = ip } - nodeMgr := api.NodeManager{} - nodes, err := nodeMgr.ListNodesByIP(ipAddressList, &cloudprovider.ListNodesOption{ - Common: opt.Common, - }) + nodes, err := business.ListNodesByIP(opt.Common.Region, ipAddressList) if err != nil { return nil, err } diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/updateDesiredNodes.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/updateDesiredNodes.go new file mode 100644 index 0000000000..52e94ac91a --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/tasks/updateDesiredNodes.go @@ -0,0 +1,195 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package tasks xxx +package tasks + +import ( + "context" + "errors" + "fmt" + "strconv" + "strings" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + "github.com/avast/retry-go" + + proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/business" + providerutils "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/resource" +) + +// ApplyNodesFromResourcePoolTask apply instance from resource +func ApplyNodesFromResourcePoolTask(taskID, stepName string) error { + start := time.Now() + + // get task and task current step + state, step, err := cloudprovider.GetTaskStateAndCurrentStep(taskID, stepName) + if err != nil { + return err + } + // previous step successful when retry task + if step == nil { + return err + } + + // extract valid parameter + clusterID := step.Params[cloudprovider.ClusterIDKey.String()] + nodeGroupID := step.Params[cloudprovider.NodeGroupIDKey.String()] + cloudID := step.Params[cloudprovider.CloudIDKey.String()] + desiredNodes := step.Params[cloudprovider.ScalingNodesNumKey.String()] + scalingNum, _ := strconv.Atoi(desiredNodes) + operator := step.Params[cloudprovider.OperatorKey.String()] + + // inject taskID + ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) + + dependInfo, err := cloudprovider.GetClusterDependBasicInfo(cloudprovider.GetBasicInfoReq{ + ClusterID: clusterID, + CloudID: cloudID, + NodeGroupID: nodeGroupID, + }) + if err != nil { + blog.Errorf("ApplyNodesFromResourcePoolTask[%s] GetClusterDependBasicInfo for NodeGroup %s to clean Node in task %s "+ + "step %s failed, %s", taskID, nodeGroupID, taskID, stepName, err.Error()) + retErr := fmt.Errorf("getClusterDependBasicInfo failed, %s", err.Error()) + blog.Infof("ApplyNodesFromResourcePoolTask[%s] begin DeleteVirtualNodes", taskID) + _ = cloudprovider.UpdateNodeGroupDesiredSize(nodeGroupID, scalingNum, true) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // apply Instance from ResourcePool, get instance ipList and device idList + recordInstanceList, err := applyNodesFromResourcePool(ctx, dependInfo, scalingNum, operator) + if err != nil { + blog.Errorf("ApplyNodesFromResourcePoolTask[%s] requestInstancesFromPool for NodeGroup "+ + "%s step %s failed, %s", taskID, nodeGroupID, stepName, err.Error()) + retErr := fmt.Errorf("requestInstancesFromPool failed: %s", err.Error()) + _ = cloudprovider.UpdateNodeGroupDesiredSize(nodeGroupID, scalingNum, true) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + err = saveNodesToDB(ctx, dependInfo, state.Task, &NodeOptions{ + InstanceIPs: recordInstanceList.InstanceIPList, + DeviceIDs: recordInstanceList.DeviceIDList, + }) + if err != nil { + blog.Errorf("ApplyNodesFromResourcePoolTask[%s] saveClusterNodes for NodeGroup %s step %s failed, %s", + taskID, nodeGroupID, stepName, err.Error()) + retErr := fmt.Errorf("ApplyDesiredNodesTask failed, %s", err.Error()) + _, _ = providerutils.DestroyDeviceList(ctx, dependInfo, recordInstanceList.DeviceIDList, operator) + _ = cloudprovider.UpdateNodeGroupDesiredSize(nodeGroupID, scalingNum, true) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + + // update step + if err := state.UpdateStepSucc(start, stepName); err != nil { + blog.Errorf("ApplyNodesFromResourcePoolTask[%s] task %s %s update to storage fatal", + taskID, taskID, stepName) + return err + } + + return nil +} + +// applyInstanceFromResourcePool 申请机器 +func applyNodesFromResourcePool(ctx context.Context, info *cloudprovider.CloudDependBasicInfo, + desired int, operator string) (*providerutils.RecordInstanceList, error) { + orderID, err := providerutils.ConsumeDevicesFromResourcePool(ctx, info.NodeGroup, + resource.IDC.String(), desired, operator) + if err != nil { + return nil, err + } + + record, err := providerutils.CheckOrderStateFromResourcePool(ctx, orderID) + if err != nil { + return nil, err + } + record.OrderID = orderID + + return record, nil +} + +// NodeOptions node data +type NodeOptions struct { + Password string + InstanceIDs []string + InstanceIPs []string + DeviceIDs []string +} + +// saveNodesToDB 存储集群节点数据 +func saveNodesToDB(ctx context.Context, + info *cloudprovider.CloudDependBasicInfo, task *proto.Task, opt *NodeOptions) error { + var ( + nodes = make([]*proto.Node, 0) + err error + ) + + // deviceID Map To InstanceIP + instanceToDeviceID := make(map[string]string) + for i := range opt.InstanceIPs { + if _, ok := instanceToDeviceID[opt.InstanceIPs[i]]; !ok { + instanceToDeviceID[opt.InstanceIPs[i]] = opt.DeviceIDs[i] + } + } + + taskID := cloudprovider.GetTaskIDFromContext(ctx) + err = retry.Do(func() error { + nodes, err = business.ListNodesByInstanceIP(opt.InstanceIPs) + if err != nil { + return err + } + return nil + }, retry.Attempts(10)) + if err != nil { + blog.Errorf("saveClusterNodesToDB[%s] failed: %v", taskID, err) + return err + } + if len(nodes) == 0 { + blog.Errorf("saveClusterNodesToDB[%s] cmdb sync nodes failed: %v", taskID, opt.InstanceIPs) + return errors.New("cmdb sync nodes failed") + } + + // update response information to task common params + if task.CommonParams == nil { + task.CommonParams = make(map[string]string) + } + if len(opt.InstanceIPs) > 0 && len(opt.DeviceIDs) > 0 { + task.CommonParams[cloudprovider.DeviceIDsKey.String()] = strings.Join(opt.DeviceIDs, ",") + // Job Result parameter + task.NodeIPList = opt.InstanceIPs + task.CommonParams[cloudprovider.NodeIPsKey.String()] = strings.Join(opt.InstanceIPs, ",") + task.CommonParams[cloudprovider.DynamicNodeIPListKey.String()] = strings.Join(opt.InstanceIPs, ",") + task.CommonParams[cloudprovider.NodeIDsKey.String()] = strings.Join(opt.InstanceIDs, ",") + } + + for _, n := range nodes { + n.ClusterID = info.NodeGroup.ClusterID + n.NodeGroupID = info.NodeGroup.NodeGroupID + n.Passwd = opt.Password + n.Status = common.StatusInitialization + n.DeviceID = instanceToDeviceID[n.InnerIP] + err = cloudprovider.SaveNodeInfoToDB(ctx, n, true) + if err != nil { + blog.Errorf("saveClusterNodesToDB[%s] SaveNodeInfoToDB[%s] failed: %v", taskID, n.InnerIP, err) + } + } + + return nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/utils.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/utils.go index 86add0870b..46954ed7e0 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/utils.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/utils.go @@ -10,14 +10,17 @@ * limitations under the License. */ +// Package blueking xxx package blueking import ( "fmt" + "strconv" "strings" proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/common" ) var ( @@ -33,6 +36,25 @@ const ( deleteClusterTaskTemplate = "blueking-delete cluster: %s" // createClusterTaskTemplate bk-sops delete cluster task template createClusterTaskTemplate = "blueking-create cluster: %s" + // importClusterTaskTemplate bk-sops import cluster task template + importClusterTaskTemplate = "blueking-import cluster: %s" + + // createNodeGroupTaskTemplate bk-sops add task template + createNodeGroupTaskTemplate = "blueking-create node group: %s/%s" + // deleteNodeGroupTaskTemplate bk-sops add task template + deleteNodeGroupTaskTemplate = "blueking-delete node group: %s/%s" + // updateNodeGroupDesiredNodeTemplate bk-sops add task template + updateNodeGroupDesiredNodeTemplate = "blueking-update node group desired node: %s/%s" + // cleanNodeGroupNodesTaskTemplate bk-sops add task template + cleanNodeGroupNodesTaskTemplate = "blueking-remove node group nodes: %s/%s" + // updateNodeGroupTaskTemplate bk-sops add task template + updateNodeGroupTaskTemplate = "blueking-update node group: %s/%s" + // updateAutoScalingOptionTemplate bk-sops add task template + updateAutoScalingOptionTemplate = "blueking-update auto scaling option: %s" + // switchAutoScalingOptionStatusTemplate bk-sops add task template + switchAutoScalingOptionStatusTemplate = "blueking-switch auto scaling option status: %s" + // switchNodeGroupAutoScalingTaskTemplate bk-sops add task template + switchNodeGroupAutoScalingTaskTemplate = "blueking-switch node group auto scaling: %s/%s" ) var ( @@ -89,6 +111,30 @@ var ( StepMethod: fmt.Sprintf("%s-UpdateRemoveNodeDBInfoTask", cloudName), StepName: "更新任务状态", } + + // create nodeGroup task: stepName and stepMethod + createNodePoolStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-CreateNodePoolTask", cloudName), + StepName: "创建资源池", + } + + // delete nodeGroup task: stepName and stepMethod + deleteNodePoolStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-CheckCleanDBDataTask", cloudName), + StepName: "清理节点组数据", + } + + // update desired nodes task + applyNodesFromResourcePoolStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-%s", cloudName, cloudprovider.ApplyInstanceMachinesTask), + StepName: "申请节点任务", + } + + // clean nodes in group task + returnNodesToResourcePoolStep = cloudprovider.StepInfo{ + StepMethod: fmt.Sprintf("%s-ReturnNodesToResourcePoolTask", cloudName), + StepName: "回收节点", + } ) // CreateClusterTaskOption for build create cluster step @@ -179,3 +225,123 @@ func (dn *RemoveNodesTaskOption) BuildUpdateRemoveNodeDbInfoStep(task *proto.Tas task.Steps[updateRemoveNodeDBInfoStep.StepMethod] = removeStep task.StepSequence = append(task.StepSequence, updateRemoveNodeDBInfoStep.StepMethod) } + +// CreateNodeGroupOption xxx +type CreateNodeGroupOption struct { + NodeGroup *proto.NodeGroup + Cluster *proto.Cluster + PoolProvider string + PoolID string +} + +// BuildCreateCloudNodeGroupStep xxx +func (cn *CreateNodeGroupOption) BuildCreateCloudNodeGroupStep(task *proto.Task) { + createStep := cloudprovider.InitTaskStep(createNodePoolStep) + + createStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Cluster.ClusterID + createStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + createStep.Params[cloudprovider.NodeGroupIDKey.String()] = cn.NodeGroup.NodeGroupID + createStep.Params[cloudprovider.PoolProvider.String()] = cn.PoolProvider + createStep.Params[cloudprovider.PoolID.String()] = cn.PoolID + + task.Steps[createNodePoolStep.StepMethod] = createStep + task.StepSequence = append(task.StepSequence, createNodePoolStep.StepMethod) +} + +// DeleteNodeGroupOption xxx +type DeleteNodeGroupOption struct { + NodeGroup *proto.NodeGroup + Cluster *proto.Cluster + NodeIDs []string + NodeIPs []string + Operator string +} + +// BuildDeleteCloudNodeGroupStep xxx +func (dn *DeleteNodeGroupOption) BuildDeleteCloudNodeGroupStep(task *proto.Task) { + deleteStep := cloudprovider.InitTaskStep(deleteNodePoolStep) + + deleteStep.Params[cloudprovider.NodeIPsKey.String()] = strings.Join(dn.NodeIPs, ",") + deleteStep.Params[cloudprovider.NodeGroupIDKey.String()] = dn.NodeGroup.NodeGroupID + + task.Steps[deleteNodePoolStep.StepMethod] = deleteStep + task.StepSequence = append(task.StepSequence, deleteNodePoolStep.StepMethod) +} + +// UpdateDesiredNodesTaskOption 扩容节点组节点 +type UpdateDesiredNodesTaskOption struct { + Cluster *proto.Cluster + Group *proto.NodeGroup + Cloud *proto.Cloud + Desired uint32 + Operator string +} + +// BuildApplyInstanceStep 在资源池中申请节点实例 +func (ud *UpdateDesiredNodesTaskOption) BuildApplyInstanceStep(task *proto.Task) { + applyInstanceStep := cloudprovider.InitTaskStep(applyNodesFromResourcePoolStep) + + applyInstanceStep.Params[cloudprovider.ClusterIDKey.String()] = ud.Group.ClusterID + applyInstanceStep.Params[cloudprovider.NodeGroupIDKey.String()] = ud.Group.NodeGroupID + applyInstanceStep.Params[cloudprovider.CloudIDKey.String()] = ud.Cluster.Provider + applyInstanceStep.Params[cloudprovider.ScalingNodesNumKey.String()] = strconv.Itoa(int(ud.Desired)) + applyInstanceStep.Params[cloudprovider.OperatorKey.String()] = ud.Operator + + task.Steps[applyNodesFromResourcePoolStep.StepMethod] = applyInstanceStep + task.StepSequence = append(task.StepSequence, applyNodesFromResourcePoolStep.StepMethod) +} + +// BuildNodeAnnotationsStep set node annotations +func (ud *UpdateDesiredNodesTaskOption) BuildNodeAnnotationsStep(task *proto.Task) { + if ud.Group == nil || ud.Group.NodeTemplate == nil || len(ud.Group.NodeTemplate.Annotations) == 0 { + return + } + common.BuildNodeAnnotationsTaskStep(task, ud.Cluster.ClusterID, nil, ud.Group.NodeTemplate.Annotations) +} + +// BuildNodeCommonLabelsStep set node common labels +func (ud *UpdateDesiredNodesTaskOption) BuildNodeCommonLabelsStep(task *proto.Task) { + common.BuildNodeLabelsTaskStep(task, ud.Cluster.ClusterID, nil, cloudprovider.GetLabelsByNg(ud.Group)) +} + +// BuildResourcePoolDeviceLabelStep set devices labels +func (ud *UpdateDesiredNodesTaskOption) BuildResourcePoolDeviceLabelStep(task *proto.Task) { + common.BuildResourcePoolLabelTaskStep(task, ud.Cluster.ClusterID) +} + +// BuildUnCordonNodesStep 设置节点可调度状态 +func (ud *UpdateDesiredNodesTaskOption) BuildUnCordonNodesStep(task *proto.Task) { + unCordonStep := cloudprovider.InitTaskStep(common.UnCordonNodesActionStep) + + unCordonStep.Params[cloudprovider.ClusterIDKey.String()] = ud.Cluster.ClusterID + + task.Steps[common.UnCordonNodesActionStep.StepMethod] = unCordonStep + task.StepSequence = append(task.StepSequence, common.UnCordonNodesActionStep.StepMethod) +} + +// CleanNodesInGroupTaskOption for build CleanNodesInGroupTask step +type CleanNodesInGroupTaskOption struct { + Group *proto.NodeGroup + Cluster *proto.Cluster + NodeIDs []string + NodeIPs []string + DeviceIDs []string + Operator string +} + +// BuildReturnNodesToResourcePoolStep 归还节点到资源池 +func (cn *CleanNodesInGroupTaskOption) BuildReturnNodesToResourcePoolStep(task *proto.Task) { + returnNodesStep := cloudprovider.InitTaskStep(returnNodesToResourcePoolStep) + + returnNodesStep.Params[cloudprovider.ClusterIDKey.String()] = cn.Group.ClusterID + returnNodesStep.Params[cloudprovider.NodeGroupIDKey.String()] = cn.Group.NodeGroupID + returnNodesStep.Params[cloudprovider.CloudIDKey.String()] = cn.Cluster.Provider + returnNodesStep.Params[cloudprovider.OperatorKey.String()] = cn.Operator + + returnNodesStep.Params[cloudprovider.NodeIPsKey.String()] = strings.Join(cn.NodeIPs, ",") + returnNodesStep.Params[cloudprovider.NodeIDsKey.String()] = strings.Join(cn.NodeIDs, ",") + returnNodesStep.Params[cloudprovider.DeviceIDsKey.String()] = strings.Join(cn.DeviceIDs, ",") + + task.Steps[returnNodesToResourcePoolStep.StepMethod] = returnNodesStep + task.StepSequence = append(task.StepSequence, returnNodesToResourcePoolStep.StepMethod) +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/validate.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/validate.go index 6be4a9fe55..10e795cbd6 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/validate.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/validate.go @@ -10,6 +10,7 @@ * limitations under the License. */ +// Package blueking xxx package blueking import ( @@ -73,10 +74,16 @@ func (c *CloudValidate) ImportClusterValidate(req *proto.ImportClusterReq, opt * return fmt.Errorf("%s ImportClusterValidate options is empty", cloudName) } - if req.CloudMode.KubeConfig == "" { - return fmt.Errorf("%s ImportClusterValidate cluster kubeConfig empty", cloudName) + if len(req.GetCloudMode().GetNodeIps()) == 0 && req.CloudMode.KubeConfig == "" { + return fmt.Errorf("%s ImportClusterValidate cluster kubeConfig/nodeIps empty", cloudName) } + // 机器导入模式 + if len(req.GetCloudMode().GetNodeIps()) > 0 { + return nil + } + + // kubeConfig模式 _, err := types.GetKubeConfigFromYAMLBody(false, types.YamlInput{ FileName: "", YamlContent: req.CloudMode.KubeConfig, diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/component/autoscaler/values.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/component/autoscaler/values.go index 730644fba8..c49df66e6e 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/component/autoscaler/values.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/component/autoscaler/values.go @@ -182,7 +182,12 @@ func (as *AutoScaler) GetValues() (string, error) { Token: op.ComponentDeploy.Token, ReplicaCount: as.Replicas, Encryption: encryptNo, - Registry: op.ComponentDeploy.Registry, + Registry: func() string { + if op.ComponentDeploy.AutoScaler.CaImageRegistry != "" { + return op.ComponentDeploy.AutoScaler.CaImageRegistry + } + return op.ComponentDeploy.Registry + }(), } if cmoptions.GetEditionInfo().IsInnerEdition() { diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/google/tasks/createNodeGroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/google/tasks/createNodeGroup.go index 1d869b6a2e..2a0cc2c6ab 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/google/tasks/createNodeGroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/google/tasks/createNodeGroup.go @@ -137,7 +137,7 @@ func generateCreateNodePoolInput(group *proto.NodeGroup, cluster *proto.Cluster) // gke nodePool名称中不允许有大写字母 Name: group.CloudNodeGroupID, Config: generateNodeConfig(group), - InitialNodeCount: 0, + InitialNodeCount: int64(group.AutoScaling.DesiredSize), Locations: group.AutoScaling.Zones, MaxPodsConstraint: &api.MaxPodsConstraint{ MaxPodsPerNode: int64(group.NodeTemplate.MaxPodsPerNode), diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/cleanNodesInGroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/cleanNodesInGroup.go index ef5d704222..e7b95d21c2 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/cleanNodesInGroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/cleanNodesInGroup.go @@ -23,6 +23,7 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud/business" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" ) // RemoveNodesFromClusterTask remove nodes from cluster @@ -132,7 +133,7 @@ func ReturnInstanceToResourcePoolTask(taskID, stepName string) error { ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) // return device from resource-manager module if ResourceModule true, else retain yunti style - orderID, err := destroyDeviceList(ctx, dependInfo, deviceList, operator) + orderID, err := utils.DestroyDeviceList(ctx, dependInfo, deviceList, operator) if err != nil { blog.Errorf("ReturnInstanceToResourcePoolTask[%s] destroyDeviceList[%v] from NodeGroup %s failed: %v", taskID, nodeIDList, nodeGroupID, err.Error()) diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/createNodeGroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/createNodeGroup.go index 00ce0a7ea1..f1e0fc3458 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/createNodeGroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/createNodeGroup.go @@ -15,15 +15,12 @@ package tasks import ( "context" "fmt" - "strings" "time" "github.com/Tencent/bk-bcs/bcs-common/common/blog" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/resource" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/resource/tresource" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" ) // CreateNodePoolTask create nodePool @@ -65,7 +62,7 @@ func CreateNodePoolTask(taskID, stepName string) error { // inject taskID ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) - err = createNodeGroupAction(ctx, dependInfo, cloudprovider.ResourcePoolData{ + err = utils.CreateResourcePoolAction(ctx, dependInfo, cloudprovider.ResourcePoolData{ Provider: poolProvider, ResourcePoolID: resourcePoolID, }) @@ -83,49 +80,3 @@ func CreateNodePoolTask(taskID, stepName string) error { } return nil } - -func createNodeGroupAction(ctx context.Context, data *cloudprovider.CloudDependBasicInfo, - pool cloudprovider.ResourcePoolData) error { - taskID := cloudprovider.GetTaskIDFromContext(ctx) - consumerID, err := createResourcePool(ctx, data, pool) - if err != nil { - blog.Errorf("createNodeGroupAction[%s] failed: %v", taskID, err) - return err - } - - err = cloudprovider.UpdateNodeGroupCloudAndModuleInfo(data.NodeGroup.NodeGroupID, consumerID, - true, data.Cluster.BusinessID) - if err != nil { - blog.Errorf("createNodeGroupAction[%s] UpdateNodeGroupCloudAndModuleInfo failed: %v", taskID, err) - return err - } - - blog.Infof("createNodeGroupAction[%s] successful", taskID) - return nil -} - -func createResourcePool(ctx context.Context, data *cloudprovider.CloudDependBasicInfo, - pool cloudprovider.ResourcePoolData) (string, error) { - taskID := cloudprovider.GetTaskIDFromContext(ctx) - - consumerID, err := tresource.GetResourceManagerClient().CreateResourcePool(ctx, resource.ResourcePoolInfo{ - Name: data.NodeGroup.NodeGroupID, - Provider: pool.Provider, - ClusterID: data.Cluster.ClusterID, - RelativeDevicePool: func() []string { - if pool.ResourcePoolID == "" { - return nil - } - return strings.Split(pool.ResourcePoolID, ",") - }(), - PoolID: []string{pool.ResourcePoolID}, - Operator: common.ClusterManager, - }) - if err != nil { - blog.Errorf("task[%s] createResourcePool failed: %v", taskID, err) - return "", err - } - - blog.Infof("task[%s] createResourcePool successful[%s]", taskID, consumerID) - return consumerID, nil -} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/deleteNodeGroupTask.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/deleteNodeGroup.go similarity index 93% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/deleteNodeGroupTask.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/deleteNodeGroup.go index f0bad88b2f..edf81759e2 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/deleteNodeGroupTask.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/deleteNodeGroup.go @@ -20,14 +20,13 @@ import ( "github.com/Tencent/bk-bcs/bcs-common/common/blog" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/resource/tresource" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" ) // CheckCleanDBDataTask delete node and nodeGroup data in db func CheckCleanDBDataTask(taskID string, stepName string) error { // step1: delete nodes // step2: delete consumer - // step3: delete nodegroup start := time.Now() // get task and task current step @@ -62,8 +61,8 @@ func CheckCleanDBDataTask(taskID string, stepName string) error { return fmt.Errorf("DeleteNodesByIPs failed %s", err.Error()) } - // step2: delete consumer - err = tresource.GetResourceManagerClient().DeleteResourcePool(context.Background(), group.ConsumerID) + // step2: delete resourcePool consumer + err = utils.DeleteResourcePoolAction(context.Background(), group.ConsumerID) if err != nil { blog.Errorf("CheckCleanDBDataTask[%s] DeleteResourcePool failed: %v", taskID, err) } diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/udateDesiredNodes.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/udateDesiredNodes.go index 2519bc50b9..9362c22416 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/udateDesiredNodes.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/udateDesiredNodes.go @@ -24,6 +24,7 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" tcommon "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/common" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud/business" + providerutils "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/utils" ) @@ -144,7 +145,7 @@ func ApplyCVMFromResourcePoolTask(taskID, stepName string) error { // nolint if manual == common.True { _ = cloudprovider.UpdateVirtualNodeStatus(clusterID, nodeGroupID, taskID) } else { - destroyDeviceList(ctx, dependInfo, recordInstanceList.DeviceIDList, operator) // nolint + providerutils.DestroyDeviceList(ctx, dependInfo, recordInstanceList.DeviceIDList, operator) // nolint _ = cloudprovider.UpdateNodeGroupDesiredSize(nodeGroupID, scalingNum, true) } _ = state.UpdateStepFailure(start, stepName, retErr) diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/utils.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/utils.go index a0f7a598fc..1504c0c6f4 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/utils.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/tasks/utils.go @@ -14,7 +14,6 @@ package tasks import ( "context" - "fmt" "github.com/Tencent/bk-bcs/bcs-common/common/blog" "github.com/avast/retry-go" @@ -22,75 +21,15 @@ import ( proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud/business" + providerutils "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/resource" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/resource/tresource" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/utils" ) -// buildApplyInstanceRequest build resource request -func buildApplyInstanceRequest(group *proto.NodeGroup, operator string) *resource.ApplyInstanceReq { - return &resource.ApplyInstanceReq{ - NodeType: resource.CVM, - - Region: group.GetRegion(), - VpcID: group.GetAutoScaling().GetVpcID(), - ZoneList: group.GetAutoScaling().GetZones(), - SubnetList: group.GetAutoScaling().GetSubnetIDs(), - InstanceType: group.GetLaunchTemplate().GetInstanceType(), - CPU: group.GetLaunchTemplate().GetCPU(), - Memory: group.GetLaunchTemplate().GetMem(), - Gpu: group.GetLaunchTemplate().GetGPU(), - InstanceChargeType: group.GetLaunchTemplate().GetInstanceChargeType(), - SystemDisk: resource.DataDisk{ - DiskType: group.GetLaunchTemplate().GetSystemDisk().GetDiskType(), - DiskSize: group.GetLaunchTemplate().GetSystemDisk().GetDiskSize(), - }, - DataDisks: func() []resource.DataDisk { - if len(group.GetLaunchTemplate().GetDataDisks()) > 0 { - disks := make([]resource.DataDisk, 0) - for _, disk := range group.GetLaunchTemplate().GetDataDisks() { - if disk == nil { - continue - } - disks = append(disks, resource.DataDisk{ - DiskType: disk.GetDiskType(), - DiskSize: disk.GetDiskSize(), - }) - } - return disks - } - - return nil - }(), - Image: func() *resource.ImageInfo { - var ( - imageId = "" - imageName = "" - ) - if group.GetLaunchTemplate() != nil && group.GetLaunchTemplate().GetImageInfo() != nil { - imageId = group.GetLaunchTemplate().GetImageInfo().ImageID - imageName = group.GetLaunchTemplate().GetImageInfo().ImageName - } - return &resource.ImageInfo{ - ImageID: imageId, - ImageName: imageName, - } - }(), - LoginInfo: &resource.LoginSettings{Password: group.GetLaunchTemplate().GetInitLoginPassword()}, - SecurityGroupIds: group.GetLaunchTemplate().GetSecurityGroupIDs(), - EnhancedService: &resource.EnhancedService{ - SecurityService: group.GetLaunchTemplate().GetIsSecurityService(), - MonitorService: group.GetLaunchTemplate().GetIsMonitorService(), - }, - PoolID: group.GetConsumerID(), - Operator: operator, - } -} - // 申请机器 func applyInstanceFromResourcePool(ctx context.Context, info *cloudprovider.CloudDependBasicInfo, - state *cloudprovider.TaskState, oldOrderId string, desired int, operator string) (*RecordInstanceList, string, error) { + state *cloudprovider.TaskState, oldOrderId string, desired int, operator string) ( + *providerutils.RecordInstanceList, string, error) { var ( orderID string err error @@ -106,7 +45,8 @@ func applyInstanceFromResourcePool(ctx context.Context, info *cloudprovider.Clou // check if already submit old task if len(oldOrderId) == 0 { - orderID, err = consumeDevicesFromResourcePool(ctx, info.NodeGroup, desired, operator) + orderID, err = providerutils.ConsumeDevicesFromResourcePool(ctx, info.NodeGroup, resource.CVM.String(), + desired, operator) if err != nil { return nil, orderID, err } @@ -117,7 +57,7 @@ func applyInstanceFromResourcePool(ctx context.Context, info *cloudprovider.Clou _ = cloudprovider.GetStorageModel().UpdateTask(context.Background(), state.Task) } - record, err := checkOrderStateFromResourcePool(ctx, getOrderId()) + record, err := providerutils.CheckOrderStateFromResourcePool(ctx, getOrderId()) if err != nil { return nil, getOrderId(), err } @@ -126,55 +66,6 @@ func applyInstanceFromResourcePool(ctx context.Context, info *cloudprovider.Clou return record, getOrderId(), nil } -// consumeDevicesFromResourcePool apply cvm instances to generate orderID form resource pool -func consumeDevicesFromResourcePool( - ctx context.Context, group *proto.NodeGroup, nodeNum int, operator string) (string, error) { - taskID := cloudprovider.GetTaskIDFromContext(ctx) - - ctx = utils.WithTraceIDForContext(ctx, taskID) - resp, err := tresource.GetResourceManagerClient().ApplyInstances(ctx, nodeNum, - buildApplyInstanceRequest(group, operator)) - if err != nil { - blog.Errorf("consumeDevicesFromResourcePool[%s] ApplyInstances failed: %v", taskID, err) - return "", err - } - - blog.Infof("consumeDevicesFromResourcePool[%s] success", taskID) - return resp.OrderID, nil -} - -// RecordInstanceList xxx -type RecordInstanceList struct { - OrderID string - InstanceIPList []string - InstanceIDList []string - DeviceIDList []string -} - -func checkOrderStateFromResourcePool(ctx context.Context, orderID string) (*RecordInstanceList, error) { - taskID := cloudprovider.GetTaskIDFromContext(ctx) - - ctx = utils.WithTraceIDForContext(ctx, taskID) - result, err := tresource.GetResourceManagerClient().CheckOrderStatus(ctx, orderID) - if err != nil { - blog.Errorf("checkOrderStateFromResourcePool[%s] CheckOrderStatus[%s] failed: %v", taskID, orderID, err) - return nil, err - } - - // get device instanceIDs & instanceIPs - if len(result.InstanceIDs) == 0 || len(result.InstanceIPs) == 0 { - retErr := fmt.Errorf("checkOrderStateFromResourcePool[%s] return instance empty", taskID) - blog.Errorf(retErr.Error()) - return nil, retErr - } - - return &RecordInstanceList{ - InstanceIPList: result.InstanceIPs, - InstanceIDList: result.InstanceIDs, - DeviceIDList: result.ExtraIDs, - }, nil -} - // RecordInstanceToDBOption xxx type RecordInstanceToDBOption struct { Password string @@ -241,30 +132,6 @@ func recordClusterCVMInfoToDB( return nil } -// 销毁归还机器 -func destroyDeviceList(ctx context.Context, info *cloudprovider.CloudDependBasicInfo, deviceList []string, - operator string) (string, error) { - taskID := cloudprovider.GetTaskIDFromContext(ctx) - if info == nil || info.NodeGroup == nil || info.Cluster == nil || len(deviceList) == 0 { - return "", fmt.Errorf("destroyDeviceList[%s] lost validate info", taskID) - } - - ctx = utils.WithTraceIDForContext(ctx, taskID) - resp, err := tresource.GetResourceManagerClient().DestroyInstances(ctx, &resource.DestroyInstanceReq{ - PoolID: info.NodeGroup.GetConsumerID(), - SystemID: info.Cluster.GetSystemID(), - InstanceIDs: deviceList, - Operator: operator, - }) - if err != nil { - blog.Errorf("destroyDeviceList[%s] DestroyInstances failed: %v", taskID, err) - return "", err - } - - blog.Infof("destroyDeviceList[%s] call DestroyInstances successfully, orders %v.", resp.OrderID) - return resp.OrderID, nil -} - // returnDevicesToRMAndCleanNodes need to handle some operations when failure // 1. clean cluster-manager data / update desired value // 2. delete cluster nodes @@ -307,7 +174,7 @@ func returnDevicesToRMAndCleanNodes(ctx context.Context, info *cloudprovider.Clo } // destroy device to resource manager - orderID, err := destroyDeviceList(ctx, info, deviceIDs, operator) + orderID, err := providerutils.DestroyDeviceList(ctx, info, deviceIDs, operator) if err != nil { blog.Errorf("returnDevicesToRMAndCleanNodes[%s] destroyDeviceList failed: %v", taskID, err) } else { diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/utils.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/utils.go index 07e429eb5a..1f748baa3e 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/utils.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/utils.go @@ -47,7 +47,7 @@ const ( ) var ( - poolInsufficientQuotaMessage = fmt.Errorf("额度不足, 请联系BCS助手") + poolInsufficientQuotaMessage = fmt.Errorf("额度不足, 请联系BCS助手") // nolint ) var ( diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/template/utils.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/template/utils.go index ab55e61c68..968e3d2ee4 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/template/utils.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/template/utils.go @@ -337,5 +337,12 @@ func getSelfBuilderClusterEnvs(cls *proto.Cluster) (string, error) { envs = append(envs, cni, apiServerHa) + for key := range cls.ExtraInfo { + if !iutils.StringInSlice(key, []string{common.ClusterMachineImportNodes, + common.ImportType, common.ClusterResourceGroup}) && cls.ExtraInfo[key] != "" { + envs = append(envs, getEnv(key, cls.ExtraInfo[key])) + } + } + return strings.Join(envs, ";"), nil } diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils.go index 8241a8d217..dee286abd3 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils.go @@ -392,8 +392,9 @@ func UpdateClusterCredentialByConfig(clusterID string, config *types.Config) err clientKey = string(config.AuthInfos[0].AuthInfo.ClientKeyData) } - if server == "" || caCertData == "" || (token == "" && (clientCert == "" || clientKey == "")) { - return fmt.Errorf("importClusterCredential parse kubeConfig failed: %v", "[server|caCertData|token] null") + if server == "" || (token == "" && (clientCert == "" || clientKey == "")) { + return fmt.Errorf("importClusterCredential parse kubeConfig "+ + "failed: %v", "[server|token|clientCert] empty") } // need to handle crypt diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils/resourcepool.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils/resourcepool.go new file mode 100644 index 0000000000..63d7f81eee --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils/resourcepool.go @@ -0,0 +1,245 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package utils + +import ( + "context" + "fmt" + "strings" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + + proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/resource" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/resource/tresource" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/utils" +) + +// resourceManager resource pool operation + +// CreateResourcePoolAction create nodeGroup resource pool +func CreateResourcePoolAction(ctx context.Context, data *cloudprovider.CloudDependBasicInfo, + pool cloudprovider.ResourcePoolData) error { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + consumerID, err := createResourcePool(ctx, data, pool) + if err != nil { + blog.Errorf("createNodeGroupAction[%s] failed: %v", taskID, err) + return err + } + + err = cloudprovider.UpdateNodeGroupCloudAndModuleInfo(data.NodeGroup.NodeGroupID, consumerID, + true, data.Cluster.BusinessID) + if err != nil { + blog.Errorf("createNodeGroupAction[%s] UpdateNodeGroupCloudAndModuleInfo failed: %v", taskID, err) + return err + } + + blog.Infof("createNodeGroupAction[%s] successful", taskID) + return nil +} + +func createResourcePool(ctx context.Context, data *cloudprovider.CloudDependBasicInfo, + pool cloudprovider.ResourcePoolData) (string, error) { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + + consumerID, err := tresource.GetResourceManagerClient().CreateResourcePool(ctx, resource.ResourcePoolInfo{ + Name: data.NodeGroup.NodeGroupID, + Provider: pool.Provider, + ClusterID: data.Cluster.ClusterID, + RelativeDevicePool: func() []string { + if pool.ResourcePoolID == "" { + return nil + } + return strings.Split(pool.ResourcePoolID, ",") + }(), + PoolID: []string{pool.ResourcePoolID}, + Operator: common.ClusterManager, + }) + if err != nil { + blog.Errorf("task[%s] createResourcePool failed: %v", taskID, err) + return "", err + } + + blog.Infof("task[%s] createResourcePool successful[%s]", taskID, consumerID) + return consumerID, nil +} + +// DeleteResourcePoolAction delete nodeGroup resource pool +func DeleteResourcePoolAction(ctx context.Context, consumerId string) error { + return tresource.GetResourceManagerClient().DeleteResourcePool(ctx, consumerId) +} + +// DestroyDeviceList 销毁节点池归还机器 +func DestroyDeviceList(ctx context.Context, info *cloudprovider.CloudDependBasicInfo, deviceList []string, + operator string) (string, error) { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + if info == nil || info.NodeGroup == nil || info.Cluster == nil || len(deviceList) == 0 { + return "", fmt.Errorf("destroyDeviceList[%s] lost validate info", taskID) + } + + ctx = utils.WithTraceIDForContext(ctx, taskID) + resp, err := tresource.GetResourceManagerClient().DestroyInstances(ctx, &resource.DestroyInstanceReq{ + PoolID: info.NodeGroup.GetConsumerID(), + SystemID: info.Cluster.GetSystemID(), + InstanceIDs: deviceList, + Operator: operator, + }) + if err != nil { + blog.Errorf("destroyDeviceList[%s] DestroyInstances failed: %v", taskID, err) + return "", err + } + + blog.Infof("destroyDeviceList[%s] call DestroyInstances successfully, orders %v.", resp.OrderID) + return resp.OrderID, nil +} + +// buildApplyCvmInstanceRequest build resource request +func buildApplyCvmInstanceRequest(group *proto.NodeGroup, operator string) *resource.ApplyInstanceReq { + return &resource.ApplyInstanceReq{ + NodeType: resource.CVM, + + Region: group.GetRegion(), + VpcID: group.GetAutoScaling().GetVpcID(), + ZoneList: group.GetAutoScaling().GetZones(), + SubnetList: group.GetAutoScaling().GetSubnetIDs(), + InstanceType: group.GetLaunchTemplate().GetInstanceType(), + CPU: group.GetLaunchTemplate().GetCPU(), + Memory: group.GetLaunchTemplate().GetMem(), + Gpu: group.GetLaunchTemplate().GetGPU(), + InstanceChargeType: group.GetLaunchTemplate().GetInstanceChargeType(), + SystemDisk: resource.DataDisk{ + DiskType: group.GetLaunchTemplate().GetSystemDisk().GetDiskType(), + DiskSize: group.GetLaunchTemplate().GetSystemDisk().GetDiskSize(), + }, + DataDisks: func() []resource.DataDisk { + if len(group.GetLaunchTemplate().GetDataDisks()) > 0 { + disks := make([]resource.DataDisk, 0) + for _, disk := range group.GetLaunchTemplate().GetDataDisks() { + if disk == nil { + continue + } + disks = append(disks, resource.DataDisk{ + DiskType: disk.GetDiskType(), + DiskSize: disk.GetDiskSize(), + }) + } + return disks + } + + return nil + }(), + Image: func() *resource.ImageInfo { + var ( + imageId = "" + imageName = "" + ) + if group.GetLaunchTemplate() != nil && group.GetLaunchTemplate().GetImageInfo() != nil { + imageId = group.GetLaunchTemplate().GetImageInfo().ImageID + imageName = group.GetLaunchTemplate().GetImageInfo().ImageName + } + return &resource.ImageInfo{ + ImageID: imageId, + ImageName: imageName, + } + }(), + LoginInfo: &resource.LoginSettings{Password: group.GetLaunchTemplate().GetInitLoginPassword()}, + SecurityGroupIds: group.GetLaunchTemplate().GetSecurityGroupIDs(), + EnhancedService: &resource.EnhancedService{ + SecurityService: group.GetLaunchTemplate().GetIsSecurityService(), + MonitorService: group.GetLaunchTemplate().GetIsMonitorService(), + }, + PoolID: group.GetConsumerID(), + Operator: operator, + } +} + +// buildApplyIdcNodesRequest build resource request +func buildApplyIdcNodesRequest(group *proto.NodeGroup, operator string) *resource.ApplyInstanceReq { + return &resource.ApplyInstanceReq{ + NodeType: resource.IDC, + + CPU: group.GetLaunchTemplate().GetCPU(), + Memory: group.GetLaunchTemplate().GetMem(), + Gpu: group.GetLaunchTemplate().GetGPU(), + Region: group.GetRegion(), + VpcID: group.GetAutoScaling().GetVpcID(), + ZoneList: group.GetAutoScaling().GetZones(), + SubnetList: group.GetAutoScaling().GetSubnetIDs(), + InstanceType: group.GetLaunchTemplate().GetInstanceType(), + PoolID: group.GetConsumerID(), + Operator: operator, + Selector: group.GetLaunchTemplate().GetSelector(), + } +} + +// ConsumeDevicesFromResourcePool apply cvm instances to generate orderID form resource pool +func ConsumeDevicesFromResourcePool( + ctx context.Context, group *proto.NodeGroup, resourceType string, nodeNum int, operator string) (string, error) { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + + ctx = utils.WithTraceIDForContext(ctx, taskID) + + req := &resource.ApplyInstanceReq{} // nolint ineffassign(ineffectual assignment to req) + switch resourceType { + case resource.CVM.String(): + req = buildApplyCvmInstanceRequest(group, operator) + case resource.IDC.String(): + req = buildApplyIdcNodesRequest(group, operator) + default: + return "", fmt.Errorf("task[%s] not support resourceType[%s]", taskID, resourceType) + } + + resp, err := tresource.GetResourceManagerClient().ApplyInstances(ctx, nodeNum, req) + if err != nil { + blog.Errorf("consumeDevicesFromResourcePool[%s] ApplyInstances failed: %v", taskID, err) + return "", err + } + + blog.Infof("consumeDevicesFromResourcePool[%s] success", taskID) + return resp.OrderID, nil +} + +// RecordInstanceList xxx +type RecordInstanceList struct { + OrderID string + InstanceIPList []string + InstanceIDList []string + DeviceIDList []string +} + +// CheckOrderStateFromResourcePool check order status from resource pool +func CheckOrderStateFromResourcePool(ctx context.Context, orderID string) (*RecordInstanceList, error) { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + + ctx = utils.WithTraceIDForContext(ctx, taskID) + result, err := tresource.GetResourceManagerClient().CheckOrderStatus(ctx, orderID) + if err != nil { + blog.Errorf("checkOrderStateFromResourcePool[%s] CheckOrderStatus[%s] failed: %v", taskID, orderID, err) + return nil, err + } + + // get device instanceIDs & instanceIPs + if len(result.InstanceIDs) == 0 || len(result.InstanceIPs) == 0 { + retErr := fmt.Errorf("checkOrderStateFromResourcePool[%s] return instance empty", taskID) + blog.Errorf(retErr.Error()) + return nil, retErr + } + + return &RecordInstanceList{ + InstanceIPList: result.InstanceIPs, + InstanceIDList: result.InstanceIDs, + DeviceIDList: result.ExtraIDs, + }, nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/common/constant.go b/bcs-services/bcs-cluster-manager/internal/common/constant.go index 5831fa68b8..54f1750d92 100644 --- a/bcs-services/bcs-cluster-manager/internal/common/constant.go +++ b/bcs-services/bcs-cluster-manager/internal/common/constant.go @@ -327,10 +327,16 @@ const ( KubeConfigImport = "kubeConfig" // CloudImport import CloudImport = "cloud" + // MachineImport machine import + MachineImport = "machine" + // ImportType cloud import type ImportType = "importType" // ClusterResourceGroup cluster resource group ClusterResourceGroup = "clusterResourceGroup" + // ClusterMachineImportNodes import nodes + ClusterMachineImportNodes = "clusterMachineImportNodes" + // NodeResourceGroup xxx NodeResourceGroup = "nodeResourceGroup" diff --git a/bcs-services/bcs-cluster-manager/internal/options/options.go b/bcs-services/bcs-cluster-manager/internal/options/options.go index 600a2d05dd..2182cc2aab 100644 --- a/bcs-services/bcs-cluster-manager/internal/options/options.go +++ b/bcs-services/bcs-cluster-manager/internal/options/options.go @@ -202,6 +202,7 @@ type AutoScaler struct { ReleaseName string `json:"releaseName"` ReleaseNamespace string `json:"releaseNamespace"` IsPublicRepo bool `json:"isPublicRepo"` + CaImageRegistry string `json:"caImageRegistry"` } // BcsWatch config diff --git a/bcs-services/bcs-cluster-manager/internal/remote/cmdb/ip_selector.go b/bcs-services/bcs-cluster-manager/internal/remote/cmdb/ip_selector.go index e91ca0443c..e4c58a5f45 100644 --- a/bcs-services/bcs-cluster-manager/internal/remote/cmdb/ip_selector.go +++ b/bcs-services/bcs-cluster-manager/internal/remote/cmdb/ip_selector.go @@ -89,7 +89,7 @@ func (ipSelector *ipSelectorClient) GetBizTopoHostData( } // GetBizHostDetailedData xxx -func GetBizHostDetailedData(cmdb *Client, gseCli gse.Interface, +func GetBizHostDetailedData(cmdb *Client, gseCli gse.Interface, // nolint bizID int, module []HostModuleInfo) ([]HostDetailInfo, error) { hostTopos, err := cmdb.FetchAllHostTopoRelationsByBizID(bizID) diff --git a/bcs-services/bcs-monitor/pkg/api/metrics/query/bk_monitor.go b/bcs-services/bcs-monitor/pkg/api/metrics/query/bk_monitor.go index 33b9de0533..47c867eab2 100644 --- a/bcs-services/bcs-monitor/pkg/api/metrics/query/bk_monitor.go +++ b/bcs-services/bcs-monitor/pkg/api/metrics/query/bk_monitor.go @@ -202,7 +202,7 @@ func (h BKMonitorHandler) ClusterDiskUsage(c *rest.Context) (promclient.ResultDa // nolint func (h BKMonitorHandler) ClusterDiskioUsage(c *rest.Context) (promclient.ResultData, error) { promql := `sum(max by(instance) (rate(bkmonitor:node_disk_io_time_seconds_total{bcs_cluster_id="%s"}[2m]))) / ` + - `count(max by(instance) (rate(bkmonitor:node_disk_io_time_seconds_total{bcs_cluster_id="%s"}[2m])))` + `count(max by(instance) (rate(bkmonitor:node_disk_io_time_seconds_total{bcs_cluster_id="%s"}[2m]))) * 100` return h.handleBKMonitorClusterMetric(c, promql) } diff --git a/bcs-services/bcs-monitor/pkg/component/bk_log/types.go b/bcs-services/bcs-monitor/pkg/component/bk_log/types.go index 3a3629de48..8e81259375 100644 --- a/bcs-services/bcs-monitor/pkg/component/bk_log/types.go +++ b/bcs-services/bcs-monitor/pkg/component/bk_log/types.go @@ -207,6 +207,10 @@ func (resp *ListBCSCollectorRespData) ToLogRule() LogRule { rule := LogRule{ AddPodLabel: resp.AddPodLabel, ExtraLabels: make([]Label, 0), + LogRuleContainer: LogRuleContainer{ + Namespaces: make([]string, 0), + Paths: make([]string, 0), + }, } if resp.ExtraLabels != nil { rule.ExtraLabels = resp.ExtraLabels diff --git a/bcs-services/bcs-project-manager/internal/actions/project/list.go b/bcs-services/bcs-project-manager/internal/actions/project/list.go index 4e3c1167c3..310d85f1b6 100644 --- a/bcs-services/bcs-project-manager/internal/actions/project/list.go +++ b/bcs-services/bcs-project-manager/internal/actions/project/list.go @@ -21,6 +21,7 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/bcs-project-manager/internal/auth" "github.com/Tencent/bk-bcs/bcs-services/bcs-project-manager/internal/common/page" + "github.com/Tencent/bk-bcs/bcs-services/bcs-project-manager/internal/config" "github.com/Tencent/bk-bcs/bcs-services/bcs-project-manager/internal/logging" "github.com/Tencent/bk-bcs/bcs-services/bcs-project-manager/internal/store" pm "github.com/Tencent/bk-bcs/bcs-services/bcs-project-manager/internal/store/project" @@ -129,18 +130,31 @@ func (lap *ListAuthorizedProject) Do(ctx context.Context, return nil, nil } if req.All { - // all 为 true 时,返回所有项目并排序和分页,支持模糊查询 - projects, total, err = lap.model.SearchProjects(ctx, ids, req.SearchKey, req.Kind, - &page.Pagination{Offset: req.Offset, Limit: req.Limit}) - } else if any { - // all 为 false 时,直接返回所有有权限的项目,分页和模糊查询无效 - cond := operator.EmptyCondition + if config.GlobalConf.RestrictAuthorizedProjects { + // all 为 true 且限权显示用户授权的项目列表时,仅查看用户有权限的项目,并支持模糊查询和分页 + if any { + projects, total, err = lap.model.SearchProjects(ctx, ids, nil, req.SearchKey, req.Kind, + &page.Pagination{Offset: req.Offset, Limit: req.Limit}) + } else { + projects, total, err = lap.model.SearchProjects(ctx, nil, ids, req.SearchKey, req.Kind, + &page.Pagination{Offset: req.Offset, Limit: req.Limit}) + } + } else { + // all 为 true 且不限权时,返回所有项目并排序和分页,支持模糊查询 + projects, total, err = lap.model.SearchProjects(ctx, ids, nil, req.SearchKey, req.Kind, + &page.Pagination{Offset: req.Offset, Limit: req.Limit}) + } + } else { + // all 为 false 且用户没有全部项目查看权限时,返回用户有权限的项目,分页和模糊查询都无效 + condKind := make(operator.M) + condID := make(operator.M) if req.Kind != "" { - cond = operator.NewLeafCondition(operator.Eq, operator.M{"kind": req.Kind}) + condKind["kind"] = req.Kind } + condID["projectID"] = ids + cond := operator.NewBranchCondition(operator.And, + operator.NewLeafCondition(operator.In, condID), operator.NewLeafCondition(operator.Eq, condKind)) projects, total, err = lap.model.ListProjects(ctx, cond, &page.Pagination{All: true}) - } else { - projects, total, err = lap.model.ListProjectByIDs(ctx, req.Kind, ids, &page.Pagination{All: true}) } if err != nil { return nil, err diff --git a/bcs-services/bcs-project-manager/internal/component/bcscc/bcscc.go b/bcs-services/bcs-project-manager/internal/component/bcscc/bcscc.go index 0283a40300..96cbea50f3 100644 --- a/bcs-services/bcs-project-manager/internal/component/bcscc/bcscc.go +++ b/bcs-services/bcs-project-manager/internal/component/bcscc/bcscc.go @@ -151,10 +151,7 @@ func CreateProject(p *pm.Project) error { Data: data, } req.QueryData = url.Values{} - if bcsCCConf.UseGateway { - data["app_code"] = config.GlobalConf.App.Code - data["app_secret"] = config.GlobalConf.App.Secret - } else { + if !bcsCCConf.UseGateway { accessToken, err := GetAccessToken() if err != nil { return err @@ -180,10 +177,7 @@ func UpdateProject(p *pm.Project) error { Data: data, } req.QueryData = url.Values{} - if bcsCCConf.UseGateway { - data["app_code"] = config.GlobalConf.App.Code - data["app_secret"] = config.GlobalConf.App.Secret - } else { + if !bcsCCConf.UseGateway { accessToken, err := GetAccessToken() if err != nil { return err @@ -220,10 +214,7 @@ func CreateNamespace(projectCode, clusterID, name, creator string) error { Data: data, } req.QueryData = url.Values{} - if bcsCCConf.UseGateway { - data["app_code"] = config.GlobalConf.App.Code - data["app_secret"] = config.GlobalConf.App.Secret - } else { + if !bcsCCConf.UseGateway { accessToken, err := GetAccessToken() if err != nil { return err @@ -251,10 +242,7 @@ func ListNamespaces(projectCode, clusterID string) (*ListNamespaceData, error) { } req.QueryData = url.Values{} req.QueryData.Add("desire_all_data", "1") - if bcsCCConf.UseGateway { - req.QueryData.Add("app_code", config.GlobalConf.App.Code) - req.QueryData.Add("app_secret", config.GlobalConf.App.Secret) - } else { + if !bcsCCConf.UseGateway { accessToken, err := GetAccessToken() if err != nil { return nil, err @@ -355,8 +343,7 @@ func constructProjectData(p *pm.Project) map[string]interface{} { func requestCommonAndParse(req gorequest.SuperAgent) error { // 获取返回数据 - headers := map[string]string{"Content-Type": "application/json"} - body, err := component.Request(req, timeout, "", headers) + body, err := component.Request(req, timeout, "", component.GetAuthHeader()) if err != nil { logging.Error("request paas-cc error, data: %v, err: %v", req.Data, err) return errorx.NewRequestBCSCCErr(err.Error()) @@ -378,8 +365,7 @@ func requestCommonAndParse(req gorequest.SuperAgent) error { func requestListNamespacesAndParse(req gorequest.SuperAgent) (*ListNamespaceData, error) { // 获取返回数据 - headers := map[string]string{"Content-Type": "application/json"} - body, err := component.Request(req, timeout, "", headers) + body, err := component.Request(req, timeout, "", component.GetAuthHeader()) if err != nil { logging.Error("request paas-cc error, data: %v, err: %v", req.Data, err) return nil, errorx.NewRequestBCSCCErr(err.Error()) diff --git a/bcs-services/bcs-project-manager/internal/component/cmdb/cmdb.go b/bcs-services/bcs-project-manager/internal/component/cmdb/cmdb.go index 11b8bd8b52..da85333d13 100644 --- a/bcs-services/bcs-project-manager/internal/component/cmdb/cmdb.go +++ b/bcs-services/bcs-project-manager/internal/component/cmdb/cmdb.go @@ -146,7 +146,6 @@ func SearchBusiness(username string, bizID string) (*SearchBusinessData, error) if config.GlobalConf.CMDB.BKSupplierAccount != "" { supplierAccount = config.GlobalConf.CMDB.BKSupplierAccount } - headers := map[string]string{"Content-Type": "application/json"} // 组装请求参数 condition := map[string]interface{}{} if username != "" { @@ -162,14 +161,11 @@ func SearchBusiness(username string, bizID string) (*SearchBusinessData, error) Data: map[string]interface{}{ "condition": condition, "bk_supplier_account": supplierAccount, - "bk_app_code": config.GlobalConf.App.Code, - "bk_app_secret": config.GlobalConf.App.Secret, - "bk_username": config.GlobalConf.CMDB.BKUsername, }, Debug: config.GlobalConf.CMDB.Debug, } // 获取返回数据 - body, err := component.Request(req, timeout, config.GlobalConf.CMDB.Proxy, headers) + body, err := component.Request(req, timeout, config.GlobalConf.CMDB.Proxy, component.GetAuthHeader()) if err != nil { return nil, errorx.NewRequestCMDBErr(err.Error()) } @@ -273,7 +269,6 @@ func GetBusinessTopology(bizID string) ([]BusinessTopologyData, error) { if config.GlobalConf.CMDB.BKSupplierAccount != "" { supplierAccount = config.GlobalConf.CMDB.BKSupplierAccount } - headers := map[string]string{"Content-Type": "application/json"} // 组装请求参数 req := gorequest.SuperAgent{ Url: fmt.Sprintf("%s%s", config.GlobalConf.CMDB.Host, getBizTopoPath), @@ -281,14 +276,11 @@ func GetBusinessTopology(bizID string) ([]BusinessTopologyData, error) { Data: map[string]interface{}{ "bk_biz_id": bizID, "bk_supplier_account": supplierAccount, - "bk_app_code": config.GlobalConf.App.Code, - "bk_app_secret": config.GlobalConf.App.Secret, - "bk_username": config.GlobalConf.CMDB.BKUsername, }, Debug: config.GlobalConf.CMDB.Debug, } // 获取返回数据 - body, err := component.Request(req, timeout, config.GlobalConf.CMDB.Proxy, headers) + body, err := component.Request(req, timeout, config.GlobalConf.CMDB.Proxy, component.GetAuthHeader()) if err != nil { return nil, errorx.NewRequestCMDBErr(err.Error()) } @@ -313,7 +305,6 @@ func searchBusinessByIds(condition string, rules []map[string]interface{}) ([]Bu if config.GlobalConf.CMDB.BKSupplierAccount != "" { supplierAccount = config.GlobalConf.CMDB.BKSupplierAccount } - headers := map[string]string{"Content-Type": "application/json"} // 组装请求参数 req := gorequest.SuperAgent{ Url: fmt.Sprintf("%s%s", config.GlobalConf.CMDB.Host, searchBizPath), @@ -324,14 +315,11 @@ func searchBusinessByIds(condition string, rules []map[string]interface{}) ([]Bu "rules": rules, }, "bk_supplier_account": supplierAccount, - "bk_app_code": config.GlobalConf.App.Code, - "bk_app_secret": config.GlobalConf.App.Secret, - "bk_username": config.GlobalConf.CMDB.BKUsername, }, Debug: config.GlobalConf.CMDB.Debug, } // 获取返回数据 - body, err := component.Request(req, timeout, config.GlobalConf.CMDB.Proxy, headers) + body, err := component.Request(req, timeout, config.GlobalConf.CMDB.Proxy, component.GetAuthHeader()) if err != nil { logging.Error("request search business failed, err: %s", err.Error()) return nil, fmt.Errorf("request search business failed, err: %s", err.Error()) diff --git a/bcs-services/bcs-project-manager/internal/component/iam/iam.go b/bcs-services/bcs-project-manager/internal/component/iam/iam.go index c3ae840e46..38686d6f5b 100644 --- a/bcs-services/bcs-project-manager/internal/component/iam/iam.go +++ b/bcs-services/bcs-project-manager/internal/component/iam/iam.go @@ -39,23 +39,20 @@ func GrantProjectCreatorActions(username string, projectID string, projectName s iamConf := config.GlobalConf.IAM // 使用网关访问 reqURL := fmt.Sprintf("%s%s", iamConf.GatewayHost, grantActionPath) - headers := map[string]string{"Content-Type": "application/json"} req := gorequest.SuperAgent{ Url: reqURL, Method: "POST", Data: map[string]interface{}{ - "bk_app_code": config.GlobalConf.App.Code, - "bk_app_secret": config.GlobalConf.App.Secret, - "creator": username, - "system": bcsIAM.SystemIDBKBCS, - "type": "project", - "id": projectID, - "name": projectName, + "creator": username, + "system": bcsIAM.SystemIDBKBCS, + "type": "project", + "id": projectID, + "name": projectName, }, } // 请求API proxy := "" - _, err := component.Request(req, timeout, proxy, headers) + _, err := component.Request(req, timeout, proxy, component.GetAuthHeader()) if err != nil { logging.Error("grant creator actions for project failed, %s", err.Error()) return errorx.NewRequestIAMErr(err.Error()) @@ -68,24 +65,21 @@ func GrantNamespaceCreatorActions(username, clusterID, namespace string) error { iamConf := config.GlobalConf.IAM // 使用网关访问 reqURL := fmt.Sprintf("%s%s", iamConf.GatewayHost, grantActionPath) - headers := map[string]string{"Content-Type": "application/json"} id := authutils.CalcIAMNsID(clusterID, namespace) req := gorequest.SuperAgent{ Url: reqURL, Method: "POST", Data: map[string]interface{}{ - "bk_app_code": config.GlobalConf.App.Code, - "bk_app_secret": config.GlobalConf.App.Secret, - "creator": username, - "system": bcsIAM.SystemIDBKBCS, - "type": "namespace", - "id": id, - "name": namespace, + "creator": username, + "system": bcsIAM.SystemIDBKBCS, + "type": "namespace", + "id": id, + "name": namespace, }, } // 请求API proxy := "" - _, err := component.Request(req, timeout, proxy, headers) + _, err := component.Request(req, timeout, proxy, component.GetAuthHeader()) if err != nil { logging.Error("grant creator actions for namespace failed, %s", err.Error()) return errorx.NewRequestIAMErr(err.Error()) diff --git a/bcs-services/bcs-project-manager/internal/config/config.go b/bcs-services/bcs-project-manager/internal/config/config.go index 6c2a40afa3..a53c0d88b1 100644 --- a/bcs-services/bcs-project-manager/internal/config/config.go +++ b/bcs-services/bcs-project-manager/internal/config/config.go @@ -174,23 +174,24 @@ type ListForIAMConfig struct { // ProjectConfig 项目的配置信息 type ProjectConfig struct { - Etcd EtcdConfig `yaml:"etcd"` - Mongo MongoConfig `yaml:"mongo"` - Log LogConfig `yaml:"log"` - Swagger SwaggerConfig `yaml:"swagger"` - Server ServerConfig `yaml:"server"` - Client ClientConfig `yaml:"client"` - JWT JWTConfig `yaml:"jwt"` - IAM IAMConfig `yaml:"iam"` - ITSM ITSMConfig `yaml:"itsm"` - Bkmonitor BkMonitorConfig `yaml:"bkmonitor"` - ClientActionExemptPerm ClientActionExemptPermConfig `yaml:"clientActionExemptPerm"` - CMDB CMDBConfig `yaml:"cmdb"` - BCSCC BCSCCConfig `yaml:"bcscc"` - App AppConfig `yaml:"app"` - BcsGateway BCSGatewayConfig `yaml:"bcsGateway"` - ListForIAM ListForIAMConfig `yaml:"listForIAM"` - TracingConfig conf.TracingConfig `yaml:"tracingConfig"` + Etcd EtcdConfig `yaml:"etcd"` + Mongo MongoConfig `yaml:"mongo"` + Log LogConfig `yaml:"log"` + Swagger SwaggerConfig `yaml:"swagger"` + Server ServerConfig `yaml:"server"` + Client ClientConfig `yaml:"client"` + JWT JWTConfig `yaml:"jwt"` + IAM IAMConfig `yaml:"iam"` + ITSM ITSMConfig `yaml:"itsm"` + Bkmonitor BkMonitorConfig `yaml:"bkmonitor"` + ClientActionExemptPerm ClientActionExemptPermConfig `yaml:"clientActionExemptPerm"` + CMDB CMDBConfig `yaml:"cmdb"` + BCSCC BCSCCConfig `yaml:"bcscc"` + App AppConfig `yaml:"app"` + BcsGateway BCSGatewayConfig `yaml:"bcsGateway"` + ListForIAM ListForIAMConfig `yaml:"listForIAM"` + TracingConfig conf.TracingConfig `yaml:"tracingConfig"` + RestrictAuthorizedProjects bool `yaml:"restrictAuthorizedProjects"` } func (conf *ProjectConfig) initServerAddress() { diff --git a/bcs-services/bcs-project-manager/internal/store/project/project.go b/bcs-services/bcs-project-manager/internal/store/project/project.go index 1345982abb..1a905173bd 100644 --- a/bcs-services/bcs-project-manager/internal/store/project/project.go +++ b/bcs-services/bcs-project-manager/internal/store/project/project.go @@ -260,15 +260,22 @@ func (m *ModelProject) ListProjects(ctx context.Context, cond *operator.Conditio // SearchProjects query project sort by ids // NOCC:golint/fnsize(设计如此:该方法较长且不可拆分) // nolint -func (m *ModelProject) SearchProjects(ctx context.Context, ids []string, searchKey, kind string, +func (m *ModelProject) SearchProjects(ctx context.Context, ids []string, limitIDs []string, searchKey, kind string, pagination *page.Pagination) ([]Project, int64, error) { if pagination.Limit == 0 { pagination.Limit = page.DefaultPageLimit } projectList := make([]Project, 0) matchElement := bson.D{} + queryElement := bson.A{} if kind != "" { - matchElement = append(matchElement, bson.E{Key: "kind", Value: kind}) + queryElement = append(queryElement, bson.D{{"kind", bson.D{{"$eq", kind}}}}) + } + if len(limitIDs) != 0 { + queryElement = append(queryElement, bson.D{{"projectID", bson.D{{"$in", limitIDs}}}}) + } + if len(queryElement) != 0 { + matchElement = append(matchElement, bson.E{Key: "$and", Value: queryElement}) } if searchKey != "" { matchElement = append(matchElement, bson.E{Key: "$or", Value: bson.A{ @@ -281,29 +288,44 @@ func (m *ModelProject) SearchProjects(ctx context.Context, ids []string, searchK matchPipline := bson.D{{"$match", matchElement}} pipeline := mongo.Pipeline{} countPipeline := mongo.Pipeline{} - if kind != "" || searchKey != "" { + if kind != "" || searchKey != "" || len(limitIDs) != 0 { pipeline = append(pipeline, matchPipline) countPipeline = append(countPipeline, matchPipline) } - pipeline = append(pipeline, bson.D{ - {"$addFields", bson.D{ - {"authorized", bson.D{ - {"$cond", bson.D{ - {"if", bson.D{{"$in", bson.A{"$projectID", ids}}}}, - {"then", 1}, - {"else", 0}, + if len(ids) != 0 { + pipeline = append(pipeline, bson.D{ + {"$addFields", bson.D{ + {"authorized", bson.D{ + {"$cond", bson.D{ + {"if", bson.D{{"$in", bson.A{"$projectID", ids}}}}, + {"then", 1}, + {"else", 0}, + }}, + }}, + // kind 为 k8s 则认为开启了容器服务,排在前面 + {"enabled", bson.D{ + {"$cond", bson.D{ + {"if", bson.D{{"$eq", bson.A{"$kind", "k8s"}}}}, + {"then", 1}, + {"else", 0}, + }}, }}, }}, - // kind 为 k8s 则认为开启了容器服务,排在前面 - {"enabled", bson.D{ - {"$cond", bson.D{ - {"if", bson.D{{"$eq", bson.A{"$kind", "k8s"}}}}, - {"then", 1}, - {"else", 0}, + }) + } else { + pipeline = append(pipeline, bson.D{ + {"$addFields", bson.D{ + // kind 为 k8s 则认为开启了容器服务,排在前面 + {"enabled", bson.D{ + {"$cond", bson.D{ + {"if", bson.D{{"$eq", bson.A{"$kind", "k8s"}}}}, + {"then", 1}, + {"else", 0}, + }}, }}, }}, - }}, - }) + }) + } pipeline = append(pipeline, bson.D{{"$project", bson.D{ {"createTime", 1}, @@ -359,28 +381,3 @@ func (m *ModelProject) SearchProjects(ctx context.Context, ids []string, searchK } return projectList, count, nil } - -// ListProjectByIDs query project by project ids -func (m *ModelProject) ListProjectByIDs(ctx context.Context, kind string, ids []string, pagination *page.Pagination) ( - []Project, int64, error) { - projectList := make([]Project, 0) - condKind := make(operator.M) - condID := make(operator.M) - if kind != "" { - condKind["kind"] = kind - } - condID["projectID"] = ids - cond := operator.NewBranchCondition(operator.And, - operator.NewLeafCondition(operator.In, condID), operator.NewLeafCondition(operator.Eq, condKind)) - finder := m.db.Table(m.tableName).Find(cond) - // 获取总量 - total, err := finder.Count(ctx) - if err != nil { - return nil, 0, err - } - // 拉取满足项目 ID 的全量数据 - if err := finder.All(ctx, &projectList); err != nil { - return nil, 0, err - } - return projectList, total, nil -} diff --git a/bcs-services/bcs-project-manager/internal/store/store.go b/bcs-services/bcs-project-manager/internal/store/store.go index ad948717ed..6ae73a3c6f 100644 --- a/bcs-services/bcs-project-manager/internal/store/store.go +++ b/bcs-services/bcs-project-manager/internal/store/store.go @@ -36,9 +36,7 @@ type ProjectModel interface { DeleteProject(ctx context.Context, projectID string) error UpdateProject(ctx context.Context, project *project.Project) error ListProjects(ctx context.Context, cond *operator.Condition, opt *page.Pagination) ([]project.Project, int64, error) - ListProjectByIDs(ctx context.Context, kind string, ids []string, opt *page.Pagination) ( - []project.Project, int64, error) - SearchProjects(ctx context.Context, ids []string, searchKey, kind string, opt *page.Pagination) ( + SearchProjects(ctx context.Context, ids, limitIDs []string, searchKey, kind string, opt *page.Pagination) ( []project.Project, int64, error) GetNamespace(ctx context.Context, projectCode, clusterID, name string) (*nsm.Namespace, error) diff --git a/bcs-services/cluster-resources/pkg/action/template/template.go b/bcs-services/cluster-resources/pkg/action/template/template.go index d4940bff18..6fed53ad95 100644 --- a/bcs-services/cluster-resources/pkg/action/template/template.go +++ b/bcs-services/cluster-resources/pkg/action/template/template.go @@ -199,7 +199,7 @@ func (t *TemplateAction) List(ctx context.Context, templateSpaceID string) ([]ma for _, value := range template { mm := value.ToMap() for _, v := range versions { - if v.Version == value.Version { + if v.Version == value.Version && v.TemplateName == value.Name { mm["versionID"] = v.ID.Hex() } } @@ -283,6 +283,7 @@ func (t *TemplateAction) Create(ctx context.Context, req *clusterRes.CreateTempl if req.GetIsDraft() { template.DraftVersion = req.GetDraftVersion() template.DraftContent = req.GetDraftContent() + template.DraftEditFormat = req.GetDraftEditFormat() } // 没有记录的情况下直接创建 @@ -344,14 +345,15 @@ func (t *TemplateAction) Update(ctx context.Context, req *clusterRes.UpdateTempl } updateTemplate := entity.M{ - "name": req.GetName(), - "description": req.GetDescription(), - "updator": userName, - "tags": req.GetTags(), - "versionMode": req.GetVersionMode(), - "isDraft": req.GetIsDraft(), - "draftVersion": req.GetDraftVersion(), - "draftContent": req.GetDraftContent(), + "name": req.GetName(), + "description": req.GetDescription(), + "updator": userName, + "tags": req.GetTags(), + "versionMode": req.GetVersionMode(), + "isDraft": req.GetIsDraft(), + "draftVersion": req.GetDraftVersion(), + "draftContent": req.GetDraftContent(), + "draftEditFormat": req.GetDraftEditFormat(), } if req.GetVersionMode() == clusterRes.VersionMode_SpecifyVersion && req.GetVersion() != "" { updateTemplate["version"] = req.GetVersion() @@ -481,18 +483,16 @@ func (t *TemplateAction) ListTemplateFileVariables(ctx context.Context, }) vars := make([]map[string]interface{}, 0) for _, v := range parseMultiTemplateFileVar(templates) { - readonly := false value := "" for _, vv := range clusterVars { if vv.Key == v { - readonly = true value = vv.Value } } vars = append(vars, map[string]interface{}{ "key": v, "value": value, - "readonly": readonly, + "readonly": false, // 默认可覆盖 }) } return map[string]interface{}{"vars": vars}, nil diff --git a/bcs-services/cluster-resources/pkg/action/templatespace/templatespace.go b/bcs-services/cluster-resources/pkg/action/templatespace/templatespace.go index 72e7c96724..27a4297ea8 100644 --- a/bcs-services/cluster-resources/pkg/action/templatespace/templatespace.go +++ b/bcs-services/cluster-resources/pkg/action/templatespace/templatespace.go @@ -15,8 +15,11 @@ package templatespace import ( "context" + "fmt" + "time" "github.com/Tencent/bk-bcs/bcs-common/pkg/odm/operator" + "go.mongodb.org/mongo-driver/bson/primitive" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/common/ctxkey" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/common/errcode" @@ -92,7 +95,7 @@ func (t *TemplateSpaceAction) Get(ctx context.Context, id string) (map[string]in } // List xxx -func (t *TemplateSpaceAction) List(ctx context.Context) ([]map[string]interface{}, error) { +func (t *TemplateSpaceAction) List(ctx context.Context, name string) ([]map[string]interface{}, error) { if err := t.checkAccess(ctx); err != nil { return nil, err } @@ -103,9 +106,17 @@ func (t *TemplateSpaceAction) List(ctx context.Context) ([]map[string]interface{ } // 通过项目编码检索 - cond := operator.NewLeafCondition(operator.Eq, operator.M{ + operatorM := operator.M{ entity.FieldKeyProjectCode: p.Code, - }) + } + // 如果名称不为空,则通过文件夹名称模糊查询 + if name != "" { + operatorM[entity.FieldKeyName] = operator.M{ + "$regex": name, + } + } + + cond := operator.NewLeafCondition(operator.Eq, operatorM) templateSpace, err := t.model.ListTemplateSpace(ctx, cond) if err != nil { @@ -258,3 +269,73 @@ func (t *TemplateSpaceAction) Delete(ctx context.Context, id string) error { } return nil } + +// Copy xxx +func (t *TemplateSpaceAction) Copy(ctx context.Context, id string) (string, error) { + if err := t.checkAccess(ctx); err != nil { + return "", err + } + + p, err := project.FromContext(ctx) + if err != nil { + return "", err + } + + templateSpace, err := t.model.GetTemplateSpace(ctx, id) + if err != nil { + return "", err + } + + // 检验访问TemplateSpace 的权限 + if templateSpace.ProjectCode != p.Code { + return "", errorx.New(errcode.NoPerm, i18n.GetMsg(ctx, "无权限访问")) + } + + // 新生成文件夹名称 + newSpaceName := templateSpace.Name + "_" + fmt.Sprintf("%d", time.Now().Unix()) + // 旧文件夹名称须保留做查询 + oldSpaceName := templateSpace.Name + templateSpace.Name = newSpaceName + // id重置,让底层重新生成 + templateSpace.ID = primitive.NilObjectID + + newId, err := t.model.CreateTemplateSpace(ctx, templateSpace) + if err != nil { + return "", err + } + + // 通过项目编码、文件夹名称检索模板元数据及版本 + cond := operator.NewLeafCondition(operator.Eq, operator.M{ + entity.FieldKeyProjectCode: p.Code, + entity.FieldKeyTemplateSpace: oldSpaceName, + }) + templates, err := t.model.ListTemplate(ctx, cond) + if err != nil { + return "", err + } + + for _, template := range templates { + template.TemplateSpace = newSpaceName + } + // 批量创建模板元数据 + err = t.model.CreateTemplateBatch(ctx, templates) + if err != nil { + return "", err + } + + templateVersions, err := t.model.ListTemplateVersion(ctx, cond) + if err != nil { + return "", err + } + + for _, templateVersion := range templateVersions { + templateVersion.TemplateSpace = newSpaceName + } + + // 批量创建模板版本 + err = t.model.CreateTemplateVersionBatch(ctx, templateVersions) + if err != nil { + return "", err + } + return newId, nil +} diff --git a/bcs-services/cluster-resources/pkg/action/templatespacecollect/templatespacecollect.go b/bcs-services/cluster-resources/pkg/action/templatespacecollect/templatespacecollect.go new file mode 100644 index 0000000000..15afd30858 --- /dev/null +++ b/bcs-services/cluster-resources/pkg/action/templatespacecollect/templatespacecollect.go @@ -0,0 +1,158 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package templatespacecollect 模板文件文件夹收藏 +package templatespacecollect + +import ( + "context" + + "go.mongodb.org/mongo-driver/bson/primitive" + + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/common/ctxkey" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/common/errcode" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/component/project" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/config" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/i18n" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/iam" + projectAuth "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/iam/perm/resource/project" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/entity" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/util/errorx" + clusterRes "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/proto/cluster-resources" +) + +// TemplateSpaceCollectAction provides the action to manager template space collect +// nolint +type TemplateSpaceCollectAction struct { + ctx context.Context + + model store.ClusterResourcesModel +} + +// NewTemplateSpaceCollectAction return a new TemplateSpaceCollectAction instance +func NewTemplateSpaceCollectAction(model store.ClusterResourcesModel) *TemplateSpaceCollectAction { + return &TemplateSpaceCollectAction{ + model: model, + } +} + +func (t *TemplateSpaceCollectAction) checkAccess(ctx context.Context) error { + if config.G.Auth.Disabled { + return nil + } + project, err := project.FromContext(ctx) + if err != nil { + return err + } + // 权限控制为项目查看 + permCtx := &projectAuth.PermCtx{ + Username: ctx.Value(ctxkey.UsernameKey).(string), + ProjectID: project.ID, + } + if allow, err := iam.NewProjectPerm().CanView(permCtx); err != nil { + return err + } else if !allow { + return errorx.New(errcode.NoIAMPerm, i18n.GetMsg(ctx, "无项目查看权限")) + } + return nil +} + +// List xxx +func (t *TemplateSpaceCollectAction) List(ctx context.Context) ([]map[string]interface{}, error) { + if err := t.checkAccess(ctx); err != nil { + return nil, err + } + + p, err := project.FromContext(ctx) + if err != nil { + return nil, err + } + + // 通过项目编码、用户名称检索 + templateSpaceCollect, err := t.model.ListTemplateSpaceCollect(ctx, "", p.Code, ctxkey.GetUsernameFromCtx(ctx)) + if err != nil { + return nil, err + } + + m := make([]map[string]interface{}, 0) + for _, value := range templateSpaceCollect { + m = append(m, value.ToMap()) + } + return m, nil +} + +// Create xxx +func (t *TemplateSpaceCollectAction) Create( + ctx context.Context, req *clusterRes.CreateTemplateSpaceCollectReq) (string, error) { + if err := t.checkAccess(ctx); err != nil { + return "", err + } + + p, err := project.FromContext(ctx) + if err != nil { + return "", err + } + + username := ctxkey.GetUsernameFromCtx(ctx) + // 检测用户是否已经收藏 + templateSpaceCollects, err := t.model.ListTemplateSpaceCollect(ctx, req.TemplateSpaceID, p.Code, username) + if err != nil { + return "", err + } + + if len(templateSpaceCollects) > 0 { + return templateSpaceCollects[0].ID.Hex(), nil + } + + templateSpaceID, err := primitive.ObjectIDFromHex(req.TemplateSpaceID) + if err != nil { + return "", err + } + templateSpaceCollect := &entity.TemplateSpaceCollect{ + TemplateSpaceID: templateSpaceID, + ProjectCode: p.Code, + Username: username, + } + id, err := t.model.CreateTemplateSpaceCollect(ctx, templateSpaceCollect) + if err != nil { + return "", err + } + return id, nil +} + +// Delete xxx +func (t *TemplateSpaceCollectAction) Delete(ctx context.Context, id string) error { + if err := t.checkAccess(ctx); err != nil { + return err + } + + p, err := project.FromContext(ctx) + if err != nil { + return err + } + // 通过id检索 + templateSpaceCollect, err := t.model.GetTemplateSpaceCollect(ctx, id) + if err != nil { + return err + } + + // 检验更新 TemplateSpace 的权限 + if templateSpaceCollect.ProjectCode != p.Code || templateSpaceCollect.Username != ctxkey.GetUsernameFromCtx(ctx) { + return errorx.New(errcode.NoPerm, i18n.GetMsg(ctx, "无权限访问")) + } + + if err := t.model.DeleteTemplateSpaceCollect(ctx, id); err != nil { + return err + } + return nil +} diff --git a/bcs-services/cluster-resources/pkg/action/templateversion/templateversion.go b/bcs-services/cluster-resources/pkg/action/templateversion/templateversion.go index 5db6deb48c..de23525785 100644 --- a/bcs-services/cluster-resources/pkg/action/templateversion/templateversion.go +++ b/bcs-services/cluster-resources/pkg/action/templateversion/templateversion.go @@ -167,6 +167,7 @@ func (t *TemplateVersionAction) List( TemplateName: tmp.Name, Version: tmp.DraftVersion, Content: tmp.DraftContent, + EditFormat: tmp.DraftEditFormat, Creator: tmp.Updator, CreateAt: tmp.UpdateAt, Draft: true, diff --git a/bcs-services/cluster-resources/pkg/handler/multicluster/multicluster.go b/bcs-services/cluster-resources/pkg/handler/multicluster/multicluster.go index 1b8ef25438..7e0ca3602a 100644 --- a/bcs-services/cluster-resources/pkg/handler/multicluster/multicluster.go +++ b/bcs-services/cluster-resources/pkg/handler/multicluster/multicluster.go @@ -24,6 +24,7 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/config" log "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/logging" cli "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/resource/client" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/resource/constants" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/entity" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/util/pbstruct" @@ -89,6 +90,47 @@ func (h *Handler) FetchMultiClusterResource(ctx context.Context, req *clusterRes return err } +// FetchMultiClusterApiResources Fetch multi cluster api resources +func (h *Handler) FetchMultiClusterApiResources(ctx context.Context, req *clusterRes.FetchMultiClusterApiResourcesReq, + resp *clusterRes.CommonResp) (err error) { + // 获取视图信息 + view := &entity.View{} + if req.GetViewID() != "" { + view, err = h.model.GetView(ctx, req.GetViewID()) + if err != nil { + return err + } + } + filter := QueryFilter{ + LabelSelector: req.GetLabelSelector(), + } + // 是否仅获取crd资源 + kind := "" + if req.GetOnlyCrd() { + kind = constants.CRD + } + clusterNS := filterClusteredNamespace(req.GetClusterNamespaces(), string(getScopedByKind(kind))) + + // from api server + var query = NewAPIServerQuery(clusterNS, filter, viewQueryToQueryFilter(view.Filter)) + + var data map[string]interface{} + data, err = query.FetchApiResources(ctx, kind) + if err != nil { + return err + } + + resp.Data, err = pbstruct.Map2pbStruct(data) + if err != nil { + return err + } + + resp.WebAnnotations, err = web.NewAnnos( + web.NewFeatureFlag(featureflag.FormCreate, true), + ).ToPbStruct() + return err +} + // FetchMultiClusterCustomResource Fetch multi cluster custom resource func (h *Handler) FetchMultiClusterCustomResource(ctx context.Context, req *clusterRes.FetchMultiClusterCustomResourceReq, diff --git a/bcs-services/cluster-resources/pkg/handler/multicluster/query.go b/bcs-services/cluster-resources/pkg/handler/multicluster/query.go index f986ccdfaf..beeb12afad 100644 --- a/bcs-services/cluster-resources/pkg/handler/multicluster/query.go +++ b/bcs-services/cluster-resources/pkg/handler/multicluster/query.go @@ -14,6 +14,7 @@ package multicluster import ( "context" + "path" "regexp" "strings" "sync" @@ -21,6 +22,7 @@ import ( "golang.org/x/sync/errgroup" apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/cluster" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/common/ctxkey" @@ -45,6 +47,7 @@ import ( // Query represents a query for multicluster resources. type Query interface { Fetch(ctx context.Context, groupVersion, kind string) (map[string]interface{}, error) + FetchApiResources(ctx context.Context, kind string) (map[string]interface{}, error) } // StorageQuery represents a query for multicluster resources. @@ -95,6 +98,12 @@ func (q *StorageQuery) Fetch(ctx context.Context, groupVersion, kind string) (ma return resp, nil } +// FetchApiResources fetches multicluster api resources. +func (q *StorageQuery) FetchApiResources(ctx context.Context, kind string) (map[string]interface{}, error) { + // 目前仅仅只是添加此方法,暂时不做实现 + return map[string]interface{}{}, nil +} + // APIServerQuery represents a query for multicluster resources. type APIServerQuery struct { ClusterdNamespaces []*clusterRes.ClusterNamespaces @@ -134,6 +143,21 @@ func (q *APIServerQuery) Fetch(ctx context.Context, groupVersion, kind string) ( return resp, nil } +// FetchApiResources fetches api resources. +func (q *APIServerQuery) FetchApiResources(ctx context.Context, kind string) (map[string]interface{}, error) { + var err error + if q.ClusterdNamespaces, err = checkMultiClusterAccess(ctx, kind, q.ClusterdNamespaces); err != nil { + return nil, err + } + log.Info(ctx, "fetch multi cluster resources, kind: %s, clusterdNamespaces: %v", kind, q.ClusterdNamespaces) + resources, err := listApiResource(ctx, q.ClusterdNamespaces, kind, metav1.ListOptions{ + LabelSelector: q.ViewFilter.LabelSelectorString()}) + if err != nil { + return nil, err + } + return resources, nil +} + // listResource 列出多集群资源 func listResource(ctx context.Context, clusterdNamespaces []*clusterRes.ClusterNamespaces, groupVersion, kind string, opts metav1.ListOptions) ([]*storage.Resource, error) { @@ -160,6 +184,39 @@ func listResource(ctx context.Context, clusterdNamespaces []*clusterRes.ClusterN return result, nil } +// listApiResource 列出多集群资源 +func listApiResource(ctx context.Context, clusterdNamespaces []*clusterRes.ClusterNamespaces, kind string, + opts metav1.ListOptions) (map[string]interface{}, error) { + errGroups := errgroup.Group{} + errGroups.SetLimit(10) + results := make(map[string]interface{}, 0) + mux := sync.Mutex{} + for _, v := range clusterdNamespaces { + ns := v + errGroups.Go(func() error { + result := make(map[string]interface{}, 0) + resources, err := listNamespaceApiResources(ctx, ns.ClusterID, ns.Namespaces, kind, opts) + if err != nil { + return err + } + // 需要转一下, res.GroupKindVersionResourc -> []map[string] interface + // pbstruct.Map2pbStruct无法识别res.GroupKindVersionResource类型 + for key, value := range resources { + result[key] = []map[string]interface{}(value) + } + mux.Lock() + defer mux.Unlock() + results[ns.ClusterID] = result + return nil + }) + } + + if err := errGroups.Wait(); err != nil { + return nil, err + } + return results, nil +} + // listNamespaceResources 列出某个集群下某些命名空间的资源 func listNamespaceResources(ctx context.Context, clusterID string, namespaces []string, groupVersion, kind string, opts metav1.ListOptions) ([]*storage.Resource, error) { @@ -214,6 +271,104 @@ func listNamespaceResources(ctx context.Context, clusterID string, namespaces [] return result, nil } +// listNamespaceApiResources 列出某个集群下某些命名空间的api资源 +func listNamespaceApiResources(ctx context.Context, clusterID string, namespaces []string, kind string, + opts metav1.ListOptions) (map[string]res.GroupKindVersionResource, error) { + clusterConf := res.NewClusterConf(clusterID) + k8sResources, err := res.GetApiResources(ctx, clusterConf, kind) + if err != nil { + log.Error(ctx, "get api resource error, %v", err) + // 多集群查询场景,如果 crd 不存在,直接返回空 + if strings.Contains(err.Error(), "the server could not find the requested resource") { + return nil, nil + } + return nil, err + } + + // 默认列出所有api-resources + if kind == "" { + return k8sResources, nil + } + + // 仅列出crd资源的情况下,只有一条内容 + if len(k8sResources) != 1 { + return map[string]res.GroupKindVersionResource{}, nil + } + + k8sRes := schema.GroupVersionResource{} + for _, value := range k8sResources { + k8sRes.Group = mapx.GetStr(value[0], "group") + k8sRes.Version = mapx.GetStr(value[0], "version") + k8sRes.Resource = mapx.GetStr(value[0], "resource") + } + + // 如果命名空间为空,则查询所有命名空间,如果命名空间数量大于 5,则查全部命名空间并最后筛选命名空间,这样能减少并发请求 + filterNamespace := namespaces + if len(namespaces) == 0 { + filterNamespace = []string{""} + } + errGroups := errgroup.Group{} + errGroups.SetLimit(5) + result := make(map[string]res.GroupKindVersionResource, 0) + mux := sync.Mutex{} + // 根据命名空间列表,并发查询资源 + for _, v := range filterNamespace { + ns := v + errGroups.Go(func() error { + + ret, innerErr := cli.NewResClient(clusterConf, k8sRes).ListAllWithoutPerm(ctx, ns, opts) + if innerErr != nil { + return innerErr + } + if len(ret) == 0 { + return nil + } + mux.Lock() + defer mux.Unlock() + for _, item := range ret { + // 过滤命名空间,如果命名空间为空,则表示查询全部命名空间或者集群域资源,这种直接通过。其他情况则筛选命名空间 + if len(namespaces) == 0 || slice.StringInSlice(item.GetNamespace(), namespaces) { + // 获取特殊字段返回 + groupVersion, crdResources := getCrdResources(item.Object) + result[groupVersion] = append(result[groupVersion], crdResources) + } + } + return nil + }) + } + if err = errGroups.Wait(); err != nil { + return nil, err + } + return result, nil +} + +// 获取crd 中的相关资源 +func getCrdResources(object map[string]interface{}) (string, map[string]interface{}) { + resouces := mapx.GetStr(object, "metadata.name") + if resouces != "" { + s := strings.Split(resouces, ".") + resouces = s[0] + } + group := mapx.GetStr(object, "spec.group") + kind := mapx.GetStr(object, "spec.names.kind") + var version string + versions := mapx.GetList(object, "status.storedVersions") + if len(versions) > 0 { + if _, ok := versions[0].(string); ok { + version = versions[0].(string) + } + } + namespaced := mapx.GetStr(object, "spec.scope") == "Namespaced" + groupVersion := path.Join(group, version) + return groupVersion, map[string]interface{}{ + "group": group, + "kind": kind, + "version": version, + "resource": resouces, + "namespaced": namespaced, + } +} + // BuildList build list response data func buildList(ctx context.Context, resources []*storage.Resource) map[string]interface{} { result := map[string]interface{}{} diff --git a/bcs-services/cluster-resources/pkg/handler/templateset/template_set.go b/bcs-services/cluster-resources/pkg/handler/templateset/template_set.go index ead6ecabcc..6bd826ecab 100644 --- a/bcs-services/cluster-resources/pkg/handler/templateset/template_set.go +++ b/bcs-services/cluster-resources/pkg/handler/templateset/template_set.go @@ -19,6 +19,7 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/action/envmanage" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/action/template" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/action/templatespace" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/action/templatespacecollect" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/action/templateversion" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/util/pbstruct" @@ -53,7 +54,7 @@ func (h *Handler) GetTemplateSpace( func (h *Handler) ListTemplateSpace( ctx context.Context, in *clusterRes.ListTemplateSpaceReq, out *clusterRes.CommonListResp) error { action := templatespace.NewTemplateSpaceAction(h.model) - data, err := action.List(ctx) + data, err := action.List(ctx, in.Name) if err != nil { return err } @@ -99,6 +100,59 @@ func (h *Handler) DeleteTemplateSpace( return nil } +// CopyTemplateSpace 复制模板文件文件夹 +func (h *Handler) CopyTemplateSpace( + ctx context.Context, in *clusterRes.CopyTemplateSpaceReq, out *clusterRes.CommonResp) error { + action := templatespace.NewTemplateSpaceAction(h.model) + id, err := action.Copy(ctx, in.GetId()) + if err != nil { + return err + } + if out.Data, err = pbstruct.Map2pbStruct(map[string]interface{}{"id": id}); err != nil { + return err + } + return nil +} + +// ListTemplateSpaceCollect 获取模板文件文件夹收藏列表 +func (h *Handler) ListTemplateSpaceCollect( + ctx context.Context, in *clusterRes.ListTemplateSpaceCollectReq, out *clusterRes.CommonListResp) error { + action := templatespacecollect.NewTemplateSpaceCollectAction(h.model) + data, err := action.List(ctx) + if err != nil { + return err + } + if out.Data, err = pbstruct.MapSlice2ListValue(data); err != nil { + return err + } + return nil +} + +// CreateTemplateSpaceCollect 创建模板文件文件夹收藏 +func (h *Handler) CreateTemplateSpaceCollect( + ctx context.Context, in *clusterRes.CreateTemplateSpaceCollectReq, out *clusterRes.CommonResp) error { + action := templatespacecollect.NewTemplateSpaceCollectAction(h.model) + id, err := action.Create(ctx, in) + if err != nil { + return err + } + if out.Data, err = pbstruct.Map2pbStruct(map[string]interface{}{"id": id}); err != nil { + return err + } + return nil +} + +// DeleteTemplateSpaceCollect 删除模板文件文件夹收藏 +func (h *Handler) DeleteTemplateSpaceCollect( + ctx context.Context, in *clusterRes.DeleteTemplateSpaceCollectReq, out *clusterRes.CommonResp) error { + action := templatespacecollect.NewTemplateSpaceCollectAction(h.model) + err := action.Delete(ctx, in.GetId()) + if err != nil { + return err + } + return nil +} + // GetTemplateMetadata 获取模板文件元数据详情 func (h *Handler) GetTemplateMetadata( ctx context.Context, in *clusterRes.GetTemplateMetadataReq, out *clusterRes.CommonResp) error { diff --git a/bcs-services/cluster-resources/pkg/i18n/locale/lc_msgs.yaml b/bcs-services/cluster-resources/pkg/i18n/locale/lc_msgs.yaml index fc01e0a40d..59929e5c3e 100644 --- a/bcs-services/cluster-resources/pkg/i18n/locale/lc_msgs.yaml +++ b/bcs-services/cluster-resources/pkg/i18n/locale/lc_msgs.yaml @@ -48,6 +48,8 @@ en: "unsupported transformer form: %s" - msgID: 文件夹名称重复 en: "Folder name duplicated" +- msgID: 该文件夹收藏不存在 + en: "Folder name collect does not exist" - msgID: 元数据名称重复 en: "Name duplicated" - msgID: 清理集群资源缓存时间间隔过短,请稍后再试 diff --git a/bcs-services/cluster-resources/pkg/resource/client/cobj.go b/bcs-services/cluster-resources/pkg/resource/client/cobj.go index 0d3eb37f33..09dc6a8995 100644 --- a/bcs-services/cluster-resources/pkg/resource/client/cobj.go +++ b/bcs-services/cluster-resources/pkg/resource/client/cobj.go @@ -48,6 +48,7 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/i18n" log "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/logging" res "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/resource" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/resource/constants" resCsts "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/resource/constants" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/resource/formatter" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/util/errorx" @@ -348,7 +349,7 @@ func GetClustersCRDInfo(ctx context.Context, clusterIDs []string, crdName string return err } ctx = context.WithValue(ctx, ctxkey.ClusterKey, cluterInfo) - manifest, err := NewCRDCliByClusterID(ctx, clusterID).Get(ctx, crdName, metav1.GetOptions{}) + manifest, err := getApiReSourcesManifest(ctx, crdName, clusterID) if err != nil { return err } @@ -362,7 +363,7 @@ func GetClustersCRDInfo(ctx context.Context, clusterIDs []string, crdName string return nil, err } - return formatter.FormatCRD(result), nil + return result, nil } // GetCObjManifest 获取自定义资源信息 @@ -616,3 +617,44 @@ func printTemplate(template *corev1.PodTemplateSpec) (string, error) { describe.DescribePodTemplate(template, w) return buf.String(), nil } + +// 简单的返回特殊的字段 +func getApiReSourcesManifest(ctx context.Context, crdName, clusterID string) (map[string]interface{}, error) { + manifest := make(map[string]interface{}, 0) + // 分离资源名称 + s := strings.SplitN(crdName, ".", 2) + if len(s) > 0 { + crdName = s[0] + } + + // group可能为空 + group := "" + if len(s) > 1 { + group = s[1] + } + apiResources, err := res.GetApiResources(ctx, res.NewClusterConf(clusterID), "") + if err != nil { + return manifest, err + } + // 避免不了存在resources,group一样,版本不一样的GroupVersionResource + for _, v := range apiResources { + for _, vv := range v { + if vv["resource"] == crdName && vv["group"] == group { + manifest = map[string]interface{}{ + "name": vv["resource"], + "kind": vv["kind"], + "apiVersion": fmt.Sprintf("%s/%s", vv["group"], vv["version"]), + "scope": constants.ClusterScope, + } + + if vv["group"] == "" { + manifest["apiVersion"] = fmt.Sprintf("%s", vv["version"]) + } + if vv["namespaced"] == true { + manifest["scope"] = constants.NamespacedScope + } + } + } + } + return manifest, nil +} diff --git a/bcs-services/cluster-resources/pkg/resource/discovery.go b/bcs-services/cluster-resources/pkg/resource/discovery.go index 207648ac81..edc86b03aa 100644 --- a/bcs-services/cluster-resources/pkg/resource/discovery.go +++ b/bcs-services/cluster-resources/pkg/resource/discovery.go @@ -68,6 +68,9 @@ type RedisCacheClient struct { cacheValid bool } +// GroupKindVersionResource api-resouces model +type GroupKindVersionResource []map[string]interface{} + // RESTClient xxx func (d *RedisCacheClient) RESTClient() rest.Interface { return d.delegate.RESTClient() @@ -231,6 +234,17 @@ func (d *RedisCacheClient) getPreferredResource(kind string) (schema.GroupVersio return filterResByKind(kind, d.clusterID, "", all) } +// getPreferredApiResources 获取指定api资源当前集群 Preferred 版本列表 +func (d *RedisCacheClient) getPreferredApiResources(kind string) (map[string]GroupKindVersionResource, error) { + all, err := d.ServerPreferredResources() + if err != nil { + return map[string]GroupKindVersionResource{}, err + } + + // 逐个检查出第一个同名资源,作为 Preferred 结果返回 + return filterApiResByKind(kind, all), nil +} + // readCache 读缓存逻辑 func (d *RedisCacheClient) readCache(groupVersion string) ([]byte, error) { if !d.Fresh() { @@ -322,6 +336,25 @@ func GetGroupVersionResource( return res, nil } +// GetApiResources 根据配置,名称等信息,获取指定资源对应的 GetApiResources +// 直接获取 preferred api version +// 包含刷新缓存逻辑,若首次从缓存中找不到对应资源,会刷新缓存再次查询,若还是找不到,则返回错误 +func GetApiResources( + ctx context.Context, conf *ClusterConf, kind string) (map[string]GroupKindVersionResource, error) { + cli, err := NewRedisCacheClient4Conf(ctx, conf) + if err != nil { + return map[string]GroupKindVersionResource{}, err + } + // 查询 preferred version(含刷新缓存重试) + var res map[string]GroupKindVersionResource + res, err = cli.getPreferredApiResources(kind) + if err != nil { + cli.Invalidate() + return cli.getPreferredApiResources(kind) + } + return res, nil +} + // GetResPreferredVersion 获取某类资源在集群中的 Preferred 版本 func GetResPreferredVersion(ctx context.Context, clusterID, kind string) (string, error) { resInfo, err := GetGroupVersionResource(ctx, NewClusterConf(clusterID), kind, "") @@ -344,6 +377,44 @@ func NewRedisCacheClient4Conf(ctx context.Context, conf *ClusterConf) (*RedisCac return newRedisCacheClient(ctx, delegate, conf.ClusterID, rdsCache), nil } +// filterApiResByKind 获取对应的api资源信息 +func filterApiResByKind(kind string, allRes []*metav1.APIResourceList) map[string]GroupKindVersionResource { + resources := make(map[string]GroupKindVersionResource, 0) + for _, apiResList := range allRes { + for _, res := range apiResList.APIResources { + // 可能存在如 v1 这种,只有 version,group 为空的情况 + group, ver := "", apiResList.GroupVersion + if strings.Contains(apiResList.GroupVersion, "/") { + group, ver = stringx.Partition(apiResList.GroupVersion, "/") + } + // 列出所有api-resources + if kind == "" { + resources[apiResList.GroupVersion] = append(resources[apiResList.GroupVersion], + map[string]interface{}{ + "group": group, + "kind": res.Kind, + "version": ver, + "resource": res.Name, + "namespaced": res.Namespaced, + }) + } else if res.Kind == kind { + // 仅列出crd + resources[apiResList.GroupVersion] = append(resources[apiResList.GroupVersion], + map[string]interface{}{ + "group": group, + "kind": res.Kind, + "version": ver, + "resource": res.Name, + "namespaced": res.Namespaced, + }) + return resources + } + } + } + + return resources +} + // filterResByKind 根据 kind 过滤出对应的资源信息 func filterResByKind( kind, clusterID, groupVersion string, allRes []*metav1.APIResourceList, diff --git a/bcs-services/cluster-resources/pkg/resource/formatter/common.go b/bcs-services/cluster-resources/pkg/resource/formatter/common.go index e18baf3095..3c1d524622 100644 --- a/bcs-services/cluster-resources/pkg/resource/formatter/common.go +++ b/bcs-services/cluster-resources/pkg/resource/formatter/common.go @@ -20,13 +20,12 @@ import ( // CommonFormatRes 通用资源格式化 func CommonFormatRes(manifest map[string]interface{}) map[string]interface{} { - rawCreateTime, _ := mapx.GetItems(manifest, "metadata.creationTimestamp") - createTime, _ := rawCreateTime.(string) + rawCreateTime := mapx.GetStr(manifest, "metadata.creationTimestamp") createSource, immutable := parseCreateSource(manifest) ret := map[string]interface{}{ "namespace": mapx.GetStr(manifest, []string{"metadata", "namespace"}), - "age": timex.CalcAge(rawCreateTime.(string)), - "createTime": createTime, + "age": timex.CalcAge(rawCreateTime), + "createTime": rawCreateTime, "editMode": mapx.Get( manifest, []string{"metadata", "annotations", resCsts.EditModeAnnoKey}, resCsts.EditModeYaml, ), diff --git a/bcs-services/cluster-resources/pkg/store/entity/keys.go b/bcs-services/cluster-resources/pkg/store/entity/keys.go index 9174ef5e3a..1fa8f7879e 100644 --- a/bcs-services/cluster-resources/pkg/store/entity/keys.go +++ b/bcs-services/cluster-resources/pkg/store/entity/keys.go @@ -14,17 +14,19 @@ package entity // 定义一批统一的key, 用在db相关的字段 const ( - FieldKeyObjectID = "_id" - FieldKeyProjectCode = "projectCode" - FieldKeyClusterID = "clusterID" - FieldKeyName = "name" - FieldKeyScope = "scope" - FieldKeyTemplateSpace = "templateSpace" - FieldKeyVersion = "version" - FieldKeyTemplateName = "templateName" - FieldKeyEnv = "env" + FieldKeyObjectID = "_id" + FieldKeyProjectCode = "projectCode" + FieldKeyClusterID = "clusterID" + FieldKeyName = "name" + FieldKeyScope = "scope" + FieldKeyTemplateSpace = "templateSpace" + FieldKeyTemplateSpaceID = "templateSpaceID" + FieldKeyVersion = "version" + FieldKeyTemplateName = "templateName" + FieldKeyEnv = "env" FieldKeyCreateBy = "createBy" + FieldKeyCreator = "creator" FieldKeyCreateAt = "createAt" FieldKeyUpdateAt = "updateAt" ) diff --git a/bcs-services/cluster-resources/pkg/store/entity/template.go b/bcs-services/cluster-resources/pkg/store/entity/template.go index d4389da44a..7acc2feed6 100644 --- a/bcs-services/cluster-resources/pkg/store/entity/template.go +++ b/bcs-services/cluster-resources/pkg/store/entity/template.go @@ -18,22 +18,23 @@ import ( // Template 定义了模板文件元数据的模型 type Template struct { - ID primitive.ObjectID `json:"id" bson:"_id"` - Name string `json:"name" bson:"name"` - ProjectCode string `json:"projectCode" bson:"projectCode"` - Description string `json:"description" bson:"description"` - TemplateSpace string `json:"templateSpace" bson:"templateSpace"` - ResourceType []string `json:"resourceType" bson:"resourceType"` - Creator string `json:"creator" bson:"creator"` - Updator string `json:"updator" bson:"updator"` - CreateAt int64 `json:"createAt" bson:"createAt"` - UpdateAt int64 `json:"updateAt" bson:"updateAt"` - Tags []string `json:"tags" bson:"tags"` - VersionMode int `json:"versionMode" bson:"versionMode"` - Version string `json:"version" bson:"version"` - IsDraft bool `json:"isDraft" bson:"isDraft"` - DraftVersion string `json:"draftVersion" bson:"draftVersion"` - DraftContent string `json:"draftContent" bson:"draftContent"` + ID primitive.ObjectID `json:"id" bson:"_id"` + Name string `json:"name" bson:"name"` + ProjectCode string `json:"projectCode" bson:"projectCode"` + Description string `json:"description" bson:"description"` + TemplateSpace string `json:"templateSpace" bson:"templateSpace"` + ResourceType []string `json:"resourceType" bson:"resourceType"` + Creator string `json:"creator" bson:"creator"` + Updator string `json:"updator" bson:"updator"` + CreateAt int64 `json:"createAt" bson:"createAt"` + UpdateAt int64 `json:"updateAt" bson:"updateAt"` + Tags []string `json:"tags" bson:"tags"` + VersionMode int `json:"versionMode" bson:"versionMode"` + Version string `json:"version" bson:"version"` + IsDraft bool `json:"isDraft" bson:"isDraft"` + DraftVersion string `json:"draftVersion" bson:"draftVersion"` + DraftContent string `json:"draftContent" bson:"draftContent"` + DraftEditFormat string `json:"draftEditFormat" bson:"draftEditFormat"` } // ToMap trans Template to map @@ -60,5 +61,6 @@ func (t *Template) ToMap() map[string]interface{} { m["isDraft"] = t.IsDraft m["draftVersion"] = t.DraftVersion m["draftContent"] = t.DraftContent + m["draftEditFormat"] = t.DraftEditFormat return m } diff --git a/bcs-services/cluster-resources/pkg/store/entity/templatespacecollect.go b/bcs-services/cluster-resources/pkg/store/entity/templatespacecollect.go new file mode 100644 index 0000000000..8ea404f00b --- /dev/null +++ b/bcs-services/cluster-resources/pkg/store/entity/templatespacecollect.go @@ -0,0 +1,51 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package entity + +import ( + "go.mongodb.org/mongo-driver/bson/primitive" +) + +// TemplateSpaceCollect 定义了模板文件文件夹收藏的模型 +type TemplateSpaceCollect struct { + ID primitive.ObjectID `json:"id" bson:"_id"` + TemplateSpaceID primitive.ObjectID `json:"templateSpaceID" bson:"templateSpaceID"` + ProjectCode string `json:"projectCode" bson:"projectCode"` + Username string `json:"username" bson:"username"` + CreateAt int64 `json:"createAt" bson:"createAt"` +} + +// TemplateSpaceAndCollect 定义了模板文件文件夹及收藏的模型 +type TemplateSpaceAndCollect struct { + ID primitive.ObjectID `json:"id" bson:"_id"` + TemplateSpaceID primitive.ObjectID `json:"templateSpaceID" bson:"templateSpaceID"` + ProjectCode string `json:"projectCode" bson:"projectCode"` + Username string `json:"username" bson:"username"` + CreateAt int64 `json:"createAt" bson:"createAt"` + Name string `json:"name" bson:"name"` // 文件夹名称,从文件夹表获取 +} + +// ToMap trans template space collect to map +func (t *TemplateSpaceAndCollect) ToMap() map[string]interface{} { + if t == nil { + return nil + } + m := make(map[string]interface{}, 0) + m["id"] = t.ID.Hex() + m["templateSpaceID"] = t.TemplateSpaceID.Hex() + m["projectCode"] = t.ProjectCode + m["username"] = t.Username + m["CreateAt"] = t.CreateAt + m["name"] = t.Name + return m +} diff --git a/bcs-services/cluster-resources/pkg/store/store.go b/bcs-services/cluster-resources/pkg/store/store.go index 5fcb01eb2e..529c65bc5a 100644 --- a/bcs-services/cluster-resources/pkg/store/store.go +++ b/bcs-services/cluster-resources/pkg/store/store.go @@ -23,6 +23,7 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/envmanage" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/template" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/templatespace" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/templatespacecollect" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/templateversion" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/utils" "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/view" @@ -45,10 +46,19 @@ type ClusterResourcesModel interface { UpdateTemplateSpace(ctx context.Context, id string, templateSpace entity.M) error DeleteTemplateSpace(ctx context.Context, id string) error + // 模板文件文件夹收藏 + GetTemplateSpaceCollect(ctx context.Context, id string) (*entity.TemplateSpaceCollect, error) + ListTemplateSpaceCollect( + ctx context.Context, templateSpaceID, projectCode, username string) ([]*entity.TemplateSpaceAndCollect, error) + CreateTemplateSpaceCollect( + ctx context.Context, templateSpaceCollect *entity.TemplateSpaceCollect) (string, error) + DeleteTemplateSpaceCollect(ctx context.Context, id string) error + // 模板文件元数据 GetTemplate(ctx context.Context, id string) (*entity.Template, error) ListTemplate(ctx context.Context, cond *operator.Condition) ([]*entity.Template, error) CreateTemplate(ctx context.Context, template *entity.Template) (string, error) + CreateTemplateBatch(ctx context.Context, templates []*entity.Template) error UpdateTemplate(ctx context.Context, id string, template entity.M) error UpdateTemplateBySpecial( ctx context.Context, projectCode, templateSpace string, template entity.M) error @@ -59,6 +69,7 @@ type ClusterResourcesModel interface { GetTemplateVersion(ctx context.Context, id string) (*entity.TemplateVersion, error) ListTemplateVersion(ctx context.Context, cond *operator.Condition) ([]*entity.TemplateVersion, error) CreateTemplateVersion(ctx context.Context, templateVersion *entity.TemplateVersion) (string, error) + CreateTemplateVersionBatch(ctx context.Context, templateVersions []*entity.TemplateVersion) error UpdateTemplateVersion(ctx context.Context, id string, templateVersion entity.M) error UpdateTemplateVersionBySpecial( ctx context.Context, projectCode, templateName, templateSpace string, templateVersion entity.M) error @@ -81,15 +92,17 @@ type modelSet struct { *template.ModelTemplate *templateversion.ModelTemplateVersion *envmanage.ModelEnvManage + *templatespacecollect.ModelTemplateSpaceCollect } // New return a new ClusterResourcesModel instance func New(db drivers.DB) ClusterResourcesModel { return &modelSet{ - ModelView: view.New(db), - ModelTemplateSpace: templatespace.New(db), - ModelTemplate: template.New(db), - ModelTemplateVersion: templateversion.New(db), - ModelEnvManage: envmanage.New(db), + ModelView: view.New(db), + ModelTemplateSpace: templatespace.New(db), + ModelTemplate: template.New(db), + ModelTemplateVersion: templateversion.New(db), + ModelEnvManage: envmanage.New(db), + ModelTemplateSpaceCollect: templatespacecollect.New(db), } } diff --git a/bcs-services/cluster-resources/pkg/store/template/template.go b/bcs-services/cluster-resources/pkg/store/template/template.go index 400a3ffb31..cb49c0b663 100644 --- a/bcs-services/cluster-resources/pkg/store/template/template.go +++ b/bcs-services/cluster-resources/pkg/store/template/template.go @@ -150,6 +150,31 @@ func (m *ModelTemplate) CreateTemplate( return template.ID.Hex(), nil } +// CreateTemplateBatch create a batch entity.Template into database +func (m *ModelTemplate) CreateTemplateBatch(ctx context.Context, templates []*entity.Template) error { + if len(templates) == 0 { + return nil + } + + if err := m.ensureTable(ctx); err != nil { + return err + } + + insertValues := make([]interface{}, 0) + now := time.Now() + for _, template := range templates { + // id 覆盖及时间覆盖 + template.ID = primitive.NewObjectIDFromTimestamp(now) + template.CreateAt = now.UTC().Unix() + template.UpdateAt = now.UTC().Unix() + insertValues = append(insertValues, template) + } + if _, err := m.db.Table(m.tableName).Insert(ctx, insertValues); err != nil { + return err + } + return nil +} + // UpdateTemplate update an entity.Template into database func (m *ModelTemplate) UpdateTemplate(ctx context.Context, id string, template entity.M) error { if id == "" { diff --git a/bcs-services/cluster-resources/pkg/store/templatespacecollect/templatespacecollect.go b/bcs-services/cluster-resources/pkg/store/templatespacecollect/templatespacecollect.go new file mode 100644 index 0000000000..1ed4db5e75 --- /dev/null +++ b/bcs-services/cluster-resources/pkg/store/templatespacecollect/templatespacecollect.go @@ -0,0 +1,199 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package templatespacecollect template space collect +package templatespacecollect + +import ( + "context" + "fmt" + "sync" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/pkg/odm/drivers" + "github.com/Tencent/bk-bcs/bcs-common/pkg/odm/operator" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/bson/primitive" + + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/entity" + "github.com/Tencent/bk-bcs/bcs-services/cluster-resources/pkg/store/utils" +) + +const ( + tableName = "templatespacecollect" +) + +var ( + tableIndexes = []drivers.Index{ + { + Name: tableName + "_idx", + Key: bson.D{ + bson.E{Key: entity.FieldKeyProjectCode, Value: 1}, + bson.E{Key: entity.FieldKeyTemplateSpaceID, Value: 1}, + bson.E{Key: entity.FieldKeyCreator, Value: 1}, + }, + Unique: false, + }, + } +) + +// ModelTemplateSpaceCollect provides handling template space collect operations to database +type ModelTemplateSpaceCollect struct { + tableName string + indexes []drivers.Index + db drivers.DB + isTableEnsured bool + isTableEnsuredMutex sync.Mutex +} + +// New return a new ModelTemplateSpaceCollect instance +func New(db drivers.DB) *ModelTemplateSpaceCollect { + return &ModelTemplateSpaceCollect{ + tableName: utils.DataTableNamePrefix + tableName, + indexes: tableIndexes, + db: db, + } +} + +// ensure object database table and table indexes +func (m *ModelTemplateSpaceCollect) ensureTable(ctx context.Context) error { + if m.isTableEnsured { + return nil + } + + m.isTableEnsuredMutex.Lock() + defer m.isTableEnsuredMutex.Unlock() + if m.isTableEnsured { + return nil + } + + if err := utils.EnsureTable(ctx, m.db, m.tableName, m.indexes); err != nil { + return err + } + m.isTableEnsured = true + return nil +} + +// GetTemplateSpaceCollect get a specific entity.TemplateSpaceCollect from database +func (m *ModelTemplateSpaceCollect) GetTemplateSpaceCollect(ctx context.Context, id string) ( + *entity.TemplateSpaceCollect, error) { + if id == "" { + return nil, fmt.Errorf("can not get with empty id") + } + + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, fmt.Errorf("invalid id") + } + + cond := operator.NewLeafCondition(operator.Eq, operator.M{ + entity.FieldKeyObjectID: objectID, + }) + + templateSpaceCollect := &entity.TemplateSpaceCollect{} + if err := m.db.Table(m.tableName).Find(cond).One(ctx, templateSpaceCollect); err != nil { + return nil, err + } + + return templateSpaceCollect, nil +} + +// ListTemplateSpaceCollect get a list of entity.TemplateSpaceCollect by condition from database +func (m *ModelTemplateSpaceCollect) ListTemplateSpaceCollect( + ctx context.Context, templateSpaceID, projectCode, username string) ([]*entity.TemplateSpaceAndCollect, error) { + + t := make([]*entity.TemplateSpaceAndCollect, 0) + // 构建聚合管道, 文件夹名称有可能会更新,不想在这张表维护 + match := operator.M{"projectCode": projectCode, "username": username} + if templateSpaceID != "" { + spaceID, err := primitive.ObjectIDFromHex(templateSpaceID) + if err != nil { + return nil, err + } + match[entity.FieldKeyTemplateSpaceID] = spaceID + } + pipeline := []operator.M{ + {"$match": match}, + {"$lookup": operator.M{ + "from": "bcsclusterresources_templatespace", + "localField": "templateSpaceID", + "foreignField": "_id", + "as": "templatespace", + }}, + {"$unwind": "$templatespace"}, + {"$project": operator.M{ + "_id": 1, + "templateSpaceID": 1, + "projectCode": 1, + "username": 1, + "createAt": 1, + "name": "$templatespace.name", + }}, + } + + err := m.db.Table(m.tableName).Aggregation(ctx, pipeline, &t) + + if err != nil { + return nil, err + } + + return t, nil +} + +// CreateTemplateSpaceCollect create a new entity.TemplateSpaceCollect into database +func (m *ModelTemplateSpaceCollect) CreateTemplateSpaceCollect( + ctx context.Context, templateSpaceCollect *entity.TemplateSpaceCollect) (string, error) { + if templateSpaceCollect == nil { + return "", fmt.Errorf("can not create empty templateSpaceCollect") + } + + if err := m.ensureTable(ctx); err != nil { + return "", err + } + + // 没有id的情况下生成 + now := time.Now() + if templateSpaceCollect.ID.IsZero() { + templateSpaceCollect.ID = primitive.NewObjectIDFromTimestamp(now) + } + + if templateSpaceCollect.CreateAt == 0 { + templateSpaceCollect.CreateAt = now.UTC().Unix() + } + + if _, err := m.db.Table(m.tableName).Insert(ctx, []interface{}{templateSpaceCollect}); err != nil { + return "", err + } + return templateSpaceCollect.ID.Hex(), nil +} + +// DeleteTemplateSpaceCollect delete a specific entity.TemplateSpaceCollect from database +func (m *ModelTemplateSpaceCollect) DeleteTemplateSpaceCollect(ctx context.Context, id string) error { + if id == "" { + return fmt.Errorf("can not delete with empty id") + } + + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return fmt.Errorf("invalid id") + } + + cond := operator.NewLeafCondition(operator.Eq, operator.M{ + entity.FieldKeyObjectID: objectID, + }) + + if _, err := m.db.Table(m.tableName).Delete(ctx, cond); err != nil { + return err + } + + return nil +} diff --git a/bcs-services/cluster-resources/pkg/store/templateversion/templateversion.go b/bcs-services/cluster-resources/pkg/store/templateversion/templateversion.go index f54bb15cc8..b8cd2e4d14 100644 --- a/bcs-services/cluster-resources/pkg/store/templateversion/templateversion.go +++ b/bcs-services/cluster-resources/pkg/store/templateversion/templateversion.go @@ -194,6 +194,32 @@ func (m *ModelTemplateVersion) CreateTemplateVersion( return templateVersion.ID.Hex(), nil } +// CreateTemplateVersionBatch create a batch entity.TemplateVersion into database +func (m *ModelTemplateVersion) CreateTemplateVersionBatch( + ctx context.Context, templateVersions []*entity.TemplateVersion) error { + if len(templateVersions) == 0 { + return nil + } + + if err := m.ensureTable(ctx); err != nil { + return err + } + + insertValues := make([]interface{}, 0) + now := time.Now() + for _, templateVersion := range templateVersions { + // id 覆盖及时间覆盖 + templateVersion.ID = primitive.NewObjectIDFromTimestamp(now) + templateVersion.CreateAt = now.UTC().Unix() + insertValues = append(insertValues, templateVersion) + } + + if _, err := m.db.Table(m.tableName).Insert(ctx, insertValues); err != nil { + return err + } + return nil +} + // UpdateTemplateVersion update an entity.TemplateVersion into database func (m *ModelTemplateVersion) UpdateTemplateVersion(ctx context.Context, id string, templateVersion entity.M) error { if id == "" { diff --git a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.go b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.go index cccb076a04..0bbcb8a139 100644 --- a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.go +++ b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.go @@ -4213,6 +4213,7 @@ type ListTemplateSpaceReq struct { unknownFields protoimpl.UnknownFields ProjectCode string `protobuf:"bytes,1,opt,name=projectCode,proto3" json:"projectCode,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } func (x *ListTemplateSpaceReq) Reset() { @@ -4254,6 +4255,13 @@ func (x *ListTemplateSpaceReq) GetProjectCode() string { return "" } +func (x *ListTemplateSpaceReq) GetName() string { + if x != nil { + return x.Name + } + return "" +} + type CreateTemplateSpaceReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4443,6 +4451,218 @@ func (x *DeleteTemplateSpaceReq) GetProjectCode() string { return "" } +type CopyTemplateSpaceReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ProjectCode string `protobuf:"bytes,2,opt,name=projectCode,proto3" json:"projectCode,omitempty"` +} + +func (x *CopyTemplateSpaceReq) Reset() { + *x = CopyTemplateSpaceReq{} + if protoimpl.UnsafeEnabled { + mi := &file_cluster_resources_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CopyTemplateSpaceReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CopyTemplateSpaceReq) ProtoMessage() {} + +func (x *CopyTemplateSpaceReq) ProtoReflect() protoreflect.Message { + mi := &file_cluster_resources_proto_msgTypes[62] + 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 CopyTemplateSpaceReq.ProtoReflect.Descriptor instead. +func (*CopyTemplateSpaceReq) Descriptor() ([]byte, []int) { + return file_cluster_resources_proto_rawDescGZIP(), []int{62} +} + +func (x *CopyTemplateSpaceReq) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *CopyTemplateSpaceReq) GetProjectCode() string { + if x != nil { + return x.ProjectCode + } + return "" +} + +type ListTemplateSpaceCollectReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProjectCode string `protobuf:"bytes,1,opt,name=projectCode,proto3" json:"projectCode,omitempty"` +} + +func (x *ListTemplateSpaceCollectReq) Reset() { + *x = ListTemplateSpaceCollectReq{} + if protoimpl.UnsafeEnabled { + mi := &file_cluster_resources_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTemplateSpaceCollectReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTemplateSpaceCollectReq) ProtoMessage() {} + +func (x *ListTemplateSpaceCollectReq) ProtoReflect() protoreflect.Message { + mi := &file_cluster_resources_proto_msgTypes[63] + 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 ListTemplateSpaceCollectReq.ProtoReflect.Descriptor instead. +func (*ListTemplateSpaceCollectReq) Descriptor() ([]byte, []int) { + return file_cluster_resources_proto_rawDescGZIP(), []int{63} +} + +func (x *ListTemplateSpaceCollectReq) GetProjectCode() string { + if x != nil { + return x.ProjectCode + } + return "" +} + +type CreateTemplateSpaceCollectReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProjectCode string `protobuf:"bytes,1,opt,name=projectCode,proto3" json:"projectCode,omitempty"` + TemplateSpaceID string `protobuf:"bytes,2,opt,name=templateSpaceID,proto3" json:"templateSpaceID,omitempty"` +} + +func (x *CreateTemplateSpaceCollectReq) Reset() { + *x = CreateTemplateSpaceCollectReq{} + if protoimpl.UnsafeEnabled { + mi := &file_cluster_resources_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTemplateSpaceCollectReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTemplateSpaceCollectReq) ProtoMessage() {} + +func (x *CreateTemplateSpaceCollectReq) ProtoReflect() protoreflect.Message { + mi := &file_cluster_resources_proto_msgTypes[64] + 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 CreateTemplateSpaceCollectReq.ProtoReflect.Descriptor instead. +func (*CreateTemplateSpaceCollectReq) Descriptor() ([]byte, []int) { + return file_cluster_resources_proto_rawDescGZIP(), []int{64} +} + +func (x *CreateTemplateSpaceCollectReq) GetProjectCode() string { + if x != nil { + return x.ProjectCode + } + return "" +} + +func (x *CreateTemplateSpaceCollectReq) GetTemplateSpaceID() string { + if x != nil { + return x.TemplateSpaceID + } + return "" +} + +type DeleteTemplateSpaceCollectReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ProjectCode string `protobuf:"bytes,2,opt,name=projectCode,proto3" json:"projectCode,omitempty"` +} + +func (x *DeleteTemplateSpaceCollectReq) Reset() { + *x = DeleteTemplateSpaceCollectReq{} + if protoimpl.UnsafeEnabled { + mi := &file_cluster_resources_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteTemplateSpaceCollectReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteTemplateSpaceCollectReq) ProtoMessage() {} + +func (x *DeleteTemplateSpaceCollectReq) ProtoReflect() protoreflect.Message { + mi := &file_cluster_resources_proto_msgTypes[65] + 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 DeleteTemplateSpaceCollectReq.ProtoReflect.Descriptor instead. +func (*DeleteTemplateSpaceCollectReq) Descriptor() ([]byte, []int) { + return file_cluster_resources_proto_rawDescGZIP(), []int{65} +} + +func (x *DeleteTemplateSpaceCollectReq) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DeleteTemplateSpaceCollectReq) GetProjectCode() string { + if x != nil { + return x.ProjectCode + } + return "" +} + type GetTemplateMetadataReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4455,7 +4675,7 @@ type GetTemplateMetadataReq struct { func (x *GetTemplateMetadataReq) Reset() { *x = GetTemplateMetadataReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[62] + mi := &file_cluster_resources_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4468,7 +4688,7 @@ func (x *GetTemplateMetadataReq) String() string { func (*GetTemplateMetadataReq) ProtoMessage() {} func (x *GetTemplateMetadataReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[62] + mi := &file_cluster_resources_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4481,7 +4701,7 @@ func (x *GetTemplateMetadataReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTemplateMetadataReq.ProtoReflect.Descriptor instead. func (*GetTemplateMetadataReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{62} + return file_cluster_resources_proto_rawDescGZIP(), []int{66} } func (x *GetTemplateMetadataReq) GetId() string { @@ -4510,7 +4730,7 @@ type ListTemplateMetadataReq struct { func (x *ListTemplateMetadataReq) Reset() { *x = ListTemplateMetadataReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[63] + mi := &file_cluster_resources_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4523,7 +4743,7 @@ func (x *ListTemplateMetadataReq) String() string { func (*ListTemplateMetadataReq) ProtoMessage() {} func (x *ListTemplateMetadataReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[63] + mi := &file_cluster_resources_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4536,7 +4756,7 @@ func (x *ListTemplateMetadataReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateMetadataReq.ProtoReflect.Descriptor instead. func (*ListTemplateMetadataReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{63} + return file_cluster_resources_proto_rawDescGZIP(), []int{67} } func (x *ListTemplateMetadataReq) GetProjectCode() string { @@ -4569,12 +4789,13 @@ type CreateTemplateMetadataReq struct { IsDraft bool `protobuf:"varint,9,opt,name=isDraft,proto3" json:"isDraft,omitempty"` DraftVersion string `protobuf:"bytes,10,opt,name=draftVersion,proto3" json:"draftVersion,omitempty"` DraftContent string `protobuf:"bytes,11,opt,name=draftContent,proto3" json:"draftContent,omitempty"` + DraftEditFormat string `protobuf:"bytes,12,opt,name=draftEditFormat,proto3" json:"draftEditFormat,omitempty"` } func (x *CreateTemplateMetadataReq) Reset() { *x = CreateTemplateMetadataReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[64] + mi := &file_cluster_resources_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4587,7 +4808,7 @@ func (x *CreateTemplateMetadataReq) String() string { func (*CreateTemplateMetadataReq) ProtoMessage() {} func (x *CreateTemplateMetadataReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[64] + mi := &file_cluster_resources_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4600,7 +4821,7 @@ func (x *CreateTemplateMetadataReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateMetadataReq.ProtoReflect.Descriptor instead. func (*CreateTemplateMetadataReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{64} + return file_cluster_resources_proto_rawDescGZIP(), []int{68} } func (x *CreateTemplateMetadataReq) GetProjectCode() string { @@ -4680,27 +4901,35 @@ func (x *CreateTemplateMetadataReq) GetDraftContent() string { return "" } +func (x *CreateTemplateMetadataReq) GetDraftEditFormat() string { + if x != nil { + return x.DraftEditFormat + } + return "" +} + type UpdateTemplateMetadataReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ProjectCode string `protobuf:"bytes,2,opt,name=projectCode,proto3" json:"projectCode,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Tags []string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"` - Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` - VersionMode VersionMode `protobuf:"varint,8,opt,name=versionMode,proto3,enum=clusterresources.VersionMode" json:"versionMode,omitempty"` - IsDraft bool `protobuf:"varint,9,opt,name=isDraft,proto3" json:"isDraft,omitempty"` - DraftVersion string `protobuf:"bytes,10,opt,name=draftVersion,proto3" json:"draftVersion,omitempty"` - DraftContent string `protobuf:"bytes,11,opt,name=draftContent,proto3" json:"draftContent,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ProjectCode string `protobuf:"bytes,2,opt,name=projectCode,proto3" json:"projectCode,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Tags []string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"` + Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` + VersionMode VersionMode `protobuf:"varint,8,opt,name=versionMode,proto3,enum=clusterresources.VersionMode" json:"versionMode,omitempty"` + IsDraft bool `protobuf:"varint,9,opt,name=isDraft,proto3" json:"isDraft,omitempty"` + DraftVersion string `protobuf:"bytes,10,opt,name=draftVersion,proto3" json:"draftVersion,omitempty"` + DraftContent string `protobuf:"bytes,11,opt,name=draftContent,proto3" json:"draftContent,omitempty"` + DraftEditFormat string `protobuf:"bytes,12,opt,name=draftEditFormat,proto3" json:"draftEditFormat,omitempty"` } func (x *UpdateTemplateMetadataReq) Reset() { *x = UpdateTemplateMetadataReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[65] + mi := &file_cluster_resources_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4713,7 +4942,7 @@ func (x *UpdateTemplateMetadataReq) String() string { func (*UpdateTemplateMetadataReq) ProtoMessage() {} func (x *UpdateTemplateMetadataReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[65] + mi := &file_cluster_resources_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4726,7 +4955,7 @@ func (x *UpdateTemplateMetadataReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTemplateMetadataReq.ProtoReflect.Descriptor instead. func (*UpdateTemplateMetadataReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{65} + return file_cluster_resources_proto_rawDescGZIP(), []int{69} } func (x *UpdateTemplateMetadataReq) GetId() string { @@ -4799,6 +5028,13 @@ func (x *UpdateTemplateMetadataReq) GetDraftContent() string { return "" } +func (x *UpdateTemplateMetadataReq) GetDraftEditFormat() string { + if x != nil { + return x.DraftEditFormat + } + return "" +} + type DeleteTemplateMetadataReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4811,7 +5047,7 @@ type DeleteTemplateMetadataReq struct { func (x *DeleteTemplateMetadataReq) Reset() { *x = DeleteTemplateMetadataReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[66] + mi := &file_cluster_resources_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4824,7 +5060,7 @@ func (x *DeleteTemplateMetadataReq) String() string { func (*DeleteTemplateMetadataReq) ProtoMessage() {} func (x *DeleteTemplateMetadataReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[66] + mi := &file_cluster_resources_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4837,7 +5073,7 @@ func (x *DeleteTemplateMetadataReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateMetadataReq.ProtoReflect.Descriptor instead. func (*DeleteTemplateMetadataReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{66} + return file_cluster_resources_proto_rawDescGZIP(), []int{70} } func (x *DeleteTemplateMetadataReq) GetId() string { @@ -4866,7 +5102,7 @@ type GetTemplateVersionReq struct { func (x *GetTemplateVersionReq) Reset() { *x = GetTemplateVersionReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[67] + mi := &file_cluster_resources_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4879,7 +5115,7 @@ func (x *GetTemplateVersionReq) String() string { func (*GetTemplateVersionReq) ProtoMessage() {} func (x *GetTemplateVersionReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[67] + mi := &file_cluster_resources_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4892,7 +5128,7 @@ func (x *GetTemplateVersionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTemplateVersionReq.ProtoReflect.Descriptor instead. func (*GetTemplateVersionReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{67} + return file_cluster_resources_proto_rawDescGZIP(), []int{71} } func (x *GetTemplateVersionReq) GetId() string { @@ -4923,7 +5159,7 @@ type GetTemplateContentReq struct { func (x *GetTemplateContentReq) Reset() { *x = GetTemplateContentReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[68] + mi := &file_cluster_resources_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4936,7 +5172,7 @@ func (x *GetTemplateContentReq) String() string { func (*GetTemplateContentReq) ProtoMessage() {} func (x *GetTemplateContentReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[68] + mi := &file_cluster_resources_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4949,7 +5185,7 @@ func (x *GetTemplateContentReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTemplateContentReq.ProtoReflect.Descriptor instead. func (*GetTemplateContentReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{68} + return file_cluster_resources_proto_rawDescGZIP(), []int{72} } func (x *GetTemplateContentReq) GetProjectCode() string { @@ -4992,7 +5228,7 @@ type ListTemplateVersionReq struct { func (x *ListTemplateVersionReq) Reset() { *x = ListTemplateVersionReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[69] + mi := &file_cluster_resources_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5005,7 +5241,7 @@ func (x *ListTemplateVersionReq) String() string { func (*ListTemplateVersionReq) ProtoMessage() {} func (x *ListTemplateVersionReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[69] + mi := &file_cluster_resources_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5018,7 +5254,7 @@ func (x *ListTemplateVersionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateVersionReq.ProtoReflect.Descriptor instead. func (*ListTemplateVersionReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{69} + return file_cluster_resources_proto_rawDescGZIP(), []int{73} } func (x *ListTemplateVersionReq) GetProjectCode() string { @@ -5052,7 +5288,7 @@ type CreateTemplateVersionReq struct { func (x *CreateTemplateVersionReq) Reset() { *x = CreateTemplateVersionReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[70] + mi := &file_cluster_resources_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5065,7 +5301,7 @@ func (x *CreateTemplateVersionReq) String() string { func (*CreateTemplateVersionReq) ProtoMessage() {} func (x *CreateTemplateVersionReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[70] + mi := &file_cluster_resources_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5078,7 +5314,7 @@ func (x *CreateTemplateVersionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateVersionReq.ProtoReflect.Descriptor instead. func (*CreateTemplateVersionReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{70} + return file_cluster_resources_proto_rawDescGZIP(), []int{74} } func (x *CreateTemplateVersionReq) GetProjectCode() string { @@ -5142,7 +5378,7 @@ type DeleteTemplateVersionReq struct { func (x *DeleteTemplateVersionReq) Reset() { *x = DeleteTemplateVersionReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[71] + mi := &file_cluster_resources_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5155,7 +5391,7 @@ func (x *DeleteTemplateVersionReq) String() string { func (*DeleteTemplateVersionReq) ProtoMessage() {} func (x *DeleteTemplateVersionReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[71] + mi := &file_cluster_resources_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5168,7 +5404,7 @@ func (x *DeleteTemplateVersionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTemplateVersionReq.ProtoReflect.Descriptor instead. func (*DeleteTemplateVersionReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{71} + return file_cluster_resources_proto_rawDescGZIP(), []int{75} } func (x *DeleteTemplateVersionReq) GetId() string { @@ -5205,7 +5441,7 @@ type CreateTemplateSetReq struct { func (x *CreateTemplateSetReq) Reset() { *x = CreateTemplateSetReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[72] + mi := &file_cluster_resources_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5218,7 +5454,7 @@ func (x *CreateTemplateSetReq) String() string { func (*CreateTemplateSetReq) ProtoMessage() {} func (x *CreateTemplateSetReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[72] + mi := &file_cluster_resources_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5231,7 +5467,7 @@ func (x *CreateTemplateSetReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTemplateSetReq.ProtoReflect.Descriptor instead. func (*CreateTemplateSetReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{72} + return file_cluster_resources_proto_rawDescGZIP(), []int{76} } func (x *CreateTemplateSetReq) GetName() string { @@ -5317,7 +5553,7 @@ type TemplateID struct { func (x *TemplateID) Reset() { *x = TemplateID{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[73] + mi := &file_cluster_resources_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5330,7 +5566,7 @@ func (x *TemplateID) String() string { func (*TemplateID) ProtoMessage() {} func (x *TemplateID) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[73] + mi := &file_cluster_resources_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5343,7 +5579,7 @@ func (x *TemplateID) ProtoReflect() protoreflect.Message { // Deprecated: Use TemplateID.ProtoReflect.Descriptor instead. func (*TemplateID) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{73} + return file_cluster_resources_proto_rawDescGZIP(), []int{77} } func (x *TemplateID) GetTemplateSpace() string { @@ -5381,7 +5617,7 @@ type ListTemplateFileVariablesReq struct { func (x *ListTemplateFileVariablesReq) Reset() { *x = ListTemplateFileVariablesReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[74] + mi := &file_cluster_resources_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5394,7 +5630,7 @@ func (x *ListTemplateFileVariablesReq) String() string { func (*ListTemplateFileVariablesReq) ProtoMessage() {} func (x *ListTemplateFileVariablesReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[74] + mi := &file_cluster_resources_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5407,7 +5643,7 @@ func (x *ListTemplateFileVariablesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplateFileVariablesReq.ProtoReflect.Descriptor instead. func (*ListTemplateFileVariablesReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{74} + return file_cluster_resources_proto_rawDescGZIP(), []int{78} } func (x *ListTemplateFileVariablesReq) GetProjectCode() string { @@ -5453,7 +5689,7 @@ type DeployTemplateFileReq struct { func (x *DeployTemplateFileReq) Reset() { *x = DeployTemplateFileReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[75] + mi := &file_cluster_resources_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5466,7 +5702,7 @@ func (x *DeployTemplateFileReq) String() string { func (*DeployTemplateFileReq) ProtoMessage() {} func (x *DeployTemplateFileReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[75] + mi := &file_cluster_resources_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5479,7 +5715,7 @@ func (x *DeployTemplateFileReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeployTemplateFileReq.ProtoReflect.Descriptor instead. func (*DeployTemplateFileReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{75} + return file_cluster_resources_proto_rawDescGZIP(), []int{79} } func (x *DeployTemplateFileReq) GetProjectCode() string { @@ -5529,7 +5765,7 @@ type GetEnvManageReq struct { func (x *GetEnvManageReq) Reset() { *x = GetEnvManageReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[76] + mi := &file_cluster_resources_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5542,7 +5778,7 @@ func (x *GetEnvManageReq) String() string { func (*GetEnvManageReq) ProtoMessage() {} func (x *GetEnvManageReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[76] + mi := &file_cluster_resources_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5555,7 +5791,7 @@ func (x *GetEnvManageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetEnvManageReq.ProtoReflect.Descriptor instead. func (*GetEnvManageReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{76} + return file_cluster_resources_proto_rawDescGZIP(), []int{80} } func (x *GetEnvManageReq) GetId() string { @@ -5583,7 +5819,7 @@ type ListEnvManagesReq struct { func (x *ListEnvManagesReq) Reset() { *x = ListEnvManagesReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[77] + mi := &file_cluster_resources_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5596,7 +5832,7 @@ func (x *ListEnvManagesReq) String() string { func (*ListEnvManagesReq) ProtoMessage() {} func (x *ListEnvManagesReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[77] + mi := &file_cluster_resources_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5609,7 +5845,7 @@ func (x *ListEnvManagesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEnvManagesReq.ProtoReflect.Descriptor instead. func (*ListEnvManagesReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{77} + return file_cluster_resources_proto_rawDescGZIP(), []int{81} } func (x *ListEnvManagesReq) GetProjectCode() string { @@ -5632,7 +5868,7 @@ type CreateEnvManageReq struct { func (x *CreateEnvManageReq) Reset() { *x = CreateEnvManageReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[78] + mi := &file_cluster_resources_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5645,7 +5881,7 @@ func (x *CreateEnvManageReq) String() string { func (*CreateEnvManageReq) ProtoMessage() {} func (x *CreateEnvManageReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[78] + mi := &file_cluster_resources_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5658,7 +5894,7 @@ func (x *CreateEnvManageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateEnvManageReq.ProtoReflect.Descriptor instead. func (*CreateEnvManageReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{78} + return file_cluster_resources_proto_rawDescGZIP(), []int{82} } func (x *CreateEnvManageReq) GetProjectCode() string { @@ -5696,7 +5932,7 @@ type UpdateEnvManageReq struct { func (x *UpdateEnvManageReq) Reset() { *x = UpdateEnvManageReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[79] + mi := &file_cluster_resources_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5709,7 +5945,7 @@ func (x *UpdateEnvManageReq) String() string { func (*UpdateEnvManageReq) ProtoMessage() {} func (x *UpdateEnvManageReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[79] + mi := &file_cluster_resources_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5722,7 +5958,7 @@ func (x *UpdateEnvManageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateEnvManageReq.ProtoReflect.Descriptor instead. func (*UpdateEnvManageReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{79} + return file_cluster_resources_proto_rawDescGZIP(), []int{83} } func (x *UpdateEnvManageReq) GetId() string { @@ -5766,7 +6002,7 @@ type RenameEnvManageReq struct { func (x *RenameEnvManageReq) Reset() { *x = RenameEnvManageReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[80] + mi := &file_cluster_resources_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5779,7 +6015,7 @@ func (x *RenameEnvManageReq) String() string { func (*RenameEnvManageReq) ProtoMessage() {} func (x *RenameEnvManageReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[80] + mi := &file_cluster_resources_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5792,7 +6028,7 @@ func (x *RenameEnvManageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameEnvManageReq.ProtoReflect.Descriptor instead. func (*RenameEnvManageReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{80} + return file_cluster_resources_proto_rawDescGZIP(), []int{84} } func (x *RenameEnvManageReq) GetId() string { @@ -5828,7 +6064,7 @@ type DeleteEnvManageReq struct { func (x *DeleteEnvManageReq) Reset() { *x = DeleteEnvManageReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[81] + mi := &file_cluster_resources_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5841,7 +6077,7 @@ func (x *DeleteEnvManageReq) String() string { func (*DeleteEnvManageReq) ProtoMessage() {} func (x *DeleteEnvManageReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[81] + mi := &file_cluster_resources_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5854,7 +6090,7 @@ func (x *DeleteEnvManageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteEnvManageReq.ProtoReflect.Descriptor instead. func (*DeleteEnvManageReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{81} + return file_cluster_resources_proto_rawDescGZIP(), []int{85} } func (x *DeleteEnvManageReq) GetId() string { @@ -5894,7 +6130,7 @@ type FetchMultiClusterResourceReq struct { func (x *FetchMultiClusterResourceReq) Reset() { *x = FetchMultiClusterResourceReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[82] + mi := &file_cluster_resources_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5907,7 +6143,7 @@ func (x *FetchMultiClusterResourceReq) String() string { func (*FetchMultiClusterResourceReq) ProtoMessage() {} func (x *FetchMultiClusterResourceReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[82] + mi := &file_cluster_resources_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5920,7 +6156,7 @@ func (x *FetchMultiClusterResourceReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchMultiClusterResourceReq.ProtoReflect.Descriptor instead. func (*FetchMultiClusterResourceReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{82} + return file_cluster_resources_proto_rawDescGZIP(), []int{86} } func (x *FetchMultiClusterResourceReq) GetProjectCode() string { @@ -6014,6 +6250,85 @@ func (x *FetchMultiClusterResourceReq) GetOffset() uint32 { return 0 } +type FetchMultiClusterApiResourcesReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProjectCode string `protobuf:"bytes,1,opt,name=projectCode,proto3" json:"projectCode,omitempty"` + ClusterNamespaces []*ClusterNamespaces `protobuf:"bytes,2,rep,name=clusterNamespaces,proto3" json:"clusterNamespaces,omitempty"` + OnlyCrd bool `protobuf:"varint,3,opt,name=onlyCrd,proto3" json:"onlyCrd,omitempty"` + ViewID string `protobuf:"bytes,4,opt,name=viewID,proto3" json:"viewID,omitempty"` + LabelSelector []*LabelSelector `protobuf:"bytes,6,rep,name=labelSelector,proto3" json:"labelSelector,omitempty"` +} + +func (x *FetchMultiClusterApiResourcesReq) Reset() { + *x = FetchMultiClusterApiResourcesReq{} + if protoimpl.UnsafeEnabled { + mi := &file_cluster_resources_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FetchMultiClusterApiResourcesReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FetchMultiClusterApiResourcesReq) ProtoMessage() {} + +func (x *FetchMultiClusterApiResourcesReq) ProtoReflect() protoreflect.Message { + mi := &file_cluster_resources_proto_msgTypes[87] + 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 FetchMultiClusterApiResourcesReq.ProtoReflect.Descriptor instead. +func (*FetchMultiClusterApiResourcesReq) Descriptor() ([]byte, []int) { + return file_cluster_resources_proto_rawDescGZIP(), []int{87} +} + +func (x *FetchMultiClusterApiResourcesReq) GetProjectCode() string { + if x != nil { + return x.ProjectCode + } + return "" +} + +func (x *FetchMultiClusterApiResourcesReq) GetClusterNamespaces() []*ClusterNamespaces { + if x != nil { + return x.ClusterNamespaces + } + return nil +} + +func (x *FetchMultiClusterApiResourcesReq) GetOnlyCrd() bool { + if x != nil { + return x.OnlyCrd + } + return false +} + +func (x *FetchMultiClusterApiResourcesReq) GetViewID() string { + if x != nil { + return x.ViewID + } + return "" +} + +func (x *FetchMultiClusterApiResourcesReq) GetLabelSelector() []*LabelSelector { + if x != nil { + return x.LabelSelector + } + return nil +} + type FetchMultiClusterCustomResourceReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6037,7 +6352,7 @@ type FetchMultiClusterCustomResourceReq struct { func (x *FetchMultiClusterCustomResourceReq) Reset() { *x = FetchMultiClusterCustomResourceReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[83] + mi := &file_cluster_resources_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6050,7 +6365,7 @@ func (x *FetchMultiClusterCustomResourceReq) String() string { func (*FetchMultiClusterCustomResourceReq) ProtoMessage() {} func (x *FetchMultiClusterCustomResourceReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[83] + mi := &file_cluster_resources_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6063,7 +6378,7 @@ func (x *FetchMultiClusterCustomResourceReq) ProtoReflect() protoreflect.Message // Deprecated: Use FetchMultiClusterCustomResourceReq.ProtoReflect.Descriptor instead. func (*FetchMultiClusterCustomResourceReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{83} + return file_cluster_resources_proto_rawDescGZIP(), []int{88} } func (x *FetchMultiClusterCustomResourceReq) GetProjectCode() string { @@ -6173,7 +6488,7 @@ type MultiClusterResourceCountReq struct { func (x *MultiClusterResourceCountReq) Reset() { *x = MultiClusterResourceCountReq{} if protoimpl.UnsafeEnabled { - mi := &file_cluster_resources_proto_msgTypes[84] + mi := &file_cluster_resources_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6186,7 +6501,7 @@ func (x *MultiClusterResourceCountReq) String() string { func (*MultiClusterResourceCountReq) ProtoMessage() {} func (x *MultiClusterResourceCountReq) ProtoReflect() protoreflect.Message { - mi := &file_cluster_resources_proto_msgTypes[84] + mi := &file_cluster_resources_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6199,7 +6514,7 @@ func (x *MultiClusterResourceCountReq) ProtoReflect() protoreflect.Message { // Deprecated: Use MultiClusterResourceCountReq.ProtoReflect.Descriptor instead. func (*MultiClusterResourceCountReq) Descriptor() ([]byte, []int) { - return file_cluster_resources_proto_rawDescGZIP(), []int{84} + return file_cluster_resources_proto_rawDescGZIP(), []int{89} } func (x *MultiClusterResourceCountReq) GetProjectCode() string { @@ -7498,370 +7813,413 @@ var file_cluster_resources_proto_rawDesc = []byte{ 0x41, 0x3a, 0x0a, 0x38, 0x2a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, - 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x22, 0x94, 0x01, 0x0a, + 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x22, 0xbe, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x3a, 0x3e, 0x92, 0x41, 0x3b, 0x0a, 0x39, 0x2a, 0x14, 0x4c, 0x69, 0x73, 0x74, + 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, + 0xb9, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x3e, 0x92, + 0x41, 0x3b, 0x0a, 0x39, 0x2a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, + 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x22, 0xfd, 0x01, + 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, + 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, + 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0x96, 0x87, 0xe4, 0xbb, + 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, + 0x01, 0x18, 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x14, + 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe6, 0x8f, + 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x3a, 0x3a, 0x92, 0x41, 0x37, 0x0a, 0x35, 0x2a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x32, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, - 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, 0x88, 0x97, - 0xe8, 0xa1, 0xa8, 0x22, 0xfd, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, - 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x32, 0x1b, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x22, 0xa8, 0x02, + 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x96, 0x87, 0xe4, 0xbb, + 0xb6, 0xe5, 0xa4, 0xb9, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, + 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x1d, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, + 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x92, 0x41, + 0x37, 0x0a, 0x35, 0x2a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x1b, 0xe6, 0x9b, 0xb4, + 0xe6, 0x96, 0xb0, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, + 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x22, 0xc3, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x19, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x20, + 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, + 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, - 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x31, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x11, 0x2a, - 0x0f, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, - 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x36, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0x96, 0x87, 0xe4, 0xbb, - 0xb6, 0xe5, 0xa4, 0xb9, 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a, 0x92, 0x41, 0x37, 0x0a, 0x35, 0x2a, 0x16, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x1b, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, - 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, - 0xe5, 0xa4, 0xb9, 0x22, 0xa8, 0x02, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x29, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0x92, 0x41, 0x0e, 0x2a, - 0x0c, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, - 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, - 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, - 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0x96, 0x87, 0xe4, - 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, - 0x10, 0x01, 0x18, 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe6, - 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x3a, 0x3a, 0x92, 0x41, 0x37, 0x0a, 0x35, 0x2a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x32, 0x1b, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x22, 0xc3, - 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x96, 0x87, 0xe4, - 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, - 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, - 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x3a, 0x40, 0x92, 0x41, 0x3d, 0x0a, 0x3b, 0x2a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x32, 0x21, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe6, - 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, - 0xb6, 0xe5, 0xa4, 0xb9, 0x22, 0xc9, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, - 0x2f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1f, 0x92, 0x41, 0x14, - 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, - 0xae, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, - 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, - 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x40, - 0x92, 0x41, 0x3d, 0x0a, 0x3b, 0x2a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x32, 0x21, 0xe8, - 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, - 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, - 0x22, 0xe9, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, - 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4d, 0x0a, 0x0f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41, 0x17, 0x2a, 0x15, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, - 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xfa, - 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x3a, 0x41, 0x92, 0x41, 0x3e, 0x0a, 0x3c, - 0x2a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x32, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, - 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, - 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x22, 0x8f, 0x06, 0x0a, - 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, + 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x40, 0x92, 0x41, + 0x3d, 0x0a, 0x3b, 0x2a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x21, 0xe5, 0x88, 0xa0, + 0xe9, 0x99, 0xa4, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, + 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x22, 0xb9, + 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x70, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x19, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe5, 0xa4, 0xb9, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, + 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, + 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x3a, 0x38, 0x92, 0x41, 0x35, 0x0a, 0x33, 0x2a, 0x14, 0x43, 0x6f, 0x70, 0x79, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x1b, 0xe5, + 0xa4, 0x8d, 0xe5, 0x88, 0xb6, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, + 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x22, 0xa8, 0x01, 0x0a, 0x1b, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, - 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, - 0x8d, 0xae, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, - 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, - 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, - 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x0f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41, 0x17, 0x2a, 0x15, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, - 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, - 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, - 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, - 0xb0, 0xe6, 0x8d, 0xae, 0xe6, 0xa0, 0x87, 0xe7, 0xad, 0xbe, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x12, 0x4d, 0x0a, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, - 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, - 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x12, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x31, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x17, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, - 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x1e, 0x92, 0x41, 0x1b, 0x2a, 0x19, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, - 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x07, - 0x69, 0x73, 0x44, 0x72, 0x61, 0x66, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x11, 0x92, - 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x98, 0xaf, 0xe5, 0x90, 0xa6, 0xe8, 0x8d, 0x89, 0xe7, 0xa8, 0xbf, - 0x52, 0x07, 0x69, 0x73, 0x44, 0x72, 0x61, 0x66, 0x74, 0x12, 0x41, 0x0a, 0x0c, 0x64, 0x72, 0x61, - 0x66, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe5, 0x9f, 0xba, 0xe4, 0xba, 0x8e, 0xe6, 0xa8, 0xa1, 0xe6, - 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x52, 0x0c, - 0x64, 0x72, 0x61, 0x66, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0c, - 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe8, 0x8d, 0x89, 0xe7, 0xa8, 0xbf, 0xe5, 0x86, 0x85, 0xe5, 0xae, - 0xb9, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x3a, - 0x3d, 0x92, 0x41, 0x3a, 0x0a, 0x38, 0x2a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x71, 0x32, 0x1b, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x22, 0xce, - 0x05, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x35, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, - 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, - 0xb0, 0xe6, 0x8d, 0xae, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, - 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, - 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x29, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, - 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, - 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x42, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, - 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, - 0xae, 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe6, 0xa0, - 0x87, 0xe7, 0xad, 0xbe, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, - 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, - 0x88, 0xe6, 0x9c, 0xac, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, - 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, - 0x65, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, - 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe6, 0xa8, 0xa1, 0xe5, 0xbc, 0x8f, - 0x52, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, - 0x07, 0x69, 0x73, 0x44, 0x72, 0x61, 0x66, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x11, - 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x98, 0xaf, 0xe5, 0x90, 0xa6, 0xe8, 0x8d, 0x89, 0xe7, 0xa8, - 0xbf, 0x52, 0x07, 0x69, 0x73, 0x44, 0x72, 0x61, 0x66, 0x74, 0x12, 0x41, 0x0a, 0x0c, 0x64, 0x72, - 0x61, 0x66, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe5, 0x9f, 0xba, 0xe4, 0xba, 0x8e, 0xe6, 0xa8, 0xa1, - 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x52, - 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, - 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, - 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe8, 0x8d, 0x89, 0xe7, 0xa8, 0xbf, 0xe5, 0x86, 0x85, 0xe5, - 0xae, 0xb9, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x3a, 0x3d, 0x92, 0x41, 0x3a, 0x0a, 0x38, 0x2a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x4b, 0x92, 0x41, 0x48, 0x0a, 0x46, 0x2a, + 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x32, 0x27, 0xe8, 0x8e, + 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe6, 0x94, 0xb6, 0xe8, 0x97, 0x8f, 0xe5, + 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x22, 0xf7, 0x01, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, + 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, + 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, + 0x92, 0x41, 0x19, 0x2a, 0x17, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, + 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x49, 0x44, 0xfa, 0x42, 0x06, 0x72, + 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x3a, 0x47, 0x92, 0x41, 0x44, 0x0a, 0x42, 0x2a, 0x1d, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, + 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x32, 0x21, 0xe5, 0x88, + 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe6, 0x94, 0xb6, 0xe8, 0x97, 0x8f, 0x22, + 0xd7, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x12, 0x29, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0x92, + 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x20, 0x49, 0x44, + 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, + 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x4d, 0x92, 0x41, 0x4a, 0x0a, + 0x48, 0x2a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, + 0x32, 0x27, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe6, 0xa8, + 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe5, 0xa4, 0xb9, 0xe6, 0x94, 0xb6, 0xe8, 0x97, 0x8f, 0x22, 0xc9, 0x01, 0x0a, 0x16, 0x47, 0x65, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x71, 0x12, 0x2f, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1f, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe5, 0x85, 0x83, + 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, + 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, + 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, + 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x3a, 0x40, 0x92, 0x41, 0x3d, 0x0a, 0x3b, 0x2a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x32, 0x1b, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, - 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x22, - 0xcf, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x35, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0x92, 0x41, 0x1a, 0x2a, 0x18, - 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, - 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, - 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, - 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x3a, 0x3d, 0x92, 0x41, 0x3a, 0x0a, 0x38, 0x2a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x71, 0x32, 0x1b, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe6, 0xa8, 0xa1, 0xe6, - 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, - 0xae, 0x22, 0xc7, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x32, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0x92, 0x41, 0x17, 0x2a, 0x15, 0xe6, 0xa8, - 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, - 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x65, 0x71, 0x32, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe8, + 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x22, 0xe9, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, + 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, + 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x4d, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41, 0x17, 0x2a, 0x15, 0xe6, + 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, + 0xb6, 0xe5, 0xa4, 0xb9, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0f, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x3a, 0x41, + 0x92, 0x41, 0x3e, 0x0a, 0x3c, 0x2a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x32, 0x21, + 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, + 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, 0x88, 0x97, 0xe8, 0xa1, + 0xa8, 0x22, 0xde, 0x06, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, + 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, - 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x3c, 0x92, - 0x41, 0x39, 0x0a, 0x37, 0x2a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x32, 0x1e, 0xe8, 0x8e, 0xb7, - 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, - 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x22, 0xe9, 0x02, 0x0a, 0x15, - 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, - 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, - 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x4f, 0x0a, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x1d, 0x2a, - 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, - 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, - 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x1d, 0x2a, - 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, - 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, - 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, - 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xfa, 0x42, 0x06, - 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, - 0x36, 0x92, 0x41, 0x33, 0x0a, 0x31, 0x2a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x32, 0x18, 0xe8, - 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, - 0xb6, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x22, 0xdc, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, + 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x3d, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x1d, + 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, + 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, + 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x20, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe6, 0x8f, 0x8f, + 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x4d, 0x0a, 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41, 0x17, 0x2a, 0x15, + 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, + 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, + 0x34, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x20, 0x92, + 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe6, 0xa0, 0x87, 0xe7, 0xad, 0xbe, 0x52, + 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, + 0x52, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, + 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0x92, 0x41, 0x1b, 0x2a, 0x19, 0xe6, + 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, + 0xac, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x69, 0x73, 0x44, 0x72, 0x61, 0x66, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x11, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x98, 0xaf, 0xe5, 0x90, 0xa6, 0xe8, + 0x8d, 0x89, 0xe7, 0xa8, 0xbf, 0x52, 0x07, 0x69, 0x73, 0x44, 0x72, 0x61, 0x66, 0x74, 0x12, 0x41, + 0x0a, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe5, 0x9f, 0xba, 0xe4, 0xba, + 0x8e, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, + 0xe6, 0x9c, 0xac, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x41, 0x0a, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0xa8, + 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe8, 0x8d, 0x89, 0xe7, 0xa8, 0xbf, + 0xe5, 0x86, 0x85, 0xe5, 0xae, 0xb9, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0f, 0x64, 0x72, 0x61, 0x66, 0x74, 0x45, 0x64, 0x69, + 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, + 0x41, 0x20, 0x2a, 0x1e, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe8, 0x8d, 0x89, 0xe7, 0xa8, 0xbf, 0xe7, 0xbc, 0x96, 0xe8, 0xbe, 0x91, 0xe6, 0xa8, 0xa1, 0xe5, + 0xbc, 0x8f, 0x52, 0x0f, 0x64, 0x72, 0x61, 0x66, 0x74, 0x45, 0x64, 0x69, 0x74, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x3a, 0x3d, 0x92, 0x41, 0x3a, 0x0a, 0x38, 0x2a, 0x19, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x71, 0x32, 0x1b, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, + 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, + 0x8d, 0xae, 0x22, 0x9d, 0x06, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x12, 0x35, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0x92, 0x41, + 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, + 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, + 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, + 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, + 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, + 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, 0x1d, 0x2a, 0x1b, + 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, + 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, + 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, + 0x8d, 0xae, 0xe6, 0xa0, 0x87, 0xe7, 0xad, 0xbe, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x31, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x17, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, + 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x5e, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, 0xe6, + 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe6, 0xa8, + 0xa1, 0xe5, 0xbc, 0x8f, 0x52, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x69, 0x73, 0x44, 0x72, 0x61, 0x66, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x11, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x98, 0xaf, 0xe5, 0x90, 0xa6, 0xe8, + 0x8d, 0x89, 0xe7, 0xa8, 0xbf, 0x52, 0x07, 0x69, 0x73, 0x44, 0x72, 0x61, 0x66, 0x74, 0x12, 0x41, + 0x0a, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe5, 0x9f, 0xba, 0xe4, 0xba, + 0x8e, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, + 0xe6, 0x9c, 0xac, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x41, 0x0a, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0xa8, + 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe8, 0x8d, 0x89, 0xe7, 0xa8, 0xbf, + 0xe5, 0x86, 0x85, 0xe5, 0xae, 0xb9, 0x52, 0x0c, 0x64, 0x72, 0x61, 0x66, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0f, 0x64, 0x72, 0x61, 0x66, 0x74, 0x45, 0x64, 0x69, + 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, + 0x41, 0x20, 0x2a, 0x1e, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe8, 0x8d, 0x89, 0xe7, 0xa8, 0xbf, 0xe7, 0xbc, 0x96, 0xe8, 0xbe, 0x91, 0xe6, 0xa8, 0xa1, 0xe5, + 0xbc, 0x8f, 0x52, 0x0f, 0x64, 0x72, 0x61, 0x66, 0x74, 0x45, 0x64, 0x69, 0x74, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x3a, 0x3d, 0x92, 0x41, 0x3a, 0x0a, 0x38, 0x2a, 0x19, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x71, 0x32, 0x1b, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe6, 0xa8, 0xa1, + 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, + 0x8d, 0xae, 0x22, 0xcf, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x12, 0x35, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0x92, 0x41, + 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, + 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, + 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, + 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, + 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x3d, 0x92, 0x41, 0x3a, 0x0a, 0x38, 0x2a, 0x19, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x32, 0x1b, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe6, + 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, + 0xb0, 0xe6, 0x8d, 0xae, 0x22, 0xc7, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x32, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0x92, 0x41, 0x17, 0x2a, + 0x15, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, + 0xe6, 0x9c, 0xac, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x45, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0x92, 0x41, 0x19, 0x2a, 0x17, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, - 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, - 0x49, 0x44, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0a, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x3a, 0x3d, 0x92, 0x41, 0x3a, 0x0a, 0x38, 0x2a, 0x16, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x32, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, - 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, - 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x22, 0xf0, 0x03, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, - 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, - 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, - 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe6, - 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, - 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xfa, 0x42, 0x06, 0x72, - 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, - 0x0a, 0x0a, 0x65, 0x64, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x11, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe7, 0xbc, 0x96, 0xe8, 0xbe, 0x91, 0xe6, - 0xa8, 0xa1, 0xe5, 0xbc, 0x8f, 0x52, 0x0a, 0x65, 0x64, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1e, 0x92, 0x41, 0x1b, 0x2a, 0x19, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0a, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x25, 0x92, 0x41, 0x19, 0x2a, 0x17, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, - 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x49, 0x44, 0xfa, 0x42, 0x06, - 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe8, 0x83, 0xbd, 0xe5, 0x90, 0xa6, 0xe8, 0xa2, - 0xab, 0xe8, 0xa6, 0x86, 0xe7, 0x9b, 0x96, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x3a, 0x39, - 0x92, 0x41, 0x36, 0x0a, 0x34, 0x2a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x32, - 0x18, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, - 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x22, 0xd3, 0x01, 0x0a, 0x18, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x32, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x22, 0x92, 0x41, 0x17, 0x2a, 0x15, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x20, 0x49, 0x44, 0xfa, 0x42, - 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, - 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x45, 0x92, 0x41, 0x42, 0x0a, 0x40, 0x2a, - 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x32, 0x24, 0xe5, 0x88, 0xa0, 0xe9, 0x99, - 0xa4, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe6, 0xa8, 0xa1, - 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x22, - 0xfa, 0x04, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa8, 0xa1, - 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, - 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, - 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, - 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, - 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x37, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, - 0x9b, 0x86, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, - 0x40, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x08, 0x63, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, - 0x11, 0x2a, 0x0f, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe5, 0x88, 0x86, 0xe7, - 0xb1, 0xbb, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x08, 0x63, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x33, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, - 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe5, 0x85, 0xb3, 0xe9, 0x94, 0xae, 0xe5, 0xad, 0x97, - 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x65, - 0x61, 0x64, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x15, 0x92, 0x41, 0x12, 0x2a, - 0x10, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0x20, 0x52, 0x45, 0x41, 0x44, 0x4d, - 0x45, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x09, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, - 0x18, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe5, 0x8c, 0x85, 0xe5, 0x90, 0xab, - 0xe7, 0x9a, 0x84, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0x52, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, - 0xbf, 0xe9, 0x9b, 0x86, 0xe9, 0xbb, 0x98, 0xe8, 0xae, 0xa4, 0xe5, 0x80, 0xbc, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x11, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x98, 0xaf, 0xe5, 0x90, - 0xa6, 0xe8, 0xa6, 0x86, 0xe7, 0x9b, 0x96, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x3a, 0x2c, - 0x92, 0x41, 0x29, 0x0a, 0x27, 0x2a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x32, 0x0f, 0xe5, 0x88, 0x9b, - 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0x22, 0xe8, 0x01, 0x0a, - 0x0a, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x12, 0x4f, 0x0a, 0x0d, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, 0x90, - 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0d, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x0c, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, 0x90, - 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0c, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, - 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, - 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd7, 0x02, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, + 0x3a, 0x3c, 0x92, 0x41, 0x39, 0x0a, 0x37, 0x2a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x32, 0x1e, + 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, + 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x22, 0xe9, + 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, - 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x43, 0x0a, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x17, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, - 0xe4, 0xbb, 0xb6, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x52, 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, - 0x92, 0x41, 0x0b, 0x2a, 0x09, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0x20, 0x49, 0x44, 0xfa, 0x42, - 0x06, 0x72, 0x04, 0x10, 0x0d, 0x18, 0x0e, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe5, 0x91, 0xbd, 0xe5, - 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, - 0x40, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3a, 0x43, 0x92, 0x41, - 0x40, 0x0a, 0x3e, 0x2a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x32, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x8f, 0x98, 0xe9, 0x87, 0x8f, 0xe5, 0x88, 0x97, 0xe8, 0xa1, - 0xa8, 0x22, 0xed, 0x03, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, + 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4f, 0x0a, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, + 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, + 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, + 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, + 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, + 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, + 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x3a, 0x36, 0x92, 0x41, 0x33, 0x0a, 0x31, 0x2a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x32, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x22, 0xdc, 0x01, 0x0a, 0x16, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, + 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, + 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0x92, 0x41, 0x19, 0x2a, 0x17, 0xe6, 0xa8, + 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, + 0xe6, 0x8d, 0xae, 0x49, 0x44, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0a, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x3a, 0x3d, 0x92, 0x41, 0x3a, 0x0a, + 0x38, 0x2a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x32, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, + 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, + 0xe6, 0x9c, 0xac, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x22, 0xf0, 0x03, 0x0a, 0x18, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, + 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, + 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, + 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, + 0x9c, 0xac, 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x20, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, + 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xfa, + 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x31, 0x0a, 0x0a, 0x65, 0x64, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe7, 0xbc, 0x96, 0xe8, + 0xbe, 0x91, 0xe6, 0xa8, 0xa1, 0xe5, 0xbc, 0x8f, 0x52, 0x0a, 0x65, 0x64, 0x69, 0x74, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0x92, 0x41, 0x1b, 0x2a, 0x19, 0xe6, 0xa8, 0xa1, 0xe6, + 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x45, + 0x0a, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x25, 0x92, 0x41, 0x19, 0x2a, 0x17, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, + 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x49, 0x44, + 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe8, 0x83, 0xbd, 0xe5, 0x90, + 0xa6, 0xe8, 0xa2, 0xab, 0xe8, 0xa6, 0x86, 0xe7, 0x9b, 0x96, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x3a, 0x39, 0x92, 0x41, 0x36, 0x0a, 0x34, 0x2a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x32, 0x18, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x22, 0xd3, 0x01, 0x0a, + 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x32, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0x92, 0x41, 0x17, 0x2a, 0x15, 0xe6, 0xa8, 0xa1, 0xe6, + 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x20, 0x49, + 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, + 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x45, 0x92, 0x41, 0x42, + 0x0a, 0x40, 0x2a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x32, 0x24, 0xe5, 0x88, + 0xa0, 0xe9, 0x99, 0xa4, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, + 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, + 0x9c, 0xac, 0x22, 0xfa, 0x04, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x31, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x11, 0x2a, 0x0f, + 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, + 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, + 0xe9, 0x9b, 0x86, 0xe6, 0x8f, 0x8f, 0xe8, 0xbf, 0xb0, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, + 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, + 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1d, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa8, 0xa1, 0xe6, + 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xfa, 0x42, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x40, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x1d, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe5, + 0x88, 0x86, 0xe7, 0xb1, 0xbb, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x08, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x33, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, + 0x6f, 0x72, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, 0x2a, + 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe5, 0x85, 0xb3, 0xe9, 0x94, 0xae, + 0xe5, 0xad, 0x97, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2d, 0x0a, + 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x15, 0x92, + 0x41, 0x12, 0x2a, 0x10, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0x20, 0x52, 0x45, + 0x41, 0x44, 0x4d, 0x45, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x09, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x42, 0x1d, 0x92, + 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe5, 0x8c, 0x85, + 0xe5, 0x90, 0xab, 0xe7, 0x9a, 0x84, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0x52, 0x09, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, + 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0xe9, 0xbb, 0x98, 0xe8, 0xae, 0xa4, 0xe5, 0x80, 0xbc, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x11, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe6, 0x98, + 0xaf, 0xe5, 0x90, 0xa6, 0xe8, 0xa6, 0x86, 0xe7, 0x9b, 0x96, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x3a, 0x2c, 0x92, 0x41, 0x29, 0x0a, 0x27, 0x2a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x32, 0x0f, + 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0x22, + 0xe8, 0x01, 0x0a, 0x0a, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x12, 0x4f, + 0x0a, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, + 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, + 0xb9, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, + 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x4d, 0x0a, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0x92, 0x41, 0x1d, 0x2a, 0x1b, 0xe6, 0xa8, 0xa1, 0xe6, + 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, + 0xae, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, + 0x52, 0x0c, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x20, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, + 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, + 0x40, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xd7, 0x02, 0x0a, 0x1c, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x56, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, @@ -7869,67 +8227,50 @@ var file_cluster_resources_proto_rawDesc = []byte{ 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x52, 0x10, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x70, - 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1a, 0x92, 0x41, 0x17, 0x2a, 0x15, - 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x8f, 0x98, 0xe9, - 0x87, 0x8f, 0xe5, 0x80, 0xbc, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x12, 0x35, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x0b, 0x2a, 0x09, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, - 0x20, 0x49, 0x44, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x0d, 0x18, 0x0e, 0x52, 0x09, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, - 0x0c, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x06, - 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, - 0x30, 0x92, 0x41, 0x2d, 0x0a, 0x2b, 0x2a, 0x15, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x32, 0x12, 0xe9, - 0x83, 0xa8, 0xe7, 0xbd, 0xb2, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, - 0xb6, 0x22, 0xaf, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x1c, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, - 0xa1, 0xe7, 0x90, 0x86, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, - 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, - 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x3a, 0x30, 0x92, 0x41, 0x2d, 0x0a, 0x2b, 0x2a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, - 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x32, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, - 0x96, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0xe8, 0xaf, 0xa6, - 0xe6, 0x83, 0x85, 0x22, 0x85, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x4d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, - 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, - 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x32, 0x92, 0x41, 0x2f, 0x0a, 0x2d, 0x2a, 0x11, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x32, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, - 0xae, 0xa1, 0xe7, 0x90, 0x86, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x22, 0xa3, 0x02, 0x0a, 0x12, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, - 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, - 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, - 0x41, 0x0e, 0x2a, 0x0c, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, - 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x72, - 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x1f, - 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe5, 0x85, 0xb3, 0xe8, 0x81, 0x94, 0xe5, 0x91, 0xbd, 0xe5, 0x90, - 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x00, 0x52, - 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x3a, 0x2d, 0x92, 0x41, 0x2a, 0x0a, 0x28, 0x2a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x32, 0x12, 0xe5, - 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, - 0x86, 0x22, 0xd1, 0x02, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, + 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x17, 0x92, 0x41, 0x0b, 0x2a, 0x09, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0x20, 0x49, + 0x44, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x0d, 0x18, 0x0e, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe5, + 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x40, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3a, + 0x43, 0x92, 0x41, 0x40, 0x0a, 0x3e, 0x2a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x32, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, + 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x8f, 0x98, 0xe9, 0x87, 0x8f, 0xe5, 0x88, + 0x97, 0xe8, 0xa1, 0xa8, 0x22, 0xed, 0x03, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, + 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, + 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, + 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x43, 0x0a, 0x10, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe6, 0xa8, 0xa1, + 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x52, + 0x10, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x70, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1a, 0x92, 0x41, + 0x17, 0x2a, 0x15, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, + 0x8f, 0x98, 0xe9, 0x87, 0x8f, 0xe5, 0x80, 0xbc, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x0b, 0x2a, 0x09, 0xe9, 0x9b, 0x86, + 0xe7, 0xbe, 0xa4, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x0d, 0x18, 0x0e, 0x52, + 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, + 0x41, 0x0e, 0x2a, 0x0c, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, + 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x3a, 0x30, 0x92, 0x41, 0x2d, 0x0a, 0x2b, 0x2a, 0x15, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x32, 0x12, 0xe9, 0x83, 0xa8, 0xe7, 0xbd, 0xb2, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0x22, 0xaf, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, @@ -7937,97 +8278,85 @@ var file_cluster_resources_proto_rawDesc = []byte{ 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x72, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x42, 0x1f, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe5, 0x85, 0xb3, 0xe8, 0x81, - 0x94, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x05, - 0x92, 0x01, 0x02, 0x08, 0x00, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe7, 0x8e, 0xaf, 0xe5, - 0xa2, 0x83, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, - 0x40, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x3a, 0x2d, 0x92, 0x41, 0x2a, 0x0a, 0x28, 0x2a, 0x12, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x32, 0x12, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, - 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x22, 0xe0, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe7, - 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x20, 0x49, 0x44, 0xfa, 0x42, - 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, - 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe7, 0x8e, 0xaf, 0xe5, - 0xa2, 0x83, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, - 0x40, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x3a, 0x30, 0x92, 0x41, 0x2d, 0x0a, 0x2b, 0x2a, 0x12, 0x52, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, - 0x71, 0x32, 0x15, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0xe9, - 0x87, 0x8d, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0x22, 0xaf, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, - 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0x92, 0x41, 0x11, - 0x2a, 0x0f, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x20, 0x49, - 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, - 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, - 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x2d, 0x92, 0x41, 0x2a, - 0x0a, 0x28, 0x2a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x32, 0x12, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe7, 0x8e, - 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x22, 0x9a, 0x06, 0x0a, 0x1c, 0x46, - 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, - 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x0b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x75, 0x0a, 0x11, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x22, 0x92, 0x41, 0x17, 0x2a, 0x15, - 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe5, 0x92, 0x8c, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, - 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x11, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x12, 0x2c, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, - 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe7, 0xb1, 0xbb, 0xe5, 0x9e, - 0x8b, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x23, - 0x0a, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, - 0x92, 0x41, 0x08, 0x2a, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x52, 0x06, 0x76, 0x69, 0x65, - 0x77, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0x92, 0x41, 0x09, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x6f, 0x72, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5b, 0x0a, 0x0d, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa0, 0x87, 0xe7, 0xad, 0xbe, - 0xe9, 0x80, 0x89, 0xe6, 0x8b, 0xa9, 0xe5, 0x99, 0xa8, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0x92, 0x41, 0x06, 0x2a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0x92, 0x41, 0x04, 0x2a, 0x02, 0x69, 0x70, 0x52, 0x02, 0x69, 0x70, - 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x0b, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x73, 0x6f, 0x72, 0x74, - 0x42, 0x79, 0xfa, 0x42, 0x1a, 0x72, 0x18, 0x52, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x03, 0x61, 0x67, 0x65, 0x52, - 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0x92, 0x41, 0x06, 0x2a, 0x04, 0x64, 0x65, 0x73, - 0x63, 0xfa, 0x42, 0x0f, 0x72, 0x0d, 0x52, 0x00, 0x52, 0x03, 0x61, 0x73, 0x63, 0x52, 0x04, 0x64, - 0x65, 0x73, 0x63, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x14, 0x92, 0x41, 0x07, 0x2a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x12, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x3a, 0x43, 0x92, 0x41, 0x40, 0x0a, 0x3e, 0x2a, 0x1c, 0x46, 0x65, 0x74, 0x63, 0x68, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe5, - 0xa4, 0x9a, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe8, 0xaf, - 0xb7, 0xe6, 0xb1, 0x82, 0xe4, 0xbd, 0x93, 0x22, 0xa4, 0x06, 0x0a, 0x22, 0x46, 0x65, 0x74, 0x63, - 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, + 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x30, 0x92, 0x41, 0x2d, 0x0a, 0x2b, 0x2a, 0x0f, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x32, 0x18, 0xe8, 0x8e, + 0xb7, 0xe5, 0x8f, 0x96, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, + 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x22, 0x85, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, + 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x32, 0x92, 0x41, 0x2f, 0x0a, + 0x2d, 0x2a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x32, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe7, 0x8e, 0xaf, 0xe5, + 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x22, 0xa3, + 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, + 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, + 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe5, 0x90, 0x8d, + 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, 0x03, 0x65, 0x6e, + 0x76, 0x12, 0x72, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x42, 0x1f, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe5, 0x85, 0xb3, 0xe8, 0x81, 0x94, 0xe5, 0x91, + 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, + 0x08, 0x00, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x3a, 0x2d, 0x92, 0x41, 0x2a, 0x0a, 0x28, 0x2a, 0x12, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x32, 0x12, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, + 0xa1, 0xe7, 0x90, 0x86, 0x22, 0xd1, 0x02, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, + 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe7, 0x8e, + 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, + 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, + 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, + 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x72, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x1f, 0x92, 0x41, 0x14, 0x2a, 0x12, 0xe5, 0x85, + 0xb3, 0xe8, 0x81, 0x94, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, + 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x00, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x03, 0x65, + 0x6e, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe7, + 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x40, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x3a, 0x2d, 0x92, 0x41, 0x2a, 0x0a, 0x28, + 0x2a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x32, 0x12, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe7, 0x8e, 0xaf, 0xe5, + 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x22, 0xe0, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x6e, + 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, + 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, 0x92, 0x41, 0x11, + 0x2a, 0x0f, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x20, 0x49, + 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, + 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x20, 0x52, 0x0b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x65, + 0x6e, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe7, + 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xfa, 0x42, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x40, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x3a, 0x30, 0x92, 0x41, 0x2d, 0x0a, 0x2b, + 0x2a, 0x12, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x32, 0x15, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, + 0x90, 0x86, 0xe9, 0x87, 0x8d, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0x22, 0xaf, 0x01, 0x0a, 0x12, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1c, + 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, + 0x86, 0x20, 0x49, 0x44, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x98, 0x01, 0x18, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, + 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, + 0x20, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x3a, 0x2d, + 0x92, 0x41, 0x2a, 0x0a, 0x28, 0x2a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x76, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x32, 0x12, 0xe5, 0x88, 0xa0, 0xe9, 0x99, + 0xa4, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x22, 0x9a, 0x06, + 0x0a, 0x1c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, 0x52, @@ -8039,45 +8368,45 @@ var file_cluster_resources_proto_rawDesc = []byte{ 0x17, 0x2a, 0x15, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe5, 0x92, 0x8c, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x03, 0x63, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0f, 0x92, 0x41, 0x05, 0x2a, 0x03, 0x63, 0x72, 0x64, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x03, 0x63, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x76, 0x69, 0x65, - 0x77, 0x49, 0x44, 0x52, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x07, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0x92, 0x41, - 0x09, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x5b, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x92, 0x41, 0x11, - 0x2a, 0x0f, 0xe6, 0xa0, 0x87, 0xe7, 0xad, 0xbe, 0xe9, 0x80, 0x89, 0xe6, 0x8b, 0xa9, 0xe5, 0x99, - 0xa8, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x12, 0x1d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, - 0x92, 0x41, 0x06, 0x2a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x17, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0x92, 0x41, 0x04, - 0x2a, 0x02, 0x69, 0x70, 0x52, 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0b, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x40, 0x0a, - 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0x92, - 0x41, 0x08, 0x2a, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0xfa, 0x42, 0x1a, 0x72, 0x18, 0x52, - 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x03, 0x61, 0x67, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, - 0x31, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, - 0x92, 0x41, 0x06, 0x2a, 0x04, 0x64, 0x65, 0x73, 0x63, 0xfa, 0x42, 0x0f, 0x72, 0x0d, 0x52, 0x00, - 0x52, 0x03, 0x61, 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x52, 0x05, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x14, 0x92, 0x41, 0x07, 0x2a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0xfa, 0x42, 0x07, - 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2a, - 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x12, - 0x92, 0x41, 0x08, 0x2a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0xfa, 0x42, 0x04, 0x2a, 0x02, - 0x28, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, 0x52, 0x92, 0x41, 0x4f, 0x0a, - 0x4d, 0x2a, 0x22, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x27, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe5, 0xa4, 0x9a, - 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, - 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe8, 0xaf, 0xb7, 0xe6, 0xb1, 0x82, 0xe4, 0xbd, 0x93, 0x22, 0xe7, - 0x03, 0x0a, 0x1c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, + 0x63, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x18, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe7, 0xb1, + 0xbb, 0xe5, 0x9e, 0x8b, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, + 0x64, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0b, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x52, 0x06, + 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0x92, 0x41, 0x09, 0x2a, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5b, + 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa0, 0x87, + 0xe7, 0xad, 0xbe, 0xe9, 0x80, 0x89, 0xe6, 0x8b, 0xa9, 0xe5, 0x99, 0xa8, 0x52, 0x0d, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0x92, 0x41, 0x06, 0x2a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0x92, 0x41, 0x04, 0x2a, 0x02, 0x69, 0x70, 0x52, + 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x0b, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x6f, 0x72, 0x74, + 0x42, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x73, + 0x6f, 0x72, 0x74, 0x42, 0x79, 0xfa, 0x42, 0x1a, 0x72, 0x18, 0x52, 0x00, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x03, 0x61, + 0x67, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0x92, 0x41, 0x06, 0x2a, 0x04, + 0x64, 0x65, 0x73, 0x63, 0xfa, 0x42, 0x0f, 0x72, 0x0d, 0x52, 0x00, 0x52, 0x03, 0x61, 0x73, 0x63, + 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x14, 0x92, 0x41, + 0x07, 0x2a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, + 0x28, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x12, 0x92, 0x41, 0x08, 0x2a, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x00, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, 0x43, 0x92, 0x41, 0x40, 0x0a, 0x3e, 0x2a, 0x1c, 0x46, 0x65, + 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, + 0x8f, 0x96, 0xe5, 0xa4, 0x9a, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe8, 0xb5, 0x84, 0xe6, 0xba, + 0x90, 0xe8, 0xaf, 0xb7, 0xe6, 0xb1, 0x82, 0xe4, 0xbd, 0x93, 0x22, 0xde, 0x03, 0x0a, 0x20, 0x46, + 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x41, 0x70, 0x69, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, 0x01, 0x18, 0x40, @@ -8089,621 +8418,667 @@ var file_cluster_resources_proto_rawDesc = []byte{ 0x41, 0x17, 0x2a, 0x15, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe5, 0x92, 0x8c, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, - 0x44, 0x52, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x07, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0x92, 0x41, 0x09, 0x2a, - 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, - 0x72, 0x12, 0x5b, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, - 0xe6, 0xa0, 0x87, 0xe7, 0xad, 0xbe, 0xe9, 0x80, 0x89, 0xe6, 0x8b, 0xa9, 0xe5, 0x99, 0xa8, 0x52, - 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1d, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0x92, 0x41, - 0x06, 0x2a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x49, 0x92, - 0x41, 0x46, 0x0a, 0x44, 0x2a, 0x1c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x32, 0x24, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe5, 0xa4, 0x9a, 0xe9, 0x9b, 0x86, - 0xe7, 0xbe, 0xa4, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe6, 0x95, 0xb0, 0xe9, 0x87, 0x8f, 0xe8, - 0xaf, 0xb7, 0xe6, 0xb1, 0x82, 0xe4, 0xbd, 0x93, 0x2a, 0x37, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x12, 0x0a, - 0x0e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, - 0x01, 0x32, 0x9a, 0x05, 0x0a, 0x05, 0x42, 0x61, 0x73, 0x69, 0x63, 0x12, 0x92, 0x01, 0x0a, 0x04, - 0x45, 0x63, 0x68, 0x6f, 0x12, 0x19, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x71, 0x1a, - 0x1a, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x53, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x63, 0x68, 0x6f, 0x3a, 0x01, - 0x2a, 0x92, 0x41, 0x2c, 0x12, 0x08, 0x45, 0x63, 0x68, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x20, - 0x45, 0x63, 0x68, 0x6f, 0x20, 0xe6, 0x8e, 0xa5, 0xe5, 0x8f, 0xa3, 0xef, 0xbc, 0x8c, 0xe7, 0x94, - 0xa8, 0xe4, 0xba, 0x8e, 0xe5, 0xbc, 0x80, 0xe5, 0x8f, 0x91, 0xe6, 0xb5, 0x8b, 0xe8, 0xaf, 0x95, - 0x12, 0x9b, 0x01, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x50, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x5c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x69, 0x6e, 0x67, 0x92, 0x41, 0x38, 0x12, 0x08, 0x50, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x2c, 0x50, 0x69, 0x6e, 0x67, 0x20, 0xe6, 0x8e, 0xa5, 0xe5, 0x8f, 0xa3, 0xef, 0xbc, 0x8c, - 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe6, 0xa3, 0x80, 0xe6, 0x9f, 0xa5, 0xe6, 0x9c, 0x8d, 0xe5, - 0x8a, 0xa1, 0xe6, 0x98, 0xaf, 0xe5, 0x90, 0xa6, 0xe5, 0xad, 0x98, 0xe6, 0xb4, 0xbb, 0x12, 0xad, - 0x01, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x48, 0x65, - 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, - 0x1c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x92, 0x41, 0x3e, - 0x12, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x2f, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x20, 0xe6, 0x8e, 0xa5, 0xe5, 0x8f, 0xa3, 0xef, 0xbc, 0x8c, - 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe6, 0xa3, 0x80, 0xe6, 0x9f, 0xa5, 0xe6, 0x9c, 0x8d, 0xe5, - 0x8a, 0xa1, 0xe5, 0x81, 0xa5, 0xe5, 0xba, 0xb7, 0xe7, 0x8a, 0xb6, 0xe6, 0x80, 0x81, 0x12, 0xad, - 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, - 0x1c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x92, 0x41, 0x3e, - 0x12, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x2f, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0xe6, 0x8e, 0xa5, 0xe5, 0x8f, 0xa3, 0xef, 0xbc, 0x8c, - 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0x9c, 0x8d, 0xe5, - 0x8a, 0xa1, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x32, 0xc2, - 0x01, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0xb9, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x92, 0x41, - 0x22, 0x12, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x1a, - 0x12, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe8, 0x8a, 0x82, 0xe7, 0x82, 0xb9, 0xe5, 0x88, 0x97, - 0xe8, 0xa1, 0xa8, 0x32, 0xce, 0x01, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0xc0, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x12, 0x1c, 0x2e, 0x63, + 0x61, 0x63, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x6e, 0x6c, 0x79, 0x43, 0x72, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x1d, 0x92, 0x41, 0x1a, 0x2a, 0x18, 0xe6, 0x98, 0xaf, 0xe5, + 0x90, 0xa6, 0xe5, 0x8f, 0xaa, 0xe5, 0x88, 0x97, 0xe5, 0x87, 0xba, 0x63, 0x72, 0x64, 0xe8, 0xb5, + 0x84, 0xe6, 0xba, 0x90, 0x52, 0x07, 0x6f, 0x6e, 0x6c, 0x79, 0x43, 0x72, 0x64, 0x12, 0x23, 0x0a, + 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0x92, + 0x41, 0x08, 0x2a, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x52, 0x06, 0x76, 0x69, 0x65, 0x77, + 0x49, 0x44, 0x12, 0x5b, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x92, 0x41, 0x11, 0x2a, + 0x0f, 0xe6, 0xa0, 0x87, 0xe7, 0xad, 0xbe, 0xe9, 0x80, 0x89, 0xe6, 0x8b, 0xa9, 0xe5, 0x99, 0xa8, + 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3a, + 0x4a, 0x92, 0x41, 0x47, 0x0a, 0x45, 0x2a, 0x20, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x69, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x32, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, + 0xe5, 0xa4, 0x9a, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0x61, 0x70, 0x69, 0xe8, 0xb5, 0x84, 0xe6, + 0xba, 0x90, 0xe8, 0xaf, 0xb7, 0xe6, 0xb1, 0x82, 0xe4, 0xbd, 0x93, 0x22, 0xa4, 0x06, 0x0a, 0x22, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, 0xa1, + 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, 0x10, + 0x01, 0x18, 0x40, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x75, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x42, 0x22, 0x92, 0x41, 0x17, 0x2a, 0x15, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe5, 0x92, 0x8c, + 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x05, 0x92, + 0x01, 0x02, 0x08, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x03, 0x63, 0x72, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0f, 0x92, 0x41, 0x05, 0x2a, 0x03, 0x63, 0x72, 0x64, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x63, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x69, + 0x65, 0x77, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0x92, 0x41, 0x08, 0x2a, + 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x52, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x12, + 0x26, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x0c, 0x92, 0x41, 0x09, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5b, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, + 0x14, 0x92, 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa0, 0x87, 0xe7, 0xad, 0xbe, 0xe9, 0x80, 0x89, 0xe6, + 0x8b, 0xa9, 0xe5, 0x99, 0xa8, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x09, 0x92, 0x41, 0x06, 0x2a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0x92, 0x41, 0x04, 0x2a, 0x02, 0x69, 0x70, 0x52, 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0b, 0x92, 0x41, + 0x08, 0x2a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x28, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0xfa, 0x42, + 0x1a, 0x72, 0x18, 0x52, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x03, 0x61, 0x67, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x72, + 0x74, 0x42, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x1b, 0x92, 0x41, 0x06, 0x2a, 0x04, 0x64, 0x65, 0x73, 0x63, 0xfa, 0x42, 0x0f, + 0x72, 0x0d, 0x52, 0x00, 0x52, 0x03, 0x61, 0x73, 0x63, 0x52, 0x04, 0x64, 0x65, 0x73, 0x63, 0x52, + 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x14, 0x92, 0x41, 0x07, 0x2a, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x12, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0xfa, + 0x42, 0x04, 0x2a, 0x02, 0x28, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3a, 0x52, + 0x92, 0x41, 0x4f, 0x0a, 0x4d, 0x2a, 0x22, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x32, 0x27, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, + 0x96, 0xe5, 0xa4, 0x9a, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, + 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe8, 0xaf, 0xb7, 0xe6, 0xb1, 0x82, 0xe4, + 0xbd, 0x93, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0x92, 0x41, 0x0e, 0x2a, 0x0c, 0xe9, + 0xa1, 0xb9, 0xe7, 0x9b, 0xae, 0xe7, 0xbc, 0x96, 0xe7, 0xa0, 0x81, 0xfa, 0x42, 0x06, 0x72, 0x04, + 0x10, 0x01, 0x18, 0x40, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x75, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, - 0x12, 0x49, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, - 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x92, 0x41, 0x26, 0x12, 0x0a, - 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, - 0x8f, 0x96, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xe5, 0x88, - 0x97, 0xe8, 0xa1, 0xa8, 0x32, 0x9a, 0x6d, 0x0a, 0x08, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x12, 0xeb, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x42, 0x22, 0x92, 0x41, 0x17, 0x2a, 0x15, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe5, 0x92, + 0x8c, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, 0x97, 0xb4, 0xfa, 0x42, 0x05, + 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x69, 0x65, 0x77, + 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0x92, 0x41, 0x08, 0x2a, 0x06, 0x76, + 0x69, 0x65, 0x77, 0x49, 0x44, 0x52, 0x06, 0x76, 0x69, 0x65, 0x77, 0x49, 0x44, 0x12, 0x26, 0x0a, + 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, + 0x92, 0x41, 0x09, 0x2a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5b, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x14, 0x92, + 0x41, 0x11, 0x2a, 0x0f, 0xe6, 0xa0, 0x87, 0xe7, 0xad, 0xbe, 0xe9, 0x80, 0x89, 0xe6, 0x8b, 0xa9, + 0xe5, 0x99, 0xa8, 0x52, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x09, 0x92, 0x41, 0x06, 0x2a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x3a, 0x49, 0x92, 0x41, 0x46, 0x0a, 0x44, 0x2a, 0x1c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x32, 0x24, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe5, 0xa4, + 0x9a, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe6, 0x95, 0xb0, + 0xe9, 0x87, 0x8f, 0xe8, 0xaf, 0xb7, 0xe6, 0xb1, 0x82, 0xe4, 0xbd, 0x93, 0x2a, 0x37, 0x0a, 0x0b, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x10, + 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x32, 0x9a, 0x05, 0x0a, 0x05, 0x42, 0x61, 0x73, 0x69, 0x63, 0x12, + 0x92, 0x01, 0x0a, 0x04, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x19, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x45, 0x63, 0x68, 0x6f, + 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x63, + 0x68, 0x6f, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2c, 0x12, 0x08, 0x45, 0x63, 0x68, 0x6f, 0x20, 0x41, + 0x50, 0x49, 0x1a, 0x20, 0x45, 0x63, 0x68, 0x6f, 0x20, 0xe6, 0x8e, 0xa5, 0xe5, 0x8f, 0xa3, 0xef, + 0xbc, 0x8c, 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe5, 0xbc, 0x80, 0xe5, 0x8f, 0x91, 0xe6, 0xb5, + 0x8b, 0xe8, 0xaf, 0x95, 0x12, 0x9b, 0x01, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x2e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x5c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x92, 0x41, 0x38, 0x12, 0x08, 0x50, 0x69, 0x6e, 0x67, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x2c, 0x50, 0x69, 0x6e, 0x67, 0x20, 0xe6, 0x8e, 0xa5, 0xe5, 0x8f, + 0xa3, 0xef, 0xbc, 0x8c, 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe6, 0xa3, 0x80, 0xe6, 0x9f, 0xa5, + 0xe6, 0x9c, 0x8d, 0xe5, 0x8a, 0xa1, 0xe6, 0x98, 0xaf, 0xe5, 0x90, 0xa6, 0xe5, 0xad, 0x98, 0xe6, + 0xb4, 0xbb, 0x12, 0xad, 0x01, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x12, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x7a, 0x92, 0x41, 0x3e, 0x12, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x2f, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x7a, 0x20, 0xe6, 0x8e, 0xa5, 0xe5, 0x8f, + 0xa3, 0xef, 0xbc, 0x8c, 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe6, 0xa3, 0x80, 0xe6, 0x9f, 0xa5, + 0xe6, 0x9c, 0x8d, 0xe5, 0x8a, 0xa1, 0xe5, 0x81, 0xa5, 0xe5, 0xba, 0xb7, 0xe7, 0x8a, 0xb6, 0xe6, + 0x80, 0x81, 0x12, 0xad, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x92, 0x41, 0x3e, 0x12, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x2f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0xe6, 0x8e, 0xa5, 0xe5, 0x8f, + 0xa3, 0xef, 0xbc, 0x8c, 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, + 0xe6, 0x9c, 0x8d, 0xe5, 0x8a, 0xa1, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe4, 0xbf, 0xa1, 0xe6, + 0x81, 0xaf, 0x32, 0xc2, 0x01, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0xb9, 0x01, 0x0a, 0x08, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x6f, 0x64, + 0x65, 0x73, 0x92, 0x41, 0x22, 0x12, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x20, + 0x41, 0x50, 0x49, 0x1a, 0x12, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe8, 0x8a, 0x82, 0xe7, 0x82, + 0xb9, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x32, 0xce, 0x01, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0xc0, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa0, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7a, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x92, + 0x41, 0x26, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x18, + 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0xe7, 0xa9, 0xba, 0xe9, + 0x97, 0xb4, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x32, 0x9a, 0x6d, 0x0a, 0x08, 0x57, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0xeb, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x22, 0xa0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, + 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x92, 0x41, 0x2a, 0x12, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, + 0x96, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0xe5, 0x88, 0x97, + 0xe8, 0xa1, 0xa8, 0x12, 0xe8, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9f, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x12, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x92, 0x41, 0x2a, 0x12, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, - 0xe8, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1b, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x74, 0x12, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, - 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x22, 0x12, 0x0d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0xd6, 0x01, 0x0a, 0x0c, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1e, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x87, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x59, 0x22, 0x54, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, 0x10, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x11, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0xf4, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0xa5, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x77, 0x1a, 0x72, 0x2f, 0x63, 0x6c, + 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x22, 0x12, 0x0d, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe8, 0x8e, 0xb7, + 0xe5, 0x8f, 0x96, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0xd6, + 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, + 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x87, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x59, 0x22, 0x54, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, + 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, + 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, + 0x41, 0x25, 0x12, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0xf4, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa5, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x77, 0x1a, + 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, + 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe6, 0x9b, 0xb4, + 0xe6, 0x96, 0xb0, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x85, + 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0xb4, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7f, 0x1a, 0x7a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, + 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2c, 0x12, 0x11, 0x52, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe9, + 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0xa9, 0x02, 0x0a, 0x13, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x4f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x25, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x73, 0x75, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x22, 0xcc, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8d, 0x01, 0x1a, 0x87, 0x01, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x2f, + 0x7b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x35, 0x12, 0x17, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1a, 0xe6, 0x9a, 0x82, 0xe5, 0x81, 0x9c, 0xe6, 0x88, + 0x96, 0xe6, 0x81, 0xa2, 0xe5, 0xa4, 0x8d, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0xfa, 0x01, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x12, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0xad, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7d, 0x1a, 0x78, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, + 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x61, + 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x27, 0x12, 0x0f, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x14, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0xe6, 0x89, 0xa9, 0xe7, 0xbc, 0xa9, 0xe5, 0xae, 0xb9, 0x12, + 0xa9, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x50, 0x6f, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xcb, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x82, 0x01, 0x1a, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, + 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x3f, 0x12, 0x16, 0x52, 0x65, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x50, 0x6f, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x25, 0xe9, 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, + 0xba, 0xa6, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0xe4, 0xb8, + 0x8b, 0xe5, 0xb1, 0x9e, 0xe7, 0x9a, 0x84, 0x20, 0x50, 0x6f, 0x64, 0x12, 0xf1, 0x01, 0x0a, 0x0c, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1e, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa2, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x74, 0x2a, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x25, 0x12, 0x10, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe5, 0x88, + 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0xa2, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x22, 0xbf, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7c, 0x12, 0x7a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, - 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x85, 0x02, 0x0a, 0x0d, 0x52, - 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1f, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x52, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x92, 0x41, 0x3a, 0x12, 0x1c, 0x47, 0x65, 0x74, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1a, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, + 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xb6, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x12, 0x24, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x22, 0xd8, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8a, 0x01, 0x12, 0x87, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb4, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x7f, 0x1a, 0x7a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2c, 0x12, 0x11, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe9, 0x87, 0x8d, 0xe6, 0x96, - 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0xa9, 0x02, 0x0a, 0x13, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, - 0x73, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0xcc, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8d, 0x01, 0x1a, 0x87, 0x01, 0x2f, 0x63, 0x6c, 0x75, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x92, 0x41, 0x44, 0x12, 0x1b, 0x47, 0x65, 0x74, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x25, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0xe5, 0xb7, 0xae, 0xe5, 0xbc, 0x82, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xaa, 0x02, + 0x0a, 0x15, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, + 0x75, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xcc, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x8b, 0x01, 0x1a, 0x85, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, + 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, + 0x75, 0x74, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x3a, 0x01, 0x2a, + 0x92, 0x41, 0x37, 0x12, 0x19, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1a, + 0xe5, 0x9b, 0x9e, 0xe6, 0xbb, 0x9a, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xe4, 0x01, 0x0a, 0x06, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x53, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x9d, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, - 0x61, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x2f, 0x7b, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x35, 0x12, 0x17, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x4f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x1a, 0xe6, 0x9a, 0x82, 0xe5, 0x81, 0x9c, 0xe6, 0x88, 0x96, 0xe6, 0x81, 0xa2, - 0xe5, 0xa4, 0x8d, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0xfa, - 0x01, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1d, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x52, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xad, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x7d, 0x1a, 0x78, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3a, 0x01, - 0x2a, 0x92, 0x41, 0x27, 0x12, 0x0f, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x14, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x20, 0xe6, 0x89, 0xa9, 0xe7, 0xbc, 0xa9, 0xe5, 0xae, 0xb9, 0x12, 0xa9, 0x02, 0x0a, 0x12, - 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x50, 0x6f, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xcb, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x82, 0x01, 0x1a, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x73, 0x65, 0x74, 0x73, 0x92, 0x41, 0x27, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x19, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x53, 0x65, 0x74, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, + 0xa8, 0x12, 0xe1, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x53, 0x12, 0x1c, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x6c, 0x12, 0x6a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x92, 0x41, 0x25, + 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe8, 0x8e, + 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x20, 0xe5, + 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xde, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x44, 0x53, 0x12, + 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x99, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x73, 0x12, 0x71, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x3f, 0x12, 0x16, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x25, 0xe9, 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0xe4, 0xb8, 0x8b, 0xe5, 0xb1, 0x9e, - 0xe7, 0x9a, 0x84, 0x20, 0x50, 0x6f, 0x64, 0x12, 0xf1, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa2, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x2a, - 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, - 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x25, 0x12, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, - 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0xa2, 0x02, 0x0a, 0x18, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbf, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7c, 0x12, 0x7a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x92, 0x41, 0x3a, 0x12, 0x1c, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1a, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0xb6, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x6f, - 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xd8, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8a, 0x01, 0x12, 0x87, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1d, 0x12, 0x09, 0x47, 0x65, 0x74, 0x44, 0x53, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x44, 0x61, 0x65, + 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0xcc, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x44, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x81, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x58, 0x22, 0x53, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x3a, + 0x01, 0x2a, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x53, 0x20, + 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x44, 0x61, 0x65, 0x6d, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0xea, 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x44, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x9f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x76, 0x1a, 0x71, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, - 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x7d, 0x92, 0x41, 0x44, 0x12, 0x1b, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x25, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0xe5, 0xb7, 0xae, - 0xe5, 0xbc, 0x82, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xaa, 0x02, 0x0a, 0x15, 0x52, 0x6f, - 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, + 0x6e, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, + 0x41, 0x20, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x53, 0x20, 0x41, 0x50, 0x49, + 0x1a, 0x10, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, + 0x65, 0x74, 0x12, 0xff, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x53, + 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0xb2, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7e, 0x1a, 0x79, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, + 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, + 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2b, 0x12, 0x11, 0x52, 0x65, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x16, 0xe9, 0x87, + 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x12, 0x98, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x53, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, + 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x22, 0xb9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7b, 0x12, 0x79, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, + 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x92, 0x41, 0x35, 0x12, 0x18, 0x47, 0x65, 0x74, 0x44, + 0x53, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x19, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x44, 0x61, 0x65, + 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0xab, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x44, 0x69, 0x66, 0x66, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xd1, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x89, 0x01, 0x12, 0x86, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x92, 0x41, 0x3e, 0x12, + 0x15, 0x47, 0x65, 0x74, 0x44, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, + 0x66, 0x66, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x25, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x44, + 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0xe5, 0xb7, 0xae, 0xe5, 0xbc, 0x82, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xa0, 0x02, + 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x44, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xcc, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8b, - 0x01, 0x1a, 0x85, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xc6, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8a, + 0x01, 0x1a, 0x84, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2f, 0x7b, - 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x37, 0x12, - 0x19, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1a, 0xe5, 0x9b, 0x9e, 0xe6, - 0xbb, 0x9a, 0x20, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xe4, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x53, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9d, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, - 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, - 0x65, 0x74, 0x73, 0x92, 0x41, 0x27, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x53, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x19, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x73, 0x53, 0x65, 0x74, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xe1, 0x01, - 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x53, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x9a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x12, 0x6a, 0x2f, + 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2f, 0x7b, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x32, 0x12, 0x15, + 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x44, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x19, 0xe5, 0x9b, 0x9e, 0xe6, 0xbb, 0x9a, 0x20, 0x44, 0x61, + 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0xe7, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, - 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x92, 0x41, 0x25, 0x12, 0x0a, 0x4c, 0x69, - 0x73, 0x74, 0x44, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, - 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, - 0xa8, 0x12, 0xde, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x44, 0x53, 0x12, 0x1b, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x99, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x73, 0x12, - 0x71, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, - 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x92, 0x41, 0x1d, 0x12, 0x09, 0x47, 0x65, 0x74, 0x44, 0x53, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x10, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x12, 0xcc, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x53, 0x12, - 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x81, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x58, 0x22, 0x53, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, - 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, - 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, - 0x20, 0x12, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, - 0x10, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0x12, 0xea, 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x53, 0x12, 0x1e, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9f, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x76, 0x1a, 0x71, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x20, 0x12, 0x0c, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe6, 0x9b, - 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0xff, - 0x01, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x53, 0x12, 0x1f, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x52, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb2, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x7e, 0x1a, 0x79, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9c, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x73, 0x2a, 0x71, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, - 0x01, 0x2a, 0x92, 0x41, 0x2b, 0x12, 0x11, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x16, 0xe9, 0x87, 0x8d, 0xe6, 0x96, 0xb0, - 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x12, 0x98, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x53, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, - 0xb9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7b, 0x12, 0x79, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, - 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, - 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x92, 0x41, 0x35, 0x12, 0x18, 0x47, 0x65, 0x74, 0x44, 0x53, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x19, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, - 0x65, 0x74, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xab, 0x02, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x44, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, - 0x66, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xd1, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x89, 0x01, 0x12, - 0x86, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, - 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x92, 0x41, 0x3e, 0x12, 0x15, 0x47, 0x65, 0x74, - 0x44, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x25, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0xe5, 0xb7, 0xae, - 0xe5, 0xbc, 0x82, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xa0, 0x02, 0x0a, 0x11, 0x52, 0x6f, - 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x44, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0xc6, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8a, 0x01, 0x1a, 0x84, 0x01, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, - 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x32, 0x12, 0x15, 0x52, 0x6f, 0x6c, 0x6c, - 0x6f, 0x75, 0x74, 0x44, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, - 0x49, 0x1a, 0x19, 0xe5, 0x9b, 0x9e, 0xe6, 0xbb, 0x9a, 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xe7, 0x01, 0x0a, - 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x44, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, + 0x20, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0xe7, 0x01, 0x0a, 0x07, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x54, 0x53, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x9f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6e, 0x12, 0x6c, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x92, 0x41, 0x28, 0x12, 0x0b, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x54, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x19, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, + 0x96, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0xe5, 0x88, + 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xe4, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x53, 0x54, 0x53, 0x12, + 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9e, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x75, 0x12, 0x73, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, + 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x20, 0x12, 0x0a, 0x47, 0x65, 0x74, + 0x53, 0x54, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x12, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0xd2, 0x01, 0x0a, 0x09, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x54, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x73, - 0x2a, 0x71, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x86, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, + 0x22, 0x55, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, - 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x73, 0x2f, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x53, - 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x44, 0x61, 0x65, - 0x6d, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x12, 0xe7, 0x01, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x54, 0x53, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9f, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6e, 0x12, 0x6c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, - 0x6c, 0x73, 0x65, 0x74, 0x73, 0x92, 0x41, 0x28, 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x54, - 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x19, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, - 0x12, 0xe4, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x53, 0x54, 0x53, 0x12, 0x1b, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, 0x12, - 0x73, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x20, 0x12, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x54, 0x53, 0x20, - 0x41, 0x50, 0x49, 0x1a, 0x12, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0xd2, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x53, 0x54, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x86, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x22, 0x55, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, - 0x65, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x23, 0x12, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x54, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x12, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0xf0, 0x01, 0x0a, - 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x54, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa4, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x78, 0x1a, 0x73, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, - 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x23, 0x12, 0x0d, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x53, 0x54, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x12, 0xe6, 0x9b, 0xb4, - 0xe6, 0x96, 0xb0, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, - 0x85, 0x02, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x54, 0x53, 0x12, 0x1f, + 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x23, 0x12, 0x0d, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x54, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x12, 0xe5, 0x88, + 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, + 0x12, 0xf0, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x54, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x52, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb7, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x01, 0x1a, 0x7b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, - 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2d, 0x12, 0x11, 0x52, 0x65, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x18, 0xe9, - 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x9e, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, - 0x54, 0x53, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbe, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7d, - 0x12, 0x7b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, - 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x92, 0x41, 0x38, - 0x12, 0x19, 0x47, 0x65, 0x74, 0x53, 0x54, 0x53, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1b, 0xe8, 0x8e, 0xb7, - 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xb1, 0x02, 0x0a, 0x12, 0x47, 0x65, 0x74, - 0x53, 0x54, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x12, - 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0xd6, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8b, 0x01, 0x12, 0x88, 0x01, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x92, 0x41, 0x41, 0x12, 0x16, 0x47, 0x65, 0x74, - 0x53, 0x54, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x20, - 0x41, 0x50, 0x49, 0x1a, 0x27, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0xe5, 0xb7, 0xae, 0xe5, 0xbc, 0x82, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xa6, 0x02, 0x0a, - 0x12, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x54, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa4, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x78, 0x1a, 0x73, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, + 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x23, + 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x54, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, + 0x12, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, + 0x53, 0x65, 0x74, 0x12, 0x85, 0x02, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, + 0x54, 0x53, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0xb7, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x01, 0x1a, 0x7b, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2d, 0x12, 0x11, + 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x18, 0xe9, 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x9e, 0x02, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x53, 0x54, 0x53, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbe, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x7d, 0x12, 0x7b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, + 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x92, 0x41, 0x38, 0x12, 0x19, 0x47, 0x65, 0x74, 0x53, 0x54, 0x53, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, + 0x1b, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, + 0x53, 0x65, 0x74, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xb1, 0x02, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x53, 0x54, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, + 0x69, 0x66, 0x66, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xcb, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8c, - 0x01, 0x1a, 0x86, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xd6, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8b, + 0x01, 0x12, 0x88, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2f, - 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x35, - 0x12, 0x16, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x54, 0x53, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1b, 0xe5, 0x9b, 0x9e, 0xe6, 0xbb, 0x9a, - 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xf6, 0x01, 0x0a, 0x08, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x53, - 0x54, 0x53, 0x12, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0xac, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7e, 0x1a, 0x79, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, - 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, - 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, - 0x61, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, 0x0c, 0x53, 0x63, 0x61, 0x6c, 0x65, - 0x53, 0x54, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, - 0x6c, 0x53, 0x65, 0x74, 0x20, 0xe6, 0x89, 0xa9, 0xe7, 0xbc, 0xa9, 0xe5, 0xae, 0xb9, 0x12, 0xa6, - 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x54, 0x53, - 0x50, 0x6f, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xcb, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x83, 0x01, 0x1a, 0x7e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x3e, 0x12, 0x13, 0x52, 0x65, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x54, 0x53, 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x27, - 0xe9, 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x20, 0xe4, 0xb8, 0x8b, 0xe5, 0xb1, 0x9e, - 0xe7, 0x9a, 0x84, 0x20, 0x50, 0x6f, 0x64, 0x12, 0xed, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x54, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x92, 0x41, 0x41, 0x12, + 0x16, 0x47, 0x65, 0x74, 0x53, 0x54, 0x53, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, + 0x69, 0x66, 0x66, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x27, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0x72, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0xe5, 0xb7, 0xae, 0xe5, 0xbc, 0x82, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, + 0x12, 0xa6, 0x02, 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x54, 0x53, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, + 0x75, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xcb, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x8c, 0x01, 0x1a, 0x86, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, + 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, + 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, + 0x6f, 0x75, 0x74, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x3a, 0x01, + 0x2a, 0x92, 0x41, 0x35, 0x12, 0x16, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x53, 0x54, 0x53, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1b, 0xe5, 0x9b, + 0x9e, 0xe6, 0xbb, 0x9a, 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, + 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xf6, 0x01, 0x0a, 0x08, 0x53, 0x63, + 0x61, 0x6c, 0x65, 0x53, 0x54, 0x53, 0x12, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x53, 0x63, 0x61, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0xa1, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, 0x2a, 0x73, 0x2f, 0x63, + 0x65, 0x73, 0x70, 0x22, 0xac, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7e, 0x1a, 0x79, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, @@ -8711,366 +9086,442 @@ var file_cluster_resources_proto_rawDesc = []byte{ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x92, 0x41, 0x23, 0x12, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x54, 0x53, 0x20, - 0x41, 0x50, 0x49, 0x1a, 0x12, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0xdd, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x4a, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x96, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x12, 0x68, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x7d, 0x2f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, 0x0c, 0x53, + 0x63, 0x61, 0x6c, 0x65, 0x53, 0x54, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0xe6, 0x89, 0xa9, 0xe7, 0xbc, 0xa9, 0xe5, + 0xae, 0xb9, 0x12, 0xa6, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x53, 0x54, 0x53, 0x50, 0x6f, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xcb, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x83, 0x01, 0x1a, 0x7e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, - 0x73, 0x92, 0x41, 0x23, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x4a, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x15, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, - 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xda, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x43, - 0x4a, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x12, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1b, 0x12, 0x09, 0x47, 0x65, 0x74, 0x43, 0x4a, - 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x72, 0x6f, - 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0xc7, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x4a, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x7d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x22, 0x51, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x73, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1e, - 0x12, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x4a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, - 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0xe6, - 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x4a, 0x12, 0x1e, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9b, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x74, 0x1a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x73, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1e, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x4a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, - 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0xe3, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x4a, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, + 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x3e, 0x12, 0x13, 0x52, + 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x54, 0x53, 0x50, 0x6f, 0x20, 0x41, + 0x50, 0x49, 0x1a, 0x27, 0xe9, 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, + 0x20, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x20, 0xe4, 0xb8, + 0x8b, 0xe5, 0xb1, 0x9e, 0xe7, 0x9a, 0x84, 0x20, 0x50, 0x6f, 0x64, 0x12, 0xed, 0x01, 0x0a, 0x09, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x54, 0x53, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa1, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, + 0x2a, 0x73, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, + 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x23, 0x12, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x53, 0x54, 0x53, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x12, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x12, 0xdd, 0x01, 0x0a, 0x06, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x4a, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x98, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x2a, 0x6f, 0x2f, 0x63, 0x6c, + 0x73, 0x70, 0x22, 0x96, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x12, 0x68, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x63, 0x72, 0x6f, - 0x6e, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1e, 0x12, - 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x4a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe5, - 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0xd7, 0x01, - 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x12, 0x64, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, - 0x6a, 0x6f, 0x62, 0x73, 0x92, 0x41, 0x20, 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, - 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x4a, 0x6f, 0x62, - 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xd4, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, - 0x6f, 0x62, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x6e, 0x6a, 0x6f, 0x62, 0x73, 0x92, 0x41, 0x23, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x4a, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x72, 0x6f, + 0x6e, 0x4a, 0x6f, 0x62, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xda, 0x01, 0x0a, 0x05, + 0x47, 0x65, 0x74, 0x43, 0x4a, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x95, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x12, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, + 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, + 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1b, 0x12, 0x09, 0x47, + 0x65, 0x74, 0x43, 0x4a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, + 0x20, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0xc7, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x43, 0x4a, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x7d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x22, 0x51, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, + 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x73, 0x3a, 0x01, + 0x2a, 0x92, 0x41, 0x1e, 0x12, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x4a, 0x20, 0x41, + 0x50, 0x49, 0x1a, 0x0e, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x43, 0x72, 0x6f, 0x6e, 0x4a, + 0x6f, 0x62, 0x12, 0xe6, 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x4a, 0x12, + 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8e, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9b, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x1a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x18, 0x12, 0x0a, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x0a, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x4a, 0x6f, 0x62, 0x12, 0xc1, - 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1e, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x52, 0x22, 0x4d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1e, 0x12, 0x0c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x4a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe6, 0x9b, 0xb4, + 0xe6, 0x96, 0xb0, 0x20, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0xe3, 0x01, 0x0a, 0x08, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x4a, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x98, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x2a, + 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, + 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x92, 0x41, 0x1e, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x4a, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x0e, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, + 0x62, 0x12, 0xd7, 0x01, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x2e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8f, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x66, 0x12, 0x64, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x6a, 0x6f, 0x62, - 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1b, 0x12, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, - 0x6f, 0x62, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x4a, - 0x6f, 0x62, 0x12, 0xe0, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, - 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x94, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x70, 0x1a, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1b, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, - 0xb0, 0x20, 0x4a, 0x6f, 0x62, 0x12, 0xdd, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4a, 0x6f, 0x62, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x73, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x92, 0x41, 0x20, 0x12, 0x0b, 0x4c, 0x69, 0x73, + 0x74, 0x4a, 0x6f, 0x62, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, + 0x20, 0x4a, 0x6f, 0x62, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xd4, 0x01, 0x0a, 0x06, + 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x91, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x2a, 0x6b, 0x2f, 0x63, 0x6c, 0x75, + 0x70, 0x22, 0x8e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x6a, 0x6f, 0x62, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1b, 0x12, 0x0d, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe5, 0x88, 0xa0, 0xe9, 0x99, - 0xa4, 0x20, 0x4a, 0x6f, 0x62, 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, - 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x18, 0x12, 0x0a, 0x47, 0x65, 0x74, 0x4a, + 0x6f, 0x62, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x4a, + 0x6f, 0x62, 0x12, 0xc1, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, + 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x76, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x22, 0x4d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, + 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, + 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1b, 0x12, 0x0d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe5, 0x88, 0x9b, 0xe5, + 0xbb, 0xba, 0x20, 0x4a, 0x6f, 0x62, 0x12, 0xe0, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x94, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x70, 0x1a, 0x6b, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x6a, 0x6f, 0x62, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1b, 0x12, 0x0d, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe6, + 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x4a, 0x6f, 0x62, 0x12, 0xdd, 0x01, 0x0a, 0x09, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x91, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x2a, 0x6b, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, + 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1b, 0x12, 0x0d, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe5, + 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x4a, 0x6f, 0x62, 0x12, 0xd5, 0x01, 0x0a, 0x06, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x6f, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x8e, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x12, 0x64, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, + 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x92, + 0x41, 0x1f, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, + 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x6f, 0x64, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, + 0xa8, 0x12, 0xf6, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x42, 0x79, 0x4e, 0x6f, + 0x64, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x42, 0x79, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, + 0x12, 0x5e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, + 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, + 0x92, 0x41, 0x37, 0x12, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x42, 0x79, 0x4e, 0x6f, 0x64, + 0x65, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x23, 0xe9, 0x80, 0x9a, 0xe8, 0xbf, 0x87, 0xe8, 0x8a, 0x82, + 0xe7, 0x82, 0xb9, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, + 0x50, 0x6f, 0x64, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xd2, 0x01, 0x0a, 0x05, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x8d, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, + 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x17, 0x12, 0x09, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x20, + 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x6f, 0x64, 0x12, + 0xbf, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x12, 0x1e, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x75, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x52, 0x22, 0x4d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, + 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1a, 0x12, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x50, 0x6f, + 0x64, 0x12, 0xde, 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x12, 0x1e, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8e, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x12, 0x64, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x93, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x70, 0x1a, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x92, 0x41, 0x1f, 0x12, 0x0a, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe8, 0x8e, 0xb7, 0xe5, - 0x8f, 0x96, 0x20, 0x50, 0x6f, 0x64, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xf6, 0x01, - 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x42, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x21, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1a, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x50, + 0x6f, 0x64, 0x12, 0xdb, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x12, + 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x90, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x2a, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, + 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1a, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x50, 0x6f, 0x64, + 0x12, 0xed, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x50, 0x56, 0x43, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x42, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x22, 0xa0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x12, 0x5e, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x6f, 0x64, - 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x77, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x92, 0x41, 0x37, 0x12, - 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x42, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x20, 0x41, 0x50, - 0x49, 0x1a, 0x23, 0xe9, 0x80, 0x9a, 0xe8, 0xbf, 0x87, 0xe8, 0x8a, 0x82, 0xe7, 0x82, 0xb9, 0xe5, - 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x6f, 0x64, 0x20, - 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xd2, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa4, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x72, 0x12, 0x70, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x70, 0x76, 0x63, 0x73, 0x92, 0x41, 0x29, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x50, + 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, + 0x6f, 0x64, 0x20, 0xe5, 0x85, 0xb3, 0xe8, 0x81, 0x94, 0xe7, 0x9a, 0x84, 0x20, 0x50, 0x56, 0x43, + 0x12, 0xf7, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x43, 0x4d, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8d, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x92, 0x41, 0x17, 0x12, 0x09, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, - 0x0a, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x6f, 0x64, 0x12, 0xbf, 0x01, 0x0a, 0x08, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x75, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x22, 0x4d, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x77, - 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x3a, 0x01, 0x2a, - 0x92, 0x41, 0x1a, 0x12, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x20, 0x41, 0x50, - 0x49, 0x1a, 0x0a, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x50, 0x6f, 0x64, 0x12, 0xde, 0x01, - 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x93, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x70, 0x1a, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xaf, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x78, 0x12, 0x76, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, - 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, - 0x2a, 0x92, 0x41, 0x1a, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x0a, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x50, 0x6f, 0x64, 0x12, 0xdb, - 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x12, 0x1e, 0x2e, 0x63, 0x6c, + 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x92, 0x41, 0x2e, 0x12, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x6f, 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, + 0x8f, 0x96, 0x20, 0x50, 0x6f, 0x64, 0x20, 0xe5, 0x85, 0xb3, 0xe8, 0x81, 0x94, 0xe7, 0x9a, 0x84, + 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0xf9, 0x01, 0x0a, 0x0c, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x6f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x90, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x6d, 0x2a, 0x6b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, - 0x41, 0x1a, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x0a, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x50, 0x6f, 0x64, 0x12, 0xed, 0x01, 0x0a, - 0x09, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x50, 0x56, 0x43, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xad, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, 0x12, + 0x73, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, + 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x73, 0x92, 0x41, 0x2f, 0x12, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1b, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, + 0x96, 0x20, 0x50, 0x6f, 0x64, 0x20, 0xe5, 0x85, 0xb3, 0xe8, 0x81, 0x94, 0xe7, 0x9a, 0x84, 0x20, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0xf7, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa4, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x72, 0x12, 0x70, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa8, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7b, 0x1a, 0x76, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, - 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x76, 0x63, 0x73, - 0x92, 0x41, 0x29, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x50, 0x56, 0x43, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x6f, 0x64, 0x20, 0xe5, - 0x85, 0xb3, 0xe8, 0x81, 0x94, 0xe7, 0x9a, 0x84, 0x20, 0x50, 0x56, 0x43, 0x12, 0xf7, 0x01, 0x0a, - 0x08, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x43, 0x4d, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x24, 0x12, 0x10, 0x52, 0x65, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, + 0xe9, 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0x50, 0x6f, 0x64, + 0x12, 0x91, 0x02, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0xaf, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x78, 0x12, 0x76, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, - 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x6d, 0x61, 0x70, 0x73, 0x92, 0x41, 0x2e, 0x12, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, - 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, - 0x6f, 0x64, 0x20, 0xe5, 0x85, 0xb3, 0xe8, 0x81, 0x94, 0xe7, 0x9a, 0x84, 0x20, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0xf9, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x6f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0xad, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x75, 0x12, 0x73, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, - 0x92, 0x41, 0x2f, 0x12, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1b, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x6f, - 0x64, 0x20, 0xe5, 0x85, 0xb3, 0xe8, 0x81, 0x94, 0xe7, 0x9a, 0x84, 0x20, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x12, 0xf7, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x50, 0x6f, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0xa8, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7b, 0x1a, 0x76, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x24, 0x12, 0x10, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe9, 0x87, 0x8d, 0xe6, - 0x96, 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0x50, 0x6f, 0x64, 0x12, 0x91, 0x02, 0x0a, - 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x22, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x22, 0xb9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7b, 0x12, 0x79, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, - 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x92, 0x41, 0x35, 0x12, 0x11, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x20, - 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x6f, 0x64, 0x20, 0xe5, 0x8c, 0x85, 0xe5, 0x90, - 0xab, 0xe7, 0x9a, 0x84, 0xe5, 0xae, 0xb9, 0xe5, 0x99, 0xa8, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, - 0x12, 0xa2, 0x02, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, - 0x72, 0x12, 0x21, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb9, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x7b, 0x12, 0x79, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x92, 0x41, 0x35, 0x12, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x41, + 0x50, 0x49, 0x1a, 0x20, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x6f, 0x64, 0x20, 0xe5, + 0x8c, 0x85, 0xe5, 0x90, 0xab, 0xe7, 0x9a, 0x84, 0xe5, 0xae, 0xb9, 0xe5, 0x99, 0xa8, 0xe5, 0x88, + 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xa2, 0x02, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xd0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8c, 0x01, + 0x12, 0x89, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x3a, 0x12, + 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x26, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0x8c, 0x87, 0xe5, 0xae, 0x9a, 0x20, + 0x50, 0x6f, 0x64, 0x20, 0xe4, 0xb8, 0x8b, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe5, 0xae, 0xb9, + 0xe5, 0x99, 0xa8, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xc9, 0x02, 0x0a, 0x13, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x21, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0xd0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8c, 0x01, 0x12, 0x89, 0x01, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, - 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x3a, 0x12, 0x10, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x26, 0xe8, - 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0x8c, 0x87, 0xe5, 0xae, 0x9a, 0x20, 0x50, 0x6f, 0x64, 0x20, - 0xe4, 0xb8, 0x8b, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe5, 0xae, 0xb9, 0xe5, 0x99, 0xa8, 0xe4, - 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xc9, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x22, 0xec, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x95, 0x01, 0x12, 0x92, 0x01, 0x2f, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xec, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x95, 0x01, + 0x12, 0x92, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x73, 0x2f, 0x70, 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x76, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x92, 0x41, 0x4d, 0x12, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x45, 0x6e, 0x76, 0x49, 0x6e, 0x66, 0x6f, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x32, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0x8c, 0x87, 0xe5, 0xae, 0x9a, 0x20, + 0x50, 0x6f, 0x64, 0x20, 0xe4, 0xb8, 0x8b, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe5, 0xae, 0xb9, + 0xe5, 0x99, 0xa8, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe5, 0x8f, 0x98, 0xe9, 0x87, 0x8f, 0xe4, + 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x32, 0x9d, 0x1c, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x12, 0xdf, 0x01, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2f, 0x70, - 0x6f, 0x64, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x6e, 0x66, - 0x6f, 0x92, 0x41, 0x4d, 0x12, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x45, 0x6e, 0x76, 0x49, 0x6e, 0x66, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x32, 0xe8, - 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0x8c, 0x87, 0xe5, 0xae, 0x9a, 0x20, 0x50, 0x6f, 0x64, 0x20, - 0xe4, 0xb8, 0x8b, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe5, 0xae, 0xb9, 0xe5, 0x99, 0xa8, 0xe7, - 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe5, 0x8f, 0x98, 0xe9, 0x87, 0x8f, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, - 0xaf, 0x32, 0x9d, 0x1c, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0xdf, 0x01, - 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x97, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x12, 0x68, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x69, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x92, 0x41, 0x24, 0x12, 0x0b, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, - 0x20, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, - 0xdc, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x97, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x6a, 0x12, 0x68, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x2f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x92, 0x41, 0x24, 0x12, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe8, 0x8e, + 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x20, 0xe5, 0x88, 0x97, + 0xe8, 0xa1, 0xa8, 0x12, 0xdc, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x12, 0x1b, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x96, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x71, 0x12, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x2f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1c, 0x12, 0x0a, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x20, 0x41, + 0x50, 0x49, 0x1a, 0x0e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x49, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x12, 0xc9, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, + 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x22, 0x51, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, + 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, + 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1f, 0x12, + 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, + 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0xe8, + 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9c, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x74, 0x1a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x2f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1f, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, + 0xb0, 0x20, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x09, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x96, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x12, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x99, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x2a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, @@ -9078,207 +9529,79 @@ var file_cluster_resources_proto_rawDesc = []byte{ 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, - 0x41, 0x1c, 0x12, 0x0a, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, - 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0xc9, - 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x56, 0x22, 0x51, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x41, 0x1f, 0x12, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x0e, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x12, 0xde, 0x01, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x56, 0x43, 0x12, 0x1c, 0x2e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x96, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x69, 0x12, 0x67, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1f, 0x12, 0x0d, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe5, 0x88, 0x9b, 0xe5, - 0xbb, 0xba, 0x20, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0xe8, 0x01, 0x0a, 0x09, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x1a, - 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, - 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1f, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x67, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x49, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x49, 0x6e, 0x67, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x92, 0x41, 0x24, 0x12, 0x0b, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe8, 0x8e, 0xb7, + 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0xe5, 0x88, 0x97, 0xe8, + 0xa1, 0xa8, 0x12, 0xdb, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x53, 0x56, 0x43, 0x12, 0x1b, 0x2e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x70, 0x12, 0x6e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x92, 0x41, 0x1c, 0x12, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, + 0x1a, 0x0e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0xc8, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x56, 0x43, 0x12, 0x1e, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7d, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x55, 0x22, 0x50, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1f, 0x12, 0x0d, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x53, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe5, 0x88, 0x9b, + 0xe5, 0xbb, 0xba, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xe7, 0x01, 0x0a, 0x09, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x56, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x73, + 0x1a, 0x6e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, + 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1f, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x56, + 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x53, 0x56, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x99, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x2a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, + 0x70, 0x22, 0x98, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x70, 0x2a, 0x6e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1f, 0x12, 0x0d, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe5, - 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0xde, 0x01, - 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x56, 0x43, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x96, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x69, 0x12, 0x67, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x92, 0x41, 0x24, 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xdb, - 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x53, 0x56, 0x43, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x70, 0x12, 0x6e, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1c, - 0x12, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe8, 0x8e, - 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc8, 0x01, 0x0a, - 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x56, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, - 0x22, 0x50, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, - 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1f, 0x12, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x53, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xe7, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x56, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x9b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x73, 0x1a, 0x6e, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, - 0x41, 0x1f, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x56, 0x43, 0x20, 0x41, 0x50, - 0x49, 0x1a, 0x0e, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x56, 0x43, 0x12, - 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x98, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x70, 0x2a, 0x6e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, - 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1f, 0x12, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x53, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, - 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xdf, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, - 0x74, 0x45, 0x50, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x98, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, 0x12, 0x68, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x92, 0x41, 0x25, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x50, 0x20, 0x41, 0x50, - 0x49, 0x1a, 0x17, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xdc, 0x01, 0x0a, 0x05, 0x47, - 0x65, 0x74, 0x45, 0x50, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x97, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x12, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1d, 0x12, 0x09, 0x47, 0x65, - 0x74, 0x45, 0x50, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0xf6, 0x01, 0x0a, 0x0b, 0x47, 0x65, - 0x74, 0x45, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0xab, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x78, 0x12, 0x76, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x92, 0x41, 0x2a, 0x12, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x50, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, - 0x96, 0x20, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x20, 0xe7, 0x8a, 0xb6, 0xe6, - 0x80, 0x81, 0x12, 0xc9, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x50, 0x12, - 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x22, 0x51, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x20, 0x12, 0x0c, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x50, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe5, 0x88, - 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0xe8, - 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x50, 0x12, 0x1e, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9d, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x74, 0x1a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x45, 0x50, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x08, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x45, 0x50, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x9a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x2a, 0x6f, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, - 0x20, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x50, 0x20, 0x41, 0x50, 0x49, 0x1a, - 0x10, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x32, 0xd2, 0x11, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0xdf, 0x01, 0x0a, - 0x06, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x4d, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1f, 0x12, 0x0d, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0e, 0xe5, 0x88, + 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xdf, 0x01, 0x0a, + 0x06, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x50, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, @@ -9288,11 +9611,11 @@ var file_cluster_resources_proto_rawDesc = []byte{ 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x92, 0x41, 0x25, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xdc, - 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x43, 0x4d, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x92, 0x41, 0x25, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x50, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xdc, + 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x45, 0x50, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, @@ -9302,1380 +9625,1548 @@ var file_cluster_resources_proto_rawDesc = []byte{ 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1d, - 0x12, 0x09, 0x47, 0x65, 0x74, 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe8, 0x8e, 0xb7, - 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0xc9, 0x01, - 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x4d, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, + 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1d, + 0x12, 0x09, 0x47, 0x65, 0x74, 0x45, 0x50, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe8, 0x8e, 0xb7, + 0xe5, 0x8f, 0x96, 0x20, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0xf6, 0x01, + 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x45, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x2e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xab, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x78, 0x12, 0x76, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x92, 0x41, 0x2a, 0x12, 0x0f, 0x47, 0x65, + 0x74, 0x45, 0x50, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe8, + 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x20, + 0xe7, 0x8a, 0xb6, 0xe6, 0x80, 0x81, 0x12, 0xc9, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x45, 0x50, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x22, 0x51, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, + 0x41, 0x20, 0x12, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x50, 0x20, 0x41, 0x50, 0x49, + 0x1a, 0x10, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x12, 0xe8, 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x50, 0x12, + 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9d, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x1a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, + 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x50, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe6, 0x9b, 0xb4, + 0xe6, 0x96, 0xb0, 0x20, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0xe5, 0x01, + 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x50, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, - 0x22, 0x51, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x71, 0x2a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x50, 0x20, + 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x32, 0xd2, 0x11, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0xdf, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x4d, 0x12, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, + 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x98, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6a, + 0x12, 0x68, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, - 0x61, 0x70, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0xe8, 0x01, 0x0a, 0x08, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x43, 0x4d, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x9d, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x1a, 0x6f, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, - 0x2a, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x4d, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x10, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x4d, 0x61, 0x70, 0x12, 0xe5, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, - 0x4d, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x9a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x2a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, - 0x70, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe5, 0x88, 0xa0, 0xe9, - 0x99, 0xa4, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0xe1, 0x01, 0x0a, - 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x92, 0x41, 0x25, 0x12, 0x0a, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, + 0x96, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x20, 0xe5, 0x88, 0x97, 0xe8, + 0xa1, 0xa8, 0x12, 0xdc, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x43, 0x4d, 0x12, 0x1b, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x96, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x67, - 0x12, 0x65, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x97, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, + 0x12, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, - 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x92, 0x41, 0x26, 0x12, 0x0e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x14, 0xe8, 0x8e, 0xb7, 0xe5, - 0x8f, 0x96, 0x20, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, - 0x12, 0xde, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1b, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x92, 0x41, 0x1d, 0x12, 0x09, 0x47, 0x65, 0x74, 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, + 0x10, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, + 0x70, 0x12, 0xc9, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x4d, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x6e, 0x12, 0x6c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x73, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, - 0x92, 0x41, 0x1e, 0x12, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x0d, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0xcb, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x7d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x22, 0x4e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, - 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x21, 0x12, 0x10, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x0d, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, - 0xea, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9b, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x1a, 0x6c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x21, 0x12, 0x10, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0d, 0xe6, - 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0xe7, 0x01, 0x0a, - 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1e, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x56, 0x22, 0x51, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe5, 0x88, 0x9b, + 0xe5, 0xbb, 0xba, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0xe8, 0x01, + 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x4d, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, + 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9d, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x74, 0x1a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x20, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12, 0xe5, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x4d, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x9a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x2a, 0x6f, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x6d, 0x61, 0x70, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x20, + 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x4d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x10, + 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, + 0x12, 0xe1, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x98, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x6e, 0x2a, 0x6c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x96, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x67, 0x12, 0x65, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x7d, 0x92, 0x41, 0x21, 0x12, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0d, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x32, 0xb8, 0x1d, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x12, 0xd8, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x56, 0x12, 0x1c, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x91, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x5c, 0x12, 0x5a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x92, 0x41, - 0x2c, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x56, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1e, 0xe8, - 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xd5, 0x01, - 0x0a, 0x05, 0x47, 0x65, 0x74, 0x50, 0x56, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x90, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x12, 0x61, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, - 0x24, 0x12, 0x09, 0x47, 0x65, 0x74, 0x50, 0x56, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe8, 0x8e, - 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0xda, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x50, 0x56, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x8f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x22, 0x5a, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x27, 0x12, 0x0c, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x50, 0x56, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, - 0xba, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0xe1, 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x56, 0x12, - 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x69, 0x67, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x92, 0x41, 0x26, 0x12, 0x0e, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x14, + 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0xe5, 0x88, + 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xde, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x96, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x1a, 0x61, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6e, 0x12, 0x6c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, - 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x27, 0x12, - 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x56, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe6, - 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0xde, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x56, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x93, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x2a, 0x61, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x27, - 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x56, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, - 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0xfc, 0x01, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x56, 0x43, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x1e, 0x12, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0d, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0xcb, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x7d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x22, 0x4e, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, + 0x41, 0x21, 0x12, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0d, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0xea, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x9b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x1a, 0x6c, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x21, 0x12, + 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x0d, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x12, 0xe7, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0xb4, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x79, 0x12, 0x77, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x98, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6e, 0x2a, 0x6c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, - 0x73, 0x92, 0x41, 0x32, 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x56, 0x43, 0x20, 0x41, 0x50, - 0x49, 0x1a, 0x23, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x20, - 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xfa, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x50, 0x56, - 0x43, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb4, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x01, 0x12, 0x7e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, - 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x2a, 0x12, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x56, - 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1c, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, - 0x61, 0x69, 0x6d, 0x12, 0xb0, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x56, 0x43, 0x4d, 0x6f, - 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0xe1, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8c, 0x01, 0x12, 0x89, 0x01, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, - 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x92, 0x41, 0x4b, 0x12, 0x13, 0x47, 0x65, 0x74, - 0x50, 0x56, 0x43, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x34, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x20, 0xe8, - 0xa2, 0xab, 0x20, 0x50, 0x6f, 0x64, 0x20, 0xe6, 0x8c, 0x82, 0xe8, 0xbd, 0xbd, 0xe7, 0x9a, 0x84, - 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xe7, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x56, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x9b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x22, 0x60, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x3a, 0x01, 0x2a, - 0x92, 0x41, 0x2d, 0x12, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x56, 0x43, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x1c, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, - 0x12, 0x86, 0x02, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x56, 0x43, 0x12, 0x1e, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xba, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x83, 0x01, 0x1a, 0x7e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x21, 0x12, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0d, 0xe5, 0x88, 0xa0, + 0xe9, 0x99, 0xa4, 0x20, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x32, 0xb8, 0x1d, 0x0a, 0x07, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0xd8, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x56, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x91, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5c, 0x12, 0x5a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2d, 0x12, 0x0d, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1c, 0xe6, 0x9b, 0xb4, - 0xe6, 0x96, 0xb0, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x83, 0x02, 0x0a, 0x09, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x50, 0x56, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb7, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x01, 0x2a, - 0x7e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, - 0x41, 0x2d, 0x12, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x56, 0x43, 0x20, 0x41, 0x50, - 0x49, 0x1a, 0x1c, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, - 0xd1, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x43, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x73, 0x92, 0x41, 0x2c, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x56, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, + 0xa8, 0x12, 0xd5, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x50, 0x56, 0x12, 0x1b, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, + 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x59, 0x12, - 0x57, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x90, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x12, + 0x61, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x92, 0x41, 0x28, 0x12, 0x0a, 0x4c, 0x69, 0x73, - 0x74, 0x53, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1a, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0xe5, 0x88, 0x97, - 0xe8, 0xa1, 0xa8, 0x12, 0xce, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x53, 0x43, 0x12, 0x1b, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x60, 0x12, 0x5e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, - 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x92, 0x41, 0x20, 0x12, 0x09, 0x47, 0x65, 0x74, 0x53, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, - 0x13, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x88, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5c, 0x22, 0x57, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, - 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x23, 0x12, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x13, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0xda, 0x01, 0x0a, 0x08, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x92, 0x41, 0x24, 0x12, 0x09, 0x47, 0x65, 0x74, 0x50, 0x56, 0x20, 0x41, 0x50, 0x49, + 0x1a, 0x17, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0xda, 0x01, 0x0a, 0x08, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x56, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x8f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x22, 0x5a, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x27, 0x12, + 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x56, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, 0xe5, + 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0xe1, 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x50, 0x56, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x96, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x1a, 0x61, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, + 0x92, 0x41, 0x27, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x56, 0x20, 0x41, 0x50, + 0x49, 0x1a, 0x17, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0xde, 0x01, 0x0a, 0x08, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x56, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x1a, 0x5e, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x93, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x63, 0x2a, 0x61, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, - 0x2a, 0x92, 0x41, 0x23, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x43, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x13, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0xd7, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x8c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x2a, 0x5e, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x23, 0x12, 0x0c, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x13, 0xe5, 0x88, - 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x32, 0x8f, 0x09, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x12, 0xe7, 0x01, 0x0a, 0x06, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x41, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0xa0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, 0x2f, 0x63, 0x6c, 0x75, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x92, 0x41, 0x27, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x56, 0x20, 0x41, + 0x50, 0x49, 0x1a, 0x17, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0xfc, 0x01, 0x0a, 0x07, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x56, 0x43, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x22, 0xb4, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x79, 0x12, 0x77, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, + 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x92, 0x41, 0x32, 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x56, + 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x23, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xfa, 0x01, 0x0a, 0x06, 0x47, + 0x65, 0x74, 0x50, 0x56, 0x43, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x22, 0xb4, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x80, 0x01, 0x12, 0x7e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x7d, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x92, 0x41, 0x2a, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1c, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0xe5, 0x88, - 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xe4, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x53, 0x41, 0x12, 0x1b, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9f, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x74, 0x12, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x22, 0x12, 0x09, 0x47, 0x65, 0x74, 0x53, 0x41, - 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xd2, 0x01, 0x0a, 0x08, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x41, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x2a, 0x12, 0x0a, 0x47, + 0x65, 0x74, 0x50, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1c, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, + 0x96, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0xb0, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, + 0x56, 0x43, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, + 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xe1, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x8c, 0x01, + 0x12, 0x89, 0x01, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x92, 0x41, 0x4b, 0x12, + 0x13, 0x47, 0x65, 0x74, 0x50, 0x56, 0x43, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x34, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x50, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x20, 0xe8, 0xa2, 0xab, 0x20, 0x50, 0x6f, 0x64, 0x20, 0xe6, 0x8c, 0x82, 0xe8, 0xbd, + 0xbd, 0xe7, 0x9a, 0x84, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xe7, 0x01, 0x0a, 0x09, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x56, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x87, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x59, 0x22, - 0x54, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x22, + 0x60, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, - 0x72, 0x62, 0x61, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, 0x0c, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x53, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, - 0xba, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0xf0, 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x41, 0x12, 0x1e, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa5, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x77, 0x1a, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x72, 0x62, 0x61, 0x63, - 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, 0x0c, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe6, 0x9b, - 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0xed, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x41, - 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa2, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x2a, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x72, - 0x62, 0x61, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x25, 0x12, 0x0c, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe5, 0x88, - 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x32, 0x86, 0x08, 0x0a, 0x03, 0x48, 0x50, 0x41, 0x12, 0xcc, 0x01, 0x0a, 0x07, - 0x4c, 0x69, 0x73, 0x74, 0x48, 0x50, 0x41, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x84, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x12, 0x59, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x7d, 0x2f, 0x68, 0x70, 0x61, 0x92, 0x41, 0x20, 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, - 0x48, 0x50, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, - 0x48, 0x50, 0x41, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xc9, 0x01, 0x0a, 0x06, 0x47, - 0x65, 0x74, 0x48, 0x50, 0x41, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, + 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2d, 0x12, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1c, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x50, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, + 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x86, 0x02, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x56, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x83, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x12, 0x60, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, - 0x2f, 0x68, 0x70, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x18, 0x12, 0x0a, - 0x47, 0x65, 0x74, 0x48, 0x50, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe8, 0x8e, 0xb7, 0xe5, - 0x8f, 0x96, 0x20, 0x48, 0x50, 0x41, 0x12, 0xb6, 0x01, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x48, 0x50, 0x41, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x22, 0x42, 0x2f, 0x63, 0x6c, 0x75, + 0x22, 0xba, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x83, 0x01, 0x1a, 0x7e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x68, 0x70, 0x61, 0x3a, 0x01, - 0x2a, 0x92, 0x41, 0x1b, 0x12, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x50, 0x41, 0x20, - 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x48, 0x50, 0x41, 0x12, - 0xd5, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x50, 0x41, 0x12, 0x1e, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x89, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x65, 0x1a, 0x60, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x68, 0x70, 0x61, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1b, 0x12, 0x0d, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x48, 0x50, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe6, 0x9b, 0xb4, - 0xe6, 0x96, 0xb0, 0x20, 0x48, 0x50, 0x41, 0x12, 0xd2, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x48, 0x50, 0x41, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, + 0x69, 0x6d, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2d, + 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x56, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, + 0x1c, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x12, 0x83, 0x02, + 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x56, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, + 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb7, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x80, 0x01, 0x2a, 0x7e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x2d, 0x12, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x56, + 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1c, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x43, 0x6c, + 0x61, 0x69, 0x6d, 0x12, 0xd1, 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x43, 0x12, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8a, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x59, 0x12, 0x57, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x92, 0x41, 0x28, 0x12, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1a, 0xe8, 0x8e, 0xb7, + 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xce, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x53, + 0x43, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x89, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x12, 0x5e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x20, 0x12, 0x09, 0x47, 0x65, 0x74, 0x53, 0x43, 0x20, + 0x41, 0x50, 0x49, 0x1a, 0x13, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0xd3, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x86, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x2a, 0x60, 0x2f, 0x63, + 0x65, 0x73, 0x70, 0x22, 0x88, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5c, 0x22, 0x57, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x7d, 0x2f, 0x68, 0x70, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, - 0x1b, 0x12, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x50, 0x41, 0x20, 0x41, 0x50, 0x49, - 0x1a, 0x0a, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x48, 0x50, 0x41, 0x32, 0xb0, 0x19, 0x0a, - 0x09, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x07, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x52, 0x44, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x23, 0x12, 0x0c, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x13, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, + 0xba, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0xda, + 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, + 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8f, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x63, 0x1a, 0x5e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x23, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x43, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x13, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0xd7, 0x01, 0x0a, 0x08, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x43, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x2a, + 0x5e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, + 0x41, 0x23, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x43, 0x20, 0x41, 0x50, 0x49, + 0x1a, 0x13, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x8f, 0x09, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x12, 0xe7, + 0x01, 0x0a, 0x06, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x41, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6d, 0x12, 0x6b, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x92, 0x41, 0x2a, 0x12, 0x0a, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1c, 0xe8, 0x8e, 0xb7, 0xe5, + 0x8f, 0x96, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xe4, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x74, + 0x53, 0x41, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9f, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x12, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, + 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x72, 0x62, + 0x61, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x22, 0x12, 0x09, 0x47, + 0x65, 0x74, 0x53, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0xd2, 0x01, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x41, 0x12, 0x1e, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x87, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x59, 0x22, 0x54, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x49, 0x44, 0x7d, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, + 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x15, 0xe5, + 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xf0, 0x01, 0x0a, 0x08, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x41, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0xa5, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x77, 0x1a, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, + 0x72, 0x62, 0x61, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, + 0x41, 0x25, 0x12, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x41, 0x20, 0x41, 0x50, 0x49, + 0x1a, 0x15, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xed, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x53, 0x41, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x92, - 0x41, 0x20, 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x52, 0x44, 0x20, 0x41, 0x50, 0x49, 0x1a, - 0x11, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x52, 0x44, 0x20, 0xe5, 0x88, 0x97, 0xe8, - 0xa1, 0xa8, 0x12, 0xb2, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x43, 0x52, 0x44, 0x12, 0x1b, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, - 0x12, 0x4a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x73, 0x70, 0x22, 0xa2, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x2a, 0x72, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x7d, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, + 0x41, 0x25, 0x12, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x41, 0x20, 0x41, 0x50, 0x49, + 0x1a, 0x15, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x86, 0x08, 0x0a, 0x03, 0x48, 0x50, 0x41, 0x12, + 0xcc, 0x01, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x50, 0x41, 0x12, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, + 0x65, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x84, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, + 0x12, 0x59, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, - 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x18, 0x12, - 0x0a, 0x47, 0x65, 0x74, 0x43, 0x52, 0x44, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe8, 0x8e, 0xb7, - 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x52, 0x44, 0x12, 0xde, 0x01, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x94, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5e, 0x12, 0x5c, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, - 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x92, 0x41, 0x2d, 0x12, 0x0c, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1d, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, - 0x96, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, - 0x90, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xdf, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, - 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x47, 0x65, 0x74, 0x52, - 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x97, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x69, 0x12, 0x67, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, - 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, - 0x65, 0x7d, 0x92, 0x41, 0x25, 0x12, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x16, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, - 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x12, 0x96, 0x02, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb7, 0x01, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x71, 0x12, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, - 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x68, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x92, 0x41, 0x3d, 0x12, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x41, - 0x50, 0x49, 0x1a, 0x1f, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, - 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x9e, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x52, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x12, 0x20, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x4f, 0x62, 0x6a, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x68, 0x70, 0x61, 0x92, 0x41, 0x20, 0x12, 0x0b, + 0x4c, 0x69, 0x73, 0x74, 0x48, 0x50, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe8, 0x8e, 0xb7, + 0xe5, 0x8f, 0x96, 0x20, 0x48, 0x50, 0x41, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xc9, + 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x48, 0x50, 0x41, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x83, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x12, 0x60, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xc6, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x7e, 0x12, 0x7c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x68, 0x70, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x92, + 0x41, 0x18, 0x12, 0x0a, 0x47, 0x65, 0x74, 0x48, 0x50, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, + 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x48, 0x50, 0x41, 0x12, 0xb6, 0x01, 0x0a, 0x09, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x48, 0x50, 0x41, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x22, 0x42, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x68, + 0x70, 0x61, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1b, 0x12, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x48, 0x50, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, + 0x48, 0x50, 0x41, 0x12, 0xd5, 0x01, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x50, + 0x41, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x65, 0x1a, 0x60, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, + 0x68, 0x70, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1b, + 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x50, 0x41, 0x20, 0x41, 0x50, 0x49, 0x1a, + 0x0a, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0x48, 0x50, 0x41, 0x12, 0xd2, 0x01, 0x0a, 0x09, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x50, 0x41, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x86, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, + 0x2a, 0x60, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, + 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x68, 0x70, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x92, 0x41, 0x1b, 0x12, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x50, 0x41, + 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0a, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, 0x48, 0x50, 0x41, + 0x32, 0xb0, 0x19, 0x0a, 0x09, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x12, 0xb5, + 0x01, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x52, 0x44, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, + 0x73, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, + 0x72, 0x64, 0x73, 0x92, 0x41, 0x20, 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x52, 0x44, 0x20, + 0x41, 0x50, 0x49, 0x1a, 0x11, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x52, 0x44, 0x20, + 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xb2, 0x01, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x43, 0x52, + 0x44, 0x12, 0x1b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6d, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, - 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x7d, 0x92, 0x41, 0x3f, 0x12, 0x17, 0x47, 0x65, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x52, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x24, - 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, - 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, - 0x64, 0x69, 0x66, 0x66, 0x12, 0xfc, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x52, 0x65, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x92, 0x41, 0x18, 0x12, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x52, 0x44, 0x20, 0x41, 0x50, 0x49, 0x1a, + 0x0a, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x43, 0x52, 0x44, 0x12, 0xde, 0x01, 0x0a, 0x08, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x1d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x94, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5e, 0x12, 0x5c, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, + 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x92, 0x41, 0x2d, 0x12, + 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1d, 0xe8, + 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, + 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x20, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xdf, 0x01, 0x0a, + 0x07, 0x47, 0x65, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0xac, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x74, 0x1a, 0x6f, 0x2f, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x97, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x69, 0x12, 0x67, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, - 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x01, - 0x2a, 0x92, 0x41, 0x2f, 0x12, 0x0f, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x4f, 0x62, - 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1c, 0xe9, 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, - 0xe5, 0xba, 0xa6, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, - 0xe6, 0xba, 0x90, 0x12, 0x8a, 0x02, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x43, - 0x4f, 0x62, 0x6a, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, - 0x75, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0xba, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7f, 0x1a, 0x7a, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, - 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, - 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x2f, 0x7b, 0x72, - 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x32, 0x12, 0x0f, - 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, - 0x1f, 0xe5, 0x9b, 0x9e, 0xe6, 0xbb, 0x9a, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, - 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0xe0, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x12, - 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x92, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x61, 0x22, 0x5c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, - 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x28, 0x12, 0x0e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x16, 0xe5, 0x88, 0x9b, - 0xe5, 0xbb, 0xba, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, - 0xe6, 0xba, 0x90, 0x12, 0xeb, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x4f, - 0x62, 0x6a, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x9d, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x1a, 0x67, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, - 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, - 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x28, 0x12, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x16, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, - 0xb0, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, - 0x90, 0x12, 0xa0, 0x02, 0x0a, 0x09, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x12, - 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xd4, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x72, 0x1a, 0x6d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x25, 0x12, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x4f, + 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x16, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0xe8, + 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x12, 0x96, + 0x02, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, + 0x6a, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb7, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x71, 0x12, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, - 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x59, 0x12, 0x0d, 0x53, 0x63, 0x61, - 0x6c, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x48, 0xe8, 0x87, 0xaa, 0xe5, - 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe6, 0x89, 0xa9, 0xe7, 0xbc, - 0xa9, 0xe5, 0xae, 0xb9, 0xef, 0xbc, 0x88, 0xe4, 0xbb, 0x85, 0x20, 0x47, 0x61, 0x6d, 0x65, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x47, 0x61, 0x6d, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0xe5, 0x8f, 0xaf, 0xe7, 0x94, - 0xa8, 0xef, 0xbc, 0x89, 0x12, 0xe8, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x92, 0x41, 0x3d, 0x12, 0x1a, 0x47, 0x65, 0x74, 0x43, + 0x4f, 0x62, 0x6a, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1f, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0xe8, + 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x20, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x9e, 0x02, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, + 0x4f, 0x62, 0x6a, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x12, + 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0xc6, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7e, 0x12, 0x7c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, + 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, 0x65, + 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x92, 0x41, 0x3f, 0x12, 0x17, 0x47, 0x65, 0x74, 0x43, 0x4f, + 0x62, 0x6a, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x20, 0x41, + 0x50, 0x49, 0x1a, 0x24, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, + 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x20, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x69, 0x66, 0x66, 0x12, 0xfc, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, + 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xac, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x74, 0x1a, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, + 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2f, 0x12, 0x0f, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1c, 0xe9, 0x87, 0x8d, 0xe6, 0x96, + 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, + 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x12, 0x8a, 0x02, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x6c, + 0x6f, 0x75, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x52, + 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xba, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7f, + 0x1a, 0x7a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, + 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, + 0x74, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x3a, 0x01, 0x2a, 0x92, + 0x41, 0x32, 0x12, 0x0f, 0x52, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x43, 0x4f, 0x62, 0x6a, 0x20, + 0x41, 0x50, 0x49, 0x1a, 0x1f, 0xe5, 0x9b, 0x9e, 0xe6, 0xbb, 0x9a, 0x20, 0xe8, 0x87, 0xaa, 0xe5, + 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x20, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xe0, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x9a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x69, 0x2a, 0x67, 0x2f, 0x63, 0x6c, + 0x73, 0x70, 0x22, 0x92, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x61, 0x22, 0x5c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, - 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x28, 0x12, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, - 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x16, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0x20, - 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x12, - 0xcd, 0x02, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x4f, - 0x62, 0x6a, 0x50, 0x6f, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x28, 0x12, + 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, + 0x16, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, + 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x12, 0xeb, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9d, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x1a, 0x67, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, + 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, + 0x62, 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x28, 0x12, 0x0e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x16, 0xe6, + 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, + 0xb5, 0x84, 0xe6, 0xba, 0x90, 0x12, 0xa0, 0x02, 0x0a, 0x09, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x43, + 0x4f, 0x62, 0x6a, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x53, 0x63, 0x61, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0xd4, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x72, 0x1a, 0x6d, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, + 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, + 0x6d, 0x65, 0x7d, 0x2f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x59, 0x12, + 0x0d, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x48, + 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe6, + 0x89, 0xa9, 0xe7, 0xbc, 0xa9, 0xe5, 0xae, 0xb9, 0xef, 0xbc, 0x88, 0xe4, 0xbb, 0x85, 0x20, 0x47, + 0x61, 0x6d, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0xe5, + 0x8f, 0xaf, 0xe7, 0x94, 0xa8, 0xef, 0xbc, 0x89, 0x12, 0xe8, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x69, 0x2a, + 0x67, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, + 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, + 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x92, 0x41, 0x28, 0x12, 0x0e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x16, 0xe5, 0x88, 0xa0, + 0xe9, 0x99, 0xa4, 0x20, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, + 0xe6, 0xba, 0x90, 0x12, 0xcd, 0x02, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x50, 0x6f, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x4f, 0x62, 0x6a, + 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x22, 0xf0, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x77, 0x1a, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, + 0x43, 0x52, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x01, 0x2a, + 0x92, 0x41, 0x70, 0x12, 0x14, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x43, + 0x4f, 0x62, 0x6a, 0x50, 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x58, 0xe9, 0x87, 0x8d, 0xe6, 0x96, + 0xb0, 0xe8, 0xb0, 0x83, 0xe5, 0xba, 0xa6, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, + 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe4, 0xb8, 0x8b, 0xe5, 0xb1, 0x9e, 0xe7, 0x9a, 0x84, 0x20, + 0x50, 0x6f, 0x64, 0xef, 0xbc, 0x88, 0xe4, 0xbb, 0x85, 0x20, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0xe5, 0x8f, 0xaf, 0xe7, 0x94, 0xa8, + 0xef, 0xbc, 0x89, 0x32, 0xd3, 0x13, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0xe8, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4b, 0x38, 0x53, 0x52, 0x65, 0x73, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x38, 0x53, + 0x52, 0x65, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xf0, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x77, 0x1a, 0x72, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8c, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x12, 0x51, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x43, 0x52, 0x44, 0x4e, - 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x62, 0x6a, 0x4e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, - 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x70, 0x12, - 0x14, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x4f, 0x62, 0x6a, 0x50, - 0x6f, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x58, 0xe9, 0x87, 0x8d, 0xe6, 0x96, 0xb0, 0xe8, 0xb0, 0x83, - 0xe5, 0xba, 0xa6, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, - 0xba, 0x90, 0xe4, 0xb8, 0x8b, 0xe5, 0xb1, 0x9e, 0xe7, 0x9a, 0x84, 0x20, 0x50, 0x6f, 0x64, 0xef, - 0xbc, 0x88, 0xe4, 0xbb, 0x85, 0x20, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x66, - 0x75, 0x6c, 0x53, 0x65, 0x74, 0x20, 0xe5, 0x8f, 0xaf, 0xe7, 0x94, 0xa8, 0xef, 0xbc, 0x89, 0x32, - 0xd3, 0x13, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0xe8, 0x01, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x4b, 0x38, 0x53, 0x52, 0x65, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x38, 0x53, 0x52, 0x65, 0x73, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8c, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x53, 0x12, 0x51, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, - 0x7d, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x69, 0x66, - 0x65, 0x73, 0x74, 0x73, 0x92, 0x41, 0x30, 0x12, 0x15, 0x47, 0x65, 0x74, 0x4b, 0x38, 0x53, 0x52, - 0x65, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x17, - 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x4b, 0x38, 0x53, 0x20, 0xe8, 0xb5, 0x84, 0xe6, 0xba, - 0x90, 0xe6, 0xa8, 0xa1, 0xe7, 0x89, 0x88, 0x12, 0xc0, 0x01, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x12, 0x48, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x92, 0x41, 0x1d, 0x12, 0x0d, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0c, 0xe8, 0xb5, 0x84, 0xe6, - 0xba, 0x90, 0xe8, 0xae, 0xa2, 0xe9, 0x98, 0x85, 0x30, 0x01, 0x12, 0xe8, 0x01, 0x0a, 0x18, 0x49, + 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x6d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x73, 0x92, 0x41, 0x30, 0x12, 0x15, 0x47, 0x65, 0x74, + 0x4b, 0x38, 0x53, 0x52, 0x65, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x41, + 0x50, 0x49, 0x1a, 0x17, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0x20, 0x4b, 0x38, 0x53, 0x20, 0xe8, + 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe6, 0xa8, 0xa1, 0xe7, 0x89, 0x88, 0x12, 0xc0, 0x01, 0x0a, 0x09, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x4a, 0x12, 0x48, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x7d, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x92, 0x41, 0x1d, 0x12, + 0x0d, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x0c, + 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe8, 0xae, 0xa2, 0xe9, 0x98, 0x85, 0x30, 0x01, 0x12, 0xe8, + 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x2d, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x79, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x2d, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x22, 0x2f, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x3a, 0x01, 0x2a, - 0x92, 0x41, 0x42, 0x12, 0x1e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x20, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x20, 0x43, 0x61, 0x63, 0x68, 0x65, 0x20, - 0x41, 0x50, 0x49, 0x1a, 0x20, 0xe4, 0xb8, 0xbb, 0xe5, 0x8a, 0xa8, 0xe4, 0xbd, 0xbf, 0x20, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x20, 0xe7, 0xbc, 0x93, 0xe5, 0xad, 0x98, 0xe5, - 0xa4, 0xb1, 0xe6, 0x95, 0x88, 0x12, 0xff, 0x01, 0x0a, 0x15, 0x46, 0x6f, 0x72, 0x6d, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, - 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x65, - 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x22, 0x56, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x72, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x70, - 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x3b, 0x12, 0x1c, 0x46, 0x6f, - 0x72, 0x6d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x70, - 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1b, 0xe8, 0xa1, 0xa8, 0xe5, - 0x8d, 0x95, 0xe5, 0x8c, 0x96, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe6, 0xb8, 0xb2, 0xe6, 0x9f, - 0x93, 0xe9, 0xa2, 0x84, 0xe8, 0xa7, 0x88, 0x12, 0xc4, 0x01, 0x0a, 0x0a, 0x46, 0x6f, 0x72, 0x6d, - 0x54, 0x6f, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x6f, - 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x77, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x38, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, - 0x74, 0x6f, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x31, 0x12, 0x10, 0x46, - 0x6f, 0x72, 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x59, 0x41, 0x4d, 0x4c, 0x20, 0x41, 0x50, 0x49, 0x1a, - 0x1d, 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, 0x95, 0xe5, 0x8c, 0x96, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, - 0xe8, 0xbd, 0xac, 0xe6, 0x8d, 0xa2, 0xe4, 0xb8, 0xba, 0x20, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0xc4, - 0x01, 0x0a, 0x0a, 0x59, 0x41, 0x4d, 0x4c, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x12, 0x1f, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x59, 0x41, 0x4d, 0x4c, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x1c, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x77, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x38, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x7d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x01, - 0x2a, 0x92, 0x41, 0x31, 0x12, 0x10, 0x59, 0x41, 0x4d, 0x4c, 0x20, 0x74, 0x6f, 0x20, 0x46, 0x6f, - 0x72, 0x6d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1d, 0x59, 0x41, 0x4d, 0x4c, 0x20, 0xe8, 0xbd, 0xac, - 0xe6, 0x8d, 0xa2, 0xe4, 0xb8, 0xba, 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, 0x95, 0xe5, 0x8c, 0x96, 0xe6, - 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x12, 0x89, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x52, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, - 0x2a, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x73, 0x46, 0x6f, - 0x72, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, + 0x72, 0x79, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, + 0x22, 0x2f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x61, 0x63, 0x68, + 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x42, 0x12, 0x1e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x20, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x20, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x20, 0xe4, 0xb8, 0xbb, 0xe5, 0x8a, 0xa8, 0xe4, + 0xbd, 0xbf, 0x20, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x20, 0xe7, 0xbc, 0x93, + 0xe5, 0xad, 0x98, 0xe5, 0xa4, 0xb1, 0xe6, 0x95, 0x88, 0x12, 0xff, 0x01, 0x0a, 0x15, 0x46, 0x6f, + 0x72, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x65, 0x76, + 0x69, 0x65, 0x77, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa1, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x22, 0x37, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x3a, - 0x01, 0x2a, 0x92, 0x41, 0x5c, 0x12, 0x24, 0x47, 0x65, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x27, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x6d, - 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x34, 0xe8, 0x8e, 0xb7, - 0xe5, 0x8f, 0x96, 0xe6, 0x8c, 0x87, 0xe5, 0xae, 0x9a, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe8, - 0xa1, 0xa8, 0xe5, 0x8d, 0x95, 0x20, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0xef, 0xbc, 0x8c, 0xe4, - 0xb8, 0x8d, 0xe5, 0xb8, 0xa6, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe4, 0xbf, 0xa1, 0xe6, 0x81, - 0xaf, 0x12, 0xf0, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x6d, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x46, 0x6f, 0x72, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x96, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x92, 0x41, 0x41, 0x12, 0x1e, 0x47, 0x65, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x27, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, - 0x41, 0x50, 0x49, 0x1a, 0x1f, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0x8c, 0x87, 0xe5, 0xae, - 0x9a, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, 0x95, 0x20, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x12, 0x82, 0x03, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x6d, - 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x50, 0x49, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x53, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x92, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa5, 0x01, 0x12, 0x5a, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x66, - 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x70, - 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x47, 0x12, 0x45, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x92, 0x41, 0x63, 0x12, 0x2d, 0x47, 0x65, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x27, 0x73, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x20, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x1a, 0x32, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0x8c, 0x87, - 0xe5, 0xae, 0x9a, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, 0x8f, 0xaf, 0xe7, 0x94, 0xa8, 0xe4, - 0xba, 0x8e, 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, 0x95, 0xe5, 0x8c, 0x96, 0xe7, 0x9a, 0x84, 0x20, 0x41, - 0x50, 0x49, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x99, 0x02, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, - 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbd, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x12, 0x4f, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x72, - 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x92, - 0x41, 0x63, 0x12, 0x24, 0x47, 0x65, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x27, 0x73, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x1a, 0x3b, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, - 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe4, 0xb8, 0x8b, 0xe6, 0x8b, 0x89, 0xe6, 0xa1, 0x86, 0xe9, - 0x80, 0x89, 0xe9, 0xa1, 0xb9, 0xe7, 0x9a, 0x84, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe6, 0x95, - 0xb0, 0xe6, 0x8d, 0xae, 0xef, 0xbc, 0x88, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0xef, 0xbc, 0x89, 0x32, 0xb3, 0x0e, 0x0a, 0x0a, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0xca, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, - 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9f, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x5b, 0x22, 0x56, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x7d, 0x2f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, + 0x73, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x3b, + 0x12, 0x1c, 0x46, 0x6f, 0x72, 0x6d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x72, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1b, + 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, 0x95, 0xe5, 0x8c, 0x96, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe6, + 0xb8, 0xb2, 0xe6, 0x9f, 0x93, 0xe9, 0xa2, 0x84, 0xe8, 0xa7, 0x88, 0x12, 0xc4, 0x01, 0x0a, 0x0a, + 0x46, 0x6f, 0x72, 0x6d, 0x54, 0x6f, 0x59, 0x41, 0x4d, 0x4c, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x46, 0x6f, + 0x72, 0x6d, 0x54, 0x6f, 0x59, 0x41, 0x4d, 0x4c, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x77, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3d, 0x22, 0x38, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x66, + 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x6f, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x3a, 0x01, 0x2a, 0x92, 0x41, + 0x31, 0x12, 0x10, 0x46, 0x6f, 0x72, 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x59, 0x41, 0x4d, 0x4c, 0x20, + 0x41, 0x50, 0x49, 0x1a, 0x1d, 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, 0x95, 0xe5, 0x8c, 0x96, 0xe6, 0x95, + 0xb0, 0xe6, 0x8d, 0xae, 0xe8, 0xbd, 0xac, 0xe6, 0x8d, 0xa2, 0xe4, 0xb8, 0xba, 0x20, 0x59, 0x41, + 0x4d, 0x4c, 0x12, 0xc4, 0x01, 0x0a, 0x0a, 0x59, 0x41, 0x4d, 0x4c, 0x54, 0x6f, 0x46, 0x6f, 0x72, + 0x6d, 0x12, 0x1f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x59, 0x41, 0x4d, 0x4c, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x6d, 0x52, + 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x77, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x38, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x73, 0x92, 0x41, 0x2c, 0x12, 0x10, 0x47, 0x65, 0x74, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe8, - 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0xe5, 0x88, 0x97, 0xe8, 0xa1, - 0xa8, 0x12, 0xcd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x32, 0x12, - 0x16, 0x47, 0x65, 0x74, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe8, - 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, - 0x85, 0x12, 0xc8, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6f, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x3d, 0x22, 0x38, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, - 0x2f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x3a, 0x01, 0x2a, - 0x92, 0x41, 0x29, 0x12, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x76, 0x69, 0x65, 0x77, - 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x13, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe8, - 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0x31, 0x12, 0xcc, 0x01, 0x0a, - 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x1a, 0x3d, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, - 0x92, 0x41, 0x28, 0x12, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x76, 0x69, 0x65, 0x77, - 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x12, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe8, - 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0x12, 0xd5, 0x01, 0x0a, 0x10, - 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x1a, 0x44, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2a, 0x12, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x20, 0x6e, 0x61, - 0x6d, 0x65, 0x1a, 0x0f, 0xe8, 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x87, 0x8d, 0xe5, 0x91, 0xbd, - 0xe5, 0x90, 0x8d, 0x12, 0xcf, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, - 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x76, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x2a, 0x3d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x2e, 0x12, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, - 0x76, 0x69, 0x65, 0x77, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x18, 0xe5, 0x88, 0xa0, - 0xe9, 0x99, 0xa4, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe8, 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, - 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0x12, 0xd1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x12, 0x20, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x56, 0x69, 0x65, 0x77, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7a, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2b, 0x12, 0x15, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x75, - 0x67, 0x67, 0x65, 0x73, 0x74, 0x1a, 0x12, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, 0x90, 0x8d, - 0xe7, 0xa7, 0xb0, 0xe8, 0x81, 0x94, 0xe6, 0x83, 0xb3, 0x12, 0xb4, 0x01, 0x0a, 0x0c, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x56, 0x69, - 0x65, 0x77, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x64, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x3e, 0x22, 0x39, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x3a, 0x01, 0x2a, - 0x92, 0x41, 0x1d, 0x12, 0x0d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x73, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x1a, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0xe8, 0x81, 0x94, 0xe6, 0x83, 0xb3, - 0x12, 0xb8, 0x01, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5f, 0x73, - 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1f, 0x12, 0x0e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x20, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x20, 0xe8, 0x81, 0x94, 0xe6, 0x83, 0xb3, 0x32, 0xef, 0x2b, 0x0a, 0x0b, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, 0xe3, 0x01, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, - 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x92, 0x41, 0x3e, 0x12, 0x19, 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x21, - 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, - 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, - 0x85, 0x12, 0xe2, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x79, 0x61, 0x6d, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x31, 0x12, 0x10, 0x59, 0x41, 0x4d, 0x4c, 0x20, 0x74, + 0x6f, 0x20, 0x46, 0x6f, 0x72, 0x6d, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1d, 0x59, 0x41, 0x4d, 0x4c, + 0x20, 0xe8, 0xbd, 0xac, 0xe6, 0x8d, 0xa2, 0xe4, 0xb8, 0xba, 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, 0x95, + 0xe5, 0x8c, 0x96, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x12, 0x89, 0x02, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0x2a, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x52, + 0x65, 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x63, 0x6c, 0x75, + 0x70, 0x22, 0xa1, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x22, 0x37, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x92, 0x41, 0x3c, 0x12, 0x17, 0x47, 0x65, 0x74, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6c, - 0x69, 0x73, 0x74, 0x1a, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, - 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, - 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xdc, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x5c, 0x12, 0x24, 0x47, 0x65, 0x74, 0x20, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x27, 0x73, 0x20, + 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x41, 0x50, 0x49, 0x1a, + 0x34, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0x8c, 0x87, 0xe5, 0xae, 0x9a, 0xe8, 0xb5, 0x84, + 0xe6, 0xba, 0x90, 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, 0x95, 0x20, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0xef, 0xbc, 0x8c, 0xe4, 0xb8, 0x8d, 0xe5, 0xb8, 0xa6, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe4, + 0xbf, 0xa1, 0xe6, 0x81, 0xaf, 0x12, 0xf0, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x46, 0x6f, 0x72, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x6d, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x96, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x92, 0x41, 0x41, 0x12, 0x1e, 0x47, 0x65, 0x74, 0x20, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x27, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x20, 0x41, 0x50, 0x49, 0x1a, 0x1f, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, + 0x8c, 0x87, 0xe5, 0xae, 0x9a, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, + 0x95, 0x20, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x82, 0x03, 0x0a, 0x1b, 0x47, 0x65, 0x74, + 0x46, 0x6f, 0x72, 0x6d, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x50, 0x49, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x46, + 0x6f, 0x72, 0x6d, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x70, 0x69, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x92, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0xa5, 0x01, 0x12, 0x5a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x47, + 0x12, 0x45, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6d, + 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x92, 0x41, 0x63, 0x12, 0x2d, 0x47, 0x65, 0x74, 0x20, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x27, 0x73, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x20, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x1a, 0x32, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, + 0x96, 0xe6, 0x8c, 0x87, 0xe5, 0xae, 0x9a, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, 0x8f, 0xaf, + 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe8, 0xa1, 0xa8, 0xe5, 0x8d, 0x95, 0xe5, 0x8c, 0x96, 0xe7, + 0x9a, 0x84, 0x20, 0x41, 0x50, 0x49, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x99, 0x02, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbd, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x51, 0x12, 0x4f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x44, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x92, 0x41, 0x63, 0x12, 0x24, 0x47, 0x65, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x27, 0x73, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x1a, 0x3b, 0xe8, 0x8e, + 0xb7, 0xe5, 0x8f, 0x96, 0xe7, 0x94, 0xa8, 0xe4, 0xba, 0x8e, 0xe4, 0xb8, 0x8b, 0xe6, 0x8b, 0x89, + 0xe6, 0xa1, 0x86, 0xe9, 0x80, 0x89, 0xe9, 0xa1, 0xb9, 0xe7, 0x9a, 0x84, 0xe8, 0xb5, 0x84, 0xe6, + 0xba, 0x90, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xef, 0xbc, 0x88, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0xef, 0xbc, 0x89, 0x32, 0xb3, 0x0e, 0x0a, 0x0a, 0x56, 0x69, + 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0xca, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, + 0x74, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x24, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x92, 0x41, 0x2c, 0x12, 0x10, 0x47, 0x65, 0x74, 0x20, 0x76, + 0x69, 0x65, 0x77, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, + 0xe5, 0x8f, 0x96, 0xe8, 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0xe5, + 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xcd, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x56, 0x69, 0x65, + 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x22, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, + 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3f, 0x12, 0x3d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, + 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x92, 0x41, 0x32, 0x12, 0x16, 0x47, 0x65, 0x74, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, + 0xe5, 0x8f, 0x96, 0xe8, 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0xe8, + 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x12, 0xc8, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x38, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x29, 0x12, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, + 0x76, 0x69, 0x65, 0x77, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x13, 0xe5, 0x88, 0x9b, + 0xe5, 0xbb, 0xba, 0xe8, 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0x31, + 0x12, 0xcc, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, + 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x73, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x42, 0x1a, 0x3d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, + 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x28, 0x12, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, + 0x76, 0x69, 0x65, 0x77, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x12, 0xe6, 0x9b, 0xb4, + 0xe6, 0x96, 0xb0, 0xe8, 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0x12, + 0xd5, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x56, 0x69, + 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7c, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x49, 0x1a, 0x44, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, + 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2a, 0x12, 0x17, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x0f, 0xe8, 0xa7, 0x86, 0xe5, 0x9b, 0xbe, 0xe9, 0x87, + 0x8d, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0x12, 0xcf, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x76, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x2a, 0x3d, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x2e, 0x12, 0x12, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x20, 0x76, 0x69, 0x65, 0x77, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, + 0x18, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe5, 0x8d, 0x95, 0xe4, 0xb8, 0xaa, 0xe8, 0xa7, 0x86, + 0xe5, 0x9b, 0xbe, 0xe9, 0x85, 0x8d, 0xe7, 0xbd, 0xae, 0x12, 0xd1, 0x01, 0x0a, 0x13, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, + 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x7a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x92, + 0x41, 0x2b, 0x12, 0x15, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6e, 0x61, 0x6d, + 0x65, 0x20, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x1a, 0x12, 0xe8, 0xb5, 0x84, 0xe6, 0xba, + 0x90, 0xe5, 0x90, 0x8d, 0xe7, 0xa7, 0xb0, 0xe8, 0x81, 0x94, 0xe6, 0x83, 0xb3, 0x12, 0xb4, 0x01, + 0x0a, 0x0c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x73, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, + 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x64, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x39, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x7d, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, + 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1d, 0x12, 0x0d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x73, + 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0xe8, 0x81, + 0x94, 0xe6, 0x83, 0xb3, 0x12, 0xb8, 0x01, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x53, + 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x12, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x53, 0x75, + 0x67, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x3b, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x22, 0x3a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, - 0x34, 0x12, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x1b, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, - 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, - 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x12, 0xe2, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x1a, 0x40, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x1f, + 0x12, 0x0e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x1a, 0x0d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0xe8, 0x81, 0x94, 0xe6, 0x83, 0xb3, 0x32, + 0xf3, 0x33, 0x0a, 0x0b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, + 0xe3, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x25, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x42, 0x12, 0x40, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x3e, 0x12, 0x19, 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x1a, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe8, + 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x12, 0xe2, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x12, 0x3b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x34, 0x12, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x1b, 0xe6, - 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, - 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x12, 0xde, 0x01, 0x0a, 0x13, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, + 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x92, 0x41, 0x3c, 0x12, 0x17, + 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, + 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, + 0xb6, 0xe5, 0xa4, 0xb9, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xdc, 0x01, 0x0a, 0x13, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x42, 0x2a, 0x40, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7d, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x40, 0x22, 0x3b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x3a, + 0x01, 0x2a, 0x92, 0x41, 0x34, 0x12, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x1b, 0xe5, 0x88, + 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x12, 0xe2, 0x01, 0x0a, 0x13, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x82, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x45, 0x1a, 0x40, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x34, 0x12, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x1b, - 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, - 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x12, 0xef, 0x01, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x34, 0x12, 0x15, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x1a, 0x1b, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, + 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x12, 0xde, + 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x2a, 0x40, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x34, 0x12, 0x15, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x1a, 0x1b, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x12, + 0xdc, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x70, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8f, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x80, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x45, 0x22, 0x40, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x41, 0x12, 0x1c, 0x47, 0x65, - 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, - 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, - 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x12, 0x80, 0x02, - 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x9a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x12, 0x50, 0x2f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x49, 0x44, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x73, 0x92, 0x41, - 0x3f, 0x12, 0x1a, 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x21, 0xe8, - 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, - 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, - 0x12, 0xfb, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x22, - 0x50, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, - 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x37, 0x12, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x1b, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, - 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x12, 0xee, - 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x88, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x1a, 0x43, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x73, 0x2f, 0x7b, 0x69, - 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x37, 0x12, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x1a, 0x1b, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, - 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x12, - 0xeb, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x32, 0x12, 0x13, 0x43, 0x6f, + 0x70, 0x79, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x1a, 0x1b, 0xe5, 0xa4, 0x8d, 0xe5, 0x88, 0xb6, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, + 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0x12, 0x86, + 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x2d, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x98, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x73, 0x92, 0x41, 0x4a, 0x12, 0x1f, 0x47, + 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x27, + 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, + 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe6, 0x94, 0xb6, 0xe8, 0x97, + 0x8f, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0x93, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x85, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x2a, 0x43, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xa5, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x22, 0x55, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x92, 0x41, 0x37, 0x12, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x1a, 0x1b, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, - 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x12, 0xe8, 0x01, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x42, 0x12, 0x1d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x1a, 0x21, 0xe5, 0x88, 0x9b, 0xe5, + 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe6, 0x94, 0xb6, 0xe8, 0x97, 0x8f, 0x12, 0x83, 0x02, + 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x2f, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, + 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8a, 0x01, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4a, 0x2a, 0x48, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x3d, 0x12, 0x1b, 0x47, 0x65, 0x74, - 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, - 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, - 0x9c, 0xac, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x12, 0xde, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, - 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, - 0x3b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x01, 0x2a, 0x92, - 0x41, 0x37, 0x12, 0x1b, 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, - 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, - 0xe4, 0xbb, 0xb6, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x12, 0xf4, 0x01, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x90, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x92, 0x41, 0x3b, 0x12, 0x19, 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x69, 0x73, 0x74, - 0x1a, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, - 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, - 0x12, 0xef, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x8b, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x22, 0x4a, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x7d, - 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x33, 0x12, - 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x18, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, - 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, - 0x9c, 0xac, 0x12, 0xe4, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x80, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x2a, - 0x42, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x92, 0x41, 0x33, 0x12, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, - 0x18, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, - 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x12, 0xc7, 0x01, 0x0a, 0x11, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, - 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x38, 0x2f, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x65, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x26, 0x12, 0x13, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, - 0x65, 0x74, 0x1a, 0x0f, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, - 0xe9, 0x9b, 0x86, 0x12, 0xf5, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x12, 0x2e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x22, 0x3e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x76, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x3d, 0x12, 0x1b, - 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x1e, 0xe8, 0x8e, 0xb7, - 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, - 0x8f, 0x98, 0xe9, 0x87, 0x8f, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xce, 0x01, 0x0a, 0x13, - 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x41, 0x22, 0x3c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, - 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x26, 0x12, 0x10, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x20, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0x12, 0xe9, 0x83, 0xa8, 0xe7, 0xbd, 0xb2, - 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0x12, 0xcb, 0x01, 0x0a, - 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x40, 0x22, 0x3b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, - 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x3a, - 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, 0x0f, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0x12, 0xe9, 0x83, 0xa8, 0xe7, 0xbd, 0xb2, 0xe6, 0xa8, - 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0x12, 0xc2, 0x01, 0x0a, 0x0c, 0x47, - 0x65, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x6c, + 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, + 0x42, 0x12, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x1a, 0x21, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0xa4, 0xb9, 0xe6, 0x94, 0xb6, + 0xe8, 0x97, 0x8f, 0x12, 0xef, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x8f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x73, 0x2f, 0x7b, 0x69, 0x64, + 0x7d, 0x92, 0x41, 0x41, 0x12, 0x1c, 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x1a, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, + 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0xe8, + 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x12, 0x80, 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x71, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9a, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x52, 0x12, 0x50, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x31, 0x12, 0x15, - 0x47, 0x65, 0x74, 0x20, 0x65, 0x6e, 0x76, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x64, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe7, 0x8e, 0xaf, - 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x12, - 0xc4, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x73, 0x12, 0x23, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x32, 0x12, 0x30, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x65, - 0x6e, 0x76, 0x73, 0x92, 0x41, 0x30, 0x12, 0x14, 0x47, 0x65, 0x74, 0x20, 0x65, 0x6e, 0x76, 0x20, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x18, 0xe8, 0x8e, - 0xb7, 0xe5, 0x8f, 0x96, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, - 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xbc, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x7d, 0x2f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x73, 0x92, 0x41, 0x3f, 0x12, 0x1a, 0x47, 0x65, 0x74, 0x20, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x20, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, + 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, 0x95, 0xb0, 0xe6, + 0x8d, 0xae, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xfb, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x22, 0x30, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x22, 0x50, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x44, 0x7d, 0x2f, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x37, 0x12, + 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x1b, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, + 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, + 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x12, 0xee, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x2b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x88, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x1a, 0x43, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x37, + 0x12, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x1b, 0xe6, 0x9b, 0xb4, 0xe6, + 0x96, 0xb0, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, + 0x83, 0xe6, 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x12, 0xeb, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x2b, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x1a, + 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x85, 0x01, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x2a, 0x43, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x27, 0x12, 0x11, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x65, 0x6e, 0x76, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x1a, 0x12, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, - 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x12, 0xc1, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x37, 0x12, 0x18, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x1b, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, + 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x85, 0x83, 0xe6, + 0x95, 0xb0, 0xe6, 0x8d, 0xae, 0x12, 0xe8, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x8a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x92, 0x41, 0x3d, 0x12, 0x1b, 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x1a, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, + 0x12, 0xde, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x80, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x3b, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x37, 0x12, 0x1b, 0x47, 0x65, 0x74, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, + 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, + 0x85, 0x12, 0xf4, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x90, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, + 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x92, 0x41, 0x3b, 0x12, 0x19, 0x47, + 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, + 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, + 0x9c, 0xac, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xef, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8b, 0x01, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x22, 0x4a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x7b, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x44, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x33, 0x12, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, + 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x1a, 0x18, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, 0xac, 0x12, 0xe4, 0x01, 0x0a, 0x15, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x80, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x2a, 0x42, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x33, 0x12, 0x17, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x18, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe6, + 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe7, 0x89, 0x88, 0xe6, 0x9c, + 0xac, 0x12, 0xc7, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6a, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x1a, 0x35, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6c, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x22, 0x38, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x92, - 0x41, 0x27, 0x12, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x65, 0x6e, 0x76, 0x20, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x1a, 0x12, 0xe6, 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe7, 0x8e, 0xaf, - 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x12, 0xd0, 0x01, 0x0a, 0x0f, 0x52, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x24, 0x2e, - 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x1a, 0x3c, 0x2f, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x2f, 0x12, 0x16, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x65, 0x6e, 0x76, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x15, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, - 0xe7, 0x90, 0x86, 0xe9, 0x87, 0x8d, 0xe5, 0x91, 0xbd, 0xe5, 0x90, 0x8d, 0x12, 0xbe, 0x01, 0x0a, - 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, + 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x65, 0x74, 0x73, 0x3a, + 0x01, 0x2a, 0x92, 0x41, 0x26, 0x12, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x73, 0x65, 0x74, 0x1a, 0x0f, 0xe5, 0x88, 0x9b, 0xe5, + 0xbb, 0xba, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe9, 0x9b, 0x86, 0x12, 0xf5, 0x01, 0x0a, 0x19, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x89, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, + 0x22, 0x3e, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x3d, 0x12, 0x1b, 0x47, 0x65, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x6c, + 0x69, 0x73, 0x74, 0x1a, 0x1e, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, + 0xbf, 0xe6, 0x96, 0x87, 0xe4, 0xbb, 0xb6, 0xe5, 0x8f, 0x98, 0xe9, 0x87, 0x8f, 0xe5, 0x88, 0x97, + 0xe8, 0xa1, 0xa8, 0x12, 0xce, 0x01, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x22, 0x3c, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x2f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x26, 0x12, 0x10, + 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x1a, 0x12, 0xe9, 0x83, 0xa8, 0xe7, 0xbd, 0xb2, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, + 0x87, 0xe4, 0xbb, 0xb6, 0x12, 0xcb, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x3b, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x25, 0x12, 0x0f, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0x12, + 0xe9, 0x83, 0xa8, 0xe7, 0xbd, 0xb2, 0xe6, 0xa8, 0xa1, 0xe6, 0x9d, 0xbf, 0xe6, 0x96, 0x87, 0xe4, + 0xbb, 0xb6, 0x12, 0xc2, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x2a, 0x35, 0x2f, 0x63, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x73, 0x2f, 0x7b, - 0x69, 0x64, 0x7d, 0x92, 0x41, 0x27, 0x12, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x65, - 0x6e, 0x76, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x1a, 0x12, 0xe5, 0x88, 0xa0, 0xe9, 0x99, - 0xa4, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x32, 0xc3, 0x06, - 0x0a, 0x0c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x84, - 0x02, 0x0a, 0x19, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2e, 0x2e, 0x63, + 0x69, 0x64, 0x7d, 0x92, 0x41, 0x31, 0x12, 0x15, 0x47, 0x65, 0x74, 0x20, 0x65, 0x6e, 0x76, 0x20, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x1a, 0x18, 0xe8, + 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, + 0x86, 0xe8, 0xaf, 0xa6, 0xe6, 0x83, 0x85, 0x12, 0xc4, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x1a, + 0x20, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x73, 0x92, 0x41, 0x30, 0x12, 0x14, + 0x47, 0x65, 0x74, 0x20, 0x65, 0x6e, 0x76, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x73, 0x20, + 0x6c, 0x69, 0x73, 0x74, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe7, 0x8e, 0xaf, 0xe5, + 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xbc, + 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x22, 0x30, + 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x73, + 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x27, 0x12, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x65, + 0x6e, 0x76, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x1a, 0x12, 0xe5, 0x88, 0x9b, 0xe5, 0xbb, + 0xba, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x12, 0xc1, 0x01, + 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x1a, 0x35, 0x2f, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x27, 0x12, 0x11, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x20, 0x65, 0x6e, 0x76, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x1a, 0x12, 0xe6, + 0x9b, 0xb4, 0xe6, 0x96, 0xb0, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, + 0x86, 0x12, 0xd0, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x76, 0x4d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x45, + 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x41, 0x1a, 0x3c, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x65, + 0x6e, 0x76, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3a, + 0x01, 0x2a, 0x92, 0x41, 0x2f, 0x12, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x65, 0x6e, + 0x76, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x15, 0xe7, + 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, 0xae, 0xa1, 0xe7, 0x90, 0x86, 0xe9, 0x87, 0x8d, 0xe5, 0x91, + 0xbd, 0xe5, 0x90, 0x8d, 0x12, 0xbe, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, + 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x24, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x45, 0x6e, 0x76, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, + 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x67, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x37, 0x2a, 0x35, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x92, 0x41, 0x27, 0x12, 0x11, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x65, 0x6e, 0x76, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x1a, 0x12, 0xe5, 0x88, 0xa0, 0xe9, 0x99, 0xa4, 0xe7, 0x8e, 0xaf, 0xe5, 0xa2, 0x83, 0xe7, + 0xae, 0xa1, 0xe7, 0x90, 0x86, 0x32, 0xd9, 0x08, 0x0a, 0x0c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x84, 0x02, 0x0a, 0x19, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x98, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x22, 0x4a, 0x2f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x6b, 0x69, 0x6e, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x40, 0x12, 0x1b, 0x47, + 0x65, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, + 0x8f, 0x96, 0xe5, 0xa4, 0x9a, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe5, 0x8e, 0x9f, 0xe7, 0x94, + 0x9f, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0x93, 0x02, + 0x0a, 0x1d, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x41, 0x70, 0x69, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, + 0x32, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x41, 0x70, 0x69, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x9f, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x22, 0x51, 0x2f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, + 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, + 0x92, 0x41, 0x40, 0x12, 0x1b, 0x47, 0x65, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x20, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x1a, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe5, 0xa4, 0x9a, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, + 0xa4, 0xe5, 0x8e, 0x9f, 0xe7, 0x94, 0x9f, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, 0x88, 0x97, + 0xe8, 0xa1, 0xa8, 0x12, 0xa8, 0x02, 0x0a, 0x1f, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x34, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb0, 0x01, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x5d, 0x22, 0x58, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x7d, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x72, 0x64, 0x7d, 0x2f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x3a, 0x01, + 0x2a, 0x92, 0x41, 0x4a, 0x12, 0x22, 0x47, 0x65, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x20, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x24, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, + 0xe5, 0xa4, 0x9a, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe8, 0x87, 0xaa, 0xe5, 0xae, 0x9a, 0xe4, + 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0x80, + 0x02, 0x0a, 0x19, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x98, 0x01, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x4f, 0x22, 0x4a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x94, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x4e, 0x22, 0x49, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x7d, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6b, 0x69, 0x6e, 0x64, 0x7d, 0x3a, - 0x01, 0x2a, 0x92, 0x41, 0x40, 0x12, 0x1b, 0x47, 0x65, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x1a, 0x21, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe5, 0xa4, 0x9a, 0xe9, 0x9b, 0x86, - 0xe7, 0xbe, 0xa4, 0xe5, 0x8e, 0x9f, 0xe7, 0x94, 0x9f, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, - 0x88, 0x97, 0xe8, 0xa1, 0xa8, 0x12, 0xa8, 0x02, 0x0a, 0x1f, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x34, 0x2e, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, - 0x1c, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb0, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5d, 0x22, 0x58, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x7d, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x72, 0x64, - 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x4a, 0x12, 0x22, 0x47, 0x65, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x24, 0xe8, 0x8e, 0xb7, 0xe5, - 0x8f, 0x96, 0xe5, 0xa4, 0x9a, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe8, 0x87, 0xaa, 0xe5, 0xae, - 0x9a, 0xe4, 0xb9, 0x89, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe5, 0x88, 0x97, 0xe8, 0xa1, 0xa8, - 0x12, 0x80, 0x02, 0x0a, 0x19, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, - 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x94, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x22, 0x49, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x7d, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x3a, 0x01, 0x2a, 0x92, 0x41, 0x3d, 0x12, 0x21, 0x47, 0x65, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, - 0x96, 0xe9, 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe6, 0x95, 0xb0, - 0xe9, 0x87, 0x8f, 0x42, 0x43, 0x5a, 0x13, 0x2e, 0x2f, 0x3b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x92, 0x41, 0x2b, 0x12, 0x26, 0x0a, - 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x20, 0x41, 0x70, 0x69, 0x44, 0x6f, 0x63, 0x2a, 0x05, 0x0a, 0x03, 0x4d, 0x49, 0x54, - 0x32, 0x03, 0x31, 0x2e, 0x30, 0x2a, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x01, + 0x2a, 0x92, 0x41, 0x3d, 0x12, 0x21, 0x47, 0x65, 0x74, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x20, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x18, 0xe8, 0x8e, 0xb7, 0xe5, 0x8f, 0x96, 0xe9, + 0x9b, 0x86, 0xe7, 0xbe, 0xa4, 0xe8, 0xb5, 0x84, 0xe6, 0xba, 0x90, 0xe6, 0x95, 0xb0, 0xe9, 0x87, + 0x8f, 0x42, 0x43, 0x5a, 0x13, 0x2e, 0x2f, 0x3b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x92, 0x41, 0x2b, 0x12, 0x26, 0x0a, 0x18, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x20, 0x41, 0x70, 0x69, 0x44, 0x6f, 0x63, 0x2a, 0x05, 0x0a, 0x03, 0x4d, 0x49, 0x54, 0x32, 0x03, + 0x31, 0x2e, 0x30, 0x2a, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -10691,7 +11182,7 @@ func file_cluster_resources_proto_rawDescGZIP() []byte { } var file_cluster_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_cluster_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 86) +var file_cluster_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 91) var file_cluster_resources_proto_goTypes = []interface{}{ (VersionMode)(0), // 0: clusterresources.VersionMode (*EchoReq)(nil), // 1: clusterresources.EchoReq @@ -10756,46 +11247,51 @@ var file_cluster_resources_proto_goTypes = []interface{}{ (*CreateTemplateSpaceReq)(nil), // 60: clusterresources.CreateTemplateSpaceReq (*UpdateTemplateSpaceReq)(nil), // 61: clusterresources.UpdateTemplateSpaceReq (*DeleteTemplateSpaceReq)(nil), // 62: clusterresources.DeleteTemplateSpaceReq - (*GetTemplateMetadataReq)(nil), // 63: clusterresources.GetTemplateMetadataReq - (*ListTemplateMetadataReq)(nil), // 64: clusterresources.ListTemplateMetadataReq - (*CreateTemplateMetadataReq)(nil), // 65: clusterresources.CreateTemplateMetadataReq - (*UpdateTemplateMetadataReq)(nil), // 66: clusterresources.UpdateTemplateMetadataReq - (*DeleteTemplateMetadataReq)(nil), // 67: clusterresources.DeleteTemplateMetadataReq - (*GetTemplateVersionReq)(nil), // 68: clusterresources.GetTemplateVersionReq - (*GetTemplateContentReq)(nil), // 69: clusterresources.GetTemplateContentReq - (*ListTemplateVersionReq)(nil), // 70: clusterresources.ListTemplateVersionReq - (*CreateTemplateVersionReq)(nil), // 71: clusterresources.CreateTemplateVersionReq - (*DeleteTemplateVersionReq)(nil), // 72: clusterresources.DeleteTemplateVersionReq - (*CreateTemplateSetReq)(nil), // 73: clusterresources.CreateTemplateSetReq - (*TemplateID)(nil), // 74: clusterresources.TemplateID - (*ListTemplateFileVariablesReq)(nil), // 75: clusterresources.ListTemplateFileVariablesReq - (*DeployTemplateFileReq)(nil), // 76: clusterresources.DeployTemplateFileReq - (*GetEnvManageReq)(nil), // 77: clusterresources.GetEnvManageReq - (*ListEnvManagesReq)(nil), // 78: clusterresources.ListEnvManagesReq - (*CreateEnvManageReq)(nil), // 79: clusterresources.CreateEnvManageReq - (*UpdateEnvManageReq)(nil), // 80: clusterresources.UpdateEnvManageReq - (*RenameEnvManageReq)(nil), // 81: clusterresources.RenameEnvManageReq - (*DeleteEnvManageReq)(nil), // 82: clusterresources.DeleteEnvManageReq - (*FetchMultiClusterResourceReq)(nil), // 83: clusterresources.FetchMultiClusterResourceReq - (*FetchMultiClusterCustomResourceReq)(nil), // 84: clusterresources.FetchMultiClusterCustomResourceReq - (*MultiClusterResourceCountReq)(nil), // 85: clusterresources.MultiClusterResourceCountReq - nil, // 86: clusterresources.DeployTemplateFileReq.VariablesEntry - (*_struct.Struct)(nil), // 87: google.protobuf.Struct - (*_struct.ListValue)(nil), // 88: google.protobuf.ListValue + (*CopyTemplateSpaceReq)(nil), // 63: clusterresources.CopyTemplateSpaceReq + (*ListTemplateSpaceCollectReq)(nil), // 64: clusterresources.ListTemplateSpaceCollectReq + (*CreateTemplateSpaceCollectReq)(nil), // 65: clusterresources.CreateTemplateSpaceCollectReq + (*DeleteTemplateSpaceCollectReq)(nil), // 66: clusterresources.DeleteTemplateSpaceCollectReq + (*GetTemplateMetadataReq)(nil), // 67: clusterresources.GetTemplateMetadataReq + (*ListTemplateMetadataReq)(nil), // 68: clusterresources.ListTemplateMetadataReq + (*CreateTemplateMetadataReq)(nil), // 69: clusterresources.CreateTemplateMetadataReq + (*UpdateTemplateMetadataReq)(nil), // 70: clusterresources.UpdateTemplateMetadataReq + (*DeleteTemplateMetadataReq)(nil), // 71: clusterresources.DeleteTemplateMetadataReq + (*GetTemplateVersionReq)(nil), // 72: clusterresources.GetTemplateVersionReq + (*GetTemplateContentReq)(nil), // 73: clusterresources.GetTemplateContentReq + (*ListTemplateVersionReq)(nil), // 74: clusterresources.ListTemplateVersionReq + (*CreateTemplateVersionReq)(nil), // 75: clusterresources.CreateTemplateVersionReq + (*DeleteTemplateVersionReq)(nil), // 76: clusterresources.DeleteTemplateVersionReq + (*CreateTemplateSetReq)(nil), // 77: clusterresources.CreateTemplateSetReq + (*TemplateID)(nil), // 78: clusterresources.TemplateID + (*ListTemplateFileVariablesReq)(nil), // 79: clusterresources.ListTemplateFileVariablesReq + (*DeployTemplateFileReq)(nil), // 80: clusterresources.DeployTemplateFileReq + (*GetEnvManageReq)(nil), // 81: clusterresources.GetEnvManageReq + (*ListEnvManagesReq)(nil), // 82: clusterresources.ListEnvManagesReq + (*CreateEnvManageReq)(nil), // 83: clusterresources.CreateEnvManageReq + (*UpdateEnvManageReq)(nil), // 84: clusterresources.UpdateEnvManageReq + (*RenameEnvManageReq)(nil), // 85: clusterresources.RenameEnvManageReq + (*DeleteEnvManageReq)(nil), // 86: clusterresources.DeleteEnvManageReq + (*FetchMultiClusterResourceReq)(nil), // 87: clusterresources.FetchMultiClusterResourceReq + (*FetchMultiClusterApiResourcesReq)(nil), // 88: clusterresources.FetchMultiClusterApiResourcesReq + (*FetchMultiClusterCustomResourceReq)(nil), // 89: clusterresources.FetchMultiClusterCustomResourceReq + (*MultiClusterResourceCountReq)(nil), // 90: clusterresources.MultiClusterResourceCountReq + nil, // 91: clusterresources.DeployTemplateFileReq.VariablesEntry + (*_struct.Struct)(nil), // 92: google.protobuf.Struct + (*_struct.ListValue)(nil), // 93: google.protobuf.ListValue } var file_cluster_resources_proto_depIdxs = []int32{ - 87, // 0: clusterresources.ResCreateReq.rawData:type_name -> google.protobuf.Struct - 87, // 1: clusterresources.ResUpdateReq.rawData:type_name -> google.protobuf.Struct - 87, // 2: clusterresources.CObjCreateReq.rawData:type_name -> google.protobuf.Struct - 87, // 3: clusterresources.CObjUpdateReq.rawData:type_name -> google.protobuf.Struct - 87, // 4: clusterresources.CommonResp.data:type_name -> google.protobuf.Struct - 87, // 5: clusterresources.CommonResp.webAnnotations:type_name -> google.protobuf.Struct - 88, // 6: clusterresources.CommonListResp.data:type_name -> google.protobuf.ListValue - 87, // 7: clusterresources.CommonListResp.webAnnotations:type_name -> google.protobuf.Struct - 87, // 8: clusterresources.SubscribeResp.manifest:type_name -> google.protobuf.Struct - 87, // 9: clusterresources.SubscribeResp.manifestExt:type_name -> google.protobuf.Struct - 87, // 10: clusterresources.FormRenderPreviewReq.formData:type_name -> google.protobuf.Struct - 87, // 11: clusterresources.FormData.formData:type_name -> google.protobuf.Struct + 92, // 0: clusterresources.ResCreateReq.rawData:type_name -> google.protobuf.Struct + 92, // 1: clusterresources.ResUpdateReq.rawData:type_name -> google.protobuf.Struct + 92, // 2: clusterresources.CObjCreateReq.rawData:type_name -> google.protobuf.Struct + 92, // 3: clusterresources.CObjUpdateReq.rawData:type_name -> google.protobuf.Struct + 92, // 4: clusterresources.CommonResp.data:type_name -> google.protobuf.Struct + 92, // 5: clusterresources.CommonResp.webAnnotations:type_name -> google.protobuf.Struct + 93, // 6: clusterresources.CommonListResp.data:type_name -> google.protobuf.ListValue + 92, // 7: clusterresources.CommonListResp.webAnnotations:type_name -> google.protobuf.Struct + 92, // 8: clusterresources.SubscribeResp.manifest:type_name -> google.protobuf.Struct + 92, // 9: clusterresources.SubscribeResp.manifestExt:type_name -> google.protobuf.Struct + 92, // 10: clusterresources.FormRenderPreviewReq.formData:type_name -> google.protobuf.Struct + 92, // 11: clusterresources.FormData.formData:type_name -> google.protobuf.Struct 40, // 12: clusterresources.FormToYAMLReq.resources:type_name -> clusterresources.FormData 43, // 13: clusterresources.GetMultiResFormSchemaReq.resourceTypes:type_name -> clusterresources.FormResourceType 57, // 14: clusterresources.ViewFilter.labelSelector:type_name -> clusterresources.LabelSelector @@ -10805,369 +11301,381 @@ var file_cluster_resources_proto_depIdxs = []int32{ 50, // 18: clusterresources.UpdateViewConfigReq.filter:type_name -> clusterresources.ViewFilter 56, // 19: clusterresources.ViewSuggestReq.clusterNamespaces:type_name -> clusterresources.ClusterNamespaces 0, // 20: clusterresources.UpdateTemplateMetadataReq.versionMode:type_name -> clusterresources.VersionMode - 74, // 21: clusterresources.CreateTemplateSetReq.templates:type_name -> clusterresources.TemplateID - 86, // 22: clusterresources.DeployTemplateFileReq.variables:type_name -> clusterresources.DeployTemplateFileReq.VariablesEntry + 78, // 21: clusterresources.CreateTemplateSetReq.templates:type_name -> clusterresources.TemplateID + 91, // 22: clusterresources.DeployTemplateFileReq.variables:type_name -> clusterresources.DeployTemplateFileReq.VariablesEntry 56, // 23: clusterresources.CreateEnvManageReq.clusterNamespaces:type_name -> clusterresources.ClusterNamespaces 56, // 24: clusterresources.UpdateEnvManageReq.clusterNamespaces:type_name -> clusterresources.ClusterNamespaces 56, // 25: clusterresources.FetchMultiClusterResourceReq.clusterNamespaces:type_name -> clusterresources.ClusterNamespaces 57, // 26: clusterresources.FetchMultiClusterResourceReq.labelSelector:type_name -> clusterresources.LabelSelector - 56, // 27: clusterresources.FetchMultiClusterCustomResourceReq.clusterNamespaces:type_name -> clusterresources.ClusterNamespaces - 57, // 28: clusterresources.FetchMultiClusterCustomResourceReq.labelSelector:type_name -> clusterresources.LabelSelector - 56, // 29: clusterresources.MultiClusterResourceCountReq.clusterNamespaces:type_name -> clusterresources.ClusterNamespaces - 57, // 30: clusterresources.MultiClusterResourceCountReq.labelSelector:type_name -> clusterresources.LabelSelector - 1, // 31: clusterresources.Basic.Echo:input_type -> clusterresources.EchoReq - 3, // 32: clusterresources.Basic.Ping:input_type -> clusterresources.PingReq - 5, // 33: clusterresources.Basic.Healthz:input_type -> clusterresources.HealthzReq - 7, // 34: clusterresources.Basic.Version:input_type -> clusterresources.VersionReq - 9, // 35: clusterresources.Node.ListNode:input_type -> clusterresources.ResListReq - 9, // 36: clusterresources.Namespace.ListNS:input_type -> clusterresources.ResListReq - 9, // 37: clusterresources.Workload.ListDeploy:input_type -> clusterresources.ResListReq - 10, // 38: clusterresources.Workload.GetDeploy:input_type -> clusterresources.ResGetReq - 11, // 39: clusterresources.Workload.CreateDeploy:input_type -> clusterresources.ResCreateReq - 12, // 40: clusterresources.Workload.UpdateDeploy:input_type -> clusterresources.ResUpdateReq - 13, // 41: clusterresources.Workload.RestartDeploy:input_type -> clusterresources.ResRestartReq - 14, // 42: clusterresources.Workload.PauseOrResumeDeploy:input_type -> clusterresources.ResPauseOrResumeReq - 15, // 43: clusterresources.Workload.ScaleDeploy:input_type -> clusterresources.ResScaleReq - 19, // 44: clusterresources.Workload.RescheduleDeployPo:input_type -> clusterresources.ResBatchRescheduleReq - 16, // 45: clusterresources.Workload.DeleteDeploy:input_type -> clusterresources.ResDeleteReq - 17, // 46: clusterresources.Workload.GetDeployHistoryRevision:input_type -> clusterresources.GetResHistoryReq - 18, // 47: clusterresources.Workload.GetDeployRevisionDiff:input_type -> clusterresources.RolloutRevisionReq - 18, // 48: clusterresources.Workload.RolloutDeployRevision:input_type -> clusterresources.RolloutRevisionReq - 9, // 49: clusterresources.Workload.ListRS:input_type -> clusterresources.ResListReq - 9, // 50: clusterresources.Workload.ListDS:input_type -> clusterresources.ResListReq - 10, // 51: clusterresources.Workload.GetDS:input_type -> clusterresources.ResGetReq - 11, // 52: clusterresources.Workload.CreateDS:input_type -> clusterresources.ResCreateReq - 12, // 53: clusterresources.Workload.UpdateDS:input_type -> clusterresources.ResUpdateReq - 13, // 54: clusterresources.Workload.RestartDS:input_type -> clusterresources.ResRestartReq - 17, // 55: clusterresources.Workload.GetDSHistoryRevision:input_type -> clusterresources.GetResHistoryReq - 18, // 56: clusterresources.Workload.GetDSRevisionDiff:input_type -> clusterresources.RolloutRevisionReq - 18, // 57: clusterresources.Workload.RolloutDSRevision:input_type -> clusterresources.RolloutRevisionReq - 16, // 58: clusterresources.Workload.DeleteDS:input_type -> clusterresources.ResDeleteReq - 9, // 59: clusterresources.Workload.ListSTS:input_type -> clusterresources.ResListReq - 10, // 60: clusterresources.Workload.GetSTS:input_type -> clusterresources.ResGetReq - 11, // 61: clusterresources.Workload.CreateSTS:input_type -> clusterresources.ResCreateReq - 12, // 62: clusterresources.Workload.UpdateSTS:input_type -> clusterresources.ResUpdateReq - 13, // 63: clusterresources.Workload.RestartSTS:input_type -> clusterresources.ResRestartReq - 17, // 64: clusterresources.Workload.GetSTSHistoryRevision:input_type -> clusterresources.GetResHistoryReq - 18, // 65: clusterresources.Workload.GetSTSRevisionDiff:input_type -> clusterresources.RolloutRevisionReq - 18, // 66: clusterresources.Workload.RolloutSTSRevision:input_type -> clusterresources.RolloutRevisionReq - 15, // 67: clusterresources.Workload.ScaleSTS:input_type -> clusterresources.ResScaleReq - 19, // 68: clusterresources.Workload.RescheduleSTSPo:input_type -> clusterresources.ResBatchRescheduleReq - 16, // 69: clusterresources.Workload.DeleteSTS:input_type -> clusterresources.ResDeleteReq - 9, // 70: clusterresources.Workload.ListCJ:input_type -> clusterresources.ResListReq - 10, // 71: clusterresources.Workload.GetCJ:input_type -> clusterresources.ResGetReq - 11, // 72: clusterresources.Workload.CreateCJ:input_type -> clusterresources.ResCreateReq - 12, // 73: clusterresources.Workload.UpdateCJ:input_type -> clusterresources.ResUpdateReq - 16, // 74: clusterresources.Workload.DeleteCJ:input_type -> clusterresources.ResDeleteReq - 9, // 75: clusterresources.Workload.ListJob:input_type -> clusterresources.ResListReq - 10, // 76: clusterresources.Workload.GetJob:input_type -> clusterresources.ResGetReq - 11, // 77: clusterresources.Workload.CreateJob:input_type -> clusterresources.ResCreateReq - 12, // 78: clusterresources.Workload.UpdateJob:input_type -> clusterresources.ResUpdateReq - 16, // 79: clusterresources.Workload.DeleteJob:input_type -> clusterresources.ResDeleteReq - 9, // 80: clusterresources.Workload.ListPo:input_type -> clusterresources.ResListReq - 20, // 81: clusterresources.Workload.ListPoByNode:input_type -> clusterresources.ListPoByNodeReq - 10, // 82: clusterresources.Workload.GetPo:input_type -> clusterresources.ResGetReq - 11, // 83: clusterresources.Workload.CreatePo:input_type -> clusterresources.ResCreateReq - 12, // 84: clusterresources.Workload.UpdatePo:input_type -> clusterresources.ResUpdateReq - 16, // 85: clusterresources.Workload.DeletePo:input_type -> clusterresources.ResDeleteReq - 10, // 86: clusterresources.Workload.ListPoPVC:input_type -> clusterresources.ResGetReq - 10, // 87: clusterresources.Workload.ListPoCM:input_type -> clusterresources.ResGetReq - 10, // 88: clusterresources.Workload.ListPoSecret:input_type -> clusterresources.ResGetReq - 12, // 89: clusterresources.Workload.ReschedulePo:input_type -> clusterresources.ResUpdateReq - 21, // 90: clusterresources.Workload.ListContainer:input_type -> clusterresources.ContainerListReq - 22, // 91: clusterresources.Workload.GetContainer:input_type -> clusterresources.ContainerGetReq - 22, // 92: clusterresources.Workload.GetContainerEnvInfo:input_type -> clusterresources.ContainerGetReq - 9, // 93: clusterresources.Network.ListIng:input_type -> clusterresources.ResListReq - 10, // 94: clusterresources.Network.GetIng:input_type -> clusterresources.ResGetReq - 11, // 95: clusterresources.Network.CreateIng:input_type -> clusterresources.ResCreateReq - 12, // 96: clusterresources.Network.UpdateIng:input_type -> clusterresources.ResUpdateReq - 16, // 97: clusterresources.Network.DeleteIng:input_type -> clusterresources.ResDeleteReq - 9, // 98: clusterresources.Network.ListSVC:input_type -> clusterresources.ResListReq - 10, // 99: clusterresources.Network.GetSVC:input_type -> clusterresources.ResGetReq - 11, // 100: clusterresources.Network.CreateSVC:input_type -> clusterresources.ResCreateReq - 12, // 101: clusterresources.Network.UpdateSVC:input_type -> clusterresources.ResUpdateReq - 16, // 102: clusterresources.Network.DeleteSVC:input_type -> clusterresources.ResDeleteReq - 9, // 103: clusterresources.Network.ListEP:input_type -> clusterresources.ResListReq - 10, // 104: clusterresources.Network.GetEP:input_type -> clusterresources.ResGetReq - 10, // 105: clusterresources.Network.GetEPStatus:input_type -> clusterresources.ResGetReq - 11, // 106: clusterresources.Network.CreateEP:input_type -> clusterresources.ResCreateReq - 12, // 107: clusterresources.Network.UpdateEP:input_type -> clusterresources.ResUpdateReq - 16, // 108: clusterresources.Network.DeleteEP:input_type -> clusterresources.ResDeleteReq - 9, // 109: clusterresources.Config.ListCM:input_type -> clusterresources.ResListReq - 10, // 110: clusterresources.Config.GetCM:input_type -> clusterresources.ResGetReq - 11, // 111: clusterresources.Config.CreateCM:input_type -> clusterresources.ResCreateReq - 12, // 112: clusterresources.Config.UpdateCM:input_type -> clusterresources.ResUpdateReq - 16, // 113: clusterresources.Config.DeleteCM:input_type -> clusterresources.ResDeleteReq - 9, // 114: clusterresources.Config.ListSecret:input_type -> clusterresources.ResListReq - 10, // 115: clusterresources.Config.GetSecret:input_type -> clusterresources.ResGetReq - 11, // 116: clusterresources.Config.CreateSecret:input_type -> clusterresources.ResCreateReq - 12, // 117: clusterresources.Config.UpdateSecret:input_type -> clusterresources.ResUpdateReq - 16, // 118: clusterresources.Config.DeleteSecret:input_type -> clusterresources.ResDeleteReq - 9, // 119: clusterresources.Storage.ListPV:input_type -> clusterresources.ResListReq - 10, // 120: clusterresources.Storage.GetPV:input_type -> clusterresources.ResGetReq - 11, // 121: clusterresources.Storage.CreatePV:input_type -> clusterresources.ResCreateReq - 12, // 122: clusterresources.Storage.UpdatePV:input_type -> clusterresources.ResUpdateReq - 16, // 123: clusterresources.Storage.DeletePV:input_type -> clusterresources.ResDeleteReq - 9, // 124: clusterresources.Storage.ListPVC:input_type -> clusterresources.ResListReq - 10, // 125: clusterresources.Storage.GetPVC:input_type -> clusterresources.ResGetReq - 10, // 126: clusterresources.Storage.GetPVCMountInfo:input_type -> clusterresources.ResGetReq - 11, // 127: clusterresources.Storage.CreatePVC:input_type -> clusterresources.ResCreateReq - 12, // 128: clusterresources.Storage.UpdatePVC:input_type -> clusterresources.ResUpdateReq - 16, // 129: clusterresources.Storage.DeletePVC:input_type -> clusterresources.ResDeleteReq - 9, // 130: clusterresources.Storage.ListSC:input_type -> clusterresources.ResListReq - 10, // 131: clusterresources.Storage.GetSC:input_type -> clusterresources.ResGetReq - 11, // 132: clusterresources.Storage.CreateSC:input_type -> clusterresources.ResCreateReq - 12, // 133: clusterresources.Storage.UpdateSC:input_type -> clusterresources.ResUpdateReq - 16, // 134: clusterresources.Storage.DeleteSC:input_type -> clusterresources.ResDeleteReq - 9, // 135: clusterresources.RBAC.ListSA:input_type -> clusterresources.ResListReq - 10, // 136: clusterresources.RBAC.GetSA:input_type -> clusterresources.ResGetReq - 11, // 137: clusterresources.RBAC.CreateSA:input_type -> clusterresources.ResCreateReq - 12, // 138: clusterresources.RBAC.UpdateSA:input_type -> clusterresources.ResUpdateReq - 16, // 139: clusterresources.RBAC.DeleteSA:input_type -> clusterresources.ResDeleteReq - 9, // 140: clusterresources.HPA.ListHPA:input_type -> clusterresources.ResListReq - 10, // 141: clusterresources.HPA.GetHPA:input_type -> clusterresources.ResGetReq - 11, // 142: clusterresources.HPA.CreateHPA:input_type -> clusterresources.ResCreateReq - 12, // 143: clusterresources.HPA.UpdateHPA:input_type -> clusterresources.ResUpdateReq - 16, // 144: clusterresources.HPA.DeleteHPA:input_type -> clusterresources.ResDeleteReq - 9, // 145: clusterresources.CustomRes.ListCRD:input_type -> clusterresources.ResListReq - 10, // 146: clusterresources.CustomRes.GetCRD:input_type -> clusterresources.ResGetReq - 24, // 147: clusterresources.CustomRes.ListCObj:input_type -> clusterresources.CObjListReq - 25, // 148: clusterresources.CustomRes.GetCObj:input_type -> clusterresources.CObjGetReq - 26, // 149: clusterresources.CustomRes.GetCObjHistoryRevision:input_type -> clusterresources.CObjHistoryReq - 28, // 150: clusterresources.CustomRes.GetCObjRevisionDiff:input_type -> clusterresources.CObjRolloutReq - 27, // 151: clusterresources.CustomRes.RestartCObj:input_type -> clusterresources.CObjRestartReq - 28, // 152: clusterresources.CustomRes.RolloutCObj:input_type -> clusterresources.CObjRolloutReq - 29, // 153: clusterresources.CustomRes.CreateCObj:input_type -> clusterresources.CObjCreateReq - 30, // 154: clusterresources.CustomRes.UpdateCObj:input_type -> clusterresources.CObjUpdateReq - 31, // 155: clusterresources.CustomRes.ScaleCObj:input_type -> clusterresources.CObjScaleReq - 32, // 156: clusterresources.CustomRes.DeleteCObj:input_type -> clusterresources.CObjDeleteReq - 33, // 157: clusterresources.CustomRes.RescheduleCObjPo:input_type -> clusterresources.CObjBatchRescheduleReq - 23, // 158: clusterresources.Resource.GetK8SResTemplate:input_type -> clusterresources.GetK8SResTemplateReq - 36, // 159: clusterresources.Resource.Subscribe:input_type -> clusterresources.SubscribeReq - 38, // 160: clusterresources.Resource.InvalidateDiscoveryCache:input_type -> clusterresources.InvalidateDiscoveryCacheReq - 39, // 161: clusterresources.Resource.FormDataRenderPreview:input_type -> clusterresources.FormRenderPreviewReq - 41, // 162: clusterresources.Resource.FormToYAML:input_type -> clusterresources.FormToYAMLReq - 42, // 163: clusterresources.Resource.YAMLToForm:input_type -> clusterresources.YAMLToFormReq - 44, // 164: clusterresources.Resource.GetMultiResFormSchema:input_type -> clusterresources.GetMultiResFormSchemaReq - 45, // 165: clusterresources.Resource.GetResFormSchema:input_type -> clusterresources.GetResFormSchemaReq - 46, // 166: clusterresources.Resource.GetFormSupportedAPIVersions:input_type -> clusterresources.GetFormSupportedApiVersionsReq - 47, // 167: clusterresources.Resource.GetResSelectItems:input_type -> clusterresources.GetResSelectItemsReq - 48, // 168: clusterresources.ViewConfig.ListViewConfigs:input_type -> clusterresources.ListViewConfigsReq - 49, // 169: clusterresources.ViewConfig.GetViewConfig:input_type -> clusterresources.GetViewConfigReq - 51, // 170: clusterresources.ViewConfig.CreateViewConfig:input_type -> clusterresources.CreateViewConfigReq - 52, // 171: clusterresources.ViewConfig.UpdateViewConfig:input_type -> clusterresources.UpdateViewConfigReq - 53, // 172: clusterresources.ViewConfig.RenameViewConfig:input_type -> clusterresources.RenameViewConfigReq - 54, // 173: clusterresources.ViewConfig.DeleteViewConfig:input_type -> clusterresources.DeleteViewConfigReq - 55, // 174: clusterresources.ViewConfig.ResourceNameSuggest:input_type -> clusterresources.ViewSuggestReq - 55, // 175: clusterresources.ViewConfig.LabelSuggest:input_type -> clusterresources.ViewSuggestReq - 55, // 176: clusterresources.ViewConfig.ValuesSuggest:input_type -> clusterresources.ViewSuggestReq - 58, // 177: clusterresources.TemplateSet.GetTemplateSpace:input_type -> clusterresources.GetTemplateSpaceReq - 59, // 178: clusterresources.TemplateSet.ListTemplateSpace:input_type -> clusterresources.ListTemplateSpaceReq - 60, // 179: clusterresources.TemplateSet.CreateTemplateSpace:input_type -> clusterresources.CreateTemplateSpaceReq - 61, // 180: clusterresources.TemplateSet.UpdateTemplateSpace:input_type -> clusterresources.UpdateTemplateSpaceReq - 62, // 181: clusterresources.TemplateSet.DeleteTemplateSpace:input_type -> clusterresources.DeleteTemplateSpaceReq - 63, // 182: clusterresources.TemplateSet.GetTemplateMetadata:input_type -> clusterresources.GetTemplateMetadataReq - 64, // 183: clusterresources.TemplateSet.ListTemplateMetadata:input_type -> clusterresources.ListTemplateMetadataReq - 65, // 184: clusterresources.TemplateSet.CreateTemplateMetadata:input_type -> clusterresources.CreateTemplateMetadataReq - 66, // 185: clusterresources.TemplateSet.UpdateTemplateMetadata:input_type -> clusterresources.UpdateTemplateMetadataReq - 67, // 186: clusterresources.TemplateSet.DeleteTemplateMetadata:input_type -> clusterresources.DeleteTemplateMetadataReq - 68, // 187: clusterresources.TemplateSet.GetTemplateVersion:input_type -> clusterresources.GetTemplateVersionReq - 69, // 188: clusterresources.TemplateSet.GetTemplateContent:input_type -> clusterresources.GetTemplateContentReq - 70, // 189: clusterresources.TemplateSet.ListTemplateVersion:input_type -> clusterresources.ListTemplateVersionReq - 71, // 190: clusterresources.TemplateSet.CreateTemplateVersion:input_type -> clusterresources.CreateTemplateVersionReq - 72, // 191: clusterresources.TemplateSet.DeleteTemplateVersion:input_type -> clusterresources.DeleteTemplateVersionReq - 73, // 192: clusterresources.TemplateSet.CreateTemplateSet:input_type -> clusterresources.CreateTemplateSetReq - 75, // 193: clusterresources.TemplateSet.ListTemplateFileVariables:input_type -> clusterresources.ListTemplateFileVariablesReq - 76, // 194: clusterresources.TemplateSet.PreviewTemplateFile:input_type -> clusterresources.DeployTemplateFileReq - 76, // 195: clusterresources.TemplateSet.DeployTemplateFile:input_type -> clusterresources.DeployTemplateFileReq - 77, // 196: clusterresources.TemplateSet.GetEnvManage:input_type -> clusterresources.GetEnvManageReq - 78, // 197: clusterresources.TemplateSet.ListEnvManages:input_type -> clusterresources.ListEnvManagesReq - 79, // 198: clusterresources.TemplateSet.CreateEnvManage:input_type -> clusterresources.CreateEnvManageReq - 80, // 199: clusterresources.TemplateSet.UpdateEnvManage:input_type -> clusterresources.UpdateEnvManageReq - 81, // 200: clusterresources.TemplateSet.RenameEnvManage:input_type -> clusterresources.RenameEnvManageReq - 82, // 201: clusterresources.TemplateSet.DeleteEnvManage:input_type -> clusterresources.DeleteEnvManageReq - 83, // 202: clusterresources.MultiCluster.FetchMultiClusterResource:input_type -> clusterresources.FetchMultiClusterResourceReq - 84, // 203: clusterresources.MultiCluster.FetchMultiClusterCustomResource:input_type -> clusterresources.FetchMultiClusterCustomResourceReq - 85, // 204: clusterresources.MultiCluster.MultiClusterResourceCount:input_type -> clusterresources.MultiClusterResourceCountReq - 2, // 205: clusterresources.Basic.Echo:output_type -> clusterresources.EchoResp - 4, // 206: clusterresources.Basic.Ping:output_type -> clusterresources.PingResp - 6, // 207: clusterresources.Basic.Healthz:output_type -> clusterresources.HealthzResp - 8, // 208: clusterresources.Basic.Version:output_type -> clusterresources.VersionResp - 34, // 209: clusterresources.Node.ListNode:output_type -> clusterresources.CommonResp - 34, // 210: clusterresources.Namespace.ListNS:output_type -> clusterresources.CommonResp - 34, // 211: clusterresources.Workload.ListDeploy:output_type -> clusterresources.CommonResp - 34, // 212: clusterresources.Workload.GetDeploy:output_type -> clusterresources.CommonResp - 34, // 213: clusterresources.Workload.CreateDeploy:output_type -> clusterresources.CommonResp - 34, // 214: clusterresources.Workload.UpdateDeploy:output_type -> clusterresources.CommonResp - 34, // 215: clusterresources.Workload.RestartDeploy:output_type -> clusterresources.CommonResp - 34, // 216: clusterresources.Workload.PauseOrResumeDeploy:output_type -> clusterresources.CommonResp - 34, // 217: clusterresources.Workload.ScaleDeploy:output_type -> clusterresources.CommonResp - 34, // 218: clusterresources.Workload.RescheduleDeployPo:output_type -> clusterresources.CommonResp - 34, // 219: clusterresources.Workload.DeleteDeploy:output_type -> clusterresources.CommonResp - 35, // 220: clusterresources.Workload.GetDeployHistoryRevision:output_type -> clusterresources.CommonListResp - 34, // 221: clusterresources.Workload.GetDeployRevisionDiff:output_type -> clusterresources.CommonResp - 34, // 222: clusterresources.Workload.RolloutDeployRevision:output_type -> clusterresources.CommonResp - 34, // 223: clusterresources.Workload.ListRS:output_type -> clusterresources.CommonResp - 34, // 224: clusterresources.Workload.ListDS:output_type -> clusterresources.CommonResp - 34, // 225: clusterresources.Workload.GetDS:output_type -> clusterresources.CommonResp - 34, // 226: clusterresources.Workload.CreateDS:output_type -> clusterresources.CommonResp - 34, // 227: clusterresources.Workload.UpdateDS:output_type -> clusterresources.CommonResp - 34, // 228: clusterresources.Workload.RestartDS:output_type -> clusterresources.CommonResp - 35, // 229: clusterresources.Workload.GetDSHistoryRevision:output_type -> clusterresources.CommonListResp - 34, // 230: clusterresources.Workload.GetDSRevisionDiff:output_type -> clusterresources.CommonResp - 34, // 231: clusterresources.Workload.RolloutDSRevision:output_type -> clusterresources.CommonResp - 34, // 232: clusterresources.Workload.DeleteDS:output_type -> clusterresources.CommonResp - 34, // 233: clusterresources.Workload.ListSTS:output_type -> clusterresources.CommonResp - 34, // 234: clusterresources.Workload.GetSTS:output_type -> clusterresources.CommonResp - 34, // 235: clusterresources.Workload.CreateSTS:output_type -> clusterresources.CommonResp - 34, // 236: clusterresources.Workload.UpdateSTS:output_type -> clusterresources.CommonResp - 34, // 237: clusterresources.Workload.RestartSTS:output_type -> clusterresources.CommonResp - 35, // 238: clusterresources.Workload.GetSTSHistoryRevision:output_type -> clusterresources.CommonListResp - 34, // 239: clusterresources.Workload.GetSTSRevisionDiff:output_type -> clusterresources.CommonResp - 34, // 240: clusterresources.Workload.RolloutSTSRevision:output_type -> clusterresources.CommonResp - 34, // 241: clusterresources.Workload.ScaleSTS:output_type -> clusterresources.CommonResp - 34, // 242: clusterresources.Workload.RescheduleSTSPo:output_type -> clusterresources.CommonResp - 34, // 243: clusterresources.Workload.DeleteSTS:output_type -> clusterresources.CommonResp - 34, // 244: clusterresources.Workload.ListCJ:output_type -> clusterresources.CommonResp - 34, // 245: clusterresources.Workload.GetCJ:output_type -> clusterresources.CommonResp - 34, // 246: clusterresources.Workload.CreateCJ:output_type -> clusterresources.CommonResp - 34, // 247: clusterresources.Workload.UpdateCJ:output_type -> clusterresources.CommonResp - 34, // 248: clusterresources.Workload.DeleteCJ:output_type -> clusterresources.CommonResp - 34, // 249: clusterresources.Workload.ListJob:output_type -> clusterresources.CommonResp - 34, // 250: clusterresources.Workload.GetJob:output_type -> clusterresources.CommonResp - 34, // 251: clusterresources.Workload.CreateJob:output_type -> clusterresources.CommonResp - 34, // 252: clusterresources.Workload.UpdateJob:output_type -> clusterresources.CommonResp - 34, // 253: clusterresources.Workload.DeleteJob:output_type -> clusterresources.CommonResp - 34, // 254: clusterresources.Workload.ListPo:output_type -> clusterresources.CommonResp - 35, // 255: clusterresources.Workload.ListPoByNode:output_type -> clusterresources.CommonListResp - 34, // 256: clusterresources.Workload.GetPo:output_type -> clusterresources.CommonResp - 34, // 257: clusterresources.Workload.CreatePo:output_type -> clusterresources.CommonResp - 34, // 258: clusterresources.Workload.UpdatePo:output_type -> clusterresources.CommonResp - 34, // 259: clusterresources.Workload.DeletePo:output_type -> clusterresources.CommonResp - 34, // 260: clusterresources.Workload.ListPoPVC:output_type -> clusterresources.CommonResp - 34, // 261: clusterresources.Workload.ListPoCM:output_type -> clusterresources.CommonResp - 34, // 262: clusterresources.Workload.ListPoSecret:output_type -> clusterresources.CommonResp - 34, // 263: clusterresources.Workload.ReschedulePo:output_type -> clusterresources.CommonResp - 35, // 264: clusterresources.Workload.ListContainer:output_type -> clusterresources.CommonListResp - 34, // 265: clusterresources.Workload.GetContainer:output_type -> clusterresources.CommonResp - 35, // 266: clusterresources.Workload.GetContainerEnvInfo:output_type -> clusterresources.CommonListResp - 34, // 267: clusterresources.Network.ListIng:output_type -> clusterresources.CommonResp - 34, // 268: clusterresources.Network.GetIng:output_type -> clusterresources.CommonResp - 34, // 269: clusterresources.Network.CreateIng:output_type -> clusterresources.CommonResp - 34, // 270: clusterresources.Network.UpdateIng:output_type -> clusterresources.CommonResp - 34, // 271: clusterresources.Network.DeleteIng:output_type -> clusterresources.CommonResp - 34, // 272: clusterresources.Network.ListSVC:output_type -> clusterresources.CommonResp - 34, // 273: clusterresources.Network.GetSVC:output_type -> clusterresources.CommonResp - 34, // 274: clusterresources.Network.CreateSVC:output_type -> clusterresources.CommonResp - 34, // 275: clusterresources.Network.UpdateSVC:output_type -> clusterresources.CommonResp - 34, // 276: clusterresources.Network.DeleteSVC:output_type -> clusterresources.CommonResp - 34, // 277: clusterresources.Network.ListEP:output_type -> clusterresources.CommonResp - 34, // 278: clusterresources.Network.GetEP:output_type -> clusterresources.CommonResp - 34, // 279: clusterresources.Network.GetEPStatus:output_type -> clusterresources.CommonResp - 34, // 280: clusterresources.Network.CreateEP:output_type -> clusterresources.CommonResp - 34, // 281: clusterresources.Network.UpdateEP:output_type -> clusterresources.CommonResp - 34, // 282: clusterresources.Network.DeleteEP:output_type -> clusterresources.CommonResp - 34, // 283: clusterresources.Config.ListCM:output_type -> clusterresources.CommonResp - 34, // 284: clusterresources.Config.GetCM:output_type -> clusterresources.CommonResp - 34, // 285: clusterresources.Config.CreateCM:output_type -> clusterresources.CommonResp - 34, // 286: clusterresources.Config.UpdateCM:output_type -> clusterresources.CommonResp - 34, // 287: clusterresources.Config.DeleteCM:output_type -> clusterresources.CommonResp - 34, // 288: clusterresources.Config.ListSecret:output_type -> clusterresources.CommonResp - 34, // 289: clusterresources.Config.GetSecret:output_type -> clusterresources.CommonResp - 34, // 290: clusterresources.Config.CreateSecret:output_type -> clusterresources.CommonResp - 34, // 291: clusterresources.Config.UpdateSecret:output_type -> clusterresources.CommonResp - 34, // 292: clusterresources.Config.DeleteSecret:output_type -> clusterresources.CommonResp - 34, // 293: clusterresources.Storage.ListPV:output_type -> clusterresources.CommonResp - 34, // 294: clusterresources.Storage.GetPV:output_type -> clusterresources.CommonResp - 34, // 295: clusterresources.Storage.CreatePV:output_type -> clusterresources.CommonResp - 34, // 296: clusterresources.Storage.UpdatePV:output_type -> clusterresources.CommonResp - 34, // 297: clusterresources.Storage.DeletePV:output_type -> clusterresources.CommonResp - 34, // 298: clusterresources.Storage.ListPVC:output_type -> clusterresources.CommonResp - 34, // 299: clusterresources.Storage.GetPVC:output_type -> clusterresources.CommonResp - 34, // 300: clusterresources.Storage.GetPVCMountInfo:output_type -> clusterresources.CommonResp - 34, // 301: clusterresources.Storage.CreatePVC:output_type -> clusterresources.CommonResp - 34, // 302: clusterresources.Storage.UpdatePVC:output_type -> clusterresources.CommonResp - 34, // 303: clusterresources.Storage.DeletePVC:output_type -> clusterresources.CommonResp - 34, // 304: clusterresources.Storage.ListSC:output_type -> clusterresources.CommonResp - 34, // 305: clusterresources.Storage.GetSC:output_type -> clusterresources.CommonResp - 34, // 306: clusterresources.Storage.CreateSC:output_type -> clusterresources.CommonResp - 34, // 307: clusterresources.Storage.UpdateSC:output_type -> clusterresources.CommonResp - 34, // 308: clusterresources.Storage.DeleteSC:output_type -> clusterresources.CommonResp - 34, // 309: clusterresources.RBAC.ListSA:output_type -> clusterresources.CommonResp - 34, // 310: clusterresources.RBAC.GetSA:output_type -> clusterresources.CommonResp - 34, // 311: clusterresources.RBAC.CreateSA:output_type -> clusterresources.CommonResp - 34, // 312: clusterresources.RBAC.UpdateSA:output_type -> clusterresources.CommonResp - 34, // 313: clusterresources.RBAC.DeleteSA:output_type -> clusterresources.CommonResp - 34, // 314: clusterresources.HPA.ListHPA:output_type -> clusterresources.CommonResp - 34, // 315: clusterresources.HPA.GetHPA:output_type -> clusterresources.CommonResp - 34, // 316: clusterresources.HPA.CreateHPA:output_type -> clusterresources.CommonResp - 34, // 317: clusterresources.HPA.UpdateHPA:output_type -> clusterresources.CommonResp - 34, // 318: clusterresources.HPA.DeleteHPA:output_type -> clusterresources.CommonResp - 34, // 319: clusterresources.CustomRes.ListCRD:output_type -> clusterresources.CommonResp - 34, // 320: clusterresources.CustomRes.GetCRD:output_type -> clusterresources.CommonResp - 34, // 321: clusterresources.CustomRes.ListCObj:output_type -> clusterresources.CommonResp - 34, // 322: clusterresources.CustomRes.GetCObj:output_type -> clusterresources.CommonResp - 35, // 323: clusterresources.CustomRes.GetCObjHistoryRevision:output_type -> clusterresources.CommonListResp - 34, // 324: clusterresources.CustomRes.GetCObjRevisionDiff:output_type -> clusterresources.CommonResp - 34, // 325: clusterresources.CustomRes.RestartCObj:output_type -> clusterresources.CommonResp - 34, // 326: clusterresources.CustomRes.RolloutCObj:output_type -> clusterresources.CommonResp - 34, // 327: clusterresources.CustomRes.CreateCObj:output_type -> clusterresources.CommonResp - 34, // 328: clusterresources.CustomRes.UpdateCObj:output_type -> clusterresources.CommonResp - 34, // 329: clusterresources.CustomRes.ScaleCObj:output_type -> clusterresources.CommonResp - 34, // 330: clusterresources.CustomRes.DeleteCObj:output_type -> clusterresources.CommonResp - 34, // 331: clusterresources.CustomRes.RescheduleCObjPo:output_type -> clusterresources.CommonResp - 34, // 332: clusterresources.Resource.GetK8SResTemplate:output_type -> clusterresources.CommonResp - 37, // 333: clusterresources.Resource.Subscribe:output_type -> clusterresources.SubscribeResp - 34, // 334: clusterresources.Resource.InvalidateDiscoveryCache:output_type -> clusterresources.CommonResp - 34, // 335: clusterresources.Resource.FormDataRenderPreview:output_type -> clusterresources.CommonResp - 34, // 336: clusterresources.Resource.FormToYAML:output_type -> clusterresources.CommonResp - 34, // 337: clusterresources.Resource.YAMLToForm:output_type -> clusterresources.CommonResp - 35, // 338: clusterresources.Resource.GetMultiResFormSchema:output_type -> clusterresources.CommonListResp - 34, // 339: clusterresources.Resource.GetResFormSchema:output_type -> clusterresources.CommonResp - 34, // 340: clusterresources.Resource.GetFormSupportedAPIVersions:output_type -> clusterresources.CommonResp - 34, // 341: clusterresources.Resource.GetResSelectItems:output_type -> clusterresources.CommonResp - 35, // 342: clusterresources.ViewConfig.ListViewConfigs:output_type -> clusterresources.CommonListResp - 34, // 343: clusterresources.ViewConfig.GetViewConfig:output_type -> clusterresources.CommonResp - 34, // 344: clusterresources.ViewConfig.CreateViewConfig:output_type -> clusterresources.CommonResp - 34, // 345: clusterresources.ViewConfig.UpdateViewConfig:output_type -> clusterresources.CommonResp - 34, // 346: clusterresources.ViewConfig.RenameViewConfig:output_type -> clusterresources.CommonResp - 34, // 347: clusterresources.ViewConfig.DeleteViewConfig:output_type -> clusterresources.CommonResp - 34, // 348: clusterresources.ViewConfig.ResourceNameSuggest:output_type -> clusterresources.CommonResp - 34, // 349: clusterresources.ViewConfig.LabelSuggest:output_type -> clusterresources.CommonResp - 34, // 350: clusterresources.ViewConfig.ValuesSuggest:output_type -> clusterresources.CommonResp - 34, // 351: clusterresources.TemplateSet.GetTemplateSpace:output_type -> clusterresources.CommonResp - 35, // 352: clusterresources.TemplateSet.ListTemplateSpace:output_type -> clusterresources.CommonListResp - 34, // 353: clusterresources.TemplateSet.CreateTemplateSpace:output_type -> clusterresources.CommonResp - 34, // 354: clusterresources.TemplateSet.UpdateTemplateSpace:output_type -> clusterresources.CommonResp - 34, // 355: clusterresources.TemplateSet.DeleteTemplateSpace:output_type -> clusterresources.CommonResp - 34, // 356: clusterresources.TemplateSet.GetTemplateMetadata:output_type -> clusterresources.CommonResp - 35, // 357: clusterresources.TemplateSet.ListTemplateMetadata:output_type -> clusterresources.CommonListResp - 34, // 358: clusterresources.TemplateSet.CreateTemplateMetadata:output_type -> clusterresources.CommonResp - 34, // 359: clusterresources.TemplateSet.UpdateTemplateMetadata:output_type -> clusterresources.CommonResp - 34, // 360: clusterresources.TemplateSet.DeleteTemplateMetadata:output_type -> clusterresources.CommonResp - 34, // 361: clusterresources.TemplateSet.GetTemplateVersion:output_type -> clusterresources.CommonResp - 34, // 362: clusterresources.TemplateSet.GetTemplateContent:output_type -> clusterresources.CommonResp - 35, // 363: clusterresources.TemplateSet.ListTemplateVersion:output_type -> clusterresources.CommonListResp - 34, // 364: clusterresources.TemplateSet.CreateTemplateVersion:output_type -> clusterresources.CommonResp - 34, // 365: clusterresources.TemplateSet.DeleteTemplateVersion:output_type -> clusterresources.CommonResp - 34, // 366: clusterresources.TemplateSet.CreateTemplateSet:output_type -> clusterresources.CommonResp - 34, // 367: clusterresources.TemplateSet.ListTemplateFileVariables:output_type -> clusterresources.CommonResp - 34, // 368: clusterresources.TemplateSet.PreviewTemplateFile:output_type -> clusterresources.CommonResp - 34, // 369: clusterresources.TemplateSet.DeployTemplateFile:output_type -> clusterresources.CommonResp - 34, // 370: clusterresources.TemplateSet.GetEnvManage:output_type -> clusterresources.CommonResp - 35, // 371: clusterresources.TemplateSet.ListEnvManages:output_type -> clusterresources.CommonListResp - 34, // 372: clusterresources.TemplateSet.CreateEnvManage:output_type -> clusterresources.CommonResp - 34, // 373: clusterresources.TemplateSet.UpdateEnvManage:output_type -> clusterresources.CommonResp - 34, // 374: clusterresources.TemplateSet.RenameEnvManage:output_type -> clusterresources.CommonResp - 34, // 375: clusterresources.TemplateSet.DeleteEnvManage:output_type -> clusterresources.CommonResp - 34, // 376: clusterresources.MultiCluster.FetchMultiClusterResource:output_type -> clusterresources.CommonResp - 34, // 377: clusterresources.MultiCluster.FetchMultiClusterCustomResource:output_type -> clusterresources.CommonResp - 34, // 378: clusterresources.MultiCluster.MultiClusterResourceCount:output_type -> clusterresources.CommonResp - 205, // [205:379] is the sub-list for method output_type - 31, // [31:205] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 56, // 27: clusterresources.FetchMultiClusterApiResourcesReq.clusterNamespaces:type_name -> clusterresources.ClusterNamespaces + 57, // 28: clusterresources.FetchMultiClusterApiResourcesReq.labelSelector:type_name -> clusterresources.LabelSelector + 56, // 29: clusterresources.FetchMultiClusterCustomResourceReq.clusterNamespaces:type_name -> clusterresources.ClusterNamespaces + 57, // 30: clusterresources.FetchMultiClusterCustomResourceReq.labelSelector:type_name -> clusterresources.LabelSelector + 56, // 31: clusterresources.MultiClusterResourceCountReq.clusterNamespaces:type_name -> clusterresources.ClusterNamespaces + 57, // 32: clusterresources.MultiClusterResourceCountReq.labelSelector:type_name -> clusterresources.LabelSelector + 1, // 33: clusterresources.Basic.Echo:input_type -> clusterresources.EchoReq + 3, // 34: clusterresources.Basic.Ping:input_type -> clusterresources.PingReq + 5, // 35: clusterresources.Basic.Healthz:input_type -> clusterresources.HealthzReq + 7, // 36: clusterresources.Basic.Version:input_type -> clusterresources.VersionReq + 9, // 37: clusterresources.Node.ListNode:input_type -> clusterresources.ResListReq + 9, // 38: clusterresources.Namespace.ListNS:input_type -> clusterresources.ResListReq + 9, // 39: clusterresources.Workload.ListDeploy:input_type -> clusterresources.ResListReq + 10, // 40: clusterresources.Workload.GetDeploy:input_type -> clusterresources.ResGetReq + 11, // 41: clusterresources.Workload.CreateDeploy:input_type -> clusterresources.ResCreateReq + 12, // 42: clusterresources.Workload.UpdateDeploy:input_type -> clusterresources.ResUpdateReq + 13, // 43: clusterresources.Workload.RestartDeploy:input_type -> clusterresources.ResRestartReq + 14, // 44: clusterresources.Workload.PauseOrResumeDeploy:input_type -> clusterresources.ResPauseOrResumeReq + 15, // 45: clusterresources.Workload.ScaleDeploy:input_type -> clusterresources.ResScaleReq + 19, // 46: clusterresources.Workload.RescheduleDeployPo:input_type -> clusterresources.ResBatchRescheduleReq + 16, // 47: clusterresources.Workload.DeleteDeploy:input_type -> clusterresources.ResDeleteReq + 17, // 48: clusterresources.Workload.GetDeployHistoryRevision:input_type -> clusterresources.GetResHistoryReq + 18, // 49: clusterresources.Workload.GetDeployRevisionDiff:input_type -> clusterresources.RolloutRevisionReq + 18, // 50: clusterresources.Workload.RolloutDeployRevision:input_type -> clusterresources.RolloutRevisionReq + 9, // 51: clusterresources.Workload.ListRS:input_type -> clusterresources.ResListReq + 9, // 52: clusterresources.Workload.ListDS:input_type -> clusterresources.ResListReq + 10, // 53: clusterresources.Workload.GetDS:input_type -> clusterresources.ResGetReq + 11, // 54: clusterresources.Workload.CreateDS:input_type -> clusterresources.ResCreateReq + 12, // 55: clusterresources.Workload.UpdateDS:input_type -> clusterresources.ResUpdateReq + 13, // 56: clusterresources.Workload.RestartDS:input_type -> clusterresources.ResRestartReq + 17, // 57: clusterresources.Workload.GetDSHistoryRevision:input_type -> clusterresources.GetResHistoryReq + 18, // 58: clusterresources.Workload.GetDSRevisionDiff:input_type -> clusterresources.RolloutRevisionReq + 18, // 59: clusterresources.Workload.RolloutDSRevision:input_type -> clusterresources.RolloutRevisionReq + 16, // 60: clusterresources.Workload.DeleteDS:input_type -> clusterresources.ResDeleteReq + 9, // 61: clusterresources.Workload.ListSTS:input_type -> clusterresources.ResListReq + 10, // 62: clusterresources.Workload.GetSTS:input_type -> clusterresources.ResGetReq + 11, // 63: clusterresources.Workload.CreateSTS:input_type -> clusterresources.ResCreateReq + 12, // 64: clusterresources.Workload.UpdateSTS:input_type -> clusterresources.ResUpdateReq + 13, // 65: clusterresources.Workload.RestartSTS:input_type -> clusterresources.ResRestartReq + 17, // 66: clusterresources.Workload.GetSTSHistoryRevision:input_type -> clusterresources.GetResHistoryReq + 18, // 67: clusterresources.Workload.GetSTSRevisionDiff:input_type -> clusterresources.RolloutRevisionReq + 18, // 68: clusterresources.Workload.RolloutSTSRevision:input_type -> clusterresources.RolloutRevisionReq + 15, // 69: clusterresources.Workload.ScaleSTS:input_type -> clusterresources.ResScaleReq + 19, // 70: clusterresources.Workload.RescheduleSTSPo:input_type -> clusterresources.ResBatchRescheduleReq + 16, // 71: clusterresources.Workload.DeleteSTS:input_type -> clusterresources.ResDeleteReq + 9, // 72: clusterresources.Workload.ListCJ:input_type -> clusterresources.ResListReq + 10, // 73: clusterresources.Workload.GetCJ:input_type -> clusterresources.ResGetReq + 11, // 74: clusterresources.Workload.CreateCJ:input_type -> clusterresources.ResCreateReq + 12, // 75: clusterresources.Workload.UpdateCJ:input_type -> clusterresources.ResUpdateReq + 16, // 76: clusterresources.Workload.DeleteCJ:input_type -> clusterresources.ResDeleteReq + 9, // 77: clusterresources.Workload.ListJob:input_type -> clusterresources.ResListReq + 10, // 78: clusterresources.Workload.GetJob:input_type -> clusterresources.ResGetReq + 11, // 79: clusterresources.Workload.CreateJob:input_type -> clusterresources.ResCreateReq + 12, // 80: clusterresources.Workload.UpdateJob:input_type -> clusterresources.ResUpdateReq + 16, // 81: clusterresources.Workload.DeleteJob:input_type -> clusterresources.ResDeleteReq + 9, // 82: clusterresources.Workload.ListPo:input_type -> clusterresources.ResListReq + 20, // 83: clusterresources.Workload.ListPoByNode:input_type -> clusterresources.ListPoByNodeReq + 10, // 84: clusterresources.Workload.GetPo:input_type -> clusterresources.ResGetReq + 11, // 85: clusterresources.Workload.CreatePo:input_type -> clusterresources.ResCreateReq + 12, // 86: clusterresources.Workload.UpdatePo:input_type -> clusterresources.ResUpdateReq + 16, // 87: clusterresources.Workload.DeletePo:input_type -> clusterresources.ResDeleteReq + 10, // 88: clusterresources.Workload.ListPoPVC:input_type -> clusterresources.ResGetReq + 10, // 89: clusterresources.Workload.ListPoCM:input_type -> clusterresources.ResGetReq + 10, // 90: clusterresources.Workload.ListPoSecret:input_type -> clusterresources.ResGetReq + 12, // 91: clusterresources.Workload.ReschedulePo:input_type -> clusterresources.ResUpdateReq + 21, // 92: clusterresources.Workload.ListContainer:input_type -> clusterresources.ContainerListReq + 22, // 93: clusterresources.Workload.GetContainer:input_type -> clusterresources.ContainerGetReq + 22, // 94: clusterresources.Workload.GetContainerEnvInfo:input_type -> clusterresources.ContainerGetReq + 9, // 95: clusterresources.Network.ListIng:input_type -> clusterresources.ResListReq + 10, // 96: clusterresources.Network.GetIng:input_type -> clusterresources.ResGetReq + 11, // 97: clusterresources.Network.CreateIng:input_type -> clusterresources.ResCreateReq + 12, // 98: clusterresources.Network.UpdateIng:input_type -> clusterresources.ResUpdateReq + 16, // 99: clusterresources.Network.DeleteIng:input_type -> clusterresources.ResDeleteReq + 9, // 100: clusterresources.Network.ListSVC:input_type -> clusterresources.ResListReq + 10, // 101: clusterresources.Network.GetSVC:input_type -> clusterresources.ResGetReq + 11, // 102: clusterresources.Network.CreateSVC:input_type -> clusterresources.ResCreateReq + 12, // 103: clusterresources.Network.UpdateSVC:input_type -> clusterresources.ResUpdateReq + 16, // 104: clusterresources.Network.DeleteSVC:input_type -> clusterresources.ResDeleteReq + 9, // 105: clusterresources.Network.ListEP:input_type -> clusterresources.ResListReq + 10, // 106: clusterresources.Network.GetEP:input_type -> clusterresources.ResGetReq + 10, // 107: clusterresources.Network.GetEPStatus:input_type -> clusterresources.ResGetReq + 11, // 108: clusterresources.Network.CreateEP:input_type -> clusterresources.ResCreateReq + 12, // 109: clusterresources.Network.UpdateEP:input_type -> clusterresources.ResUpdateReq + 16, // 110: clusterresources.Network.DeleteEP:input_type -> clusterresources.ResDeleteReq + 9, // 111: clusterresources.Config.ListCM:input_type -> clusterresources.ResListReq + 10, // 112: clusterresources.Config.GetCM:input_type -> clusterresources.ResGetReq + 11, // 113: clusterresources.Config.CreateCM:input_type -> clusterresources.ResCreateReq + 12, // 114: clusterresources.Config.UpdateCM:input_type -> clusterresources.ResUpdateReq + 16, // 115: clusterresources.Config.DeleteCM:input_type -> clusterresources.ResDeleteReq + 9, // 116: clusterresources.Config.ListSecret:input_type -> clusterresources.ResListReq + 10, // 117: clusterresources.Config.GetSecret:input_type -> clusterresources.ResGetReq + 11, // 118: clusterresources.Config.CreateSecret:input_type -> clusterresources.ResCreateReq + 12, // 119: clusterresources.Config.UpdateSecret:input_type -> clusterresources.ResUpdateReq + 16, // 120: clusterresources.Config.DeleteSecret:input_type -> clusterresources.ResDeleteReq + 9, // 121: clusterresources.Storage.ListPV:input_type -> clusterresources.ResListReq + 10, // 122: clusterresources.Storage.GetPV:input_type -> clusterresources.ResGetReq + 11, // 123: clusterresources.Storage.CreatePV:input_type -> clusterresources.ResCreateReq + 12, // 124: clusterresources.Storage.UpdatePV:input_type -> clusterresources.ResUpdateReq + 16, // 125: clusterresources.Storage.DeletePV:input_type -> clusterresources.ResDeleteReq + 9, // 126: clusterresources.Storage.ListPVC:input_type -> clusterresources.ResListReq + 10, // 127: clusterresources.Storage.GetPVC:input_type -> clusterresources.ResGetReq + 10, // 128: clusterresources.Storage.GetPVCMountInfo:input_type -> clusterresources.ResGetReq + 11, // 129: clusterresources.Storage.CreatePVC:input_type -> clusterresources.ResCreateReq + 12, // 130: clusterresources.Storage.UpdatePVC:input_type -> clusterresources.ResUpdateReq + 16, // 131: clusterresources.Storage.DeletePVC:input_type -> clusterresources.ResDeleteReq + 9, // 132: clusterresources.Storage.ListSC:input_type -> clusterresources.ResListReq + 10, // 133: clusterresources.Storage.GetSC:input_type -> clusterresources.ResGetReq + 11, // 134: clusterresources.Storage.CreateSC:input_type -> clusterresources.ResCreateReq + 12, // 135: clusterresources.Storage.UpdateSC:input_type -> clusterresources.ResUpdateReq + 16, // 136: clusterresources.Storage.DeleteSC:input_type -> clusterresources.ResDeleteReq + 9, // 137: clusterresources.RBAC.ListSA:input_type -> clusterresources.ResListReq + 10, // 138: clusterresources.RBAC.GetSA:input_type -> clusterresources.ResGetReq + 11, // 139: clusterresources.RBAC.CreateSA:input_type -> clusterresources.ResCreateReq + 12, // 140: clusterresources.RBAC.UpdateSA:input_type -> clusterresources.ResUpdateReq + 16, // 141: clusterresources.RBAC.DeleteSA:input_type -> clusterresources.ResDeleteReq + 9, // 142: clusterresources.HPA.ListHPA:input_type -> clusterresources.ResListReq + 10, // 143: clusterresources.HPA.GetHPA:input_type -> clusterresources.ResGetReq + 11, // 144: clusterresources.HPA.CreateHPA:input_type -> clusterresources.ResCreateReq + 12, // 145: clusterresources.HPA.UpdateHPA:input_type -> clusterresources.ResUpdateReq + 16, // 146: clusterresources.HPA.DeleteHPA:input_type -> clusterresources.ResDeleteReq + 9, // 147: clusterresources.CustomRes.ListCRD:input_type -> clusterresources.ResListReq + 10, // 148: clusterresources.CustomRes.GetCRD:input_type -> clusterresources.ResGetReq + 24, // 149: clusterresources.CustomRes.ListCObj:input_type -> clusterresources.CObjListReq + 25, // 150: clusterresources.CustomRes.GetCObj:input_type -> clusterresources.CObjGetReq + 26, // 151: clusterresources.CustomRes.GetCObjHistoryRevision:input_type -> clusterresources.CObjHistoryReq + 28, // 152: clusterresources.CustomRes.GetCObjRevisionDiff:input_type -> clusterresources.CObjRolloutReq + 27, // 153: clusterresources.CustomRes.RestartCObj:input_type -> clusterresources.CObjRestartReq + 28, // 154: clusterresources.CustomRes.RolloutCObj:input_type -> clusterresources.CObjRolloutReq + 29, // 155: clusterresources.CustomRes.CreateCObj:input_type -> clusterresources.CObjCreateReq + 30, // 156: clusterresources.CustomRes.UpdateCObj:input_type -> clusterresources.CObjUpdateReq + 31, // 157: clusterresources.CustomRes.ScaleCObj:input_type -> clusterresources.CObjScaleReq + 32, // 158: clusterresources.CustomRes.DeleteCObj:input_type -> clusterresources.CObjDeleteReq + 33, // 159: clusterresources.CustomRes.RescheduleCObjPo:input_type -> clusterresources.CObjBatchRescheduleReq + 23, // 160: clusterresources.Resource.GetK8SResTemplate:input_type -> clusterresources.GetK8SResTemplateReq + 36, // 161: clusterresources.Resource.Subscribe:input_type -> clusterresources.SubscribeReq + 38, // 162: clusterresources.Resource.InvalidateDiscoveryCache:input_type -> clusterresources.InvalidateDiscoveryCacheReq + 39, // 163: clusterresources.Resource.FormDataRenderPreview:input_type -> clusterresources.FormRenderPreviewReq + 41, // 164: clusterresources.Resource.FormToYAML:input_type -> clusterresources.FormToYAMLReq + 42, // 165: clusterresources.Resource.YAMLToForm:input_type -> clusterresources.YAMLToFormReq + 44, // 166: clusterresources.Resource.GetMultiResFormSchema:input_type -> clusterresources.GetMultiResFormSchemaReq + 45, // 167: clusterresources.Resource.GetResFormSchema:input_type -> clusterresources.GetResFormSchemaReq + 46, // 168: clusterresources.Resource.GetFormSupportedAPIVersions:input_type -> clusterresources.GetFormSupportedApiVersionsReq + 47, // 169: clusterresources.Resource.GetResSelectItems:input_type -> clusterresources.GetResSelectItemsReq + 48, // 170: clusterresources.ViewConfig.ListViewConfigs:input_type -> clusterresources.ListViewConfigsReq + 49, // 171: clusterresources.ViewConfig.GetViewConfig:input_type -> clusterresources.GetViewConfigReq + 51, // 172: clusterresources.ViewConfig.CreateViewConfig:input_type -> clusterresources.CreateViewConfigReq + 52, // 173: clusterresources.ViewConfig.UpdateViewConfig:input_type -> clusterresources.UpdateViewConfigReq + 53, // 174: clusterresources.ViewConfig.RenameViewConfig:input_type -> clusterresources.RenameViewConfigReq + 54, // 175: clusterresources.ViewConfig.DeleteViewConfig:input_type -> clusterresources.DeleteViewConfigReq + 55, // 176: clusterresources.ViewConfig.ResourceNameSuggest:input_type -> clusterresources.ViewSuggestReq + 55, // 177: clusterresources.ViewConfig.LabelSuggest:input_type -> clusterresources.ViewSuggestReq + 55, // 178: clusterresources.ViewConfig.ValuesSuggest:input_type -> clusterresources.ViewSuggestReq + 58, // 179: clusterresources.TemplateSet.GetTemplateSpace:input_type -> clusterresources.GetTemplateSpaceReq + 59, // 180: clusterresources.TemplateSet.ListTemplateSpace:input_type -> clusterresources.ListTemplateSpaceReq + 60, // 181: clusterresources.TemplateSet.CreateTemplateSpace:input_type -> clusterresources.CreateTemplateSpaceReq + 61, // 182: clusterresources.TemplateSet.UpdateTemplateSpace:input_type -> clusterresources.UpdateTemplateSpaceReq + 62, // 183: clusterresources.TemplateSet.DeleteTemplateSpace:input_type -> clusterresources.DeleteTemplateSpaceReq + 63, // 184: clusterresources.TemplateSet.CopyTemplateSpace:input_type -> clusterresources.CopyTemplateSpaceReq + 64, // 185: clusterresources.TemplateSet.ListTemplateSpaceCollect:input_type -> clusterresources.ListTemplateSpaceCollectReq + 65, // 186: clusterresources.TemplateSet.CreateTemplateSpaceCollect:input_type -> clusterresources.CreateTemplateSpaceCollectReq + 66, // 187: clusterresources.TemplateSet.DeleteTemplateSpaceCollect:input_type -> clusterresources.DeleteTemplateSpaceCollectReq + 67, // 188: clusterresources.TemplateSet.GetTemplateMetadata:input_type -> clusterresources.GetTemplateMetadataReq + 68, // 189: clusterresources.TemplateSet.ListTemplateMetadata:input_type -> clusterresources.ListTemplateMetadataReq + 69, // 190: clusterresources.TemplateSet.CreateTemplateMetadata:input_type -> clusterresources.CreateTemplateMetadataReq + 70, // 191: clusterresources.TemplateSet.UpdateTemplateMetadata:input_type -> clusterresources.UpdateTemplateMetadataReq + 71, // 192: clusterresources.TemplateSet.DeleteTemplateMetadata:input_type -> clusterresources.DeleteTemplateMetadataReq + 72, // 193: clusterresources.TemplateSet.GetTemplateVersion:input_type -> clusterresources.GetTemplateVersionReq + 73, // 194: clusterresources.TemplateSet.GetTemplateContent:input_type -> clusterresources.GetTemplateContentReq + 74, // 195: clusterresources.TemplateSet.ListTemplateVersion:input_type -> clusterresources.ListTemplateVersionReq + 75, // 196: clusterresources.TemplateSet.CreateTemplateVersion:input_type -> clusterresources.CreateTemplateVersionReq + 76, // 197: clusterresources.TemplateSet.DeleteTemplateVersion:input_type -> clusterresources.DeleteTemplateVersionReq + 77, // 198: clusterresources.TemplateSet.CreateTemplateSet:input_type -> clusterresources.CreateTemplateSetReq + 79, // 199: clusterresources.TemplateSet.ListTemplateFileVariables:input_type -> clusterresources.ListTemplateFileVariablesReq + 80, // 200: clusterresources.TemplateSet.PreviewTemplateFile:input_type -> clusterresources.DeployTemplateFileReq + 80, // 201: clusterresources.TemplateSet.DeployTemplateFile:input_type -> clusterresources.DeployTemplateFileReq + 81, // 202: clusterresources.TemplateSet.GetEnvManage:input_type -> clusterresources.GetEnvManageReq + 82, // 203: clusterresources.TemplateSet.ListEnvManages:input_type -> clusterresources.ListEnvManagesReq + 83, // 204: clusterresources.TemplateSet.CreateEnvManage:input_type -> clusterresources.CreateEnvManageReq + 84, // 205: clusterresources.TemplateSet.UpdateEnvManage:input_type -> clusterresources.UpdateEnvManageReq + 85, // 206: clusterresources.TemplateSet.RenameEnvManage:input_type -> clusterresources.RenameEnvManageReq + 86, // 207: clusterresources.TemplateSet.DeleteEnvManage:input_type -> clusterresources.DeleteEnvManageReq + 87, // 208: clusterresources.MultiCluster.FetchMultiClusterResource:input_type -> clusterresources.FetchMultiClusterResourceReq + 88, // 209: clusterresources.MultiCluster.FetchMultiClusterApiResources:input_type -> clusterresources.FetchMultiClusterApiResourcesReq + 89, // 210: clusterresources.MultiCluster.FetchMultiClusterCustomResource:input_type -> clusterresources.FetchMultiClusterCustomResourceReq + 90, // 211: clusterresources.MultiCluster.MultiClusterResourceCount:input_type -> clusterresources.MultiClusterResourceCountReq + 2, // 212: clusterresources.Basic.Echo:output_type -> clusterresources.EchoResp + 4, // 213: clusterresources.Basic.Ping:output_type -> clusterresources.PingResp + 6, // 214: clusterresources.Basic.Healthz:output_type -> clusterresources.HealthzResp + 8, // 215: clusterresources.Basic.Version:output_type -> clusterresources.VersionResp + 34, // 216: clusterresources.Node.ListNode:output_type -> clusterresources.CommonResp + 34, // 217: clusterresources.Namespace.ListNS:output_type -> clusterresources.CommonResp + 34, // 218: clusterresources.Workload.ListDeploy:output_type -> clusterresources.CommonResp + 34, // 219: clusterresources.Workload.GetDeploy:output_type -> clusterresources.CommonResp + 34, // 220: clusterresources.Workload.CreateDeploy:output_type -> clusterresources.CommonResp + 34, // 221: clusterresources.Workload.UpdateDeploy:output_type -> clusterresources.CommonResp + 34, // 222: clusterresources.Workload.RestartDeploy:output_type -> clusterresources.CommonResp + 34, // 223: clusterresources.Workload.PauseOrResumeDeploy:output_type -> clusterresources.CommonResp + 34, // 224: clusterresources.Workload.ScaleDeploy:output_type -> clusterresources.CommonResp + 34, // 225: clusterresources.Workload.RescheduleDeployPo:output_type -> clusterresources.CommonResp + 34, // 226: clusterresources.Workload.DeleteDeploy:output_type -> clusterresources.CommonResp + 35, // 227: clusterresources.Workload.GetDeployHistoryRevision:output_type -> clusterresources.CommonListResp + 34, // 228: clusterresources.Workload.GetDeployRevisionDiff:output_type -> clusterresources.CommonResp + 34, // 229: clusterresources.Workload.RolloutDeployRevision:output_type -> clusterresources.CommonResp + 34, // 230: clusterresources.Workload.ListRS:output_type -> clusterresources.CommonResp + 34, // 231: clusterresources.Workload.ListDS:output_type -> clusterresources.CommonResp + 34, // 232: clusterresources.Workload.GetDS:output_type -> clusterresources.CommonResp + 34, // 233: clusterresources.Workload.CreateDS:output_type -> clusterresources.CommonResp + 34, // 234: clusterresources.Workload.UpdateDS:output_type -> clusterresources.CommonResp + 34, // 235: clusterresources.Workload.RestartDS:output_type -> clusterresources.CommonResp + 35, // 236: clusterresources.Workload.GetDSHistoryRevision:output_type -> clusterresources.CommonListResp + 34, // 237: clusterresources.Workload.GetDSRevisionDiff:output_type -> clusterresources.CommonResp + 34, // 238: clusterresources.Workload.RolloutDSRevision:output_type -> clusterresources.CommonResp + 34, // 239: clusterresources.Workload.DeleteDS:output_type -> clusterresources.CommonResp + 34, // 240: clusterresources.Workload.ListSTS:output_type -> clusterresources.CommonResp + 34, // 241: clusterresources.Workload.GetSTS:output_type -> clusterresources.CommonResp + 34, // 242: clusterresources.Workload.CreateSTS:output_type -> clusterresources.CommonResp + 34, // 243: clusterresources.Workload.UpdateSTS:output_type -> clusterresources.CommonResp + 34, // 244: clusterresources.Workload.RestartSTS:output_type -> clusterresources.CommonResp + 35, // 245: clusterresources.Workload.GetSTSHistoryRevision:output_type -> clusterresources.CommonListResp + 34, // 246: clusterresources.Workload.GetSTSRevisionDiff:output_type -> clusterresources.CommonResp + 34, // 247: clusterresources.Workload.RolloutSTSRevision:output_type -> clusterresources.CommonResp + 34, // 248: clusterresources.Workload.ScaleSTS:output_type -> clusterresources.CommonResp + 34, // 249: clusterresources.Workload.RescheduleSTSPo:output_type -> clusterresources.CommonResp + 34, // 250: clusterresources.Workload.DeleteSTS:output_type -> clusterresources.CommonResp + 34, // 251: clusterresources.Workload.ListCJ:output_type -> clusterresources.CommonResp + 34, // 252: clusterresources.Workload.GetCJ:output_type -> clusterresources.CommonResp + 34, // 253: clusterresources.Workload.CreateCJ:output_type -> clusterresources.CommonResp + 34, // 254: clusterresources.Workload.UpdateCJ:output_type -> clusterresources.CommonResp + 34, // 255: clusterresources.Workload.DeleteCJ:output_type -> clusterresources.CommonResp + 34, // 256: clusterresources.Workload.ListJob:output_type -> clusterresources.CommonResp + 34, // 257: clusterresources.Workload.GetJob:output_type -> clusterresources.CommonResp + 34, // 258: clusterresources.Workload.CreateJob:output_type -> clusterresources.CommonResp + 34, // 259: clusterresources.Workload.UpdateJob:output_type -> clusterresources.CommonResp + 34, // 260: clusterresources.Workload.DeleteJob:output_type -> clusterresources.CommonResp + 34, // 261: clusterresources.Workload.ListPo:output_type -> clusterresources.CommonResp + 35, // 262: clusterresources.Workload.ListPoByNode:output_type -> clusterresources.CommonListResp + 34, // 263: clusterresources.Workload.GetPo:output_type -> clusterresources.CommonResp + 34, // 264: clusterresources.Workload.CreatePo:output_type -> clusterresources.CommonResp + 34, // 265: clusterresources.Workload.UpdatePo:output_type -> clusterresources.CommonResp + 34, // 266: clusterresources.Workload.DeletePo:output_type -> clusterresources.CommonResp + 34, // 267: clusterresources.Workload.ListPoPVC:output_type -> clusterresources.CommonResp + 34, // 268: clusterresources.Workload.ListPoCM:output_type -> clusterresources.CommonResp + 34, // 269: clusterresources.Workload.ListPoSecret:output_type -> clusterresources.CommonResp + 34, // 270: clusterresources.Workload.ReschedulePo:output_type -> clusterresources.CommonResp + 35, // 271: clusterresources.Workload.ListContainer:output_type -> clusterresources.CommonListResp + 34, // 272: clusterresources.Workload.GetContainer:output_type -> clusterresources.CommonResp + 35, // 273: clusterresources.Workload.GetContainerEnvInfo:output_type -> clusterresources.CommonListResp + 34, // 274: clusterresources.Network.ListIng:output_type -> clusterresources.CommonResp + 34, // 275: clusterresources.Network.GetIng:output_type -> clusterresources.CommonResp + 34, // 276: clusterresources.Network.CreateIng:output_type -> clusterresources.CommonResp + 34, // 277: clusterresources.Network.UpdateIng:output_type -> clusterresources.CommonResp + 34, // 278: clusterresources.Network.DeleteIng:output_type -> clusterresources.CommonResp + 34, // 279: clusterresources.Network.ListSVC:output_type -> clusterresources.CommonResp + 34, // 280: clusterresources.Network.GetSVC:output_type -> clusterresources.CommonResp + 34, // 281: clusterresources.Network.CreateSVC:output_type -> clusterresources.CommonResp + 34, // 282: clusterresources.Network.UpdateSVC:output_type -> clusterresources.CommonResp + 34, // 283: clusterresources.Network.DeleteSVC:output_type -> clusterresources.CommonResp + 34, // 284: clusterresources.Network.ListEP:output_type -> clusterresources.CommonResp + 34, // 285: clusterresources.Network.GetEP:output_type -> clusterresources.CommonResp + 34, // 286: clusterresources.Network.GetEPStatus:output_type -> clusterresources.CommonResp + 34, // 287: clusterresources.Network.CreateEP:output_type -> clusterresources.CommonResp + 34, // 288: clusterresources.Network.UpdateEP:output_type -> clusterresources.CommonResp + 34, // 289: clusterresources.Network.DeleteEP:output_type -> clusterresources.CommonResp + 34, // 290: clusterresources.Config.ListCM:output_type -> clusterresources.CommonResp + 34, // 291: clusterresources.Config.GetCM:output_type -> clusterresources.CommonResp + 34, // 292: clusterresources.Config.CreateCM:output_type -> clusterresources.CommonResp + 34, // 293: clusterresources.Config.UpdateCM:output_type -> clusterresources.CommonResp + 34, // 294: clusterresources.Config.DeleteCM:output_type -> clusterresources.CommonResp + 34, // 295: clusterresources.Config.ListSecret:output_type -> clusterresources.CommonResp + 34, // 296: clusterresources.Config.GetSecret:output_type -> clusterresources.CommonResp + 34, // 297: clusterresources.Config.CreateSecret:output_type -> clusterresources.CommonResp + 34, // 298: clusterresources.Config.UpdateSecret:output_type -> clusterresources.CommonResp + 34, // 299: clusterresources.Config.DeleteSecret:output_type -> clusterresources.CommonResp + 34, // 300: clusterresources.Storage.ListPV:output_type -> clusterresources.CommonResp + 34, // 301: clusterresources.Storage.GetPV:output_type -> clusterresources.CommonResp + 34, // 302: clusterresources.Storage.CreatePV:output_type -> clusterresources.CommonResp + 34, // 303: clusterresources.Storage.UpdatePV:output_type -> clusterresources.CommonResp + 34, // 304: clusterresources.Storage.DeletePV:output_type -> clusterresources.CommonResp + 34, // 305: clusterresources.Storage.ListPVC:output_type -> clusterresources.CommonResp + 34, // 306: clusterresources.Storage.GetPVC:output_type -> clusterresources.CommonResp + 34, // 307: clusterresources.Storage.GetPVCMountInfo:output_type -> clusterresources.CommonResp + 34, // 308: clusterresources.Storage.CreatePVC:output_type -> clusterresources.CommonResp + 34, // 309: clusterresources.Storage.UpdatePVC:output_type -> clusterresources.CommonResp + 34, // 310: clusterresources.Storage.DeletePVC:output_type -> clusterresources.CommonResp + 34, // 311: clusterresources.Storage.ListSC:output_type -> clusterresources.CommonResp + 34, // 312: clusterresources.Storage.GetSC:output_type -> clusterresources.CommonResp + 34, // 313: clusterresources.Storage.CreateSC:output_type -> clusterresources.CommonResp + 34, // 314: clusterresources.Storage.UpdateSC:output_type -> clusterresources.CommonResp + 34, // 315: clusterresources.Storage.DeleteSC:output_type -> clusterresources.CommonResp + 34, // 316: clusterresources.RBAC.ListSA:output_type -> clusterresources.CommonResp + 34, // 317: clusterresources.RBAC.GetSA:output_type -> clusterresources.CommonResp + 34, // 318: clusterresources.RBAC.CreateSA:output_type -> clusterresources.CommonResp + 34, // 319: clusterresources.RBAC.UpdateSA:output_type -> clusterresources.CommonResp + 34, // 320: clusterresources.RBAC.DeleteSA:output_type -> clusterresources.CommonResp + 34, // 321: clusterresources.HPA.ListHPA:output_type -> clusterresources.CommonResp + 34, // 322: clusterresources.HPA.GetHPA:output_type -> clusterresources.CommonResp + 34, // 323: clusterresources.HPA.CreateHPA:output_type -> clusterresources.CommonResp + 34, // 324: clusterresources.HPA.UpdateHPA:output_type -> clusterresources.CommonResp + 34, // 325: clusterresources.HPA.DeleteHPA:output_type -> clusterresources.CommonResp + 34, // 326: clusterresources.CustomRes.ListCRD:output_type -> clusterresources.CommonResp + 34, // 327: clusterresources.CustomRes.GetCRD:output_type -> clusterresources.CommonResp + 34, // 328: clusterresources.CustomRes.ListCObj:output_type -> clusterresources.CommonResp + 34, // 329: clusterresources.CustomRes.GetCObj:output_type -> clusterresources.CommonResp + 35, // 330: clusterresources.CustomRes.GetCObjHistoryRevision:output_type -> clusterresources.CommonListResp + 34, // 331: clusterresources.CustomRes.GetCObjRevisionDiff:output_type -> clusterresources.CommonResp + 34, // 332: clusterresources.CustomRes.RestartCObj:output_type -> clusterresources.CommonResp + 34, // 333: clusterresources.CustomRes.RolloutCObj:output_type -> clusterresources.CommonResp + 34, // 334: clusterresources.CustomRes.CreateCObj:output_type -> clusterresources.CommonResp + 34, // 335: clusterresources.CustomRes.UpdateCObj:output_type -> clusterresources.CommonResp + 34, // 336: clusterresources.CustomRes.ScaleCObj:output_type -> clusterresources.CommonResp + 34, // 337: clusterresources.CustomRes.DeleteCObj:output_type -> clusterresources.CommonResp + 34, // 338: clusterresources.CustomRes.RescheduleCObjPo:output_type -> clusterresources.CommonResp + 34, // 339: clusterresources.Resource.GetK8SResTemplate:output_type -> clusterresources.CommonResp + 37, // 340: clusterresources.Resource.Subscribe:output_type -> clusterresources.SubscribeResp + 34, // 341: clusterresources.Resource.InvalidateDiscoveryCache:output_type -> clusterresources.CommonResp + 34, // 342: clusterresources.Resource.FormDataRenderPreview:output_type -> clusterresources.CommonResp + 34, // 343: clusterresources.Resource.FormToYAML:output_type -> clusterresources.CommonResp + 34, // 344: clusterresources.Resource.YAMLToForm:output_type -> clusterresources.CommonResp + 35, // 345: clusterresources.Resource.GetMultiResFormSchema:output_type -> clusterresources.CommonListResp + 34, // 346: clusterresources.Resource.GetResFormSchema:output_type -> clusterresources.CommonResp + 34, // 347: clusterresources.Resource.GetFormSupportedAPIVersions:output_type -> clusterresources.CommonResp + 34, // 348: clusterresources.Resource.GetResSelectItems:output_type -> clusterresources.CommonResp + 35, // 349: clusterresources.ViewConfig.ListViewConfigs:output_type -> clusterresources.CommonListResp + 34, // 350: clusterresources.ViewConfig.GetViewConfig:output_type -> clusterresources.CommonResp + 34, // 351: clusterresources.ViewConfig.CreateViewConfig:output_type -> clusterresources.CommonResp + 34, // 352: clusterresources.ViewConfig.UpdateViewConfig:output_type -> clusterresources.CommonResp + 34, // 353: clusterresources.ViewConfig.RenameViewConfig:output_type -> clusterresources.CommonResp + 34, // 354: clusterresources.ViewConfig.DeleteViewConfig:output_type -> clusterresources.CommonResp + 34, // 355: clusterresources.ViewConfig.ResourceNameSuggest:output_type -> clusterresources.CommonResp + 34, // 356: clusterresources.ViewConfig.LabelSuggest:output_type -> clusterresources.CommonResp + 34, // 357: clusterresources.ViewConfig.ValuesSuggest:output_type -> clusterresources.CommonResp + 34, // 358: clusterresources.TemplateSet.GetTemplateSpace:output_type -> clusterresources.CommonResp + 35, // 359: clusterresources.TemplateSet.ListTemplateSpace:output_type -> clusterresources.CommonListResp + 34, // 360: clusterresources.TemplateSet.CreateTemplateSpace:output_type -> clusterresources.CommonResp + 34, // 361: clusterresources.TemplateSet.UpdateTemplateSpace:output_type -> clusterresources.CommonResp + 34, // 362: clusterresources.TemplateSet.DeleteTemplateSpace:output_type -> clusterresources.CommonResp + 34, // 363: clusterresources.TemplateSet.CopyTemplateSpace:output_type -> clusterresources.CommonResp + 35, // 364: clusterresources.TemplateSet.ListTemplateSpaceCollect:output_type -> clusterresources.CommonListResp + 34, // 365: clusterresources.TemplateSet.CreateTemplateSpaceCollect:output_type -> clusterresources.CommonResp + 34, // 366: clusterresources.TemplateSet.DeleteTemplateSpaceCollect:output_type -> clusterresources.CommonResp + 34, // 367: clusterresources.TemplateSet.GetTemplateMetadata:output_type -> clusterresources.CommonResp + 35, // 368: clusterresources.TemplateSet.ListTemplateMetadata:output_type -> clusterresources.CommonListResp + 34, // 369: clusterresources.TemplateSet.CreateTemplateMetadata:output_type -> clusterresources.CommonResp + 34, // 370: clusterresources.TemplateSet.UpdateTemplateMetadata:output_type -> clusterresources.CommonResp + 34, // 371: clusterresources.TemplateSet.DeleteTemplateMetadata:output_type -> clusterresources.CommonResp + 34, // 372: clusterresources.TemplateSet.GetTemplateVersion:output_type -> clusterresources.CommonResp + 34, // 373: clusterresources.TemplateSet.GetTemplateContent:output_type -> clusterresources.CommonResp + 35, // 374: clusterresources.TemplateSet.ListTemplateVersion:output_type -> clusterresources.CommonListResp + 34, // 375: clusterresources.TemplateSet.CreateTemplateVersion:output_type -> clusterresources.CommonResp + 34, // 376: clusterresources.TemplateSet.DeleteTemplateVersion:output_type -> clusterresources.CommonResp + 34, // 377: clusterresources.TemplateSet.CreateTemplateSet:output_type -> clusterresources.CommonResp + 34, // 378: clusterresources.TemplateSet.ListTemplateFileVariables:output_type -> clusterresources.CommonResp + 34, // 379: clusterresources.TemplateSet.PreviewTemplateFile:output_type -> clusterresources.CommonResp + 34, // 380: clusterresources.TemplateSet.DeployTemplateFile:output_type -> clusterresources.CommonResp + 34, // 381: clusterresources.TemplateSet.GetEnvManage:output_type -> clusterresources.CommonResp + 35, // 382: clusterresources.TemplateSet.ListEnvManages:output_type -> clusterresources.CommonListResp + 34, // 383: clusterresources.TemplateSet.CreateEnvManage:output_type -> clusterresources.CommonResp + 34, // 384: clusterresources.TemplateSet.UpdateEnvManage:output_type -> clusterresources.CommonResp + 34, // 385: clusterresources.TemplateSet.RenameEnvManage:output_type -> clusterresources.CommonResp + 34, // 386: clusterresources.TemplateSet.DeleteEnvManage:output_type -> clusterresources.CommonResp + 34, // 387: clusterresources.MultiCluster.FetchMultiClusterResource:output_type -> clusterresources.CommonResp + 34, // 388: clusterresources.MultiCluster.FetchMultiClusterApiResources:output_type -> clusterresources.CommonResp + 34, // 389: clusterresources.MultiCluster.FetchMultiClusterCustomResource:output_type -> clusterresources.CommonResp + 34, // 390: clusterresources.MultiCluster.MultiClusterResourceCount:output_type -> clusterresources.CommonResp + 212, // [212:391] is the sub-list for method output_type + 33, // [33:212] is the sub-list for method input_type + 33, // [33:33] is the sub-list for extension type_name + 33, // [33:33] is the sub-list for extension extendee + 0, // [0:33] is the sub-list for field type_name } func init() { file_cluster_resources_proto_init() } @@ -11921,7 +12429,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTemplateMetadataReq); i { + switch v := v.(*CopyTemplateSpaceReq); i { case 0: return &v.state case 1: @@ -11933,7 +12441,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateMetadataReq); i { + switch v := v.(*ListTemplateSpaceCollectReq); i { case 0: return &v.state case 1: @@ -11945,7 +12453,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTemplateMetadataReq); i { + switch v := v.(*CreateTemplateSpaceCollectReq); i { case 0: return &v.state case 1: @@ -11957,7 +12465,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateTemplateMetadataReq); i { + switch v := v.(*DeleteTemplateSpaceCollectReq); i { case 0: return &v.state case 1: @@ -11969,7 +12477,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateMetadataReq); i { + switch v := v.(*GetTemplateMetadataReq); i { case 0: return &v.state case 1: @@ -11981,7 +12489,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTemplateVersionReq); i { + switch v := v.(*ListTemplateMetadataReq); i { case 0: return &v.state case 1: @@ -11993,7 +12501,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetTemplateContentReq); i { + switch v := v.(*CreateTemplateMetadataReq); i { case 0: return &v.state case 1: @@ -12005,7 +12513,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateVersionReq); i { + switch v := v.(*UpdateTemplateMetadataReq); i { case 0: return &v.state case 1: @@ -12017,7 +12525,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTemplateVersionReq); i { + switch v := v.(*DeleteTemplateMetadataReq); i { case 0: return &v.state case 1: @@ -12029,7 +12537,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTemplateVersionReq); i { + switch v := v.(*GetTemplateVersionReq); i { case 0: return &v.state case 1: @@ -12041,7 +12549,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateTemplateSetReq); i { + switch v := v.(*GetTemplateContentReq); i { case 0: return &v.state case 1: @@ -12053,7 +12561,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TemplateID); i { + switch v := v.(*ListTemplateVersionReq); i { case 0: return &v.state case 1: @@ -12065,7 +12573,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListTemplateFileVariablesReq); i { + switch v := v.(*CreateTemplateVersionReq); i { case 0: return &v.state case 1: @@ -12077,7 +12585,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeployTemplateFileReq); i { + switch v := v.(*DeleteTemplateVersionReq); i { case 0: return &v.state case 1: @@ -12089,7 +12597,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetEnvManageReq); i { + switch v := v.(*CreateTemplateSetReq); i { case 0: return &v.state case 1: @@ -12101,7 +12609,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListEnvManagesReq); i { + switch v := v.(*TemplateID); i { case 0: return &v.state case 1: @@ -12113,7 +12621,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateEnvManageReq); i { + switch v := v.(*ListTemplateFileVariablesReq); i { case 0: return &v.state case 1: @@ -12125,7 +12633,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateEnvManageReq); i { + switch v := v.(*DeployTemplateFileReq); i { case 0: return &v.state case 1: @@ -12137,7 +12645,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RenameEnvManageReq); i { + switch v := v.(*GetEnvManageReq); i { case 0: return &v.state case 1: @@ -12149,7 +12657,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteEnvManageReq); i { + switch v := v.(*ListEnvManagesReq); i { case 0: return &v.state case 1: @@ -12161,7 +12669,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FetchMultiClusterResourceReq); i { + switch v := v.(*CreateEnvManageReq); i { case 0: return &v.state case 1: @@ -12173,7 +12681,7 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FetchMultiClusterCustomResourceReq); i { + switch v := v.(*UpdateEnvManageReq); i { case 0: return &v.state case 1: @@ -12185,6 +12693,66 @@ func file_cluster_resources_proto_init() { } } file_cluster_resources_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RenameEnvManageReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cluster_resources_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteEnvManageReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cluster_resources_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FetchMultiClusterResourceReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cluster_resources_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FetchMultiClusterApiResourcesReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cluster_resources_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FetchMultiClusterCustomResourceReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_cluster_resources_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MultiClusterResourceCountReq); i { case 0: return &v.state @@ -12203,7 +12771,7 @@ func file_cluster_resources_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_cluster_resources_proto_rawDesc, NumEnums: 1, - NumMessages: 86, + NumMessages: 91, NumExtensions: 0, NumServices: 14, }, @@ -17992,6 +18560,14 @@ type TemplateSetClient interface { UpdateTemplateSpace(ctx context.Context, in *UpdateTemplateSpaceReq, opts ...grpc.CallOption) (*CommonResp, error) // 删除模板文件文件夹 DeleteTemplateSpace(ctx context.Context, in *DeleteTemplateSpaceReq, opts ...grpc.CallOption) (*CommonResp, error) + // 复制模板文件文件夹 + CopyTemplateSpace(ctx context.Context, in *CopyTemplateSpaceReq, opts ...grpc.CallOption) (*CommonResp, error) + // 获取模板文件文件夹收藏列表 + ListTemplateSpaceCollect(ctx context.Context, in *ListTemplateSpaceCollectReq, opts ...grpc.CallOption) (*CommonListResp, error) + // 创建模板文件文件夹收藏 + CreateTemplateSpaceCollect(ctx context.Context, in *CreateTemplateSpaceCollectReq, opts ...grpc.CallOption) (*CommonResp, error) + // 删除模板文件文件夹收藏 + DeleteTemplateSpaceCollect(ctx context.Context, in *DeleteTemplateSpaceCollectReq, opts ...grpc.CallOption) (*CommonResp, error) // 获取模板文件元数据详情 GetTemplateMetadata(ctx context.Context, in *GetTemplateMetadataReq, opts ...grpc.CallOption) (*CommonResp, error) // 获取模板文件元数据列表 @@ -18087,6 +18663,42 @@ func (c *templateSetClient) DeleteTemplateSpace(ctx context.Context, in *DeleteT return out, nil } +func (c *templateSetClient) CopyTemplateSpace(ctx context.Context, in *CopyTemplateSpaceReq, opts ...grpc.CallOption) (*CommonResp, error) { + out := new(CommonResp) + err := c.cc.Invoke(ctx, "/clusterresources.TemplateSet/CopyTemplateSpace", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *templateSetClient) ListTemplateSpaceCollect(ctx context.Context, in *ListTemplateSpaceCollectReq, opts ...grpc.CallOption) (*CommonListResp, error) { + out := new(CommonListResp) + err := c.cc.Invoke(ctx, "/clusterresources.TemplateSet/ListTemplateSpaceCollect", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *templateSetClient) CreateTemplateSpaceCollect(ctx context.Context, in *CreateTemplateSpaceCollectReq, opts ...grpc.CallOption) (*CommonResp, error) { + out := new(CommonResp) + err := c.cc.Invoke(ctx, "/clusterresources.TemplateSet/CreateTemplateSpaceCollect", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *templateSetClient) DeleteTemplateSpaceCollect(ctx context.Context, in *DeleteTemplateSpaceCollectReq, opts ...grpc.CallOption) (*CommonResp, error) { + out := new(CommonResp) + err := c.cc.Invoke(ctx, "/clusterresources.TemplateSet/DeleteTemplateSpaceCollect", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *templateSetClient) GetTemplateMetadata(ctx context.Context, in *GetTemplateMetadataReq, opts ...grpc.CallOption) (*CommonResp, error) { out := new(CommonResp) err := c.cc.Invoke(ctx, "/clusterresources.TemplateSet/GetTemplateMetadata", in, out, opts...) @@ -18279,6 +18891,14 @@ type TemplateSetServer interface { UpdateTemplateSpace(context.Context, *UpdateTemplateSpaceReq) (*CommonResp, error) // 删除模板文件文件夹 DeleteTemplateSpace(context.Context, *DeleteTemplateSpaceReq) (*CommonResp, error) + // 复制模板文件文件夹 + CopyTemplateSpace(context.Context, *CopyTemplateSpaceReq) (*CommonResp, error) + // 获取模板文件文件夹收藏列表 + ListTemplateSpaceCollect(context.Context, *ListTemplateSpaceCollectReq) (*CommonListResp, error) + // 创建模板文件文件夹收藏 + CreateTemplateSpaceCollect(context.Context, *CreateTemplateSpaceCollectReq) (*CommonResp, error) + // 删除模板文件文件夹收藏 + DeleteTemplateSpaceCollect(context.Context, *DeleteTemplateSpaceCollectReq) (*CommonResp, error) // 获取模板文件元数据详情 GetTemplateMetadata(context.Context, *GetTemplateMetadataReq) (*CommonResp, error) // 获取模板文件元数据列表 @@ -18340,6 +18960,18 @@ func (*UnimplementedTemplateSetServer) UpdateTemplateSpace(context.Context, *Upd func (*UnimplementedTemplateSetServer) DeleteTemplateSpace(context.Context, *DeleteTemplateSpaceReq) (*CommonResp, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteTemplateSpace not implemented") } +func (*UnimplementedTemplateSetServer) CopyTemplateSpace(context.Context, *CopyTemplateSpaceReq) (*CommonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CopyTemplateSpace not implemented") +} +func (*UnimplementedTemplateSetServer) ListTemplateSpaceCollect(context.Context, *ListTemplateSpaceCollectReq) (*CommonListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTemplateSpaceCollect not implemented") +} +func (*UnimplementedTemplateSetServer) CreateTemplateSpaceCollect(context.Context, *CreateTemplateSpaceCollectReq) (*CommonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateTemplateSpaceCollect not implemented") +} +func (*UnimplementedTemplateSetServer) DeleteTemplateSpaceCollect(context.Context, *DeleteTemplateSpaceCollectReq) (*CommonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteTemplateSpaceCollect not implemented") +} func (*UnimplementedTemplateSetServer) GetTemplateMetadata(context.Context, *GetTemplateMetadataReq) (*CommonResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTemplateMetadata not implemented") } @@ -18495,6 +19127,78 @@ func _TemplateSet_DeleteTemplateSpace_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _TemplateSet_CopyTemplateSpace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CopyTemplateSpaceReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemplateSetServer).CopyTemplateSpace(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/clusterresources.TemplateSet/CopyTemplateSpace", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemplateSetServer).CopyTemplateSpace(ctx, req.(*CopyTemplateSpaceReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemplateSet_ListTemplateSpaceCollect_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTemplateSpaceCollectReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemplateSetServer).ListTemplateSpaceCollect(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/clusterresources.TemplateSet/ListTemplateSpaceCollect", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemplateSetServer).ListTemplateSpaceCollect(ctx, req.(*ListTemplateSpaceCollectReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemplateSet_CreateTemplateSpaceCollect_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateTemplateSpaceCollectReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemplateSetServer).CreateTemplateSpaceCollect(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/clusterresources.TemplateSet/CreateTemplateSpaceCollect", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemplateSetServer).CreateTemplateSpaceCollect(ctx, req.(*CreateTemplateSpaceCollectReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemplateSet_DeleteTemplateSpaceCollect_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteTemplateSpaceCollectReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemplateSetServer).DeleteTemplateSpaceCollect(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/clusterresources.TemplateSet/DeleteTemplateSpaceCollect", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemplateSetServer).DeleteTemplateSpaceCollect(ctx, req.(*DeleteTemplateSpaceCollectReq)) + } + return interceptor(ctx, in, info, handler) +} + func _TemplateSet_GetTemplateMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetTemplateMetadataReq) if err := dec(in); err != nil { @@ -18879,6 +19583,22 @@ var _TemplateSet_serviceDesc = grpc.ServiceDesc{ MethodName: "DeleteTemplateSpace", Handler: _TemplateSet_DeleteTemplateSpace_Handler, }, + { + MethodName: "CopyTemplateSpace", + Handler: _TemplateSet_CopyTemplateSpace_Handler, + }, + { + MethodName: "ListTemplateSpaceCollect", + Handler: _TemplateSet_ListTemplateSpaceCollect_Handler, + }, + { + MethodName: "CreateTemplateSpaceCollect", + Handler: _TemplateSet_CreateTemplateSpaceCollect_Handler, + }, + { + MethodName: "DeleteTemplateSpaceCollect", + Handler: _TemplateSet_DeleteTemplateSpaceCollect_Handler, + }, { MethodName: "GetTemplateMetadata", Handler: _TemplateSet_GetTemplateMetadata_Handler, @@ -18969,6 +19689,7 @@ var _TemplateSet_serviceDesc = grpc.ServiceDesc{ // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MultiClusterClient interface { FetchMultiClusterResource(ctx context.Context, in *FetchMultiClusterResourceReq, opts ...grpc.CallOption) (*CommonResp, error) + FetchMultiClusterApiResources(ctx context.Context, in *FetchMultiClusterApiResourcesReq, opts ...grpc.CallOption) (*CommonResp, error) FetchMultiClusterCustomResource(ctx context.Context, in *FetchMultiClusterCustomResourceReq, opts ...grpc.CallOption) (*CommonResp, error) MultiClusterResourceCount(ctx context.Context, in *MultiClusterResourceCountReq, opts ...grpc.CallOption) (*CommonResp, error) } @@ -18990,6 +19711,15 @@ func (c *multiClusterClient) FetchMultiClusterResource(ctx context.Context, in * return out, nil } +func (c *multiClusterClient) FetchMultiClusterApiResources(ctx context.Context, in *FetchMultiClusterApiResourcesReq, opts ...grpc.CallOption) (*CommonResp, error) { + out := new(CommonResp) + err := c.cc.Invoke(ctx, "/clusterresources.MultiCluster/FetchMultiClusterApiResources", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *multiClusterClient) FetchMultiClusterCustomResource(ctx context.Context, in *FetchMultiClusterCustomResourceReq, opts ...grpc.CallOption) (*CommonResp, error) { out := new(CommonResp) err := c.cc.Invoke(ctx, "/clusterresources.MultiCluster/FetchMultiClusterCustomResource", in, out, opts...) @@ -19011,6 +19741,7 @@ func (c *multiClusterClient) MultiClusterResourceCount(ctx context.Context, in * // MultiClusterServer is the server API for MultiCluster service. type MultiClusterServer interface { FetchMultiClusterResource(context.Context, *FetchMultiClusterResourceReq) (*CommonResp, error) + FetchMultiClusterApiResources(context.Context, *FetchMultiClusterApiResourcesReq) (*CommonResp, error) FetchMultiClusterCustomResource(context.Context, *FetchMultiClusterCustomResourceReq) (*CommonResp, error) MultiClusterResourceCount(context.Context, *MultiClusterResourceCountReq) (*CommonResp, error) } @@ -19022,6 +19753,9 @@ type UnimplementedMultiClusterServer struct { func (*UnimplementedMultiClusterServer) FetchMultiClusterResource(context.Context, *FetchMultiClusterResourceReq) (*CommonResp, error) { return nil, status.Errorf(codes.Unimplemented, "method FetchMultiClusterResource not implemented") } +func (*UnimplementedMultiClusterServer) FetchMultiClusterApiResources(context.Context, *FetchMultiClusterApiResourcesReq) (*CommonResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method FetchMultiClusterApiResources not implemented") +} func (*UnimplementedMultiClusterServer) FetchMultiClusterCustomResource(context.Context, *FetchMultiClusterCustomResourceReq) (*CommonResp, error) { return nil, status.Errorf(codes.Unimplemented, "method FetchMultiClusterCustomResource not implemented") } @@ -19051,6 +19785,24 @@ func _MultiCluster_FetchMultiClusterResource_Handler(srv interface{}, ctx contex return interceptor(ctx, in, info, handler) } +func _MultiCluster_FetchMultiClusterApiResources_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FetchMultiClusterApiResourcesReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MultiClusterServer).FetchMultiClusterApiResources(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/clusterresources.MultiCluster/FetchMultiClusterApiResources", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MultiClusterServer).FetchMultiClusterApiResources(ctx, req.(*FetchMultiClusterApiResourcesReq)) + } + return interceptor(ctx, in, info, handler) +} + func _MultiCluster_FetchMultiClusterCustomResource_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(FetchMultiClusterCustomResourceReq) if err := dec(in); err != nil { @@ -19095,6 +19847,10 @@ var _MultiCluster_serviceDesc = grpc.ServiceDesc{ MethodName: "FetchMultiClusterResource", Handler: _MultiCluster_FetchMultiClusterResource_Handler, }, + { + MethodName: "FetchMultiClusterApiResources", + Handler: _MultiCluster_FetchMultiClusterApiResources_Handler, + }, { MethodName: "FetchMultiClusterCustomResource", Handler: _MultiCluster_FetchMultiClusterCustomResource_Handler, diff --git a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.gw.go b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.gw.go index 9e6c7221d5..0bbdceda91 100644 --- a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.gw.go +++ b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.gw.go @@ -16936,6 +16936,10 @@ func local_request_TemplateSet_GetTemplateSpace_0(ctx context.Context, marshaler } +var ( + filter_TemplateSet_ListTemplateSpace_0 = &utilities.DoubleArray{Encoding: map[string]int{"projectCode": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + func request_TemplateSet_ListTemplateSpace_0(ctx context.Context, marshaler runtime.Marshaler, client TemplateSetClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ListTemplateSpaceReq var metadata runtime.ServerMetadata @@ -16958,6 +16962,13 @@ func request_TemplateSet_ListTemplateSpace_0(ctx context.Context, marshaler runt return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_TemplateSet_ListTemplateSpace_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.ListTemplateSpace(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err @@ -16985,6 +16996,13 @@ func local_request_TemplateSet_ListTemplateSpace_0(ctx context.Context, marshale return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) } + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_TemplateSet_ListTemplateSpace_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.ListTemplateSpace(ctx, &protoReq) return msg, metadata, err @@ -17228,6 +17246,320 @@ func local_request_TemplateSet_DeleteTemplateSpace_0(ctx context.Context, marsha } +func request_TemplateSet_CopyTemplateSpace_0(ctx context.Context, marshaler runtime.Marshaler, client TemplateSetClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CopyTemplateSpaceReq + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") + } + + protoReq.ProjectCode, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) + } + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.CopyTemplateSpace(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_TemplateSet_CopyTemplateSpace_0(ctx context.Context, marshaler runtime.Marshaler, server TemplateSetServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CopyTemplateSpaceReq + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") + } + + protoReq.ProjectCode, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) + } + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := server.CopyTemplateSpace(ctx, &protoReq) + return msg, metadata, err + +} + +func request_TemplateSet_ListTemplateSpaceCollect_0(ctx context.Context, marshaler runtime.Marshaler, client TemplateSetClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListTemplateSpaceCollectReq + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") + } + + protoReq.ProjectCode, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) + } + + msg, err := client.ListTemplateSpaceCollect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_TemplateSet_ListTemplateSpaceCollect_0(ctx context.Context, marshaler runtime.Marshaler, server TemplateSetServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListTemplateSpaceCollectReq + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") + } + + protoReq.ProjectCode, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) + } + + msg, err := server.ListTemplateSpaceCollect(ctx, &protoReq) + return msg, metadata, err + +} + +func request_TemplateSet_CreateTemplateSpaceCollect_0(ctx context.Context, marshaler runtime.Marshaler, client TemplateSetClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreateTemplateSpaceCollectReq + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") + } + + protoReq.ProjectCode, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) + } + + val, ok = pathParams["templateSpaceID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "templateSpaceID") + } + + protoReq.TemplateSpaceID, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "templateSpaceID", err) + } + + msg, err := client.CreateTemplateSpaceCollect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_TemplateSet_CreateTemplateSpaceCollect_0(ctx context.Context, marshaler runtime.Marshaler, server TemplateSetServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq CreateTemplateSpaceCollectReq + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") + } + + protoReq.ProjectCode, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) + } + + val, ok = pathParams["templateSpaceID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "templateSpaceID") + } + + protoReq.TemplateSpaceID, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "templateSpaceID", err) + } + + msg, err := server.CreateTemplateSpaceCollect(ctx, &protoReq) + return msg, metadata, err + +} + +func request_TemplateSet_DeleteTemplateSpaceCollect_0(ctx context.Context, marshaler runtime.Marshaler, client TemplateSetClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteTemplateSpaceCollectReq + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") + } + + protoReq.ProjectCode, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) + } + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.DeleteTemplateSpaceCollect(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_TemplateSet_DeleteTemplateSpaceCollect_0(ctx context.Context, marshaler runtime.Marshaler, server TemplateSetServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteTemplateSpaceCollectReq + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") + } + + protoReq.ProjectCode, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) + } + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := server.DeleteTemplateSpaceCollect(ctx, &protoReq) + return msg, metadata, err + +} + func request_TemplateSet_GetTemplateMetadata_0(ctx context.Context, marshaler runtime.Marshaler, client TemplateSetClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetTemplateMetadataReq var metadata runtime.ServerMetadata @@ -18727,15 +19059,61 @@ func request_TemplateSet_DeleteEnvManage_0(ctx context.Context, marshaler runtim return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.DeleteEnvManage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.DeleteEnvManage(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_TemplateSet_DeleteEnvManage_0(ctx context.Context, marshaler runtime.Marshaler, server TemplateSetServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteEnvManageReq + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") + } + + protoReq.ProjectCode, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) + } + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := server.DeleteEnvManage(ctx, &protoReq) return msg, metadata, err } -func local_request_TemplateSet_DeleteEnvManage_0(ctx context.Context, marshaler runtime.Marshaler, server TemplateSetServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteEnvManageReq +func request_MultiCluster_FetchMultiClusterResource_0(ctx context.Context, marshaler runtime.Marshaler, client MultiClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq FetchMultiClusterResourceReq var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -18754,23 +19132,23 @@ func local_request_TemplateSet_DeleteEnvManage_0(ctx context.Context, marshaler return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) } - val, ok = pathParams["id"] + val, ok = pathParams["kind"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "kind") } - protoReq.Id, err = runtime.String(val) + protoReq.Kind, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "kind", err) } - msg, err := server.DeleteEnvManage(ctx, &protoReq) + msg, err := client.FetchMultiClusterResource(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func request_MultiCluster_FetchMultiClusterResource_0(ctx context.Context, marshaler runtime.Marshaler, client MultiClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func local_request_MultiCluster_FetchMultiClusterResource_0(ctx context.Context, marshaler runtime.Marshaler, server MultiClusterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq FetchMultiClusterResourceReq var metadata runtime.ServerMetadata @@ -18811,13 +19189,13 @@ func request_MultiCluster_FetchMultiClusterResource_0(ctx context.Context, marsh return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "kind", err) } - msg, err := client.FetchMultiClusterResource(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.FetchMultiClusterResource(ctx, &protoReq) return msg, metadata, err } -func local_request_MultiCluster_FetchMultiClusterResource_0(ctx context.Context, marshaler runtime.Marshaler, server MultiClusterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq FetchMultiClusterResourceReq +func request_MultiCluster_FetchMultiClusterApiResources_0(ctx context.Context, marshaler runtime.Marshaler, client MultiClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq FetchMultiClusterApiResourcesReq var metadata runtime.ServerMetadata newReader, berr := utilities.IOReaderFactory(req.Body) @@ -18846,18 +19224,42 @@ func local_request_MultiCluster_FetchMultiClusterResource_0(ctx context.Context, return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) } - val, ok = pathParams["kind"] + msg, err := client.FetchMultiClusterApiResources(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_MultiCluster_FetchMultiClusterApiResources_0(ctx context.Context, marshaler runtime.Marshaler, server MultiClusterServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq FetchMultiClusterApiResourcesReq + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["projectCode"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "kind") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "projectCode") } - protoReq.Kind, err = runtime.String(val) + protoReq.ProjectCode, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "kind", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "projectCode", err) } - msg, err := server.FetchMultiClusterResource(ctx, &protoReq) + msg, err := server.FetchMultiClusterApiResources(ctx, &protoReq) return msg, metadata, err } @@ -22618,6 +23020,98 @@ func RegisterTemplateSetGwServer(ctx context.Context, mux *runtime.ServeMux, ser }) + mux.Handle("POST", pattern_TemplateSet_CopyTemplateSpace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_TemplateSet_CopyTemplateSpace_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TemplateSet_CopyTemplateSpace_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_TemplateSet_ListTemplateSpaceCollect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_TemplateSet_ListTemplateSpaceCollect_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TemplateSet_ListTemplateSpaceCollect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_TemplateSet_CreateTemplateSpaceCollect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_TemplateSet_CreateTemplateSpaceCollect_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TemplateSet_CreateTemplateSpaceCollect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_TemplateSet_DeleteTemplateSpaceCollect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_TemplateSet_DeleteTemplateSpaceCollect_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TemplateSet_DeleteTemplateSpaceCollect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_TemplateSet_GetTemplateMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -23110,6 +23604,29 @@ func RegisterMultiClusterGwServer(ctx context.Context, mux *runtime.ServeMux, se }) + mux.Handle("POST", pattern_MultiCluster_FetchMultiClusterApiResources_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_MultiCluster_FetchMultiClusterApiResources_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_MultiCluster_FetchMultiClusterApiResources_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_MultiCluster_FetchMultiClusterCustomResource_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -27365,6 +27882,86 @@ func RegisterTemplateSetGwClient(ctx context.Context, mux *runtime.ServeMux, cli }) + mux.Handle("POST", pattern_TemplateSet_CopyTemplateSpace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_TemplateSet_CopyTemplateSpace_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TemplateSet_CopyTemplateSpace_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_TemplateSet_ListTemplateSpaceCollect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_TemplateSet_ListTemplateSpaceCollect_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TemplateSet_ListTemplateSpaceCollect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_TemplateSet_CreateTemplateSpaceCollect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_TemplateSet_CreateTemplateSpaceCollect_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TemplateSet_CreateTemplateSpaceCollect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("DELETE", pattern_TemplateSet_DeleteTemplateSpaceCollect_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_TemplateSet_DeleteTemplateSpaceCollect_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TemplateSet_DeleteTemplateSpaceCollect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_TemplateSet_GetTemplateMetadata_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -27779,6 +28376,14 @@ var ( pattern_TemplateSet_DeleteTemplateSpace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"clusterresources", "v1", "projects", "projectCode", "template", "spaces", "id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_TemplateSet_CopyTemplateSpace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"clusterresources", "v1", "projects", "projectCode", "template", "spaces", "id"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_TemplateSet_ListTemplateSpaceCollect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 2, 5, 2, 6}, []string{"clusterresources", "v1", "projects", "projectCode", "template", "space", "collects"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_TemplateSet_CreateTemplateSpaceCollect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"clusterresources", "v1", "projects", "projectCode", "template", "space", "templateSpaceID", "collects"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_TemplateSet_DeleteTemplateSpaceCollect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"clusterresources", "v1", "projects", "projectCode", "template", "space", "collects", "id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_TemplateSet_GetTemplateMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"clusterresources", "v1", "projects", "projectCode", "template", "metadatas", "id"}, "", runtime.AssumeColonVerbOpt(true))) pattern_TemplateSet_ListTemplateMetadata_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"clusterresources", "v1", "projects", "projectCode", "template", "templateSpaceID", "metadatas"}, "", runtime.AssumeColonVerbOpt(true))) @@ -27831,6 +28436,14 @@ var ( forward_TemplateSet_DeleteTemplateSpace_0 = runtime.ForwardResponseMessage + forward_TemplateSet_CopyTemplateSpace_0 = runtime.ForwardResponseMessage + + forward_TemplateSet_ListTemplateSpaceCollect_0 = runtime.ForwardResponseMessage + + forward_TemplateSet_CreateTemplateSpaceCollect_0 = runtime.ForwardResponseMessage + + forward_TemplateSet_DeleteTemplateSpaceCollect_0 = runtime.ForwardResponseMessage + forward_TemplateSet_GetTemplateMetadata_0 = runtime.ForwardResponseMessage forward_TemplateSet_ListTemplateMetadata_0 = runtime.ForwardResponseMessage @@ -27930,6 +28543,26 @@ func RegisterMultiClusterGwClient(ctx context.Context, mux *runtime.ServeMux, cl }) + mux.Handle("POST", pattern_MultiCluster_FetchMultiClusterApiResources_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_MultiCluster_FetchMultiClusterApiResources_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_MultiCluster_FetchMultiClusterApiResources_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_MultiCluster_FetchMultiClusterCustomResource_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -27976,6 +28609,8 @@ func RegisterMultiClusterGwClient(ctx context.Context, mux *runtime.ServeMux, cl var ( pattern_MultiCluster_FetchMultiClusterResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"clusterresources", "v1", "projects", "projectCode", "multi_cluster_resources", "kind"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_MultiCluster_FetchMultiClusterApiResources_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 2, 5, 2, 6}, []string{"clusterresources", "v1", "projects", "projectCode", "multi_cluster_resources", "api", "resources"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_MultiCluster_FetchMultiClusterCustomResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6}, []string{"clusterresources", "v1", "projects", "projectCode", "multi_cluster_resources", "crd", "custom_objects"}, "", runtime.AssumeColonVerbOpt(true))) pattern_MultiCluster_MultiClusterResourceCount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"clusterresources", "v1", "projects", "projectCode", "multi_cluster_resources_count"}, "", runtime.AssumeColonVerbOpt(true))) @@ -27984,6 +28619,8 @@ var ( var ( forward_MultiCluster_FetchMultiClusterResource_0 = runtime.ForwardResponseMessage + forward_MultiCluster_FetchMultiClusterApiResources_0 = runtime.ForwardResponseMessage + forward_MultiCluster_FetchMultiClusterCustomResource_0 = runtime.ForwardResponseMessage forward_MultiCluster_MultiClusterResourceCount_0 = runtime.ForwardResponseMessage diff --git a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.micro.go b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.micro.go index 55e557ca3f..ecafc3c17d 100644 --- a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.micro.go +++ b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.micro.go @@ -4933,6 +4933,30 @@ func NewTemplateSetEndpoints() []*api.Endpoint { Method: []string{"DELETE"}, Handler: "rpc", }, + { + Name: "TemplateSet.CopyTemplateSpace", + Path: []string{"/clusterresources/v1/projects/{projectCode}/template/spaces/{id}"}, + Method: []string{"POST"}, + Handler: "rpc", + }, + { + Name: "TemplateSet.ListTemplateSpaceCollect", + Path: []string{"/clusterresources/v1/projects/{projectCode}/template/space/collects"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + { + Name: "TemplateSet.CreateTemplateSpaceCollect", + Path: []string{"/clusterresources/v1/projects/{projectCode}/template/space/{templateSpaceID}/collects"}, + Method: []string{"POST"}, + Handler: "rpc", + }, + { + Name: "TemplateSet.DeleteTemplateSpaceCollect", + Path: []string{"/clusterresources/v1/projects/{projectCode}/template/space/collects/{id}"}, + Method: []string{"DELETE"}, + Handler: "rpc", + }, { Name: "TemplateSet.GetTemplateMetadata", Path: []string{"/clusterresources/v1/projects/{projectCode}/template/metadatas/{id}"}, @@ -5069,6 +5093,14 @@ type TemplateSetService interface { UpdateTemplateSpace(ctx context.Context, in *UpdateTemplateSpaceReq, opts ...client.CallOption) (*CommonResp, error) // 删除模板文件文件夹 DeleteTemplateSpace(ctx context.Context, in *DeleteTemplateSpaceReq, opts ...client.CallOption) (*CommonResp, error) + // 复制模板文件文件夹 + CopyTemplateSpace(ctx context.Context, in *CopyTemplateSpaceReq, opts ...client.CallOption) (*CommonResp, error) + // 获取模板文件文件夹收藏列表 + ListTemplateSpaceCollect(ctx context.Context, in *ListTemplateSpaceCollectReq, opts ...client.CallOption) (*CommonListResp, error) + // 创建模板文件文件夹收藏 + CreateTemplateSpaceCollect(ctx context.Context, in *CreateTemplateSpaceCollectReq, opts ...client.CallOption) (*CommonResp, error) + // 删除模板文件文件夹收藏 + DeleteTemplateSpaceCollect(ctx context.Context, in *DeleteTemplateSpaceCollectReq, opts ...client.CallOption) (*CommonResp, error) // 获取模板文件元数据详情 GetTemplateMetadata(ctx context.Context, in *GetTemplateMetadataReq, opts ...client.CallOption) (*CommonResp, error) // 获取模板文件元数据列表 @@ -5173,6 +5205,46 @@ func (c *templateSetService) DeleteTemplateSpace(ctx context.Context, in *Delete return out, nil } +func (c *templateSetService) CopyTemplateSpace(ctx context.Context, in *CopyTemplateSpaceReq, opts ...client.CallOption) (*CommonResp, error) { + req := c.c.NewRequest(c.name, "TemplateSet.CopyTemplateSpace", in) + out := new(CommonResp) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *templateSetService) ListTemplateSpaceCollect(ctx context.Context, in *ListTemplateSpaceCollectReq, opts ...client.CallOption) (*CommonListResp, error) { + req := c.c.NewRequest(c.name, "TemplateSet.ListTemplateSpaceCollect", in) + out := new(CommonListResp) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *templateSetService) CreateTemplateSpaceCollect(ctx context.Context, in *CreateTemplateSpaceCollectReq, opts ...client.CallOption) (*CommonResp, error) { + req := c.c.NewRequest(c.name, "TemplateSet.CreateTemplateSpaceCollect", in) + out := new(CommonResp) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *templateSetService) DeleteTemplateSpaceCollect(ctx context.Context, in *DeleteTemplateSpaceCollectReq, opts ...client.CallOption) (*CommonResp, error) { + req := c.c.NewRequest(c.name, "TemplateSet.DeleteTemplateSpaceCollect", in) + out := new(CommonResp) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *templateSetService) GetTemplateMetadata(ctx context.Context, in *GetTemplateMetadataReq, opts ...client.CallOption) (*CommonResp, error) { req := c.c.NewRequest(c.name, "TemplateSet.GetTemplateMetadata", in) out := new(CommonResp) @@ -5386,6 +5458,14 @@ type TemplateSetHandler interface { UpdateTemplateSpace(context.Context, *UpdateTemplateSpaceReq, *CommonResp) error // 删除模板文件文件夹 DeleteTemplateSpace(context.Context, *DeleteTemplateSpaceReq, *CommonResp) error + // 复制模板文件文件夹 + CopyTemplateSpace(context.Context, *CopyTemplateSpaceReq, *CommonResp) error + // 获取模板文件文件夹收藏列表 + ListTemplateSpaceCollect(context.Context, *ListTemplateSpaceCollectReq, *CommonListResp) error + // 创建模板文件文件夹收藏 + CreateTemplateSpaceCollect(context.Context, *CreateTemplateSpaceCollectReq, *CommonResp) error + // 删除模板文件文件夹收藏 + DeleteTemplateSpaceCollect(context.Context, *DeleteTemplateSpaceCollectReq, *CommonResp) error // 获取模板文件元数据详情 GetTemplateMetadata(context.Context, *GetTemplateMetadataReq, *CommonResp) error // 获取模板文件元数据列表 @@ -5435,6 +5515,10 @@ func RegisterTemplateSetHandler(s server.Server, hdlr TemplateSetHandler, opts . CreateTemplateSpace(ctx context.Context, in *CreateTemplateSpaceReq, out *CommonResp) error UpdateTemplateSpace(ctx context.Context, in *UpdateTemplateSpaceReq, out *CommonResp) error DeleteTemplateSpace(ctx context.Context, in *DeleteTemplateSpaceReq, out *CommonResp) error + CopyTemplateSpace(ctx context.Context, in *CopyTemplateSpaceReq, out *CommonResp) error + ListTemplateSpaceCollect(ctx context.Context, in *ListTemplateSpaceCollectReq, out *CommonListResp) error + CreateTemplateSpaceCollect(ctx context.Context, in *CreateTemplateSpaceCollectReq, out *CommonResp) error + DeleteTemplateSpaceCollect(ctx context.Context, in *DeleteTemplateSpaceCollectReq, out *CommonResp) error GetTemplateMetadata(ctx context.Context, in *GetTemplateMetadataReq, out *CommonResp) error ListTemplateMetadata(ctx context.Context, in *ListTemplateMetadataReq, out *CommonListResp) error CreateTemplateMetadata(ctx context.Context, in *CreateTemplateMetadataReq, out *CommonResp) error @@ -5490,6 +5574,30 @@ func RegisterTemplateSetHandler(s server.Server, hdlr TemplateSetHandler, opts . Method: []string{"DELETE"}, Handler: "rpc", })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "TemplateSet.CopyTemplateSpace", + Path: []string{"/clusterresources/v1/projects/{projectCode}/template/spaces/{id}"}, + Method: []string{"POST"}, + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "TemplateSet.ListTemplateSpaceCollect", + Path: []string{"/clusterresources/v1/projects/{projectCode}/template/space/collects"}, + Method: []string{"GET"}, + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "TemplateSet.CreateTemplateSpaceCollect", + Path: []string{"/clusterresources/v1/projects/{projectCode}/template/space/{templateSpaceID}/collects"}, + Method: []string{"POST"}, + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "TemplateSet.DeleteTemplateSpaceCollect", + Path: []string{"/clusterresources/v1/projects/{projectCode}/template/space/collects/{id}"}, + Method: []string{"DELETE"}, + Handler: "rpc", + })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "TemplateSet.GetTemplateMetadata", Path: []string{"/clusterresources/v1/projects/{projectCode}/template/metadatas/{id}"}, @@ -5637,6 +5745,22 @@ func (h *templateSetHandler) DeleteTemplateSpace(ctx context.Context, in *Delete return h.TemplateSetHandler.DeleteTemplateSpace(ctx, in, out) } +func (h *templateSetHandler) CopyTemplateSpace(ctx context.Context, in *CopyTemplateSpaceReq, out *CommonResp) error { + return h.TemplateSetHandler.CopyTemplateSpace(ctx, in, out) +} + +func (h *templateSetHandler) ListTemplateSpaceCollect(ctx context.Context, in *ListTemplateSpaceCollectReq, out *CommonListResp) error { + return h.TemplateSetHandler.ListTemplateSpaceCollect(ctx, in, out) +} + +func (h *templateSetHandler) CreateTemplateSpaceCollect(ctx context.Context, in *CreateTemplateSpaceCollectReq, out *CommonResp) error { + return h.TemplateSetHandler.CreateTemplateSpaceCollect(ctx, in, out) +} + +func (h *templateSetHandler) DeleteTemplateSpaceCollect(ctx context.Context, in *DeleteTemplateSpaceCollectReq, out *CommonResp) error { + return h.TemplateSetHandler.DeleteTemplateSpaceCollect(ctx, in, out) +} + func (h *templateSetHandler) GetTemplateMetadata(ctx context.Context, in *GetTemplateMetadataReq, out *CommonResp) error { return h.TemplateSetHandler.GetTemplateMetadata(ctx, in, out) } @@ -5727,6 +5851,12 @@ func NewMultiClusterEndpoints() []*api.Endpoint { Method: []string{"POST"}, Handler: "rpc", }, + { + Name: "MultiCluster.FetchMultiClusterApiResources", + Path: []string{"/clusterresources/v1/projects/{projectCode}/multi_cluster_resources/api/resources"}, + Method: []string{"POST"}, + Handler: "rpc", + }, { Name: "MultiCluster.FetchMultiClusterCustomResource", Path: []string{"/clusterresources/v1/projects/{projectCode}/multi_cluster_resources/{crd}/custom_objects"}, @@ -5746,6 +5876,7 @@ func NewMultiClusterEndpoints() []*api.Endpoint { type MultiClusterService interface { FetchMultiClusterResource(ctx context.Context, in *FetchMultiClusterResourceReq, opts ...client.CallOption) (*CommonResp, error) + FetchMultiClusterApiResources(ctx context.Context, in *FetchMultiClusterApiResourcesReq, opts ...client.CallOption) (*CommonResp, error) FetchMultiClusterCustomResource(ctx context.Context, in *FetchMultiClusterCustomResourceReq, opts ...client.CallOption) (*CommonResp, error) MultiClusterResourceCount(ctx context.Context, in *MultiClusterResourceCountReq, opts ...client.CallOption) (*CommonResp, error) } @@ -5772,6 +5903,16 @@ func (c *multiClusterService) FetchMultiClusterResource(ctx context.Context, in return out, nil } +func (c *multiClusterService) FetchMultiClusterApiResources(ctx context.Context, in *FetchMultiClusterApiResourcesReq, opts ...client.CallOption) (*CommonResp, error) { + req := c.c.NewRequest(c.name, "MultiCluster.FetchMultiClusterApiResources", in) + out := new(CommonResp) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *multiClusterService) FetchMultiClusterCustomResource(ctx context.Context, in *FetchMultiClusterCustomResourceReq, opts ...client.CallOption) (*CommonResp, error) { req := c.c.NewRequest(c.name, "MultiCluster.FetchMultiClusterCustomResource", in) out := new(CommonResp) @@ -5796,6 +5937,7 @@ func (c *multiClusterService) MultiClusterResourceCount(ctx context.Context, in type MultiClusterHandler interface { FetchMultiClusterResource(context.Context, *FetchMultiClusterResourceReq, *CommonResp) error + FetchMultiClusterApiResources(context.Context, *FetchMultiClusterApiResourcesReq, *CommonResp) error FetchMultiClusterCustomResource(context.Context, *FetchMultiClusterCustomResourceReq, *CommonResp) error MultiClusterResourceCount(context.Context, *MultiClusterResourceCountReq, *CommonResp) error } @@ -5803,6 +5945,7 @@ type MultiClusterHandler interface { func RegisterMultiClusterHandler(s server.Server, hdlr MultiClusterHandler, opts ...server.HandlerOption) error { type multiCluster interface { FetchMultiClusterResource(ctx context.Context, in *FetchMultiClusterResourceReq, out *CommonResp) error + FetchMultiClusterApiResources(ctx context.Context, in *FetchMultiClusterApiResourcesReq, out *CommonResp) error FetchMultiClusterCustomResource(ctx context.Context, in *FetchMultiClusterCustomResourceReq, out *CommonResp) error MultiClusterResourceCount(ctx context.Context, in *MultiClusterResourceCountReq, out *CommonResp) error } @@ -5816,6 +5959,12 @@ func RegisterMultiClusterHandler(s server.Server, hdlr MultiClusterHandler, opts Method: []string{"POST"}, Handler: "rpc", })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "MultiCluster.FetchMultiClusterApiResources", + Path: []string{"/clusterresources/v1/projects/{projectCode}/multi_cluster_resources/api/resources"}, + Method: []string{"POST"}, + Handler: "rpc", + })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "MultiCluster.FetchMultiClusterCustomResource", Path: []string{"/clusterresources/v1/projects/{projectCode}/multi_cluster_resources/{crd}/custom_objects"}, @@ -5839,6 +5988,10 @@ func (h *multiClusterHandler) FetchMultiClusterResource(ctx context.Context, in return h.MultiClusterHandler.FetchMultiClusterResource(ctx, in, out) } +func (h *multiClusterHandler) FetchMultiClusterApiResources(ctx context.Context, in *FetchMultiClusterApiResourcesReq, out *CommonResp) error { + return h.MultiClusterHandler.FetchMultiClusterApiResources(ctx, in, out) +} + func (h *multiClusterHandler) FetchMultiClusterCustomResource(ctx context.Context, in *FetchMultiClusterCustomResourceReq, out *CommonResp) error { return h.MultiClusterHandler.FetchMultiClusterCustomResource(ctx, in, out) } diff --git a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.validate.go b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.validate.go index 4ea9975115..6745b4da36 100644 --- a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.validate.go +++ b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.pb.validate.go @@ -9217,6 +9217,8 @@ func (m *ListTemplateSpaceReq) validate(all bool) error { errors = append(errors, err) } + // no validation rules for Name + if len(errors) > 0 { return ListTemplateSpaceReqMultiError(errors) } @@ -9426,39 +9428,529 @@ var _ interface { // Validate checks the field values on UpdateTemplateSpaceReq 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 *UpdateTemplateSpaceReq) Validate() error { +func (m *UpdateTemplateSpaceReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateTemplateSpaceReq 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 +// UpdateTemplateSpaceReqMultiError, or nil if none found. +func (m *UpdateTemplateSpaceReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateTemplateSpaceReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetId()) != 24 { + err := UpdateTemplateSpaceReqValidationError{ + field: "Id", + reason: "value length must be 24 runes", + } + if !all { + return err + } + errors = append(errors, err) + + } + + if l := utf8.RuneCountInString(m.GetProjectCode()); l < 1 || l > 32 { + err := UpdateTemplateSpaceReqValidationError{ + field: "ProjectCode", + reason: "value length must be between 1 and 32 runes, inclusive", + } + if !all { + return err + } + errors = append(errors, err) + } + + if l := utf8.RuneCountInString(m.GetName()); l < 1 || l > 64 { + err := UpdateTemplateSpaceReqValidationError{ + field: "Name", + reason: "value length must be between 1 and 64 runes, inclusive", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for Description + + if len(errors) > 0 { + return UpdateTemplateSpaceReqMultiError(errors) + } + + return nil +} + +// UpdateTemplateSpaceReqMultiError is an error wrapping multiple validation +// errors returned by UpdateTemplateSpaceReq.ValidateAll() if the designated +// constraints aren't met. +type UpdateTemplateSpaceReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateTemplateSpaceReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateTemplateSpaceReqMultiError) AllErrors() []error { return m } + +// UpdateTemplateSpaceReqValidationError is the validation error returned by +// UpdateTemplateSpaceReq.Validate if the designated constraints aren't met. +type UpdateTemplateSpaceReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpdateTemplateSpaceReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpdateTemplateSpaceReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpdateTemplateSpaceReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpdateTemplateSpaceReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpdateTemplateSpaceReqValidationError) ErrorName() string { + return "UpdateTemplateSpaceReqValidationError" +} + +// Error satisfies the builtin error interface +func (e UpdateTemplateSpaceReqValidationError) 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 %sUpdateTemplateSpaceReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpdateTemplateSpaceReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpdateTemplateSpaceReqValidationError{} + +// Validate checks the field values on DeleteTemplateSpaceReq 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 *DeleteTemplateSpaceReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteTemplateSpaceReq 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 +// DeleteTemplateSpaceReqMultiError, or nil if none found. +func (m *DeleteTemplateSpaceReq) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteTemplateSpaceReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetId()) != 24 { + err := DeleteTemplateSpaceReqValidationError{ + field: "Id", + reason: "value length must be 24 runes", + } + if !all { + return err + } + errors = append(errors, err) + + } + + if l := utf8.RuneCountInString(m.GetProjectCode()); l < 1 || l > 32 { + err := DeleteTemplateSpaceReqValidationError{ + field: "ProjectCode", + reason: "value length must be between 1 and 32 runes, inclusive", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DeleteTemplateSpaceReqMultiError(errors) + } + + return nil +} + +// DeleteTemplateSpaceReqMultiError is an error wrapping multiple validation +// errors returned by DeleteTemplateSpaceReq.ValidateAll() if the designated +// constraints aren't met. +type DeleteTemplateSpaceReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteTemplateSpaceReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteTemplateSpaceReqMultiError) AllErrors() []error { return m } + +// DeleteTemplateSpaceReqValidationError is the validation error returned by +// DeleteTemplateSpaceReq.Validate if the designated constraints aren't met. +type DeleteTemplateSpaceReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e DeleteTemplateSpaceReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e DeleteTemplateSpaceReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e DeleteTemplateSpaceReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e DeleteTemplateSpaceReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e DeleteTemplateSpaceReqValidationError) ErrorName() string { + return "DeleteTemplateSpaceReqValidationError" +} + +// Error satisfies the builtin error interface +func (e DeleteTemplateSpaceReqValidationError) 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 %sDeleteTemplateSpaceReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = DeleteTemplateSpaceReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = DeleteTemplateSpaceReqValidationError{} + +// Validate checks the field values on CopyTemplateSpaceReq 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 *CopyTemplateSpaceReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CopyTemplateSpaceReq 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 +// CopyTemplateSpaceReqMultiError, or nil if none found. +func (m *CopyTemplateSpaceReq) ValidateAll() error { + return m.validate(true) +} + +func (m *CopyTemplateSpaceReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if utf8.RuneCountInString(m.GetId()) != 24 { + err := CopyTemplateSpaceReqValidationError{ + field: "Id", + reason: "value length must be 24 runes", + } + if !all { + return err + } + errors = append(errors, err) + + } + + if l := utf8.RuneCountInString(m.GetProjectCode()); l < 1 || l > 32 { + err := CopyTemplateSpaceReqValidationError{ + field: "ProjectCode", + reason: "value length must be between 1 and 32 runes, inclusive", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CopyTemplateSpaceReqMultiError(errors) + } + + return nil +} + +// CopyTemplateSpaceReqMultiError is an error wrapping multiple validation +// errors returned by CopyTemplateSpaceReq.ValidateAll() if the designated +// constraints aren't met. +type CopyTemplateSpaceReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CopyTemplateSpaceReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CopyTemplateSpaceReqMultiError) AllErrors() []error { return m } + +// CopyTemplateSpaceReqValidationError is the validation error returned by +// CopyTemplateSpaceReq.Validate if the designated constraints aren't met. +type CopyTemplateSpaceReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e CopyTemplateSpaceReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e CopyTemplateSpaceReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e CopyTemplateSpaceReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e CopyTemplateSpaceReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e CopyTemplateSpaceReqValidationError) ErrorName() string { + return "CopyTemplateSpaceReqValidationError" +} + +// Error satisfies the builtin error interface +func (e CopyTemplateSpaceReqValidationError) 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 %sCopyTemplateSpaceReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = CopyTemplateSpaceReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = CopyTemplateSpaceReqValidationError{} + +// Validate checks the field values on ListTemplateSpaceCollectReq 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 *ListTemplateSpaceCollectReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTemplateSpaceCollectReq 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 +// ListTemplateSpaceCollectReqMultiError, or nil if none found. +func (m *ListTemplateSpaceCollectReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTemplateSpaceCollectReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if l := utf8.RuneCountInString(m.GetProjectCode()); l < 1 || l > 32 { + err := ListTemplateSpaceCollectReqValidationError{ + field: "ProjectCode", + reason: "value length must be between 1 and 32 runes, inclusive", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListTemplateSpaceCollectReqMultiError(errors) + } + + return nil +} + +// ListTemplateSpaceCollectReqMultiError is an error wrapping multiple +// validation errors returned by ListTemplateSpaceCollectReq.ValidateAll() if +// the designated constraints aren't met. +type ListTemplateSpaceCollectReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTemplateSpaceCollectReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTemplateSpaceCollectReqMultiError) AllErrors() []error { return m } + +// ListTemplateSpaceCollectReqValidationError is the validation error returned +// by ListTemplateSpaceCollectReq.Validate if the designated constraints +// aren't met. +type ListTemplateSpaceCollectReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ListTemplateSpaceCollectReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ListTemplateSpaceCollectReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ListTemplateSpaceCollectReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ListTemplateSpaceCollectReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ListTemplateSpaceCollectReqValidationError) ErrorName() string { + return "ListTemplateSpaceCollectReqValidationError" +} + +// Error satisfies the builtin error interface +func (e ListTemplateSpaceCollectReqValidationError) 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 %sListTemplateSpaceCollectReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ListTemplateSpaceCollectReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ListTemplateSpaceCollectReqValidationError{} + +// Validate checks the field values on CreateTemplateSpaceCollectReq 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 *CreateTemplateSpaceCollectReq) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on UpdateTemplateSpaceReq 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 -// UpdateTemplateSpaceReqMultiError, or nil if none found. -func (m *UpdateTemplateSpaceReq) ValidateAll() error { +// ValidateAll checks the field values on CreateTemplateSpaceCollectReq 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 +// CreateTemplateSpaceCollectReqMultiError, or nil if none found. +func (m *CreateTemplateSpaceCollectReq) ValidateAll() error { return m.validate(true) } -func (m *UpdateTemplateSpaceReq) validate(all bool) error { +func (m *CreateTemplateSpaceCollectReq) validate(all bool) error { if m == nil { return nil } var errors []error - if utf8.RuneCountInString(m.GetId()) != 24 { - err := UpdateTemplateSpaceReqValidationError{ - field: "Id", - reason: "value length must be 24 runes", - } - if !all { - return err - } - errors = append(errors, err) - - } - if l := utf8.RuneCountInString(m.GetProjectCode()); l < 1 || l > 32 { - err := UpdateTemplateSpaceReqValidationError{ + err := CreateTemplateSpaceCollectReqValidationError{ field: "ProjectCode", reason: "value length must be between 1 and 32 runes, inclusive", } @@ -9468,9 +9960,9 @@ func (m *UpdateTemplateSpaceReq) validate(all bool) error { errors = append(errors, err) } - if l := utf8.RuneCountInString(m.GetName()); l < 1 || l > 64 { - err := UpdateTemplateSpaceReqValidationError{ - field: "Name", + if l := utf8.RuneCountInString(m.GetTemplateSpaceID()); l < 1 || l > 64 { + err := CreateTemplateSpaceCollectReqValidationError{ + field: "TemplateSpaceID", reason: "value length must be between 1 and 64 runes, inclusive", } if !all { @@ -9479,22 +9971,20 @@ func (m *UpdateTemplateSpaceReq) validate(all bool) error { errors = append(errors, err) } - // no validation rules for Description - if len(errors) > 0 { - return UpdateTemplateSpaceReqMultiError(errors) + return CreateTemplateSpaceCollectReqMultiError(errors) } return nil } -// UpdateTemplateSpaceReqMultiError is an error wrapping multiple validation -// errors returned by UpdateTemplateSpaceReq.ValidateAll() if the designated -// constraints aren't met. -type UpdateTemplateSpaceReqMultiError []error +// CreateTemplateSpaceCollectReqMultiError is an error wrapping multiple +// validation errors returned by CreateTemplateSpaceCollectReq.ValidateAll() +// if the designated constraints aren't met. +type CreateTemplateSpaceCollectReqMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m UpdateTemplateSpaceReqMultiError) Error() string { +func (m CreateTemplateSpaceCollectReqMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -9503,11 +9993,12 @@ func (m UpdateTemplateSpaceReqMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m UpdateTemplateSpaceReqMultiError) AllErrors() []error { return m } +func (m CreateTemplateSpaceCollectReqMultiError) AllErrors() []error { return m } -// UpdateTemplateSpaceReqValidationError is the validation error returned by -// UpdateTemplateSpaceReq.Validate if the designated constraints aren't met. -type UpdateTemplateSpaceReqValidationError struct { +// CreateTemplateSpaceCollectReqValidationError is the validation error +// returned by CreateTemplateSpaceCollectReq.Validate if the designated +// constraints aren't met. +type CreateTemplateSpaceCollectReqValidationError struct { field string reason string cause error @@ -9515,24 +10006,24 @@ type UpdateTemplateSpaceReqValidationError struct { } // Field function returns field value. -func (e UpdateTemplateSpaceReqValidationError) Field() string { return e.field } +func (e CreateTemplateSpaceCollectReqValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e UpdateTemplateSpaceReqValidationError) Reason() string { return e.reason } +func (e CreateTemplateSpaceCollectReqValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e UpdateTemplateSpaceReqValidationError) Cause() error { return e.cause } +func (e CreateTemplateSpaceCollectReqValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e UpdateTemplateSpaceReqValidationError) Key() bool { return e.key } +func (e CreateTemplateSpaceCollectReqValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e UpdateTemplateSpaceReqValidationError) ErrorName() string { - return "UpdateTemplateSpaceReqValidationError" +func (e CreateTemplateSpaceCollectReqValidationError) ErrorName() string { + return "CreateTemplateSpaceCollectReqValidationError" } // Error satisfies the builtin error interface -func (e UpdateTemplateSpaceReqValidationError) Error() string { +func (e CreateTemplateSpaceCollectReqValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -9544,14 +10035,14 @@ func (e UpdateTemplateSpaceReqValidationError) Error() string { } return fmt.Sprintf( - "invalid %sUpdateTemplateSpaceReq.%s: %s%s", + "invalid %sCreateTemplateSpaceCollectReq.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = UpdateTemplateSpaceReqValidationError{} +var _ error = CreateTemplateSpaceCollectReqValidationError{} var _ interface { Field() string @@ -9559,24 +10050,24 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = UpdateTemplateSpaceReqValidationError{} +} = CreateTemplateSpaceCollectReqValidationError{} -// Validate checks the field values on DeleteTemplateSpaceReq with the rules -// defined in the proto definition for this message. If any rules are +// Validate checks the field values on DeleteTemplateSpaceCollectReq 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 *DeleteTemplateSpaceReq) Validate() error { +func (m *DeleteTemplateSpaceCollectReq) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on DeleteTemplateSpaceReq 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 -// DeleteTemplateSpaceReqMultiError, or nil if none found. -func (m *DeleteTemplateSpaceReq) ValidateAll() error { +// ValidateAll checks the field values on DeleteTemplateSpaceCollectReq 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 +// DeleteTemplateSpaceCollectReqMultiError, or nil if none found. +func (m *DeleteTemplateSpaceCollectReq) ValidateAll() error { return m.validate(true) } -func (m *DeleteTemplateSpaceReq) validate(all bool) error { +func (m *DeleteTemplateSpaceCollectReq) validate(all bool) error { if m == nil { return nil } @@ -9584,7 +10075,7 @@ func (m *DeleteTemplateSpaceReq) validate(all bool) error { var errors []error if utf8.RuneCountInString(m.GetId()) != 24 { - err := DeleteTemplateSpaceReqValidationError{ + err := DeleteTemplateSpaceCollectReqValidationError{ field: "Id", reason: "value length must be 24 runes", } @@ -9596,7 +10087,7 @@ func (m *DeleteTemplateSpaceReq) validate(all bool) error { } if l := utf8.RuneCountInString(m.GetProjectCode()); l < 1 || l > 32 { - err := DeleteTemplateSpaceReqValidationError{ + err := DeleteTemplateSpaceCollectReqValidationError{ field: "ProjectCode", reason: "value length must be between 1 and 32 runes, inclusive", } @@ -9607,19 +10098,19 @@ func (m *DeleteTemplateSpaceReq) validate(all bool) error { } if len(errors) > 0 { - return DeleteTemplateSpaceReqMultiError(errors) + return DeleteTemplateSpaceCollectReqMultiError(errors) } return nil } -// DeleteTemplateSpaceReqMultiError is an error wrapping multiple validation -// errors returned by DeleteTemplateSpaceReq.ValidateAll() if the designated -// constraints aren't met. -type DeleteTemplateSpaceReqMultiError []error +// DeleteTemplateSpaceCollectReqMultiError is an error wrapping multiple +// validation errors returned by DeleteTemplateSpaceCollectReq.ValidateAll() +// if the designated constraints aren't met. +type DeleteTemplateSpaceCollectReqMultiError []error // Error returns a concatenation of all the error messages it wraps. -func (m DeleteTemplateSpaceReqMultiError) Error() string { +func (m DeleteTemplateSpaceCollectReqMultiError) Error() string { var msgs []string for _, err := range m { msgs = append(msgs, err.Error()) @@ -9628,11 +10119,12 @@ func (m DeleteTemplateSpaceReqMultiError) Error() string { } // AllErrors returns a list of validation violation errors. -func (m DeleteTemplateSpaceReqMultiError) AllErrors() []error { return m } +func (m DeleteTemplateSpaceCollectReqMultiError) AllErrors() []error { return m } -// DeleteTemplateSpaceReqValidationError is the validation error returned by -// DeleteTemplateSpaceReq.Validate if the designated constraints aren't met. -type DeleteTemplateSpaceReqValidationError struct { +// DeleteTemplateSpaceCollectReqValidationError is the validation error +// returned by DeleteTemplateSpaceCollectReq.Validate if the designated +// constraints aren't met. +type DeleteTemplateSpaceCollectReqValidationError struct { field string reason string cause error @@ -9640,24 +10132,24 @@ type DeleteTemplateSpaceReqValidationError struct { } // Field function returns field value. -func (e DeleteTemplateSpaceReqValidationError) Field() string { return e.field } +func (e DeleteTemplateSpaceCollectReqValidationError) Field() string { return e.field } // Reason function returns reason value. -func (e DeleteTemplateSpaceReqValidationError) Reason() string { return e.reason } +func (e DeleteTemplateSpaceCollectReqValidationError) Reason() string { return e.reason } // Cause function returns cause value. -func (e DeleteTemplateSpaceReqValidationError) Cause() error { return e.cause } +func (e DeleteTemplateSpaceCollectReqValidationError) Cause() error { return e.cause } // Key function returns key value. -func (e DeleteTemplateSpaceReqValidationError) Key() bool { return e.key } +func (e DeleteTemplateSpaceCollectReqValidationError) Key() bool { return e.key } // ErrorName returns error name. -func (e DeleteTemplateSpaceReqValidationError) ErrorName() string { - return "DeleteTemplateSpaceReqValidationError" +func (e DeleteTemplateSpaceCollectReqValidationError) ErrorName() string { + return "DeleteTemplateSpaceCollectReqValidationError" } // Error satisfies the builtin error interface -func (e DeleteTemplateSpaceReqValidationError) Error() string { +func (e DeleteTemplateSpaceCollectReqValidationError) Error() string { cause := "" if e.cause != nil { cause = fmt.Sprintf(" | caused by: %v", e.cause) @@ -9669,14 +10161,14 @@ func (e DeleteTemplateSpaceReqValidationError) Error() string { } return fmt.Sprintf( - "invalid %sDeleteTemplateSpaceReq.%s: %s%s", + "invalid %sDeleteTemplateSpaceCollectReq.%s: %s%s", key, e.field, e.reason, cause) } -var _ error = DeleteTemplateSpaceReqValidationError{} +var _ error = DeleteTemplateSpaceCollectReqValidationError{} var _ interface { Field() string @@ -9684,7 +10176,7 @@ var _ interface { Key() bool Cause() error ErrorName() string -} = DeleteTemplateSpaceReqValidationError{} +} = DeleteTemplateSpaceCollectReqValidationError{} // Validate checks the field values on GetTemplateMetadataReq with the rules // defined in the proto definition for this message. If any rules are @@ -10004,6 +10496,8 @@ func (m *CreateTemplateMetadataReq) validate(all bool) error { // no validation rules for DraftContent + // no validation rules for DraftEditFormat + if len(errors) > 0 { return CreateTemplateMetadataReqMultiError(errors) } @@ -10152,6 +10646,8 @@ func (m *UpdateTemplateMetadataReq) validate(all bool) error { // no validation rules for DraftContent + // no validation rules for DraftEditFormat + if len(errors) > 0 { return UpdateTemplateMetadataReqMultiError(errors) } @@ -12705,6 +13201,205 @@ var _FetchMultiClusterResourceReq_Order_InLookup = map[string]struct{}{ "desc": {}, } +// Validate checks the field values on FetchMultiClusterApiResourcesReq 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 *FetchMultiClusterApiResourcesReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on FetchMultiClusterApiResourcesReq 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 +// FetchMultiClusterApiResourcesReqMultiError, or nil if none found. +func (m *FetchMultiClusterApiResourcesReq) ValidateAll() error { + return m.validate(true) +} + +func (m *FetchMultiClusterApiResourcesReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if l := utf8.RuneCountInString(m.GetProjectCode()); l < 1 || l > 64 { + err := FetchMultiClusterApiResourcesReqValidationError{ + field: "ProjectCode", + reason: "value length must be between 1 and 64 runes, inclusive", + } + if !all { + return err + } + errors = append(errors, err) + } + + if len(m.GetClusterNamespaces()) < 1 { + err := FetchMultiClusterApiResourcesReqValidationError{ + field: "ClusterNamespaces", + reason: "value must contain at least 1 item(s)", + } + if !all { + return err + } + errors = append(errors, err) + } + + for idx, item := range m.GetClusterNamespaces() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, FetchMultiClusterApiResourcesReqValidationError{ + field: fmt.Sprintf("ClusterNamespaces[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, FetchMultiClusterApiResourcesReqValidationError{ + field: fmt.Sprintf("ClusterNamespaces[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return FetchMultiClusterApiResourcesReqValidationError{ + field: fmt.Sprintf("ClusterNamespaces[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + // no validation rules for OnlyCrd + + // no validation rules for ViewID + + for idx, item := range m.GetLabelSelector() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, FetchMultiClusterApiResourcesReqValidationError{ + field: fmt.Sprintf("LabelSelector[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, FetchMultiClusterApiResourcesReqValidationError{ + field: fmt.Sprintf("LabelSelector[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return FetchMultiClusterApiResourcesReqValidationError{ + field: fmt.Sprintf("LabelSelector[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return FetchMultiClusterApiResourcesReqMultiError(errors) + } + + return nil +} + +// FetchMultiClusterApiResourcesReqMultiError is an error wrapping multiple +// validation errors returned by +// FetchMultiClusterApiResourcesReq.ValidateAll() if the designated +// constraints aren't met. +type FetchMultiClusterApiResourcesReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m FetchMultiClusterApiResourcesReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m FetchMultiClusterApiResourcesReqMultiError) AllErrors() []error { return m } + +// FetchMultiClusterApiResourcesReqValidationError is the validation error +// returned by FetchMultiClusterApiResourcesReq.Validate if the designated +// constraints aren't met. +type FetchMultiClusterApiResourcesReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e FetchMultiClusterApiResourcesReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e FetchMultiClusterApiResourcesReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e FetchMultiClusterApiResourcesReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e FetchMultiClusterApiResourcesReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e FetchMultiClusterApiResourcesReqValidationError) ErrorName() string { + return "FetchMultiClusterApiResourcesReqValidationError" +} + +// Error satisfies the builtin error interface +func (e FetchMultiClusterApiResourcesReqValidationError) 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 %sFetchMultiClusterApiResourcesReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = FetchMultiClusterApiResourcesReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = FetchMultiClusterApiResourcesReqValidationError{} + // Validate checks the field values on FetchMultiClusterCustomResourceReq 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 diff --git a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.proto b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.proto index b9a04bb943..f8071bd762 100644 --- a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.proto +++ b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.proto @@ -1667,6 +1667,52 @@ service TemplateSet { }; } + // 复制模板文件文件夹 + rpc CopyTemplateSpace(CopyTemplateSpaceReq) returns (CommonResp) { + option (google.api.http) = { + post: "/clusterresources/v1/projects/{projectCode}/template/spaces/{id}" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description: "复制模板文件文件夹" + summary: "Copy template space" + }; + } + + // 获取模板文件文件夹收藏列表 + rpc ListTemplateSpaceCollect(ListTemplateSpaceCollectReq) returns (CommonListResp) { + option (google.api.http) = { + get: "/clusterresources/v1/projects/{projectCode}/template/space/collects" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description: "获取模板文件文件夹收藏列表" + summary: "Get template space collect list" + }; + } + + // 创建模板文件文件夹收藏 + rpc CreateTemplateSpaceCollect(CreateTemplateSpaceCollectReq) returns (CommonResp) { + option (google.api.http) = { + post: "/clusterresources/v1/projects/{projectCode}/template/space/{templateSpaceID}/collects" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description: "创建模板文件文件夹收藏" + summary: "Create template space collect" + }; + } + + // 删除模板文件文件夹收藏 + rpc DeleteTemplateSpaceCollect(DeleteTemplateSpaceCollectReq) returns (CommonResp) { + option (google.api.http) = { + delete: "/clusterresources/v1/projects/{projectCode}/template/space/collects/{id}" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description: "删除模板文件文件夹收藏" + summary: "Delete template space collect" + }; + } + // 获取模板文件元数据详情 rpc GetTemplateMetadata(GetTemplateMetadataReq) returns (CommonResp) { option (google.api.http) = { @@ -1911,6 +1957,17 @@ service MultiCluster { }; } + rpc FetchMultiClusterApiResources(FetchMultiClusterApiResourcesReq) returns (CommonResp) { + option (google.api.http) = { + post: "/clusterresources/v1/projects/{projectCode}/multi_cluster_resources/api/resources" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description: "获取多集群原生资源列表" + summary: "Get multi cluster resources" + }; + } + rpc FetchMultiClusterCustomResource(FetchMultiClusterCustomResourceReq) returns (CommonResp) { option (google.api.http) = { post: "/clusterresources/v1/projects/{projectCode}/multi_cluster_resources/{crd}/custom_objects" @@ -2975,6 +3032,9 @@ message ListTemplateSpaceReq { string projectCode = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title: "项目编码" }, (validate.rules).string = {min_len : 1, max_len : 32}]; + string name = 2 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "文件夹名称" + }]; } message CreateTemplateSpaceReq { @@ -3022,6 +3082,51 @@ message DeleteTemplateSpaceReq { }, (validate.rules).string = {min_len : 1, max_len : 32}]; } +message CopyTemplateSpaceReq { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: {title: "CopyTemplateSpaceReq", description: "复制模板文件文件夹"} + }; + string id = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "文件夹 ID" + }, (validate.rules).string = {len : 24}]; + string projectCode = 2 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "项目编码" + }, (validate.rules).string = {min_len : 1, max_len : 32}]; +} + +message ListTemplateSpaceCollectReq { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: {title: "ListTemplateSpaceCollectReq", description: "获取模板文件文件夹收藏列表"} + }; + string projectCode = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "项目编码" + }, (validate.rules).string = {min_len : 1, max_len : 32}]; +} + +message CreateTemplateSpaceCollectReq { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: {title: "CreateTemplateSpaceCollectReq", description: "创建模板文件文件夹收藏"} + }; + string projectCode = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "项目编码" + }, (validate.rules).string = {min_len : 1, max_len : 32}]; + string templateSpaceID = 2 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "模板文件文件夹ID" + }, (validate.rules).string = {min_len : 1, max_len : 64}]; +} + +message DeleteTemplateSpaceCollectReq { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: {title: "DeleteTemplateSpaceCollectReq", description: "删除单个模板文件文件夹收藏"} + }; + string id = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "文件夹 ID" + }, (validate.rules).string = {len : 24}]; + string projectCode = 2 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "项目编码" + }, (validate.rules).string = {min_len : 1, max_len : 32}]; +} + message GetTemplateMetadataReq { option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { json_schema: {title: "GetTemplateMetadataReq", description: "获取模板文件元数据详情"} @@ -3083,6 +3188,9 @@ message CreateTemplateMetadataReq { string draftContent = 11 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title: "模板文件草稿内容" }]; + string draftEditFormat = 12 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "模板文件草稿编辑模式" + }]; } message UpdateTemplateMetadataReq { @@ -3119,6 +3227,9 @@ message UpdateTemplateMetadataReq { string draftContent = 11 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title: "模板文件草稿内容" }]; + string draftEditFormat = 12 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "模板文件草稿编辑模式" + }]; } enum VersionMode { @@ -3434,6 +3545,27 @@ message FetchMultiClusterResourceReq { }, (validate.rules).uint32 = {gte: 0}]; } +message FetchMultiClusterApiResourcesReq { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: {title: "FetchMultiClusterApiResourcesReq", description: "获取多集群api资源请求体"} + }; + string projectCode = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "项目编码" + }, (validate.rules).string = {min_len: 1, max_len: 64}]; + repeated ClusterNamespaces clusterNamespaces = 2 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "集群和命名空间" + }, (validate.rules).repeated = {min_items: 1}]; + bool onlyCrd = 3 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "是否只列出crd资源" + }]; + string viewID = 4 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "viewID" + }]; + repeated LabelSelector labelSelector = 6 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "标签选择器" + }]; +} + message FetchMultiClusterCustomResourceReq { option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { json_schema: {title: "FetchMultiClusterCustomResourceReq", description: "获取多集群自定义资源请求体"} diff --git a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.swagger.json b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.swagger.json index 8321774674..011df26388 100644 --- a/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.swagger.json +++ b/bcs-services/cluster-resources/proto/cluster-resources/cluster-resources.swagger.json @@ -503,6 +503,46 @@ ] } }, + "/clusterresources/v1/projects/{projectCode}/multi_cluster_resources/api/resources": { + "post": { + "summary": "Get multi cluster resources", + "description": "获取多集群原生资源列表", + "operationId": "MultiCluster_FetchMultiClusterApiResources", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clusterresourcesCommonResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "projectCode", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/clusterresourcesFetchMultiClusterApiResourcesReq" + } + } + ], + "tags": [ + "MultiCluster" + ] + } + }, "/clusterresources/v1/projects/{projectCode}/multi_cluster_resources/{crd}/custom_objects": { "post": { "summary": "Get multi cluster custom resources", @@ -913,6 +953,122 @@ ] } }, + "/clusterresources/v1/projects/{projectCode}/template/space/collects": { + "get": { + "summary": "Get template space collect list", + "description": "获取模板文件文件夹收藏列表", + "operationId": "TemplateSet_ListTemplateSpaceCollect", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clusterresourcesCommonListResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "projectCode", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "TemplateSet" + ] + } + }, + "/clusterresources/v1/projects/{projectCode}/template/space/collects/{id}": { + "delete": { + "summary": "Delete template space collect", + "description": "删除模板文件文件夹收藏", + "operationId": "TemplateSet_DeleteTemplateSpaceCollect", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clusterresourcesCommonResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "projectCode", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "TemplateSet" + ] + } + }, + "/clusterresources/v1/projects/{projectCode}/template/space/{templateSpaceID}/collects": { + "post": { + "summary": "Create template space collect", + "description": "创建模板文件文件夹收藏", + "operationId": "TemplateSet_CreateTemplateSpaceCollect", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clusterresourcesCommonResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "projectCode", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "templateSpaceID", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/clusterresourcesCreateTemplateSpaceCollectReq" + } + } + ], + "tags": [ + "TemplateSet" + ] + } + }, "/clusterresources/v1/projects/{projectCode}/template/spaces": { "get": { "summary": "Get template space list", @@ -938,6 +1094,13 @@ "in": "path", "required": true, "type": "string" + }, + { + "name": "name", + "description": "文件夹名称.", + "in": "query", + "required": false, + "type": "string" } ], "tags": [ @@ -1056,6 +1219,50 @@ "TemplateSet" ] }, + "post": { + "summary": "Copy template space", + "description": "复制模板文件文件夹", + "operationId": "TemplateSet_CopyTemplateSpace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clusterresourcesCommonResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "projectCode", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/clusterresourcesCopyTemplateSpaceReq" + } + } + ], + "tags": [ + "TemplateSet" + ] + }, "put": { "summary": "Update template space", "description": "更新模板文件文件夹", @@ -9846,6 +10053,21 @@ "description": "通用响应体,适用于资源型 API 请求返回,如需定义详细的 data 结构则不使用该响应体", "title": "CommonResp" }, + "clusterresourcesCopyTemplateSpaceReq": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "文件夹 ID" + }, + "projectCode": { + "type": "string", + "title": "项目编码" + } + }, + "description": "复制模板文件文件夹", + "title": "CopyTemplateSpaceReq" + }, "clusterresourcesCreateEnvManageReq": { "type": "object", "properties": { @@ -9917,6 +10139,10 @@ "draftContent": { "type": "string", "title": "模板文件草稿内容" + }, + "draftEditFormat": { + "type": "string", + "title": "模板文件草稿编辑模式" } }, "description": "创建模板文件元数据", @@ -9975,6 +10201,21 @@ "description": "创建模板集", "title": "CreateTemplateSetReq" }, + "clusterresourcesCreateTemplateSpaceCollectReq": { + "type": "object", + "properties": { + "projectCode": { + "type": "string", + "title": "项目编码" + }, + "templateSpaceID": { + "type": "string", + "title": "模板文件文件夹ID" + } + }, + "description": "创建模板文件文件夹收藏", + "title": "CreateTemplateSpaceCollectReq" + }, "clusterresourcesCreateTemplateSpaceReq": { "type": "object", "properties": { @@ -10116,6 +10357,39 @@ "description": "Echo API 响应", "title": "EchoResp" }, + "clusterresourcesFetchMultiClusterApiResourcesReq": { + "type": "object", + "properties": { + "projectCode": { + "type": "string", + "title": "项目编码" + }, + "clusterNamespaces": { + "type": "array", + "items": { + "$ref": "#/definitions/clusterresourcesClusterNamespaces" + }, + "title": "集群和命名空间" + }, + "onlyCrd": { + "type": "boolean", + "title": "是否只列出crd资源" + }, + "viewID": { + "type": "string", + "title": "viewID" + }, + "labelSelector": { + "type": "array", + "items": { + "$ref": "#/definitions/clusterresourcesLabelSelector" + }, + "title": "标签选择器" + } + }, + "description": "获取多集群api资源请求体", + "title": "FetchMultiClusterApiResourcesReq" + }, "clusterresourcesFetchMultiClusterCustomResourceReq": { "type": "object", "properties": { @@ -10878,6 +11152,10 @@ "draftContent": { "type": "string", "title": "模板文件草稿内容" + }, + "draftEditFormat": { + "type": "string", + "title": "模板文件草稿编辑模式" } }, "description": "更新模板文件元数据", diff --git a/bcs-services/pkg/bcs-auth/middleware/gomicro.go b/bcs-services/pkg/bcs-auth/middleware/gomicro.go index 6f5c535873..f4e8b8c33c 100644 --- a/bcs-services/pkg/bcs-auth/middleware/gomicro.go +++ b/bcs-services/pkg/bcs-auth/middleware/gomicro.go @@ -126,15 +126,15 @@ func (g *GoMicroAuth) AuthorizationFunc(fn server.HandlerFunc) server.HandlerFun return fn(ctx, req, rsp) } - if len(authUser.Username) == 0 { - return errors.New("username is empty") - } - if g.checkUserPerm == nil { return errors.New("check user permission function is not set") } - if allow, err := g.checkUserPerm(ctx, req, authUser.Username); err != nil { + if len(authUser.GetUsername()) == 0 { + return errors.New("username & clientName is empty") + } + + if allow, err := g.checkUserPerm(ctx, req, authUser.GetUsername()); err != nil { return err } else if !allow { return errors.New("user not authorized") diff --git a/bcs-ui/frontend/.gitignore b/bcs-ui/frontend/.gitignore index 6ec675ff2e..563caeb597 100644 --- a/bcs-ui/frontend/.gitignore +++ b/bcs-ui/frontend/.gitignore @@ -92,3 +92,4 @@ build.yml .prod.env .sg.env .bkce.env +.debug.env \ No newline at end of file diff --git a/bcs-ui/frontend/.vscode/settings.json b/bcs-ui/frontend/.vscode/settings.json index 7898e1e29d..9ebdb4c40a 100644 --- a/bcs-ui/frontend/.vscode/settings.json +++ b/bcs-ui/frontend/.vscode/settings.json @@ -10,4 +10,6 @@ "typescript", "vue" ], + "bk-code-ai.enable": false, + "vue.codeActions.enabled": false, } \ No newline at end of file diff --git a/bcs-ui/frontend/bk.config.js b/bcs-ui/frontend/bk.config.js index a949b17aaf..d0e6c5ff95 100644 --- a/bcs-ui/frontend/bk.config.js +++ b/bcs-ui/frontend/bk.config.js @@ -36,34 +36,33 @@ module.exports = { devServer: { hot: true, host: process.env.BK_LOCAL_HOST, - https: true, + server: 'https', client: { webSocketURL: { port: process.env.BK_PORT || 8004 - } - }, - proxy: { - '/api': { - target: process.env.BK_PROXY_DEVOPS_BCS_API_URL, - changeOrigin: true, - secure: false }, - '/change_log': { - target: process.env.BK_PROXY_DEVOPS_BCS_API_URL, - changeOrigin: true, - secure: false + overlay: false + }, + proxy: [ + { + context: ['/api', '/change_log'], + target: process.env.BK_PROXY_DEVOPS_BCS_API_URL, + changeOrigin: true, + secure: false }, - '/bcsapi/v4': { - target: process.env.BK_BCS_API_HOST, - changeOrigin: true, - secure: false + { + context: ['/bcsapi/v4'], + target: process.env.BK_BCS_API_HOST, + changeOrigin: true, + secure: false }, - '/bcsadmin/cvmcapacity': { + { + context: ['/bcsadmin/cvmcapacity'], target: process.env.BK_SRE_HOST, changeOrigin: true, secure: false } - } + ] }, plugins: [ new HtmlWebpackPlugin({ diff --git a/bcs-ui/frontend/package.json b/bcs-ui/frontend/package.json index 3031b44870..2195258c39 100644 --- a/bcs-ui/frontend/package.json +++ b/bcs-ui/frontend/package.json @@ -10,21 +10,23 @@ "lint": "eslint --fix --ext .js,.vue,.ts,.tsx src" }, "dependencies": { + "@blueking/ai-blueking": "0.2.0-beta.16", "@blueking/bk-trace": "0.0.1", - "@blueking/bkui-form": "0.0.39", + "@blueking/bkui-form": "0.0.42-beta.10", "@blueking/bkui-library": "^0.0.0-beta.6", "@blueking/ip-selector": "0.2.0-beta.1", "@blueking/login-modal": "^1.0.2", - "@blueking/notice-component-vue2": "^2.0.4", - "@blueking/task-log": "^0.0.1", + "@blueking/notice-component-vue2": "^2.0.5", "@blueking/platform-config": "^1.0.5", + "@blueking/task-log": "^0.0.1", "@blueking/user-selector": "^1.0.9", "axios": "^1.6.2", "base-64": "^0.1.0", - "bk-magic-vue": "2.5.8-beta.11", + "bk-magic-vue": "2.5.9-beta.27", "brace": "~0.11.1", "clipboard": "~2.0.4", "cookie": "~0.4.0", + "dayjs": "^1.11.12", "decimal.js": "~10.2.0", "diff": "^4.0.1", "diff2html": "^3.4.45", @@ -50,7 +52,7 @@ }, "devDependencies": { "@blueking/babel-preset-bk": "2.1.0-beta.10", - "@blueking/cli-service-webpack": "0.0.1-beta.11", + "@blueking/cli-service-webpack": "0.0.5-beta.4", "@blueking/eslint-config-bk": "2.1.0-beta.18", "@types/lodash": "^4.14.195", "compression-webpack-plugin": "^10.0.0", diff --git a/bcs-ui/frontend/src/@types/api.d.ts b/bcs-ui/frontend/src/@types/api.d.ts index 12d8cd3541..530e5c1a75 100644 --- a/bcs-ui/frontend/src/@types/api.d.ts +++ b/bcs-ui/frontend/src/@types/api.d.ts @@ -62,3 +62,15 @@ interface IFieldItem { status: 'added' | ''// added: 已经添加的条件, 空: 为添加的条件 placeholder?: string } + +// 获得函数参数类型的辅助类型 +type ParamTypes = T extends (...args: infer P) => any ? P : never; + +type MakeOptional = Omit & Partial>; + +interface IFetchConfig { + needRes?: boolean// 是否需要返回原始资源 + cancelPrevious?: boolean// 是否需要上一次重复的请求 + cancelWhenRouteChange?: boolean// 当前路由切换时当前请求可以被取消 + globalError?: boolean // 捕获全局异常 +} diff --git a/bcs-ui/frontend/src/@types/cluster-resource-patch.ts b/bcs-ui/frontend/src/@types/cluster-resource-patch.ts new file mode 100644 index 0000000000..a1abb02c40 --- /dev/null +++ b/bcs-ui/frontend/src/@types/cluster-resource-patch.ts @@ -0,0 +1,60 @@ +export interface ITemplateSpaceData { + 'description': string + 'id': string + 'name': string + 'projectCode': string +} + +export interface ISchemaData { + layout: Array> + rules: Record + schema: any +} + +export interface IListTemplateMetadataItem { + 'createAt': number + 'creator': string + 'description': string + 'id': string + 'name': string + 'projectCode': string + 'resourceType': string + 'tags': string[] + 'templateSpace': string + templateSpaceID: string + 'updateAt': number + 'updator': string + 'version': string + versionID: string + 'versionMode': number + draftContent: string + draftVersion: string + isDraft: boolean + draftEditFormat: 'form' | 'yaml' +} + +export interface ITemplateVersionItem { + 'content': string + 'createAt': number + 'creator': string + 'description': string + 'id': string + 'projectCode': string + 'templateName': string + 'templateSpace': string + 'version': string + 'draft': boolean + 'editFormat': 'form' | 'yaml' +} + +export interface IVarItem { + key: string + value: string + readonly: boolean +} + +export interface IPreviewItem { + content: string + kind: string + name: string +} diff --git a/bcs-ui/frontend/src/@types/cluster-resource.d.ts b/bcs-ui/frontend/src/@types/cluster-resource.d.ts new file mode 100644 index 0000000000..6aef43ab58 --- /dev/null +++ b/bcs-ui/frontend/src/@types/cluster-resource.d.ts @@ -0,0 +1,532 @@ +/* eslint-disable @typescript-eslint/no-empty-interface */ +// 自动生成的, 请勿手动编辑!!! +declare namespace ClusterResource { + export interface EchoReq { + str: string // 待回显字符串,长度在 2-30 之间,仅包含大小写字母及数字 + } + export interface EchoResp { + ret: string // 回显字符串 + } + export interface PingReq { + } + export interface PingResp { + ret: string // Pong + } + export interface HealthzReq { + raiseErr: boolean // 存在依赖服务异常的情况,是否返回错误(默认只在响应体中标记) + token: string // Healthz API Token + } + export interface HealthzResp { + callTime: string // API 请求时间 + status: string // 服务状态 + redis: string // Redis 状态 + } + export interface VersionReq { + } + export interface VersionResp { + version: string // 服务版本 + gitCommit: string // 最新 Commit ID + buildTime: string // 构建时间 + goVersion: string // Go 版本 + runMode: string // 运行模式 + callTime: string // API 请求时间 + } + export interface ResListReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + labelSelector: string // 标签选择器 + apiVersion: string // apiVersion + ownerName: string // 所属资源名称 + ownerKind: string // 所属资源类型 + format: string // 资源配置格式(manifest/selectItems) + scene: string // 仅 selectItems 格式下有效 + } + export interface ResGetReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $name: string // 资源名称 + apiVersion: string // apiVersion + format: string // 资源配置格式(manifest/formData) + } + export interface ResCreateReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + rawData: any // 资源配置信息 + format: string // 资源配置格式(manifest/formData) + } + export interface ResUpdateReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $name: string // 资源名称 + rawData: any // 资源配置信息 + format: string // 资源配置格式(manifest/formData) + } + export interface ResRestartReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $name: string // 资源名称 + } + export interface ResPauseOrResumeReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $name: string // 资源名称 + $value: boolean // 暂停或者恢复(true暂停,false恢复) + } + export interface ResScaleReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $name: string // 资源名称 + replicas: number // 副本数量(0-8192) + } + export interface ResDeleteReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $name: string // 资源名称 + } + export interface GetResHistoryReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $name: string // 资源名称 + } + export interface RolloutRevisionReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $name: string // 资源名称 + $revision: number // revision 版本 + } + export interface ResBatchRescheduleReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $name: string // 资源名称 + labelSelector: string // 标签选择器 + podNames: string[] // 待重新调度 Pod 名称列表 + } + export interface ListPoByNodeReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $nodeName: string // 节点名称 + } + export interface ContainerListReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $podName: string // Pod 名称 + } + export interface ContainerGetReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + $namespace: string // 命名空间 + $podName: string // Pod 名称 + $containerName: string // 容器名称 + } + export interface GetK8SResTemplateReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + kind: string // 资源类型 + namespace: string // 命名空间 + } + export interface CObjListReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + cRDName: string // CRD 名称 + namespace: string // 命名空间 + format: string // 资源配置格式(manifest/selectItems) + scene: string // 仅 selectItems 格式下有效 + } + export interface CObjGetReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + cRDName: string // CRD 名称 + $cobjName: string // 自定义资源名称 + namespace: string // 命名空间 + format: string // 资源配置格式(manifest/formData) + } + export interface CObjHistoryReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + cRDName: string // CRD 名称 + $cobjName: string // 自定义资源名称 + namespace: string // 命名空间 + } + export interface CObjRestartReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + cRDName: string // CRD 名称 + $cobjName: string // 自定义资源名称 + namespace: string // 命名空间 + } + export interface CObjRolloutReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + cRDName: string // CRD 名称 + $cobjName: string // 自定义资源名称 + namespace: string // 命名空间 + $revision: number // revision 版本 + } + export interface CObjCreateReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + cRDName: string // CRD 名称 + rawData: any // 资源配置信息 + format: string // 资源配置格式(manifest/formData) + } + export interface CObjUpdateReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + cRDName: string // CRD 名称 + $cobjName: string // 自定义资源名称 + namespace: string // 命名空间 + rawData: any // 资源配置信息 + format: string // 资源配置格式(manifest/formData) + } + export interface CObjScaleReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + namespace: string // 命名空间 + cRDName: string // CRD 名称 + $cobjName: string // 自定义资源名称 + replicas: number // 副本数量(0-8192) + } + export interface CObjDeleteReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + cRDName: string // CRD 名称 + $cobjName: string // 自定义资源名称 + namespace: string // 命名空间 + } + export interface CObjBatchRescheduleReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + namespace: string // 命名空间 + cRDName: string // CRD 名称 + $cobjName: string // 自定义资源名称 + labelSelector: string // 标签选择器 + podNames: string[] // 待重新调度 Pod 名称列表 + } + export interface CommonResp { + code: number // 返回错误码 + message: string // 返回错误信息 + requestID: string // 请求 ID + data: any // 资源信息 + webAnnotations: any // web 注解 + } + export interface CommonListResp { + code: number // 返回错误码 + message: string // 返回错误信息 + requestID: string // 请求 ID + data: any[] // 资源信息 + webAnnotations: any // web 注解 + } + export interface SubscribeReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + resourceVersion: string // 资源版本号 + kind: string // 资源类型 + cRDName: string // CRD 名称 + apiVersion: string // API 版本 + namespace: string // 命名空间 + } + export interface SubscribeResp { + code: number // 返回错误码 + message: string // 返回错误信息 + kind: string // 资源类型 + type: string // 操作类型 + uid: string // 唯一标识 + manifest: any // 资源配置信息 + manifestExt: any // 资源扩展信息 + } + export interface InvalidateDiscoveryCacheReq { + projectID: string // 项目 ID + clusterID: string // 集群 ID + authToken: string // AuthToken + } + export interface FormRenderPreviewReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + kind: string // 资源类型 + formData: any // 表单化数据 + } + export interface FormData { + apiVersion: string // api版本 + kind: string // 资源类型 + formData: any // 表单化数据 + } + export interface FormToYAMLReq { + $projectCode?: string // 项目编码 + resources: FormData[] // 资源列表 + } + export interface YAMLToFormReq { + $projectCode?: string // 项目编码 + yaml: string // YAML 数据 + } + export interface FormResourceType { + apiVersion: string // 资源版本 + kind: string // 资源类型 + } + export interface GetMultiResFormSchemaReq { + $projectCode?: string // 项目编码 + resourceTypes: FormResourceType[] // 资源类型 + } + export interface GetResFormSchemaReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + kind: string // 资源类型 + namespace: string // 命名空间 + action: string // 模板使用场景(如表单创建,表单更新等) + } + export interface GetFormSupportedApiVersionsReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + kind: string // 资源类型 + } + export interface GetResSelectItemsReq { + $projectId?: string // 项目 ID + $clusterId: string // 集群 ID + kind: string // 资源类型 + // NOTE 目前使用该 API 的请求资源都有命名空间,因此先加上 min_len == 1 的限制 + namespace: string // 命名空间 + scene: string // 使用场景 + } + export interface ListViewConfigsReq { + $projectCode?: string // 项目编码 + } + export interface GetViewConfigReq { + $id: string // 视图 ID + $projectCode?: string // 项目编码 + } + export interface ViewFilter { + name: string + creator: string[] + labelSelector: LabelSelector[] + } + export interface CreateViewConfigReq { + $projectCode?: string // 项目编码 + clusterNamespaces: ClusterNamespaces[] // 集群和命名空间 + name: string // 视图名称 + filter: ViewFilter // 筛选条件 + saveAs: boolean // 另存为 + } + export interface UpdateViewConfigReq { + $id: string // 视图 ID + $projectCode?: string // 项目编码 + clusterNamespaces: ClusterNamespaces[] // 集群和命名空间 + name: string // 视图名称 + filter: ViewFilter // 筛选条件 + } + export interface RenameViewConfigReq { + $id: string // 视图 ID + $projectCode?: string // 项目编码 + name: string // 视图名称 + } + export interface DeleteViewConfigReq { + $id: string // 视图 ID + $projectCode?: string // 项目编码 + } + export interface ViewSuggestReq { + $projectCode?: string // 项目编码 + clusterNamespaces: ClusterNamespaces[] // 集群和命名空间 + label: string // 标签 + } + export interface ClusterNamespaces { + clusterID: string // 集群 ID + namespaces: string[] + } + export interface LabelSelector { + key: string // key + op: string // op + values: string[] // values + } + export interface GetTemplateSpaceReq { + $id: string // 文件夹 ID + $projectCode?: string // 项目编码 + } + export interface ListTemplateSpaceReq { + $projectCode?: string // 项目编码 + } + export interface CreateTemplateSpaceReq { + $projectCode?: string // 项目编码 + name: string // 文件夹名称 + description: string // 文件夹描述 + } + export interface UpdateTemplateSpaceReq { + $id: string // 文件夹 ID + $projectCode?: string // 项目编码 + name: string // 文件夹名称 + description: string // 文件夹描述 + } + export interface DeleteTemplateSpaceReq { + $id: string // 文件夹 ID + $projectCode?: string // 项目编码 + } + export interface GetTemplateMetadataReq { + $id: string // 模板元数据 ID + $projectCode?: string // 项目编码 + } + export interface ListTemplateMetadataReq { + $projectCode?: string // 项目编码 + $templateSpaceID: string // 模板文件文件夹 + } + export interface CreateTemplateMetadataReq { + $projectCode?: string // 项目编码 + name: string // 模板文件元数据名称 + description: string // 模板文件元数据描述 + $templateSpaceID: string // 模板文件文件夹 + tags: string[] // 模板文件元数据标签 + versionDescription: string // 模板文件版本描述 + version: string // 模板文件版本 + content: string // 模板文件版本Content + isDraft: boolean // 是否草稿 + draftVersion: string // 基于模板文件版本 + draftContent: string // 模板文件草稿内容 + draftEditFormat: 'form' | 'yaml' | undefined // 草稿态编辑格式 + } + export interface UpdateTemplateMetadataReq { + $id: string // 模板文件元数据 ID + $projectCode?: string // 项目编码 + name: string // 模板文件元数据名称 + description: string // 模板文件元数据描述 + tags: string[] // 模板文件元数据标签 + version: string // 模板文件版本 + versionMode: any // 模板文件版本模式 + isDraft: boolean // 是否草稿 + draftVersion: string // 基于模板文件版本 + draftContent: string // 模板文件草稿内容 + draftEditFormat?: 'form' | 'yaml' | undefined // 草稿态编辑格式 + } + export interface DeleteTemplateMetadataReq { + $id: string // 模板文件元数据 ID + $projectCode?: string // 项目编码 + } + export interface GetTemplateVersionReq { + $id: string // 模板文件版本 ID + $projectCode?: string // 项目编码 + } + export interface GetTemplateContentReq { + $projectCode?: string // 项目编码 + templateSpace: string // 模板文件文件夹名称 + templateName: string // 模板文件元数据名称 + version: string // 模板文件版本 + } + export interface ListTemplateVersionReq { + $projectCode?: string // 项目编码 + $templateID: string // 模板文件元数据ID + } + export interface CreateTemplateVersionReq { + $projectCode?: string // 项目编码 + description: string // 模板文件版本描述 + version: string // 模板文件版本 + editFormat: string // 编辑模式 + content: string // 模板文件版本Content + $templateID: string // 模板文件元数据ID + force: boolean // 能否被覆盖 + } + export interface DeleteTemplateVersionReq { + $id: string // 模板文件版本 ID + $projectCode?: string // 项目编码 + } + export interface CreateTemplateSetReq { + name: string // 模板集名称 + description: string // 模板集描述 + $projectCode?: string // 项目编码 + version: string // 模板集版本 + category: string // 模板集分类 + keywords: string[] // 模板集关键字 + readme: string // 模板集 README + templates: TemplateID[] // 模板集包含的模板 + values: string // 模板集默认值 + force: boolean // 是否覆盖 + } + export interface TemplateID { + templateSpace: string // 模板文件文件夹名称 + templateName: string // 模板文件元数据名称 + version: string // 模板文件版本 + } + export interface ListTemplateFileVariablesReq { + $projectCode?: string // 项目编码 + templateVersions: string[] // 模板文件列表 + clusterID: string // 集群 ID + namespace: string // 命名空间 + } + export interface DeployTemplateFileReq { + $projectCode?: string // 项目编码 + templateVersions: string[] // 模板文件列表 + variables: Record // 模板文件变量值 + clusterID: string // 集群 ID + namespace: string // 命名空间 + } + export interface GetEnvManageReq { + $id: string // 环境管理 ID + $projectCode?: string // 项目编码 + } + export interface ListEnvManagesReq { + $projectCode?: string // 项目编码 + } + export interface CreateEnvManageReq { + $projectCode?: string // 项目编码 + env: string // 环境名称 + clusterNamespaces: ClusterNamespaces[] // 关联命名空间 + } + export interface UpdateEnvManageReq { + $id: string // 环境管理 ID + $projectCode?: string // 项目编码 + clusterNamespaces: ClusterNamespaces[] // 关联命名空间 + env: string // 环境名称 + } + export interface RenameEnvManageReq { + $id: string // 环境管理 ID + $projectCode?: string // 项目编码 + env: string // 环境名称 + } + export interface DeleteEnvManageReq { + $id: string // 环境管理 ID + $projectCode?: string // 项目编码 + } + export interface FetchMultiClusterResourceReq { + $projectCode?: string // 项目编码 + clusterNamespaces: ClusterNamespaces[] // 集群和命名空间 + $kind: string // 资源类型 + viewID: string // viewID + creator: string[] // creator + labelSelector: LabelSelector[] // 标签选择器 + name: string // name + ip: string // ip + status: string[] // status + sortBy: string // sortBy + order: string // desc + limit: number // limit + offset: number // offset + } + export interface FetchMultiClusterCustomResourceReq { + $projectCode?: string // 项目编码 + clusterNamespaces: ClusterNamespaces[] // 集群和命名空间 + $crd: string // crd + viewID: string // viewID + creator: string[] // creator + labelSelector: LabelSelector[] // 标签选择器 + name: string // name + ip: string // ip + status: string[] // status + sortBy: string // sortBy + order: string // desc + limit: number // limit + offset: number // offset + } + export interface MultiClusterResourceCountReq { + $projectCode?: string // 项目编码 + clusterNamespaces: ClusterNamespaces[] // 集群和命名空间 + viewID: string // viewID + creator: string[] // creator + labelSelector: LabelSelector[] // 标签选择器 + name: string // name + } +} diff --git a/bcs-ui/frontend/src/@types/helm-manager.d.ts b/bcs-ui/frontend/src/@types/helm-manager.d.ts new file mode 100644 index 0000000000..8664608ac8 --- /dev/null +++ b/bcs-ui/frontend/src/@types/helm-manager.d.ts @@ -0,0 +1,635 @@ +/* eslint-disable @typescript-eslint/no-empty-interface */ +// 自动生成的, 请勿手动编辑!!! +// interface CommonResp { +// code: number | undefined // 返回错误码 +// message: string | undefined // 返回错误信息 +// result: boolean | undefined // 返回结果 +// data: any | undefined // 返回数据 +// requestID: string | undefined // requestID +// webAnnotations: WebAnnotations | undefined // 权限信息 +// } +// interface CommonListResp { +// code: number | undefined // 返回错误码 +// message: string | undefined // 返回错误信息 +// result: boolean | undefined // 返回结果 +// data: any[] | undefined // 返回数据 +// requestID: string | undefined // requestID +// webAnnotations: WebAnnotations | undefined // 权限信息 +// } +interface WebAnnotations { + perms: any | undefined // 权限信息 +} +interface AvailableReq { +} +interface AvailableResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 +} +interface CreateRepositoryReq { + $projectCode?: string | undefined // 项目代码 + name: string | undefined // 仓库名称 + type: string | undefined // 仓库类型,HELM(Helm仓库), GENERIC(通用二进制文件仓库) + takeover: boolean | undefined // 是否为接管已存在的仓库 + repoURL: string | undefined // 接管仓库的仓库地址 + username: string | undefined // 接管仓库的用户名 + password: string | undefined // 接管仓库的密码 + remote: boolean | undefined // 是否为远程仓库 + remoteURL: string | undefined // 远程仓库地址 + remoteUsername: string | undefined // 远程仓库用户名 + remotePassword: string | undefined // 远程仓库密码 + displayName: string | undefined // 展示名称 +} +interface CreateRepositoryResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Repository | undefined // 创建的仓库信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface CreatePersonalRepoReq { + $projectCode?: string | undefined // 项目代码 +} +interface CreatePersonalRepoResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Repository | undefined // 创建的仓库信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface UpdateRepositoryReq { + $projectCode?: string | undefined // 项目代码 + $name: string | undefined // 仓库名称 + type: string | undefined // 仓库类型 + remote: boolean | undefined // 是否为远程仓库 + remoteURL: string | undefined // 远程仓库地址 + username: string | undefined // 用户名 + password: string | undefined // 密码 +} +interface UpdateRepositoryResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Repository | undefined // 更新的仓库信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface GetRepositoryReq { + $projectCode?: string | undefined // 项目代码 + $name: string | undefined // 仓库名称 +} +interface GetRepositoryResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Repository | undefined // 查询的仓库信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface ListRepositoryReq { + $projectCode?: string | undefined // 项目代码 +} +interface ListRepositoryResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Repository[] // 仓库列表 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface DeleteRepositoryReq { + $projectCode?: string | undefined // 项目代码 + $name: string | undefined // 仓库名称 +} +interface DeleteRepositoryResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface Repository { + $projectCode?: string | undefined // 项目代码 + name: string | undefined // 仓库名称 + type: string | undefined // 仓库类型 + repoURL: string | undefined // 当前仓库的url + username: string | undefined // 用户名 + password: string | undefined // 密码 + remote: boolean | undefined // 是否为远程仓库 + remoteURL: string | undefined // 远程仓库地址 + remoteUsername: string | undefined // 远程仓库username + remotePassword: string | undefined // 远程仓库password + createBy: string | undefined // 创建者 + updateBy: string | undefined // 更新者 + createTime: string | undefined // 创建时间 + updateTime: string | undefined // 更新时间 + displayName: string | undefined // 展示名称 + public: boolean | undefined // 是否是公共仓库 +} +interface ChartListData { + page: number | undefined // 页数 + size: number | undefined // 每页数量 + total: number | undefined // 总数 + data: Chart[] // 查询的仓库信息 +} +interface Chart { + $projectId?: string | undefined // 项目id + repository: string | undefined // 仓库名称 + type: string | undefined // 仓库类型 + key: string | undefined // chart key + name: string | undefined // chart名称 + latestVersion: string | undefined // 最新的chart version + latestAppVersion: string | undefined // 最新的app version + latestDescription: string | undefined // 最新的description + createBy: string | undefined // 创建者 + updateBy: string | undefined // 更新者 + createTime: string | undefined // 创建时间 + updateTime: string | undefined // 更新时间 + $projectCode?: string | undefined // 项目代号 + icon: string | undefined // chart图标 +} +interface ChartVersionListData { + page: number | undefined // 页数 + size: number | undefined // 每页数量 + total: number | undefined // 总数 + data: ChartVersion[] // 查询的chart版本列表 +} +interface ChartVersion { + name: string | undefined // chart name + version: string | undefined // chart version + appVersion: string | undefined // chart app version + description: string | undefined // chart description + createBy: string | undefined // 创建者 + updateBy: string | undefined // 更新者 + createTime: string | undefined // 创建时间 + updateTime: string | undefined // 更新时间 + url: string | undefined // chart url +} +interface ChartDetail { + name: string | undefined // chart名称 + version: string | undefined // chart版本 + readme: string | undefined // chart自述 + valuesFile: string[] // values文件列表 + contents: Record // chart包所含文件 + url: string | undefined // chart url +} +interface FileContent { + name: string | undefined // 文件名 + path: string | undefined // 文件相对chart包入口的路径 + content: string | undefined // 文件内容 +} +interface ListChartV1Req { + page: number | undefined // 页数 + size: number | undefined // 每页数量 + $projectCode?: string // 项目代码 + $repoName: string // 仓库名称 + name: string | undefined // chart 名称,支持模糊搜索 +} +interface ListChartV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: ChartListData | undefined // 查询的chart的信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface GetChartDetailV1Req { + $projectCode?: string // 项目代码 + $repoName: string // 仓库名称 + $name: string // chart名称 +} +interface GetChartDetailV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Chart | undefined // chart包详细信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface ListChartVersionV1Req { + page: number | undefined // 页数 + size: number | undefined // 每页数量 + $projectCode?: string // 项目代码 + $repoName: string // 仓库名称 + $name: string // chart名称 +} +interface ListChartVersionV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: ChartVersionListData | undefined // 查询的chart的版本信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface GetVersionDetailV1Req { + $projectCode?: string // 项目代码 + $repoName: string // 仓库名称 + $name: string // chart名称 + $version: string // chart版本 +} +interface GetVersionDetailV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: ChartDetail | undefined // 查询指定版本的chart包详细信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface DeleteChartReq { + $projectCode?: string // 项目代码 + $repoName: string // 仓库名称 + $name: string // chart名称 +} +interface DeleteChartResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface DeleteChartVersionReq { + $projectCode?: string // 项目代码 + $repoName: string // 仓库名称 + $name: string // chart名称 + $version: string // chart版本 +} +interface DeleteChartVersionResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface DownloadChartReq { + $projectCode?: string // 项目代码 + $repoName: string // 仓库名称 + $name: string // chart名称 + $version: string // chart版本 +} +interface UploadChartReq { + $projectCode?: string | undefined // 项目代码 + repoName: string | undefined // 仓库名称 + file: number | undefined // file 上传文件 + version: string | undefined // chart版本 + force: boolean | undefined // 是否强制上传 +} +interface UploadChartResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface GetChartReleaseReq { + $projectCode?: string | undefined // 项目代码 + $repoName: string | undefined // 仓库名称 + $name: string | undefined // chart名称 + versions: string[] // chart版本, 不传版本则获取所有版本的 release +} +interface GetChartReleaseResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Release[] // release信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface ImportClusterReleaseReq { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 集群ID + $namespace: string | undefined // 查询目标namespace + $name: string | undefined // 查询目标name + repoName: string | undefined // 仓库名称 + chartName: string | undefined // chart名称 +} +interface ImportClusterReleaseResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface ReleaseListData { + page: number | undefined // 页数 + size: number | undefined // 每页数量 + total: number | undefined // 总数 + data: Release[] // 查询的chart release列表 +} +interface Release { + name: string | undefined // chart release名称 + namespace: string | undefined // 所在的namespace + revision: number | undefined // 所处于的版本 + status: string | undefined // 当前的状态 + chart: string | undefined // chart名称 + appVersion: string | undefined // 所处于的app version + updateTime: string | undefined // 更新时间 + chartVersion: string | undefined // chart的版本 + createBy: string | undefined // 创建者 + updateBy: string | undefined // 更新者 + message: string | undefined // 报错消息 + repo: string | undefined // chart 仓库 + iamNamespaceID: string | undefined // iamNamespaceID + $projectCode?: string | undefined // 项目编码 + $clusterId: string | undefined // 集群 ID + env: string | undefined // 环境 +} +interface ReleaseDetail { + name: string | undefined // chart release名称 + namespace: string | undefined // 所在的namespace + revision: number | undefined // 所处于的版本 + status: string | undefined // 当前的状态 + chart: string | undefined // chart名称 + appVersion: string | undefined // 所处于的app version + updateTime: string | undefined // 更新时间 + chartVersion: string | undefined // chart的版本 + values: string[] // 当前revision部署时的values文件 + description: string | undefined // release 描述 + notes: string | undefined // release notes + args: string[] // 当前revision部署时的 helm 参数 + createBy: string | undefined // 创建者 + updateBy: string | undefined // 更新者 + message: string | undefined // 报错消息 + repo: string | undefined // chart 仓库 + valueFile: string | undefined // value 文件,上一次更新使用的文件 +} +interface ListReleaseV1Req { + $projectCode?: string // 项目代码 + $clusterId: string // 集群ID + namespace: string | undefined // 指定命名空间查询,默认全部命名空间 + name: string | undefined // 指定 release 名称查询,支持正则表达式,如 'ara[a-z]+' 可以搜索到 maudlin-arachnid + page: number | undefined // 页数 + size: number | undefined // 每页数量 +} +interface ListReleaseV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: ReleaseListData | undefined // 指定集群的chart release信息 + webAnnotations: WebAnnotations | undefined // 返回数据 + requestID: string | undefined // requestID +} +interface GetReleaseDetailV1Req { + $projectCode?: string // 项目代码 + $clusterId: string // 集群ID + $namespace: string // 查询目标namespace + $name: string // 查询目标name +} +interface GetReleaseDetailV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: ReleaseDetail | undefined // 指定release信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface InstallReleaseV1Req { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 所在的集群ID + $namespace: string | undefined // 所在的namespace + $name: string | undefined // chart release名称 + repository: string | undefined // chart所属的仓库 + chart: string | undefined // chart名称 + version: string | undefined // chart版本 + values: string[] // values文件内容, 越靠后优先级越高 + args: string[] // 额外的参数 + valueFile: string | undefined // value 文件,上一次更新使用的文件 + operator: string | undefined // 操作者 + env: string | undefined // 环境 +} +interface InstallReleaseV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface UninstallReleaseV1Req { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 所在的集群ID + $namespace: string | undefined // 所在的namespace + $name: string | undefined // chart release名称 +} +interface UninstallReleaseV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface UpgradeReleaseV1Req { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 所在的集群ID + $namespace: string | undefined // 所在的namespace + $name: string | undefined // chart release名称 + repository: string | undefined // chart所属的仓库 + chart: string | undefined // chart名称 + version: string | undefined // chart版本 + values: string[] // values文件, 越靠后优先级越高 + args: string[] // 额外的参数 + valueFile: string | undefined // value 文件,上一次更新使用的文件 + operator: string | undefined // 操作者 + env: string | undefined // 环境 +} +interface UpgradeReleaseV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface RollbackReleaseV1Req { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 所在的集群ID + $namespace: string | undefined // 所在的namespace + $name: string | undefined // chart release名称 + revision: number | undefined // 要回滚到的revision +} +interface RollbackReleaseV1Resp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface ReleasePreviewReq { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 所在的集群ID + $namespace: string | undefined // 所在的namespace + $name: string | undefined // chart release名称 + repository: string | undefined // chart所属的仓库 + chart: string | undefined // chart名称 + version: string | undefined // chart版本 + values: string[] // values文件, 越靠后优先级越高 + args: string[] // 额外的参数 + revision: number | undefined // release revision 版本, 如果revision为0, 则对比当前渲染结果和已部署的最新版本, 如果不为0, 则对比最新版本和指定版本 +} +interface ReleasePreviewResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: ReleasePreview | undefined // 返回数据 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface ReleasePreview { + newContents: Record // 新版本 release manifest 内容,根据资源类型分类,键格式:{Kind}/{name} + oldContents: Record // 旧版本 release manifest 内容,根据资源类型分类,键格式:{Kind}/{name} + newContent: string | undefined // 新版本 release manifest 内容 + oldContent: string | undefined // 旧版本 release manifest 内容 +} +interface GetReleaseHistoryReq { + $name: string // chart release名称 + $namespace: string // 所在的namespace + $clusterId: string // 所在的集群ID + $projectCode?: string // 项目代码 + filter: string | undefined // 状态过滤 +} +interface GetReleaseHistoryResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: ReleaseHistory[] // release history + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface ReleaseHistory { + revision: number | undefined // release revision + name: string | undefined // release name + namespace: string | undefined // release namespace + updateTime: string | undefined // 更新时间 + description: string | undefined // release 描述 + status: string | undefined // release 状态 + chart: string | undefined // release chart + chartVersion: string | undefined // chart 版本 + appVersion: string | undefined // release appVersion + values: string | undefined // release values +} +interface GetReleaseManifestReq { + $name: string // chart release名称 + $namespace: string // 所在的namespace + $clusterId: string // 所在的集群ID + $projectCode?: string // 项目代码 + $revision: number // release 版本 +} +interface GetReleaseManifestResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Record // release manifest + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface GetReleaseStatusReq { + $name: string // chart release名称 + $namespace: string // 所在的namespace + $clusterId: string // 所在的集群ID + $projectCode?: string // 项目代码 +} +interface GetReleaseDetailExtendReq { + $name: string // chart release名称 + $namespace: string // 所在的namespace + $clusterId: string // 所在的集群ID + $projectCode?: string // 项目代码 +} +interface GetReleasePodsReq { + $name: string // chart release名称 + $namespace: string // 所在的namespace + $clusterId: string // 所在的集群ID + $projectCode?: string // 项目代码 + after: number | undefined // 查询指定时间之后的 pods +} +interface ListAddonsReq { + $projectCode?: string // 项目代码 + $clusterId: string // 所在的集群ID +} +interface ListAddonsResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Addons[] // 组件列表 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface Addons { + name: string // 组件名称 + chartName: string // chart name + description: string | undefined // 组件描述 + logo: string | undefined // logo + docsLink: string | undefined // 文档链接 + version: string // 组件最新版本 + currentVersion: string | undefined // 组件当前安装版本,空代表没安装 + namespace: string // 部署的命名空间 + defaultValues: string | undefined // 默认配置,空代表可以直接安装,不需要填写自定义配置 + currentValues: string | undefined // 当前部署配置 + status: string | undefined // 部署状态,同 Helm release 状态,空代表没安装 + message: string | undefined // 部署信息,部署异常则显示报错信息 + supportedActions: string[] // 组件支持的操作,目前有 install, upgrade, stop, uninstall + releaseName: string | undefined // 组件在集群中的 release name +} +interface GetAddonsDetailReq { + $projectCode?: string // 项目代码 + $clusterId: string // 所在的集群ID + $name: string // 组件名称 +} +interface GetAddonsDetailResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + data: Addons | undefined // 组件信息 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface InstallAddonsReq { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 所在的集群ID + name: string // 组件名称 + version: string // 组件版本 + values: string | undefined // values +} +interface InstallAddonsResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface UpgradeAddonsReq { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 所在的集群ID + $name: string | undefined // 组件名称 + version: string | undefined // 组件版本 + values: string | undefined // values +} +interface UpgradeAddonsResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface StopAddonsReq { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 所在的集群ID + $name: string | undefined // 组件名称 +} +interface StopAddonsResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} +interface UninstallAddonsReq { + $projectCode?: string | undefined // 项目代码 + $clusterId: string | undefined // 所在的集群ID + $name: string | undefined // 组件名称 +} +interface UninstallAddonsResp { + code: number | undefined // 返回错误码 + message: string | undefined // 返回错误信息 + result: boolean | undefined // 返回结果 + requestID: string | undefined // requestID + webAnnotations: WebAnnotations | undefined // 权限信息 +} diff --git a/bcs-ui/frontend/src/App.vue b/bcs-ui/frontend/src/App.vue index 08ab501036..ecc5bd1a32 100644 --- a/bcs-ui/frontend/src/App.vue +++ b/bcs-ui/frontend/src/App.vue @@ -12,6 +12,19 @@ + + +

{{ $t('bcs.newVersion.p1') }}

+

{{ $t('bcs.newVersion.p2') }}

+
+ diff --git a/bcs-ui/frontend/src/components/bk-magic-2.0/bk-dialog.js b/bcs-ui/frontend/src/components/bk-magic-2.0/bk-dialog.js index 88809cb2a0..4a143f0c5f 100644 --- a/bcs-ui/frontend/src/components/bk-magic-2.0/bk-dialog.js +++ b/bcs-ui/frontend/src/components/bk-magic-2.0/bk-dialog.js @@ -79,7 +79,7 @@ export default { on: this.$listeners, // 透传事件 props: Object.assign({}, { ...this.$props, - value: this.$props.isShow, + value: this.$props.value || this.$props.isShow, showFooter: this.$props.hasFooter, okText: this.$props.confirm, cancelText: this.$props.cancel, diff --git a/bcs-ui/frontend/src/components/cluster-selector/cluster-select-popover.vue b/bcs-ui/frontend/src/components/cluster-selector/cluster-select-popover.vue index 81f523669b..4192c7779f 100644 --- a/bcs-ui/frontend/src/components/cluster-selector/cluster-select-popover.vue +++ b/bcs-ui/frontend/src/components/cluster-selector/cluster-select-popover.vue @@ -44,7 +44,9 @@ @mouseleave="hoverClusterID = ''" @click="handleClick(cluster)">
- {{ cluster.clusterName }} + + {{ cluster.clusterName }} + +
+ + + + + + {{ title }} + +
+
+ +
+
+ + diff --git a/bcs-ui/frontend/src/components/edit-field.vue b/bcs-ui/frontend/src/components/edit-field.vue new file mode 100644 index 0000000000..8b45c1ed45 --- /dev/null +++ b/bcs-ui/frontend/src/components/edit-field.vue @@ -0,0 +1,49 @@ + + diff --git a/bcs-ui/frontend/src/components/key-value.vue b/bcs-ui/frontend/src/components/key-value.vue index 26b252bf70..8a7a7a2948 100644 --- a/bcs-ui/frontend/src/components/key-value.vue +++ b/bcs-ui/frontend/src/components/key-value.vue @@ -80,7 +80,11 @@ :value="item.value" :meta="index" ref="validateRefs"> - + + + + + diff --git a/bcs-ui/frontend/src/views/cluster-manage/node-list/node.vue b/bcs-ui/frontend/src/views/cluster-manage/node-list/node.vue index 3ad7810220..3a2cdb8ef4 100644 --- a/bcs-ui/frontend/src/views/cluster-manage/node-list/node.vue +++ b/bcs-ui/frontend/src/views/cluster-manage/node-list/node.vue @@ -141,7 +141,30 @@ v-bk-tooltips="{ content: $t('generic.button.drain.tips'), disabled: !podDisabled, placement: 'right' }">
  • {{$t('generic.button.drain.text')}}
  • -
  • {{$t('cluster.nodeList.button.setLabel')}}
  • +
    +
  • + {{$t('cluster.nodeList.button.setLabel')}} +
  • +
    +
    +
  • + {{$t('cluster.nodeList.button.setTaint')}} +
  • +
    +
    + +
    @@ -675,7 +703,7 @@ + diff --git a/bcs-ui/frontend/src/views/deploy-manage/deploy/namespace-v2.vue b/bcs-ui/frontend/src/views/deploy-manage/deploy/namespace-v2.vue new file mode 100644 index 0000000000..8ef1187308 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/deploy/namespace-v2.vue @@ -0,0 +1,37 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/deploy/namespace.vue b/bcs-ui/frontend/src/views/deploy-manage/deploy/namespace.vue new file mode 100644 index 0000000000..ee32f3ae35 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/deploy/namespace.vue @@ -0,0 +1,78 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/new-template-set/add-templateset.vue b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/add-templateset.vue new file mode 100644 index 0000000000..eeca5d9a62 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/add-templateset.vue @@ -0,0 +1,193 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/new-template-set/index.vue b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/index.vue new file mode 100644 index 0000000000..61955ce355 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/index.vue @@ -0,0 +1,225 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/new-template-set/set-metadata.vue b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/set-metadata.vue new file mode 100644 index 0000000000..231bb9c148 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/set-metadata.vue @@ -0,0 +1,88 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/new-template-set/template-file-select.vue b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/template-file-select.vue new file mode 100644 index 0000000000..18a0dc7a46 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/template-file-select.vue @@ -0,0 +1,115 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/new-template-set/version-list.vue b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/version-list.vue new file mode 100644 index 0000000000..4a6aa66e4c --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/new-template-set/version-list.vue @@ -0,0 +1,111 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/add-templatefile-version.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/add-templatefile-version.vue new file mode 100644 index 0000000000..07ac54d2a3 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/add-templatefile-version.vue @@ -0,0 +1,427 @@ + + + + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/add-templatefile.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/add-templatefile.vue new file mode 100644 index 0000000000..79e9ad7cb8 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/add-templatefile.vue @@ -0,0 +1,294 @@ + + + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/bcs-var-input.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/bcs-var-input.vue new file mode 100644 index 0000000000..50d7654b27 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/bcs-var-input.vue @@ -0,0 +1,66 @@ + + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/choose-version.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/choose-version.vue new file mode 100644 index 0000000000..8d17c3d443 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/choose-version.vue @@ -0,0 +1,93 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/diff-yaml.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/diff-yaml.vue new file mode 100644 index 0000000000..eba2eb8f4f --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/diff-yaml.vue @@ -0,0 +1,180 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/file-detail.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/file-detail.vue new file mode 100644 index 0000000000..7e64f73aa4 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/file-detail.vue @@ -0,0 +1,231 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/file-list.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/file-list.vue new file mode 100644 index 0000000000..833501bdce --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/file-list.vue @@ -0,0 +1,344 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/file-metadata.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/file-metadata.vue new file mode 100644 index 0000000000..bde4f29a22 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/file-metadata.vue @@ -0,0 +1,86 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/form-mode.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/form-mode.vue new file mode 100644 index 0000000000..100a92c174 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/form-mode.vue @@ -0,0 +1,478 @@ + + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/index.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/index.vue new file mode 100644 index 0000000000..5e7776e2b5 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/index.vue @@ -0,0 +1,145 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/space-list.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/space-list.vue new file mode 100644 index 0000000000..93ef0516e9 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/space-list.vue @@ -0,0 +1,491 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/use-store.ts b/bcs-ui/frontend/src/views/deploy-manage/template-file/use-store.ts new file mode 100644 index 0000000000..ff2a40c650 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/use-store.ts @@ -0,0 +1,62 @@ +import { reactive, set } from 'vue'; + +import useVariable from '../variable/use-variable'; + +import { IListTemplateMetadataItem, ITemplateSpaceData } from '@/@types/cluster-resource-patch'; +import { TemplateSetService } from '@/api/modules/new-cluster-resource'; + +export const store = reactive<{ + spaceList: ITemplateSpaceData[] + spaceLoading: boolean + loadingSpaceIDs: string[] + fileListMap: Record + editMode: 'yaml'|'form'|undefined + isFormModeDisabled: boolean + varList: any[], + showDeployBtn: boolean, +}>({ + spaceLoading: false, // 空间加载状态 + spaceList: [], // 空间列表 + loadingSpaceIDs: [], // 空间下文件加载状态 + fileListMap: {}, + editMode: undefined, + isFormModeDisabled: false, // 详情模式下是否禁用表单模式 + varList: [], + showDeployBtn: true, // 是否显示部署按钮 +}); + +// 更新空间列表 +export async function updateListTemplateSpaceList() { + store.spaceLoading = true; + store.spaceList = await TemplateSetService.ListTemplateSpace().catch(() => []); + store.spaceLoading = false; +} + +// 更新空间下文件列表 +export async function updateTemplateMetadataList(spaceID: string) { + if (!spaceID) return; + store.loadingSpaceIDs = [spaceID]; + const list = await TemplateSetService.ListTemplateMetadata({ + $templateSpaceID: spaceID, + }); + store.loadingSpaceIDs = []; + set(store.fileListMap, spaceID, list); +} + +// 更新变量列表 +const { getVariableDefinitions } = useVariable(); +export async function updateVarList() { + const { results } = await getVariableDefinitions({ + limit: 0, + offset: 0, + all: true, + scope: '', + searchKey: '', + }); + store.varList = results; +} + +// 更新是否显示部署按钮 +export async function updateShowDeployBtn(state: boolean) { + store.showDeployBtn = state; +} diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/version-list.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/version-list.vue new file mode 100644 index 0000000000..f808766944 --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/version-list.vue @@ -0,0 +1,269 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/version.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/version.vue new file mode 100644 index 0000000000..15c8de2c2a --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/version.vue @@ -0,0 +1,222 @@ + + diff --git a/bcs-ui/frontend/src/views/deploy-manage/template-file/yaml-mode.vue b/bcs-ui/frontend/src/views/deploy-manage/template-file/yaml-mode.vue new file mode 100644 index 0000000000..4fb856131f --- /dev/null +++ b/bcs-ui/frontend/src/views/deploy-manage/template-file/yaml-mode.vue @@ -0,0 +1,197 @@ + + + diff --git a/bcs-ui/frontend/src/views/index.vue b/bcs-ui/frontend/src/views/index.vue index c7717271f3..c982c68929 100644 --- a/bcs-ui/frontend/src/views/index.vue +++ b/bcs-ui/frontend/src/views/index.vue @@ -9,8 +9,11 @@ :hide-back="routeMeta.hideBack" :cluster-id="routeMeta.showClusterName ? $route.params.clusterId : ''" v-if="routeMeta.title" /> + + + - + @@ -57,6 +60,11 @@ export default defineComponent({ const curProject = computed(() => $store.state.curProject); const hasNoAuthorizedProject = ref(false); + const routerViewKey = computed(() => { + if (routeMeta.value?.keepAlive) return routeMeta.value?.keepAlive; + return isDashboard.value ? 'dashboard' : currentRoute.value.path; + }); + // 设置项目缓存 const handleSetProjectStorage = (data: IProject) => { // 缓存当前项目信息 @@ -157,10 +165,12 @@ export default defineComponent({ theme: 'warning', message: `Something is wrong with the component ${vm.$options.name} ${info}`, }); + console.error(err, vm, info); return true; }); return { + routerViewKey, loading, isDashboard, currentRoute, diff --git a/bcs-ui/frontend/src/views/plugin-manage/tools/log-collector/log-form.vue b/bcs-ui/frontend/src/views/plugin-manage/tools/log-collector/log-form.vue index a87bf34872..e269a74230 100644 --- a/bcs-ui/frontend/src/views/plugin-manage/tools/log-collector/log-form.vue +++ b/bcs-ui/frontend/src/views/plugin-manage/tools/log-collector/log-form.vue @@ -350,7 +350,7 @@ import useLog, { IRuleData } from './use-log'; import { ENCODE_LIST } from '@/common/constant'; import Row from '@/components/layout/Row.vue'; import PopoverSelector from '@/components/popover-selector.vue'; -import { useCluster } from '@/composables/use-app'; +import { ICluster, useCluster } from '@/composables/use-app'; import useFormLabel from '@/composables/use-form-label'; import $i18n from '@/i18n/i18n-setup'; import { useSelectItemsNamespace } from '@/views/cluster-manage/namespace/use-namespace'; @@ -371,7 +371,8 @@ const props = defineProps({ }); const { clusterList } = useCluster(); -const curCluster = computed(() => clusterList.value?.find(item => item.clusterID === props.clusterId) || {}); +const curCluster = computed>(() => clusterList.value + ?.find(item => item.clusterID === props.clusterId) || {}); watch(() => props.data, () => { handleSetFormData(); @@ -446,9 +447,9 @@ const formDataRules = ref({ validator: () => { if (curCluster.value.is_shared) { // 共享集群不能选择全部命名空间 - return formData.value.rule.config.namespaces.filter(item => !!item).length; + return formData.value.rule.config.namespaces?.filter(item => !!item).length; } - return !!formData.value.rule.config.namespaces.length; + return !!formData.value.rule.config.namespaces?.length; }, }, ], @@ -548,7 +549,7 @@ const handleSetFormData = () => { formData.value.rule.config.conditions.type = ''; } // 命名空间全部逻辑 - if (!formData.value.rule.config.namespaces.length && (isEdit.value || props.fromOldRule)) { + if (!formData.value.rule.config.namespaces?.length && (isEdit.value || props.fromOldRule)) { formData.value.rule.config.namespaces = ['']; } @@ -615,7 +616,7 @@ const handleGetFormData = async () => { data.rule.config.conditions.separator_filters = []; } data.rule.config.conditions.type = data.rule.config.conditions.type || 'match'; - data.rule.config.namespaces = data.rule.config.namespaces.filter(item => !!item); + data.rule.config.namespaces = data.rule.config.namespaces?.filter(item => !!item); data.rule.extra_labels = data.rule.extra_labels.filter(item => !!item.key); data.rule.config.paths = data.rule.config.paths.filter(item => !!item); if (!isContainerFile.value) { @@ -638,7 +639,7 @@ const handleNsChange = (nsList) => { const last = nsList[nsList.length - 1]; // 移除全选 if (last) { - formData.value.rule.config.namespaces = formData.value.rule.config.namespaces.filter(item => !!item); + formData.value.rule.config.namespaces = formData.value.rule.config.namespaces?.filter(item => !!item); } else { formData.value.rule.config.namespaces = ['']; } @@ -715,7 +716,7 @@ watch(() => [ ], async (newValue, oldValue) => { if (isEqual(newValue, oldValue)) return; // 目前接口只支持单命名空间的workload查询 - const nsList = formData.value.rule.config.namespaces.filter(item => !!item); + const nsList = formData.value.rule.config.namespaces?.filter(item => !!item); if (nsList.length !== 1 || !formData.value.rule.config.container.workload_type) { workloadList.value = []; return; diff --git a/bcs-ui/frontend/src/views/plugin-manage/tools/log-collector/log-label.vue b/bcs-ui/frontend/src/views/plugin-manage/tools/log-collector/log-label.vue index e835bbf884..12c3dcf705 100644 --- a/bcs-ui/frontend/src/views/plugin-manage/tools/log-collector/log-label.vue +++ b/bcs-ui/frontend/src/views/plugin-manage/tools/log-collector/log-label.vue @@ -42,7 +42,7 @@
    {{ t('配置文件绝对路径') }}{{ t('版本号') }}