diff --git a/component/cli/migrate/verify.go b/component/cli/migrate/verify.go index 6f802eb..03971e1 100644 --- a/component/cli/migrate/verify.go +++ b/component/cli/migrate/verify.go @@ -40,13 +40,14 @@ type CompareConfig struct { } type DataCompareRule struct { - TableNameS string `toml:"table-name-s" json:"tableNameS"` - CompareConditionField string `toml:"compare-condition-field" json:"compareConditionField"` - CompareConditionRange string `toml:"compare-condition-range" json:"compareConditionRange"` - IgnoreSelectFields []string `toml:"ignore-select-fields" json:"ignoreSelectFields"` - IgnoreConditionFields []string `toml:"ignore-condition-fields" json:"ignoreConditionFields"` - SqlHintS string `toml:"sql-hint-s" json:"sqlHintS"` - SqlHintT string `toml:"sql-hint-t" json:"sqlHintT"` + TableNameS string `toml:"table-name-s" json:"tableNameS"` + CompareConditionField string `toml:"compare-condition-field" json:"compareConditionField"` + CompareConditionRangeS string `toml:"compare-condition-range-s" json:"compareConditionRangeS"` + CompareConditionRangeT string `toml:"compare-condition-range-t" json:"compareConditionRangeT"` + IgnoreSelectFields []string `toml:"ignore-select-fields" json:"ignoreSelectFields"` + IgnoreConditionFields []string `toml:"ignore-condition-fields" json:"ignoreConditionFields"` + SqlHintS string `toml:"sql-hint-s" json:"sqlHintS"` + SqlHintT string `toml:"sql-hint-t" json:"sqlHintT"` } type DataCompareParam struct { diff --git a/database/data_compare.go b/database/data_compare.go index 4a64a8e..a52a59b 100644 --- a/database/data_compare.go +++ b/database/data_compare.go @@ -35,7 +35,7 @@ type IDatabaseDataCompare interface { // IDataCompareRuleInitializer used for database table rule initializer type IDataCompareRuleInitializer interface { GenSchemaTableCompareMethodRule() string - GenSchemaTableCustomRule() (string, string, []string, string, string, error) + GenSchemaTableCustomRule() (string, string, string, []string, string, string, error) IDatabaseSchemaTableRule } @@ -51,15 +51,16 @@ type DataCompareAttributesRule struct { ColumnDetailTO string `json:"columnDetailTO"` CompareMethod string `json:"compareMethod"` ColumnNameRouteRule map[string]string `json:"columnNameRouteRule"` // keep the column name upstream and downstream mapping, a -> b - CompareConditionFieldC string `json:"compareConditionFieldC"` - CompareConditionRangeC string `json:"compareConditionRangeC"` + CompareConditionFieldS string `json:"compareConditionFieldS"` + CompareConditionRangeS string `json:"compareConditionRangeS"` + CompareConditionRangeT string `json:"compareConditionRangeT"` IgnoreConditionFields []string `json:"ignoreConditionFields"` SqlHintS string `json:"sqlHintS"` SqlHintT string `json:"sqlHintT"` } func IDataCompareAttributesRule(i IDataCompareRuleInitializer) (*DataCompareAttributesRule, error) { - columnFields, compareRange, ignoreConditionFields, sqlHintS, sqlHintT, err := i.GenSchemaTableCustomRule() + columnFields, compareRangeS, compareRangeT, ignoreConditionFields, sqlHintS, sqlHintT, err := i.GenSchemaTableCustomRule() if err != nil { return &DataCompareAttributesRule{}, err } @@ -90,8 +91,9 @@ func IDataCompareAttributesRule(i IDataCompareRuleInitializer) (*DataCompareAttr ColumnDetailTO: targetColumnTO, ColumnDetailT: targetColumnT, CompareMethod: i.GenSchemaTableCompareMethodRule(), - CompareConditionFieldC: columnFields, - CompareConditionRangeC: compareRange, + CompareConditionFieldS: columnFields, + CompareConditionRangeS: compareRangeS, + CompareConditionRangeT: compareRangeT, IgnoreConditionFields: ignoreConditionFields, ColumnNameRouteRule: columnRouteRule, SqlHintS: sqlHintS, diff --git a/database/processor/data_compare_rule.go b/database/processor/data_compare_rule.go index 3099073..9003923 100644 --- a/database/processor/data_compare_rule.go +++ b/database/processor/data_compare_rule.go @@ -536,32 +536,38 @@ func (r *DataCompareRule) GenSchemaTableCompareMethodRule() string { return constant.DataCompareMethodDatabaseCheckCRC32 } -func (r *DataCompareRule) GenSchemaTableCustomRule() (string, string, []string, string, string, error) { - compareRule, err := model.GetIDataCompareRuleRW().GetDataCompareRule(r.Ctx, &rule.DataCompareRule{ +func (r *DataCompareRule) GenSchemaTableCustomRule() (string, string, string, []string, string, string, error) { + cr, err := model.GetIDataCompareRuleRW().GetDataCompareRule(r.Ctx, &rule.DataCompareRule{ TaskName: r.TaskName, SchemaNameS: r.SchemaNameS, TableNameS: r.TableNameS}) if err != nil { - return "", "", nil, "", "", err + return "", "", "", nil, "", "", err } - if !strings.EqualFold(compareRule.IgnoreSelectFields, "") { - r.IgnoreSelectFields = stringutil.StringSplit(compareRule.IgnoreSelectFields, constant.StringSeparatorComma) + if !strings.EqualFold(cr.IgnoreSelectFields, "") { + r.IgnoreSelectFields = stringutil.StringSplit(cr.IgnoreSelectFields, constant.StringSeparatorComma) } var ignoreColumnConditionFields []string - if !strings.EqualFold(compareRule.IgnoreConditionFields, "") { - ignoreColumnConditionFields = stringutil.StringSplit(compareRule.IgnoreConditionFields, constant.StringSeparatorComma) + if !strings.EqualFold(cr.IgnoreConditionFields, "") { + ignoreColumnConditionFields = stringutil.StringSplit(cr.IgnoreConditionFields, constant.StringSeparatorComma) } else { ignoreColumnConditionFields = r.GlobalIgnoreConditionFields } var sqlHintS, sqlHintT string - if strings.EqualFold(compareRule.SqlHintS, "") { + if strings.EqualFold(cr.SqlHintS, "") { sqlHintS = r.GlobalSqlHintS } else { - sqlHintS = compareRule.SqlHintS + sqlHintS = cr.SqlHintS } - if strings.EqualFold(compareRule.SqlHintT, "") { + if strings.EqualFold(cr.SqlHintT, "") { sqlHintT = r.GlobalSqlHintT } else { - sqlHintT = compareRule.SqlHintT + sqlHintT = cr.SqlHintT } - return compareRule.CompareConditionField, compareRule.CompareConditionRange, ignoreColumnConditionFields, sqlHintS, sqlHintT, nil + + // replace compareConditionRangeT + if strings.EqualFold(cr.CompareConditionRangeT, "") { + cr.CompareConditionRangeT = cr.CompareConditionRangeS + } + + return cr.CompareConditionField, cr.CompareConditionRangeS, cr.CompareConditionRangeT, ignoreColumnConditionFields, sqlHintS, sqlHintT, nil } diff --git a/database/taskflow/data_compare.go b/database/taskflow/data_compare.go index 42850c7..6bb866d 100644 --- a/database/taskflow/data_compare.go +++ b/database/taskflow/data_compare.go @@ -679,65 +679,8 @@ func (dmt *DataCompareTask) InitDataCompareTask(databaseS, databaseT database.ID zap.String("task_flow", dmt.Task.TaskFlow), zap.String("schema_name_s", attsRule.SchemaNameS), zap.String("table_name_s", attsRule.TableNameS)) - // optimizer - if !strings.EqualFold(attsRule.CompareConditionRangeC, "") { - encChunk := snappy.Encode(nil, []byte(attsRule.CompareConditionRangeC)) - encryptChunk, err := stringutil.Encrypt(stringutil.BytesToString(encChunk), []byte(constant.DefaultDataEncryptDecryptKey)) - if err != nil { - return err - } - err = model.Transaction(gCtx, func(txnCtx context.Context) error { - _, err = model.GetIDataCompareTaskRW().CreateDataCompareTask(txnCtx, &task.DataCompareTask{ - TaskName: dmt.Task.TaskName, - SchemaNameS: attsRule.SchemaNameS, - TableNameS: attsRule.TableNameS, - SchemaNameT: attsRule.SchemaNameT, - TableNameT: attsRule.TableNameT, - TableTypeS: attsRule.TableTypeS, - SnapshotPointS: globalScnS, - SnapshotPointT: globalScnT, - CompareMethod: attsRule.CompareMethod, - ColumnDetailSO: attsRule.ColumnDetailSO, - ColumnDetailS: attsRule.ColumnDetailS, - ChunkID: uuid.New().String(), - ColumnDetailTO: attsRule.ColumnDetailTO, - ColumnDetailT: attsRule.ColumnDetailT, - SqlHintS: attsRule.SqlHintS, - SqlHintT: attsRule.SqlHintT, - ChunkDetailS: encryptChunk, - ChunkDetailArgS: "", - ChunkDetailT: encryptChunk, - ChunkDetailArgT: "", - ConsistentReadS: strconv.FormatBool(dmt.TaskParams.EnableConsistentRead), - TaskStatus: constant.TaskDatabaseStatusWaiting, - }) - if err != nil { - return err - } - _, err = model.GetIDataCompareSummaryRW().CreateDataCompareSummary(txnCtx, &task.DataCompareSummary{ - TaskName: dmt.Task.TaskName, - SchemaNameS: attsRule.SchemaNameS, - TableNameS: attsRule.TableNameS, - SchemaNameT: attsRule.SchemaNameT, - TableNameT: attsRule.TableNameT, - SnapshotPointS: globalScnS, - SnapshotPointT: globalScnT, - TableRowsS: tableRows, - TableSizeS: tableSize, - ChunkTotals: 1, - }) - if err != nil { - return err - } - return nil - }) - if err != nil { - return err - } - return nil - } - upstreamCons, err := databaseS.GetDatabaseTableHighestSelectivityIndex(attsRule.SchemaNameS, attsRule.TableNameS, attsRule.CompareConditionFieldC, attsRule.IgnoreConditionFields) + upstreamCons, err := databaseS.GetDatabaseTableHighestSelectivityIndex(attsRule.SchemaNameS, attsRule.TableNameS, attsRule.CompareConditionFieldS, attsRule.IgnoreConditionFields) if err != nil { return err } @@ -766,6 +709,18 @@ func (dmt *DataCompareTask) InitDataCompareTask(databaseS, databaseT database.ID } if len(upstreamBuckets) == 0 { + var encChunkS, encChunkT []byte + if !strings.EqualFold(attsRule.CompareConditionRangeS, "") { + encChunkS = snappy.Encode(nil, []byte(attsRule.CompareConditionRangeS)) + } else { + encChunkS = snappy.Encode(nil, []byte("1 = 1")) + } + if !strings.EqualFold(attsRule.CompareConditionRangeT, "") { + encChunkT = snappy.Encode(nil, []byte(attsRule.CompareConditionRangeT)) + } else { + encChunkT = snappy.Encode(nil, []byte("1 = 1")) + } + logger.Warn("data compare task init table chunk", zap.String("task_name", dmt.Task.TaskName), zap.String("task_mode", dmt.Task.TaskMode), @@ -773,9 +728,13 @@ func (dmt *DataCompareTask) InitDataCompareTask(databaseS, databaseT database.ID zap.String("schema_name_s", attsRule.SchemaNameS), zap.String("table_name_s", attsRule.TableNameS), zap.Any("upstream bucket new", upstreamConsNew), - zap.Any("upstream bucket range", "1 = 1")) - encChunk := snappy.Encode(nil, []byte("1 = 1")) - encryptChunk, err := stringutil.Encrypt(stringutil.BytesToString(encChunk), []byte(constant.DefaultDataEncryptDecryptKey)) + zap.Any("upstream bucket range", string(encChunkS))) + + encryptChunkS, err := stringutil.Encrypt(stringutil.BytesToString(encChunkS), []byte(constant.DefaultDataEncryptDecryptKey)) + if err != nil { + return err + } + encryptChunkT, err := stringutil.Encrypt(stringutil.BytesToString(encChunkT), []byte(constant.DefaultDataEncryptDecryptKey)) if err != nil { return err } @@ -797,9 +756,9 @@ func (dmt *DataCompareTask) InitDataCompareTask(databaseS, databaseT database.ID SqlHintS: attsRule.SqlHintS, SqlHintT: attsRule.SqlHintT, ChunkID: uuid.New().String(), - ChunkDetailS: encryptChunk, + ChunkDetailS: encryptChunkS, ChunkDetailArgS: "", - ChunkDetailT: encryptChunk, + ChunkDetailT: encryptChunkT, ChunkDetailArgT: "", ConsistentReadS: strconv.FormatBool(dmt.TaskParams.EnableConsistentRead), TaskStatus: constant.TaskDatabaseStatusWaiting, @@ -827,6 +786,7 @@ func (dmt *DataCompareTask) InitDataCompareTask(databaseS, databaseT database.ID if err != nil { return err } + return nil } @@ -885,6 +845,14 @@ func (dmt *DataCompareTask) InitDataCompareTask(databaseS, databaseT database.ID for i, r := range upstreamBuckets { toStringS, toStringArgsS := r.ToString() toStringT, toStringArgsT := downstreamBuckets[i].ToString() + + if !strings.EqualFold(attsRule.CompareConditionRangeS, "") { + toStringS = fmt.Sprintf("%s AND (%s)", toStringS, attsRule.CompareConditionRangeS) + } + if !strings.EqualFold(attsRule.CompareConditionRangeT, "") { + toStringT = fmt.Sprintf("%s AND (%s)", toStringT, attsRule.CompareConditionRangeT) + } + encChunkS := snappy.Encode(nil, []byte(toStringS)) encChunkT := snappy.Encode(nil, []byte(toStringT)) diff --git a/example/data_compare_task.toml b/example/data_compare_task.toml index 6efcf93..c0bfbfa 100644 --- a/example/data_compare_task.toml +++ b/example/data_compare_task.toml @@ -31,9 +31,11 @@ column-route-rules = {} [[data-compare-rules]] table-name-s = "" compare-condition-field = "" -# 指定检查数据范围或者查询条件 -# compare-condition-range 优先级高于 compare-condition-field -compare-condition-range = "" +# 指定检查数据范围或者查询条件 upstream +compare-condition-range-s = "" +# 指定检查数据范围或者查询条件 downstream +# 如果没有填写,则取 compare-condition-range-s 值,主要用于上下游字段名不一样 +compare-condition-range-t = "" # 忽略对比字段列 ignore-select-fields = [] # 禁止条件查询选择字段 diff --git a/example/data_compare_test.toml b/example/data_compare_test.toml index a7c4eb0..15682e9 100644 --- a/example/data_compare_test.toml +++ b/example/data_compare_test.toml @@ -31,9 +31,11 @@ column-route-rules = {} [[data-compare-rules]] table-name-s = "" compare-condition-field = "" -# 指定检查数据范围或者查询条件 -# compare-condition-range 优先级高于 compare-condition-field -compare-condition-range = "" +# 指定检查数据范围或者查询条件 upstream +compare-condition-range-s = "" +# 指定检查数据范围或者查询条件 downstream +# 如果没有填写,则取 compare-condition-range-s 值,主要用于上下游字段名不一样 +compare-condition-range-t = "" # 忽略对比字段列 ignore-select-fields = [] # 禁止条件查询选择字段 diff --git a/master/openapi.go b/master/openapi.go index 7a08ec9..5bc735f 100644 --- a/master/openapi.go +++ b/master/openapi.go @@ -535,11 +535,12 @@ func (s *Server) upsertDataCompareTask(ctx context.Context, req openapi.APIPutDa for _, r := range *req.DataCompareRules { compareRules = append(compareRules, &pb.DataCompareRule{ - TableNameS: *r.TableNameS, - CompareConditionField: *r.CompareConditionField, - CompareConditionRange: *r.CompareConditionRange, - IgnoreConditionFields: *r.IgnoreConditionFields, - IgnoreSelectFields: *r.IgnoreSelectFields, + TableNameS: *r.TableNameS, + CompareConditionField: *r.CompareConditionField, + CompareConditionRangeS: *r.CompareConditionRangeS, + CompareConditionRangeT: *r.CompareConditionRangeT, + IgnoreConditionFields: *r.IgnoreConditionFields, + IgnoreSelectFields: *r.IgnoreSelectFields, }) } diff --git a/model/rule/rule_entity.go b/model/rule/rule_entity.go index 6bf8797..28ba920 100644 --- a/model/rule/rule_entity.go +++ b/model/rule/rule_entity.go @@ -70,16 +70,17 @@ type DataMigrateRule struct { } type DataCompareRule struct { - ID uint64 `gorm:"primary_key;autoIncrement;comment:id" json:"id"` - TaskName string `gorm:"type:varchar(300);not null;uniqueIndex:uniq_schema_table_name;comment:migrate task datasource name" json:"taskName"` - SchemaNameS string `gorm:"type:varchar(120);not null;uniqueIndex:uniq_schema_table_name;comment:source schema name" json:"schemaNameS"` - TableNameS string `gorm:"type:varchar(120);not null;uniqueIndex:uniq_schema_table_name;comment:source table name" json:"tableNameS"` - CompareConditionField string `gorm:"type:varchar(120);comment:compare filed" json:"compareConditionField"` - CompareConditionRange string `gorm:"type:varchar(120);comment:source sql query where" json:"compareConditionRange"` - IgnoreSelectFields string `gorm:"type:text;comment:ignore select filed" json:"ignoreSelectFields"` - IgnoreConditionFields string `gorm:"type:text;comment:ignore condition filed" json:"ignoreConditionFields"` - SqlHintS string `gorm:"type:varchar(120);comment:source sql query hint" json:"sqlHintS"` - SqlHintT string `gorm:"type:varchar(120);comment:target sql query hint" json:"sqlHintT"` + ID uint64 `gorm:"primary_key;autoIncrement;comment:id" json:"id"` + TaskName string `gorm:"type:varchar(300);not null;uniqueIndex:uniq_schema_table_name;comment:migrate task datasource name" json:"taskName"` + SchemaNameS string `gorm:"type:varchar(120);not null;uniqueIndex:uniq_schema_table_name;comment:source schema name" json:"schemaNameS"` + TableNameS string `gorm:"type:varchar(120);not null;uniqueIndex:uniq_schema_table_name;comment:source table name" json:"tableNameS"` + CompareConditionField string `gorm:"type:varchar(120);comment:compare filed" json:"compareConditionField"` + CompareConditionRangeS string `gorm:"type:varchar(120);comment:source sql query where" json:"compareConditionRangeS"` + CompareConditionRangeT string `gorm:"type:varchar(120);comment:target sql query where" json:"compareConditionRangeT"` + IgnoreSelectFields string `gorm:"type:text;comment:ignore select filed" json:"ignoreSelectFields"` + IgnoreConditionFields string `gorm:"type:text;comment:ignore condition filed" json:"ignoreConditionFields"` + SqlHintS string `gorm:"type:varchar(120);comment:source sql query hint" json:"sqlHintS"` + SqlHintT string `gorm:"type:varchar(120);comment:target sql query hint" json:"sqlHintT"` *common.Entity } diff --git a/openapi/apiserver.types.go b/openapi/apiserver.types.go index a92bac1..ed3e422 100644 --- a/openapi/apiserver.types.go +++ b/openapi/apiserver.types.go @@ -105,13 +105,14 @@ type DataCompareParam struct { // DataCompareRule defines model for DataCompareRule. type DataCompareRule struct { - CompareConditionField *string `json:"compareConditionField,omitempty"` - CompareConditionRange *string `json:"compareConditionRange,omitempty"` - IgnoreConditionFields *[]string `json:"ignoreConditionFields,omitempty"` - IgnoreSelectFields *[]string `json:"ignoreSelectFields,omitempty"` - SqlHintS *string `json:"sqlHintS,omitempty"` - SqlHintT *string `json:"sqlHintT,omitempty"` - TableNameS *string `json:"tableNameS,omitempty"` + CompareConditionField *string `json:"compareConditionField,omitempty"` + CompareConditionRangeS *string `json:"compareConditionRangeS,omitempty"` + CompareConditionRangeT *string `json:"compareConditionRangeT,omitempty"` + IgnoreConditionFields *[]string `json:"ignoreConditionFields,omitempty"` + IgnoreSelectFields *[]string `json:"ignoreSelectFields,omitempty"` + SqlHintS *string `json:"sqlHintS,omitempty"` + SqlHintT *string `json:"sqlHintT,omitempty"` + TableNameS *string `json:"tableNameS,omitempty"` } // DataCompareTask defines model for DataCompareTask. @@ -485,51 +486,51 @@ type APIPutStructMigrateJSONRequestBody = StructMigrateTask // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "nwEAAP//izNAU7F9AAA=", + "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", + "Kvr/ffu/AAAA//+ICR7f3X0AAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/openapi/spec.yaml b/openapi/spec.yaml index 5c12dae..4550827 100644 --- a/openapi/spec.yaml +++ b/openapi/spec.yaml @@ -1102,7 +1102,9 @@ components: type: string compareConditionField: type: string - compareConditionRange: + compareConditionRangeS: + type: string + compareConditionRangeT: type: string ignoreSelectFields: type: array diff --git a/proto/dbms_master.proto b/proto/dbms_master.proto index 2234214..24f7efc 100644 --- a/proto/dbms_master.proto +++ b/proto/dbms_master.proto @@ -663,11 +663,12 @@ message CsvMigrateParam{ message DataCompareRule { string tableNameS = 1; string compareConditionField = 2; - string compareConditionRange = 3; - repeated string ignoreSelectFields = 4; - repeated string ignoreConditionFields = 5; - string sqlHintS = 6; - string sqlHintT = 7; + string compareConditionRangeS = 3; + string compareConditionRangeT = 4; + repeated string ignoreSelectFields = 5; + repeated string ignoreConditionFields = 6; + string sqlHintS = 7; + string sqlHintT = 8; } message DataCompareParam{ diff --git a/proto/pb/dbms_master.pb.go b/proto/pb/dbms_master.pb.go index 2d90ccc..fad85cd 100644 --- a/proto/pb/dbms_master.pb.go +++ b/proto/pb/dbms_master.pb.go @@ -5090,13 +5090,14 @@ type DataCompareRule struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TableNameS string `protobuf:"bytes,1,opt,name=tableNameS,proto3" json:"tableNameS,omitempty"` - CompareConditionField string `protobuf:"bytes,2,opt,name=compareConditionField,proto3" json:"compareConditionField,omitempty"` - CompareConditionRange string `protobuf:"bytes,3,opt,name=compareConditionRange,proto3" json:"compareConditionRange,omitempty"` - IgnoreSelectFields []string `protobuf:"bytes,4,rep,name=ignoreSelectFields,proto3" json:"ignoreSelectFields,omitempty"` - IgnoreConditionFields []string `protobuf:"bytes,5,rep,name=ignoreConditionFields,proto3" json:"ignoreConditionFields,omitempty"` - SqlHintS string `protobuf:"bytes,6,opt,name=sqlHintS,proto3" json:"sqlHintS,omitempty"` - SqlHintT string `protobuf:"bytes,7,opt,name=sqlHintT,proto3" json:"sqlHintT,omitempty"` + TableNameS string `protobuf:"bytes,1,opt,name=tableNameS,proto3" json:"tableNameS,omitempty"` + CompareConditionField string `protobuf:"bytes,2,opt,name=compareConditionField,proto3" json:"compareConditionField,omitempty"` + CompareConditionRangeS string `protobuf:"bytes,3,opt,name=compareConditionRangeS,proto3" json:"compareConditionRangeS,omitempty"` + CompareConditionRangeT string `protobuf:"bytes,4,opt,name=compareConditionRangeT,proto3" json:"compareConditionRangeT,omitempty"` + IgnoreSelectFields []string `protobuf:"bytes,5,rep,name=ignoreSelectFields,proto3" json:"ignoreSelectFields,omitempty"` + IgnoreConditionFields []string `protobuf:"bytes,6,rep,name=ignoreConditionFields,proto3" json:"ignoreConditionFields,omitempty"` + SqlHintS string `protobuf:"bytes,7,opt,name=sqlHintS,proto3" json:"sqlHintS,omitempty"` + SqlHintT string `protobuf:"bytes,8,opt,name=sqlHintT,proto3" json:"sqlHintT,omitempty"` } func (x *DataCompareRule) Reset() { @@ -5145,9 +5146,16 @@ func (x *DataCompareRule) GetCompareConditionField() string { return "" } -func (x *DataCompareRule) GetCompareConditionRange() string { +func (x *DataCompareRule) GetCompareConditionRangeS() string { if x != nil { - return x.CompareConditionRange + return x.CompareConditionRangeS + } + return "" +} + +func (x *DataCompareRule) GetCompareConditionRangeT() string { + if x != nil { + return x.CompareConditionRangeT } return "" } @@ -6477,406 +6485,410 @@ var file_dbms_master_proto_rawDesc = []byte{ 0x28, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x22, 0xbb, 0x02, 0x0a, 0x0f, 0x44, + 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x22, 0xf5, 0x02, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x12, 0x34, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x67, - 0x6e, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x69, 0x67, - 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, - 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x12, 0x1a, 0x0a, 0x08, - 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x22, 0xc0, 0x05, 0x0a, 0x10, 0x44, 0x61, 0x74, - 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, - 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x09, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, - 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, - 0x6e, 0x74, 0x54, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, - 0x6e, 0x74, 0x54, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x6e, 0x6c, 0x79, 0x43, 0x6f, 0x6d, - 0x70, 0x61, 0x72, 0x65, 0x52, 0x6f, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x4f, - 0x6e, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x52, 0x6f, 0x77, 0x12, 0x32, 0x0a, - 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6e, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x53, 0x12, 0x32, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, - 0x72, 0x65, 0x61, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, - 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, - 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x0f, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, - 0x65, 0x70, 0x61, 0x69, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x61, 0x69, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x46, - 0x6c, 0x6f, 0x77, 0x12, 0x36, 0x0a, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x12, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x4d, 0x64, 0x35, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0xaa, 0x02, 0x0a, 0x0e, - 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x12, 0x20, 0x0a, 0x0b, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x12, 0x1e, - 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x12, 0x1a, - 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x12, 0x57, 0x0a, 0x10, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x71, 0x6c, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x75, - 0x6c, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x15, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x52, 0x75, 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, 0x22, 0xab, 0x02, 0x0a, 0x0f, 0x53, 0x71, 0x6c, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1c, 0x0a, 0x09, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x71, - 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, - 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x53, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x71, - 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x54, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, - 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x54, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, - 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, - 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x61, 0x6c, - 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, 0x26, 0x0a, 0x0e, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x66, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, - 0x65, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x22, 0x76, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, - 0x61, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, - 0x74, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, - 0x74, 0x53, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x22, 0xf9, - 0x02, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, - 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x53, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0a, 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x53, 0x12, 0x1a, - 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, - 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2a, 0x0a, 0x10, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x10, + 0x69, 0x65, 0x6c, 0x64, 0x12, 0x36, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x12, 0x36, 0x0a, 0x16, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x54, 0x12, 0x2e, 0x0a, 0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, + 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, + 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, + 0x74, 0x54, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, + 0x74, 0x54, 0x22, 0xc0, 0x05, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x71, 0x6c, 0x54, 0x68, + 0x72, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x71, 0x6c, 0x54, + 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, + 0x53, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, + 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, 0x12, 0x20, 0x0a, + 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, + 0x2a, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, + 0x26, 0x0a, 0x0e, 0x4f, 0x6e, 0x6c, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x52, 0x6f, + 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x4f, 0x6e, 0x6c, 0x79, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x65, 0x52, 0x6f, 0x77, 0x12, 0x32, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x12, 0x32, 0x0a, 0x14, 0x63, + 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x54, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x12, + 0x20, 0x0a, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x34, 0x0a, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, + 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x61, 0x69, 0x72, 0x53, + 0x74, 0x6d, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, + 0x65, 0x70, 0x61, 0x69, 0x72, 0x53, 0x74, 0x6d, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x36, 0x0a, + 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x4d, 0x64, 0x35, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x64, 0x35, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0xaa, 0x02, 0x0a, 0x0e, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x71, 0x6c, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x71, 0x6c, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x54, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, + 0x69, 0x6e, 0x74, 0x54, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, + 0x69, 0x6e, 0x74, 0x54, 0x12, 0x57, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x1a, 0x43, 0x0a, + 0x15, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x75, 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, 0x22, 0xab, 0x02, 0x0a, 0x0f, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, + 0x65, 0x61, 0x64, 0x53, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x54, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x71, 0x6c, 0x54, 0x68, 0x72, + 0x65, 0x61, 0x64, 0x54, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x54, + 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x53, 0x61, 0x66, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x66, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x22, 0x76, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6c, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, + 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, 0x69, 0x6e, 0x74, 0x53, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x32, 0x87, 0x21, 0x0a, 0x06, 0x4d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x71, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, - 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x1a, - 0x17, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x22, 0xf9, 0x02, 0x0a, 0x0d, 0x44, 0x61, 0x74, + 0x61, 0x53, 0x63, 0x61, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, + 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, + 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x71, 0x6c, 0x54, + 0x68, 0x72, 0x65, 0x61, 0x64, 0x53, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x71, + 0x6c, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x53, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x48, + 0x69, 0x6e, 0x74, 0x53, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x71, 0x6c, 0x48, + 0x69, 0x6e, 0x74, 0x53, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x61, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x53, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x54, 0x68, + 0x72, 0x65, 0x61, 0x64, 0x32, 0x87, 0x21, 0x0a, 0x06, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, + 0x71, 0x0a, 0x0e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x1a, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x12, 0x71, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x2a, 0x17, 0x2f, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, + 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x12, 0x79, 0x0a, 0x10, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, + 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x79, 0x0a, + 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x2a, 0x19, 0x2f, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x73, 0x0a, 0x0e, 0x53, 0x68, 0x6f, 0x77, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, - 0x01, 0x2a, 0x2a, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x0c, 0x53, - 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1a, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, - 0x17, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x79, 0x0a, 0x10, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x1a, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x79, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, - 0x3a, 0x01, 0x2a, 0x2a, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x73, - 0x0a, 0x0e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x95, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x73, - 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x73, - 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, - 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x1a, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x95, 0x01, 0x0a, 0x17, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, - 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, - 0x2a, 0x2a, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x12, 0x8f, 0x01, 0x0a, 0x15, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x73, 0x73, 0x65, - 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x41, + 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, + 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x95, 0x01, + 0x0a, 0x17, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, - 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x3a, 0x01, 0x2a, 0x1a, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x95, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x95, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x1a, 0x20, 0x2f, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x95, 0x01, - 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, - 0x3a, 0x01, 0x2a, 0x2a, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x8f, 0x01, 0x0a, 0x15, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, - 0x77, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x2a, 0x20, 0x2f, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x61, 0x73, 0x73, 0x65, + 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x8f, 0x01, + 0x0a, 0x15, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x53, 0x68, 0x6f, 0x77, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x61, 0x73, + 0x73, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, + 0x95, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, + 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x1a, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x95, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x95, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, - 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x1a, 0x20, 0x2f, + 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x2a, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x95, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x2a, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x8f, 0x01, 0x0a, 0x15, 0x53, 0x68, 0x6f, 0x77, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, - 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, + 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, + 0x8f, 0x01, 0x0a, 0x15, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, + 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x95, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, + 0x65, 0x72, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, + 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x1a, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x15, 0x55, 0x70, - 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, + 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x95, 0x01, 0x0a, 0x17, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x2a, + 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x8f, 0x01, 0x0a, 0x15, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, + 0x2a, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, + 0x31, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, + 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x6d, 0x74, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, + 0x74, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, + 0x3a, 0x01, 0x2a, 0x1a, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, + 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, + 0x3a, 0x01, 0x2a, 0x2a, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x87, 0x01, 0x0a, 0x13, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x6d, 0x74, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, + 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x89, 0x01, + 0x0a, 0x14, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, + 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x1a, 0x1d, 0x2f, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x71, 0x6c, 0x4d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x89, 0x01, 0x0a, 0x14, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x2a, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x83, 0x01, 0x0a, 0x12, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x71, + 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x71, 0x6c, 0x4d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x71, 0x6c, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x89, 0x01, 0x0a, 0x14, + 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, + 0x65, 0x72, 0x74, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x1a, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x63, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x89, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x12, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, + 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x22, 0x3a, 0x01, 0x2a, 0x2a, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x31, 0x2f, 0x63, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x83, 0x01, 0x0a, 0x12, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x73, 0x76, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x63, 0x73, 0x76, 0x4d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x15, 0x55, 0x70, + 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, - 0x72, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, + 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x1a, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x15, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, + 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x15, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, + 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x2a, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x87, 0x01, 0x0a, 0x13, 0x53, 0x68, - 0x6f, 0x77, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, - 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, + 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x87, 0x01, 0x0a, 0x13, 0x53, 0x68, + 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, + 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, - 0x77, 0x53, 0x74, 0x6d, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x77, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x12, 0x89, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x71, - 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, 0x71, 0x6c, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x53, - 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, - 0x1a, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2f, 0x73, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x89, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, - 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x71, 0x6c, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x2a, 0x1d, 0x2f, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x73, 0x71, 0x6c, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x83, 0x01, 0x0a, 0x12, - 0x53, 0x68, 0x6f, 0x77, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, - 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, - 0x77, 0x53, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, - 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x31, 0x2f, 0x73, 0x71, 0x6c, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x89, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x73, 0x76, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x43, 0x73, 0x76, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x1a, 0x1d, - 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x63, - 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x89, 0x01, - 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x2a, 0x1d, 0x2f, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x63, 0x73, 0x76, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x83, 0x01, 0x0a, 0x12, 0x53, 0x68, - 0x6f, 0x77, 0x43, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x73, 0x76, - 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x43, - 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, - 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2f, 0x63, 0x73, 0x76, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x8d, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x1a, - 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x8d, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, + 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x1a, 0x1b, 0x2f, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, + 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x2a, - 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, - 0x87, 0x01, 0x0a, 0x13, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, - 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x70, 0x61, - 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, - 0x6d, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x55, 0x70, - 0x73, 0x65, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, - 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, - 0x1a, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, - 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x81, 0x01, - 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x20, 0x3a, 0x01, 0x2a, 0x2a, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x7b, 0x0a, 0x10, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, - 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, - 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, - 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, - 0x2a, 0x22, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x64, - 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x1a, - 0x13, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, - 0x74, 0x61, 0x73, 0x6b, 0x42, 0x0a, 0x5a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x62, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x2a, 0x1b, + 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, + 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x7b, 0x0a, 0x10, 0x53, + 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, + 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x61, 0x70, + 0x69, 0x73, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x64, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x1a, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x42, 0x0a, + 0x5a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/service/rule.go b/service/rule.go index ef50ac7..78b9d27 100644 --- a/service/rule.go +++ b/service/rule.go @@ -331,15 +331,16 @@ func UpsertSchemaRouteRule(ctx context.Context, taskName, datasourceNameS string } tableCompareRules = append(tableCompareRules, &rule.DataCompareRule{ - TaskName: taskName, - SchemaNameS: sourceSchema, - TableNameS: sourceTable, - CompareConditionField: compareFiled, - CompareConditionRange: st.CompareConditionRange, - IgnoreSelectFields: stringutil.StringJoin(ignoreSelectFields, constant.StringSeparatorComma), - IgnoreConditionFields: stringutil.StringJoin(ignoreCondFields, constant.StringSeparatorComma), - SqlHintS: st.SqlHintS, - SqlHintT: st.SqlHintT, + TaskName: taskName, + SchemaNameS: sourceSchema, + TableNameS: sourceTable, + CompareConditionField: compareFiled, + CompareConditionRangeS: st.CompareConditionRangeS, + CompareConditionRangeT: st.CompareConditionRangeT, + IgnoreSelectFields: stringutil.StringJoin(ignoreSelectFields, constant.StringSeparatorComma), + IgnoreConditionFields: stringutil.StringJoin(ignoreCondFields, constant.StringSeparatorComma), + SqlHintS: st.SqlHintS, + SqlHintT: st.SqlHintT, }) } } @@ -490,13 +491,14 @@ func ShowSchemaRouteRule(ctx context.Context, taskName string) (*pb.SchemaRouteR } for _, st := range migrateCompareRules { opCompareRules = append(opCompareRules, &pb.DataCompareRule{ - TableNameS: st.TableNameS, - CompareConditionField: st.CompareConditionField, - CompareConditionRange: st.CompareConditionRange, - IgnoreSelectFields: stringutil.StringSplit(st.IgnoreSelectFields, constant.StringSeparatorComma), - IgnoreConditionFields: stringutil.StringSplit(st.IgnoreConditionFields, constant.StringSeparatorComma), - SqlHintS: st.SqlHintS, - SqlHintT: st.SqlHintT, + TableNameS: st.TableNameS, + CompareConditionField: st.CompareConditionField, + CompareConditionRangeS: st.CompareConditionRangeS, + CompareConditionRangeT: st.CompareConditionRangeT, + IgnoreSelectFields: stringutil.StringSplit(st.IgnoreSelectFields, constant.StringSeparatorComma), + IgnoreConditionFields: stringutil.StringSplit(st.IgnoreConditionFields, constant.StringSeparatorComma), + SqlHintS: st.SqlHintS, + SqlHintT: st.SqlHintT, }) }