From 7a4edf0371d159bc986b44206ca63f05eacb06bf Mon Sep 17 00:00:00 2001 From: Gaius Date: Tue, 25 Aug 2026 13:12:23 +0800 Subject: [PATCH] feat(scheduler): add `enable_task_id_based_blob_digest` field to `StatImageRequest` Add the `enable_task_id_based_blob_digest` boolean field to `StatImageRequest` in the scheduler proto, regenerate all language bindings (Go, Python, Rust), and bump the version to 2.3.3. Signed-off-by: Gaius --- Cargo.lock | 2 +- Cargo.toml | 2 +- pkg/apis/scheduler/v2/scheduler.pb.go | 733 +++++++++--------- .../scheduler/v2/scheduler.pb.validate.go | 2 + pkg/apis/scheduler/v2/scheduler.proto | 5 + proto/scheduler.proto | 5 + python/dragonfly_api/scheduler_pb2.py | 44 +- python/dragonfly_api/scheduler_pb2.pyi | 6 +- src/descriptor.bin | Bin 213099 -> 213540 bytes src/scheduler.v2.rs | 6 + 10 files changed, 421 insertions(+), 384 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4b6b72c..a382cdd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "dragonfly-api" -version = "2.3.2" +version = "2.3.3" dependencies = [ "prost", "prost-types", diff --git a/Cargo.toml b/Cargo.toml index edcff93..e02dd4a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dragonfly-api" -version = "2.3.2" +version = "2.3.3" authors = ["Gaius "] edition = "2021" license = "Apache-2.0" diff --git a/pkg/apis/scheduler/v2/scheduler.pb.go b/pkg/apis/scheduler/v2/scheduler.pb.go index 5c7527a..5589585 100644 --- a/pkg/apis/scheduler/v2/scheduler.pb.go +++ b/pkg/apis/scheduler/v2/scheduler.pb.go @@ -5816,6 +5816,11 @@ type StatImageRequest struct { // - all_peers: stat image from all available peers. // If not specified, stat image from all available peers. Scope string `protobuf:"bytes,15,opt,name=scope,proto3" json:"scope,omitempty"` + // enable_task_id_based_blob_digest indicates whether to use the blob digest for task ID calculation + // when the layer url is an OCI blob url (e.g., /v2//blobs/sha256:). It should be + // consistent with the value used when the image was preheated, otherwise the tasks can not be + // found on the peers. + EnableTaskIdBasedBlobDigest bool `protobuf:"varint,16,opt,name=enable_task_id_based_blob_digest,json=enableTaskIdBasedBlobDigest,proto3" json:"enable_task_id_based_blob_digest,omitempty"` } func (x *StatImageRequest) Reset() { @@ -5955,6 +5960,13 @@ func (x *StatImageRequest) GetScope() string { return "" } +func (x *StatImageRequest) GetEnableTaskIdBasedBlobDigest() bool { + if x != nil { + return x.EnableTaskIdBasedBlobDigest + } + return false +} + // StatImageResponse represents response of StatImage. type StatImageResponse struct { state protoimpl.MessageState @@ -7967,7 +7979,7 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_rawDesc = []byte{ 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xb4, 0x07, 0x0a, 0x10, 0x53, 0x74, 0x61, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xfb, 0x07, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, @@ -8014,378 +8026,383 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x42, 0x23, 0x72, 0x21, 0x32, 0x1c, 0x5e, 0x28, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x29, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x05, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x19, - 0x0a, 0x17, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, - 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, - 0x6d, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, - 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, - 0x2d, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, - 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, 0x83, - 0x01, 0x0a, 0x09, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x02, - 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x70, - 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4c, 0x61, - 0x79, 0x65, 0x72, 0x73, 0x22, 0x34, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, - 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x61, 0x79, - 0x65, 0x72, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x59, 0x0a, 0x05, 0x4c, 0x61, - 0x79, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x6f, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x62, + 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x61, 0x73, 0x65, 0x64, + 0x42, 0x6c, 0x6f, 0x62, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 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, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x6d, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, + 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x05, + 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x09, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x23, 0x0a, 0x08, + 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0c, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x64, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x34, 0x0a, 0x05, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x73, 0x22, 0x59, 0x0a, 0x05, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, + 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x69, + 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x22, 0xc8, 0x09, 0x0a, + 0x12, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, - 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x65, 0x64, 0x22, 0xc8, 0x09, 0x0a, 0x12, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, - 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, - 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, - 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x11, - 0xfa, 0x42, 0x0e, 0x32, 0x0c, 0x18, 0x80, 0x80, 0x80, 0x20, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, - 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x05, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x72, - 0x2f, 0x32, 0x2d, 0x5e, 0x28, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x65, 0x64, - 0x5f, 0x70, 0x65, 0x65, 0x72, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x70, - 0x65, 0x65, 0x72, 0x73, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x29, 0x24, - 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x65, 0x72, - 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0xfa, - 0x42, 0x08, 0x2a, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, 0x01, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x2a, - 0x07, 0x18, 0xc8, 0x01, 0x28, 0x01, 0x40, 0x01, 0x48, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x22, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, 0x01, - 0x48, 0x05, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, - 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x15, 0x63, 0x6f, - 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x22, 0x07, - 0x18, 0xe8, 0x07, 0x28, 0x01, 0x40, 0x01, 0x48, 0x06, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x07, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x08, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x0f, 0x20, 0x03, 0x28, - 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, - 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x44, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x08, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x04, 0x68, - 0x64, 0x66, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x44, 0x46, 0x53, 0x48, 0x09, 0x52, 0x04, 0x68, 0x64, - 0x66, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, - 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x0a, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x32, 0x0c, 0x18, 0x80, 0x80, 0x80, + 0x20, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, + 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, + 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x06, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x65, 0x68, + 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x34, 0xfa, 0x42, 0x31, 0x72, 0x2f, 0x32, 0x2d, 0x5e, 0x28, 0x73, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x7c, 0x61, 0x6c, 0x6c, + 0x5f, 0x73, 0x65, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x7c, 0x61, 0x6c, 0x6c, 0x5f, + 0x70, 0x65, 0x65, 0x72, 0x73, 0x29, 0x24, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, + 0x12, 0x30, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x2a, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, + 0x01, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x27, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x2a, 0x07, 0x18, 0xc8, 0x01, 0x28, 0x01, 0x40, 0x01, 0x48, + 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x15, 0x63, + 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x22, + 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, 0x01, 0x48, 0x05, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x45, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x22, 0x07, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x40, 0x01, 0x48, 0x06, + 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x07, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x39, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, + 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x0a, + 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x44, 0x0a, 0x0e, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x08, + 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x28, 0x0a, 0x04, 0x68, 0x64, 0x66, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x44, 0x46, + 0x53, 0x48, 0x09, 0x52, 0x04, 0x68, 0x64, 0x66, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0b, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x0a, 0x52, + 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x1a, 0x39, + 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, + 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, + 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x22, 0x93, 0x06, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, + 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, + 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x11, 0xfa, + 0x42, 0x0e, 0x32, 0x0c, 0x18, 0x80, 0x80, 0x80, 0x20, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, + 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, + 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x22, 0x07, 0x18, 0xe8, 0x07, + 0x28, 0x01, 0x40, 0x01, 0x48, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x38, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x07, 0x74, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, + 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x44, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x48, 0x05, 0x52, 0x0d, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, + 0x04, 0x68, 0x64, 0x66, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x44, 0x46, 0x53, 0x48, 0x06, 0x52, 0x04, + 0x68, 0x64, 0x66, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, - 0x22, 0x93, 0x06, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, - 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x11, 0xfa, 0x42, 0x0e, 0x32, 0x0c, 0x18, 0x80, 0x80, - 0x80, 0x20, 0x28, 0x80, 0x80, 0x80, 0x02, 0x40, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x69, 0x65, - 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, - 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, - 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, - 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, 0x22, 0x40, 0x0a, + 0x10, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, + 0x6d, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, + 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x58, + 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, + 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x73, 0x46, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x73, 0x5f, + 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x32, 0xc2, 0x17, 0x0a, 0x09, 0x53, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, + 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, + 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, + 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x12, 0x45, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, - 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x0c, 0xfa, 0x42, 0x09, 0x22, 0x07, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x40, 0x01, 0x48, 0x03, 0x52, - 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x30, - 0x0a, 0x14, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, - 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x12, 0x44, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x48, 0x05, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x04, 0x68, 0x64, 0x66, 0x73, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, - 0x2e, 0x48, 0x44, 0x46, 0x53, 0x48, 0x06, 0x52, 0x04, 0x68, 0x64, 0x66, 0x73, 0x88, 0x01, 0x01, - 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x68, 0x64, 0x66, 0x73, 0x22, 0x40, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x70, 0x65, - 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6c, - 0x65, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, 0x6d, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, - 0x46, 0x69, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x58, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, - 0x1a, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xfa, 0x42, - 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x69, - 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x00, 0x52, 0x0a, 0x69, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x88, 0x01, - 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x32, 0xc2, 0x17, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, - 0x59, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, - 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, - 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, - 0x61, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x65, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3a, 0x0a, - 0x08, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x49, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, - 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, - 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x68, 0x0a, 0x11, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, - 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x49, 0x0a, 0x0d, 0x53, 0x74, - 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x45, 0x0a, + 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, + 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, + 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, + 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, + 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x77, 0x0a, 0x16, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x73, + 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, + 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x68, 0x0a, 0x11, 0x41, 0x6e, 0x6e, 0x6f, 0x75, + 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, - 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, - 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x58, 0x0a, 0x12, 0x53, - 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, - 0x72, 0x12, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, - 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, - 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x29, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x67, 0x0a, 0x1b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, - 0x30, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, - 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, + 0x01, 0x12, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, + 0x65, 0x72, 0x12, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, + 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, + 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, + 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x24, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x6c, 0x0a, 0x1c, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, - 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, - 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x77, 0x0a, 0x16, 0x41, 0x6e, 0x6e, + 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, + 0x65, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, + 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, + 0x30, 0x01, 0x12, 0x58, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x50, 0x65, 0x65, 0x72, 0x12, 0x29, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x1b, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x30, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0x6c, 0x0a, 0x1c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x12, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x65, + 0x0a, 0x1a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x2f, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, + 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x58, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x27, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, + 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, + 0x59, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x29, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, + 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x86, 0x01, 0x0a, 0x1b, 0x41, + 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, + 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, + 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, + 0x01, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2c, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x65, 0x0a, 0x1a, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, - 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x2f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x58, - 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x59, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, - 0x12, 0x29, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x86, 0x01, 0x0a, 0x1b, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, - 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, - 0x65, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, - 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, - 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x17, - 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x63, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, - 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x71, 0x0a, 0x20, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x35, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x7b, 0x0a, - 0x21, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x65, 0x64, 0x12, 0x36, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x6f, 0x0a, 0x1f, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x53, - 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x54, 0x61, 0x73, 0x6b, 0x12, 0x63, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, - 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x0c, 0x50, 0x72, 0x65, - 0x68, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x71, 0x0a, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x35, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x12, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, - 0x65, 0x12, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x6d, 0x70, 0x74, 0x79, 0x12, 0x7b, 0x0a, 0x21, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x36, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, + 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, + 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x12, 0x6f, 0x0a, 0x1f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2c, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x63, 0x0a, 0x19, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0x49, 0x0a, 0x0c, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x08, 0x53, - 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2f, 0x5a, 0x2d, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, - 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x32, 0x3b, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4c, 0x0a, 0x09, 0x53, + 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x50, 0x72, 0x65, + 0x68, 0x65, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x49, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1d, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2f, 0x5a, + 0x2d, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2f, 0x76, 0x32, 0x3b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/apis/scheduler/v2/scheduler.pb.validate.go b/pkg/apis/scheduler/v2/scheduler.pb.validate.go index 416ab77..1814df0 100644 --- a/pkg/apis/scheduler/v2/scheduler.pb.validate.go +++ b/pkg/apis/scheduler/v2/scheduler.pb.validate.go @@ -13205,6 +13205,8 @@ func (m *StatImageRequest) validate(all bool) error { } + // no validation rules for EnableTaskIdBasedBlobDigest + if m.PieceLength != nil { if m.GetPieceLength() != 0 { diff --git a/pkg/apis/scheduler/v2/scheduler.proto b/pkg/apis/scheduler/v2/scheduler.proto index 41cc35d..3b9848e 100644 --- a/pkg/apis/scheduler/v2/scheduler.proto +++ b/pkg/apis/scheduler/v2/scheduler.proto @@ -1018,6 +1018,11 @@ message StatImageRequest { pattern: "^(all_seed_peers|all_peers)$" ignore_empty: true }]; + // enable_task_id_based_blob_digest indicates whether to use the blob digest for task ID calculation + // when the layer url is an OCI blob url (e.g., /v2//blobs/sha256:). It should be + // consistent with the value used when the image was preheated, otherwise the tasks can not be + // found on the peers. + bool enable_task_id_based_blob_digest = 16; } // StatImageResponse represents response of StatImage. diff --git a/proto/scheduler.proto b/proto/scheduler.proto index d927fb5..b590c09 100644 --- a/proto/scheduler.proto +++ b/proto/scheduler.proto @@ -884,6 +884,11 @@ message StatImageRequest { // - all_peers: stat image from all available peers. // If not specified, stat image from all available peers. string scope = 15; + // enable_task_id_based_blob_digest indicates whether to use the blob digest for task ID calculation + // when the layer url is an OCI blob url (e.g., /v2//blobs/sha256:). It should be + // consistent with the value used when the image was preheated, otherwise the tasks can not be + // found on the peers. + bool enable_task_id_based_blob_digest = 16; } // StatImageResponse represents response of StatImage. diff --git a/python/dragonfly_api/scheduler_pb2.py b/python/dragonfly_api/scheduler_pb2.py index 4f62cce..ed94ccc 100644 --- a/python/dragonfly_api/scheduler_pb2.py +++ b/python/dragonfly_api/scheduler_pb2.py @@ -28,7 +28,7 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fscheduler.proto\x12\x0cscheduler.v2\x1a\x0c\x63ommon.proto\x1a\x12\x65rrordetails.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\"<\n\x13RegisterPeerRequest\x12%\n\x08\x64ownload\x18\x01 \x01(\x0b\x32\x13.common.v2.Download\"\x1c\n\x1a\x44ownloadPeerStartedRequest\"R\n&DownloadPeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"m\n\x15ReschedulePeerRequest\x12*\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x0f.common.v2.Peer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"F\n\x1b\x44ownloadPeerFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"R\n\'DownloadPeerBackToSourceFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"E\n\x19\x44ownloadPeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"Q\n%DownloadPeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"?\n\x1c\x44ownloadPieceFinishedRequest\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"K\n(DownloadPieceBackToSourceFinishedRequest\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"n\n\x1a\x44ownloadPieceFailedRequest\x12\x19\n\x0cpiece_number\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\tparent_id\x18\x02 \x01(\t\x12\x11\n\ttemporary\x18\x03 \x01(\x08\x42\x0f\n\r_piece_number\"\xba\x01\n&DownloadPieceBackToSourceFailedRequest\x12\x19\n\x0cpiece_number\x18\x01 \x01(\rH\x01\x88\x01\x01\x12+\n\x07\x62\x61\x63kend\x18\x02 \x01(\x0b\x32\x18.errordetails.v2.BackendH\x00\x12+\n\x07unknown\x18\x03 \x01(\x0b\x32\x18.errordetails.v2.UnknownH\x00\x42\n\n\x08responseB\x0f\n\r_piece_number\"\xac\t\n\x13\x41nnouncePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x42\n\x15register_peer_request\x18\x04 \x01(\x0b\x32!.scheduler.v2.RegisterPeerRequestH\x00\x12Q\n\x1d\x64ownload_peer_started_request\x18\x05 \x01(\x0b\x32(.scheduler.v2.DownloadPeerStartedRequestH\x00\x12l\n,download_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32\x34.scheduler.v2.DownloadPeerBackToSourceStartedRequestH\x00\x12\x46\n\x17reschedule_peer_request\x18\x07 \x01(\x0b\x32#.scheduler.v2.ReschedulePeerRequestH\x00\x12S\n\x1e\x64ownload_peer_finished_request\x18\x08 \x01(\x0b\x32).scheduler.v2.DownloadPeerFinishedRequestH\x00\x12n\n-download_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32\x35.scheduler.v2.DownloadPeerBackToSourceFinishedRequestH\x00\x12O\n\x1c\x64ownload_peer_failed_request\x18\n \x01(\x0b\x32\'.scheduler.v2.DownloadPeerFailedRequestH\x00\x12j\n+download_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32\x33.scheduler.v2.DownloadPeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x13\n\x11\x45mptyTaskResponse\"@\n\x12NormalTaskResponse\x12*\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x0f.common.v2.Peer\"D\n\x18NeedBackToSourceResponse\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x16\n\x14MetadataOnlyResponse\"\xba\x02\n\x14\x41nnouncePeerResponse\x12>\n\x13\x65mpty_task_response\x18\x01 \x01(\x0b\x32\x1f.scheduler.v2.EmptyTaskResponseH\x00\x12@\n\x14normal_task_response\x18\x02 \x01(\x0b\x32 .scheduler.v2.NormalTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x12\x44\n\x16metadata_only_response\x18\x04 \x01(\x0b\x32\".scheduler.v2.MetadataOnlyResponseH\x00\x42\n\n\x08response\"D\n\x0fStatPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"F\n\x11\x44\x65letePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"3\n\x0fStatTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"5\n\x11\x44\x65leteTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"s\n\x13\x41nnounceHostRequest\x12\x1d\n\x04host\x18\x01 \x01(\x0b\x32\x0f.common.v2.Host\x12\x30\n\x08interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x42\x0b\n\t_interval\".\n\x10ListHostsRequest\x12\x11\n\x04type\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x07\n\x05_type\"3\n\x11ListHostsResponse\x12\x1e\n\x05hosts\x18\x01 \x03(\x0b\x32\x0f.common.v2.Host\"$\n\x11\x44\x65leteHostRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\"\xba\t\n\x18RegisterCachePeerRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12Q\n\x0erequest_header\x18\t \x03(\x0b\x32\x39.scheduler.v2.RegisterCachePeerRequest.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x15 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x16 \x01(\tH\n\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x17 \x01(\rH\x0b\x88\x01\x01\x12 \n\x13\x61\x63tual_piece_length\x18\x18 \x01(\x04H\x0c\x88\x01\x01\x12\"\n\x15\x61\x63tual_content_length\x18\x19 \x01(\x04H\r\x88\x01\x01\x12\x1f\n\x12\x61\x63tual_piece_count\x18\x1a \x01(\x04H\x0e\x88\x01\x01\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ipB\x19\n\x17_concurrent_piece_countB\x16\n\x14_actual_piece_lengthB\x18\n\x16_actual_content_lengthB\x15\n\x13_actual_piece_count\"!\n\x1f\x44ownloadCachePeerStartedRequest\"W\n+DownloadCachePeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"w\n\x1aRescheduleCachePeerRequest\x12/\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x14.common.v2.CachePeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"K\n DownloadCachePeerFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"W\n,DownloadCachePeerBackToSourceFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"J\n\x1e\x44ownloadCachePeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"V\n*DownloadCachePeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x89\n\n\x18\x41nnounceCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12M\n\x1bregister_cache_peer_request\x18\x04 \x01(\x0b\x32&.scheduler.v2.RegisterCachePeerRequestH\x00\x12\\\n#download_cache_peer_started_request\x18\x05 \x01(\x0b\x32-.scheduler.v2.DownloadCachePeerStartedRequestH\x00\x12w\n2download_cache_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32\x39.scheduler.v2.DownloadCachePeerBackToSourceStartedRequestH\x00\x12Q\n\x1dreschedule_cache_peer_request\x18\x07 \x01(\x0b\x32(.scheduler.v2.RescheduleCachePeerRequestH\x00\x12^\n$download_cache_peer_finished_request\x18\x08 \x01(\x0b\x32..scheduler.v2.DownloadCachePeerFinishedRequestH\x00\x12y\n3download_cache_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32:.scheduler.v2.DownloadCachePeerBackToSourceFinishedRequestH\x00\x12Z\n\"download_cache_peer_failed_request\x18\n \x01(\x0b\x32,.scheduler.v2.DownloadCachePeerFailedRequestH\x00\x12u\n1download_cache_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32\x38.scheduler.v2.DownloadCachePeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x18\n\x16\x45mptyCacheTaskResponse\"J\n\x17NormalCacheTaskResponse\x12/\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x14.common.v2.CachePeer\"\x8f\x02\n\x19\x41nnounceCachePeerResponse\x12I\n\x19\x65mpty_cache_task_response\x18\x01 \x01(\x0b\x32$.scheduler.v2.EmptyCacheTaskResponseH\x00\x12K\n\x1anormal_cache_task_response\x18\x02 \x01(\x0b\x32%.scheduler.v2.NormalCacheTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x42\n\n\x08response\"I\n\x14StatCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"K\n\x16\x44\x65leteCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"8\n\x14StatCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\":\n\x16\x44\x65leteCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x8e\x02\n\x1dRegisterPersistentPeerRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x30\n\x0eobject_storage\x18\x02 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12\x12\n\npersistent\x18\x03 \x01(\x08\x12\x18\n\x0boutput_path\x18\x04 \x01(\tH\x00\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x0bpiece_count\x18\x06 \x01(\x04\x12\x1b\n\x13need_back_to_source\x18\x07 \x01(\x08\x42\x0e\n\x0c_output_pathB\x19\n\x17_concurrent_piece_count\"&\n$DownloadPersistentPeerStartedRequest\"\\\n0DownloadPersistentPeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x81\x01\n\x1fReschedulePersistentPeerRequest\x12\x34\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x19.common.v2.PersistentPeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\'\n%DownloadPersistentPeerFinishedRequest\"3\n1DownloadPersistentPeerBackToSourceFinishedRequest\"O\n#DownloadPersistentPeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"[\n/DownloadPersistentPeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xe0\n\n\x1d\x41nnouncePersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12W\n register_persistent_peer_request\x18\x04 \x01(\x0b\x32+.scheduler.v2.RegisterPersistentPeerRequestH\x00\x12\x66\n(download_persistent_peer_started_request\x18\x05 \x01(\x0b\x32\x32.scheduler.v2.DownloadPersistentPeerStartedRequestH\x00\x12\x81\x01\n7download_persistent_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32>.scheduler.v2.DownloadPersistentPeerBackToSourceStartedRequestH\x00\x12[\n\"reschedule_persistent_peer_request\x18\x07 \x01(\x0b\x32-.scheduler.v2.ReschedulePersistentPeerRequestH\x00\x12h\n)download_persistent_peer_finished_request\x18\x08 \x01(\x0b\x32\x33.scheduler.v2.DownloadPersistentPeerFinishedRequestH\x00\x12\x83\x01\n8download_persistent_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32?.scheduler.v2.DownloadPersistentPeerBackToSourceFinishedRequestH\x00\x12\x64\n\'download_persistent_peer_failed_request\x18\n \x01(\x0b\x32\x31.scheduler.v2.DownloadPersistentPeerFailedRequestH\x00\x12\x7f\n6download_persistent_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32=.scheduler.v2.DownloadPersistentPeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x1d\n\x1b\x45mptyPersistentTaskResponse\"T\n\x1cNormalPersistentTaskResponse\x12\x34\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x19.common.v2.PersistentPeer\"\xa8\x02\n\x1e\x41nnouncePersistentPeerResponse\x12S\n\x1e\x65mpty_persistent_task_response\x18\x01 \x01(\x0b\x32).scheduler.v2.EmptyPersistentTaskResponseH\x00\x12U\n\x1fnormal_persistent_task_response\x18\x02 \x01(\x0b\x32*.scheduler.v2.NormalPersistentTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x42\n\n\x08response\"N\n\x19StatPersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"P\n\x1b\x44\x65letePersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x8d\x02\n\"UploadPersistentTaskStartedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x30\n\x0eobject_storage\x18\x05 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12 \n\x18persistent_replica_count\x18\x06 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x07 \x01(\x04\x12\x13\n\x0bpiece_count\x18\x08 \x01(\r\x12&\n\x03ttl\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\"X\n#UploadPersistentTaskFinishedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x80\x01\n!UploadPersistentTaskFailedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"=\n\x19StatPersistentTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"?\n\x1b\x44\x65letePersistentTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x91\x02\n\"RegisterPersistentCachePeerRequest\x12\x12\n\npersistent\x18\x01 \x01(\x08\x12\x10\n\x03tag\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x04 \x01(\x04\x12\x18\n\x0boutput_path\x18\x05 \x01(\tH\x02\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x13\n\x0bpiece_count\x18\x07 \x01(\x04\x42\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0e\n\x0c_output_pathB\x19\n\x17_concurrent_piece_count\"+\n)DownloadPersistentCachePeerStartedRequest\"\x8b\x01\n$ReschedulePersistentCachePeerRequest\x12\x39\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x1e.common.v2.PersistentCachePeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"?\n*DownloadPersistentCachePeerFinishedRequestJ\x04\x08\x01\x10\x02R\x0bpiece_count\"T\n(DownloadPersistentCachePeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xb1\x06\n\"AnnouncePersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x62\n®ister_persistent_cache_peer_request\x18\x04 \x01(\x0b\x32\x30.scheduler.v2.RegisterPersistentCachePeerRequestH\x00\x12q\n.download_persistent_cache_peer_started_request\x18\x05 \x01(\x0b\x32\x37.scheduler.v2.DownloadPersistentCachePeerStartedRequestH\x00\x12\x66\n(reschedule_persistent_cache_peer_request\x18\x06 \x01(\x0b\x32\x32.scheduler.v2.ReschedulePersistentCachePeerRequestH\x00\x12s\n/download_persistent_cache_peer_finished_request\x18\x07 \x01(\x0b\x32\x38.scheduler.v2.DownloadPersistentCachePeerFinishedRequestH\x00\x12o\n-download_persistent_cache_peer_failed_request\x18\x08 \x01(\x0b\x32\x36.scheduler.v2.DownloadPersistentCachePeerFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\t \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\n \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x42\t\n\x07request\"\"\n EmptyPersistentCacheTaskResponse\"d\n!NormalPersistentCacheTaskResponse\x12?\n\x17\x63\x61ndidate_cache_parents\x18\x01 \x03(\x0b\x32\x1e.common.v2.PersistentCachePeer\"\xf3\x01\n#AnnouncePersistentCachePeerResponse\x12^\n$empty_persistent_cache_task_response\x18\x01 \x01(\x0b\x32..scheduler.v2.EmptyPersistentCacheTaskResponseH\x00\x12`\n%normal_persistent_cache_task_response\x18\x02 \x01(\x0b\x32/.scheduler.v2.NormalPersistentCacheTaskResponseH\x00\x42\n\n\x08response\"S\n\x1eStatPersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"U\n DeletePersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\xad\x02\n\'UploadPersistentCacheTaskStartedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12 \n\x18persistent_replica_count\x18\x04 \x01(\x04\x12\x10\n\x03tag\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x07 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x08 \x01(\x04\x12\x13\n\x0bpiece_count\x18\t \x01(\r\x12&\n\x03ttl\x18\n \x01(\x0b\x32\x19.google.protobuf.DurationB\x06\n\x04_tagB\x0e\n\x0c_application\"]\n(UploadPersistentCacheTaskFinishedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x85\x01\n&UploadPersistentCacheTaskFailedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"B\n\x1eStatPersistentCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"D\n DeletePersistentCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x86\x06\n\x13PreheatImageRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12=\n\x06header\x18\x06 \x03(\x0b\x32-.scheduler.v2.PreheatImageRequest.HeaderEntry\x12\x15\n\x08username\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08password\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08platform\x18\t \x01(\tH\x05\x88\x01\x01\x12\r\n\x05scope\x18\n \x01(\t\x12\x0b\n\x03ips\x18\x0b \x03(\t\x12\x17\n\npercentage\x18\x0c \x01(\rH\x06\x88\x01\x01\x12\x12\n\x05\x63ount\x18\r \x01(\rH\x07\x88\x01\x01\x12\"\n\x15\x63oncurrent_task_count\x18\x0e \x01(\x03H\x08\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0f \x01(\x03H\t\x88\x01\x01\x12/\n\x07timeout\x18\x10 \x01(\x0b\x32\x19.google.protobuf.DurationH\n\x88\x01\x01\x12%\n\x08priority\x18\x11 \x01(\x0e\x32\x13.common.v2.Priority\x12\x19\n\x11\x63\x65rtificate_chain\x18\x12 \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x13 \x01(\x08\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0b\n\t_usernameB\x0b\n\t_passwordB\x0b\n\t_platformB\r\n\x0b_percentageB\x08\n\x06_countB\x18\n\x16_concurrent_task_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeout\"\x88\x05\n\x10StatImageRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12:\n\x06header\x18\x06 \x03(\x0b\x32*.scheduler.v2.StatImageRequest.HeaderEntry\x12\x15\n\x08username\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08password\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08platform\x18\t \x01(\tH\x05\x88\x01\x01\x12#\n\x16\x63oncurrent_layer_count\x18\n \x01(\x03H\x06\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0b \x01(\x03H\x07\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x08\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\r \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x0e \x01(\x08\x12\r\n\x05scope\x18\x0f \x01(\t\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0b\n\t_usernameB\x0b\n\t_passwordB\x0b\n\t_platformB\x19\n\x17_concurrent_layer_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeout\"_\n\x11StatImageResponse\x12\"\n\x05image\x18\x01 \x01(\x0b\x32\x13.scheduler.v2.Image\x12&\n\x05peers\x18\x02 \x03(\x0b\x32\x17.scheduler.v2.PeerImage\"U\n\tPeerImage\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12*\n\rcached_layers\x18\x03 \x03(\x0b\x32\x13.scheduler.v2.Layer\",\n\x05Image\x12#\n\x06layers\x18\x01 \x03(\x0b\x32\x13.scheduler.v2.Layer\">\n\x05Layer\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x18\n\x0bis_finished\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x0e\n\x0c_is_finished\"\xb9\x06\n\x12PreheatFileRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12<\n\x06header\x18\x06 \x03(\x0b\x32,.scheduler.v2.PreheatFileRequest.HeaderEntry\x12\r\n\x05scope\x18\x07 \x01(\t\x12\x0b\n\x03ips\x18\x08 \x03(\t\x12\x17\n\npercentage\x18\t \x01(\rH\x03\x88\x01\x01\x12\x12\n\x05\x63ount\x18\n \x01(\rH\x04\x88\x01\x01\x12\"\n\x15\x63oncurrent_task_count\x18\x0b \x01(\x03H\x05\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0c \x01(\x03H\x06\x88\x01\x01\x12/\n\x07timeout\x18\r \x01(\x0b\x32\x19.google.protobuf.DurationH\x07\x88\x01\x01\x12%\n\x08priority\x18\x0e \x01(\x0e\x32\x13.common.v2.Priority\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x08\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\t\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x13 \x01(\tH\n\x88\x01\x01\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\r\n\x0b_percentageB\x08\n\x06_countB\x18\n\x16_concurrent_task_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\x0e\n\x0c_output_path\"\xc2\x04\n\x0fStatFileRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12\x39\n\x06header\x18\x06 \x03(\x0b\x32).scheduler.v2.StatFileRequest.HeaderEntry\x12\"\n\x15\x63oncurrent_peer_count\x18\x07 \x01(\x03H\x03\x88\x01\x01\x12/\n\x07timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationH\x04\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\t \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\n \x01(\x08\x12\x35\n\x0eobject_storage\x18\x0b \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x05\x88\x01\x01\x12\"\n\x04hdfs\x18\x0c \x01(\x0b\x32\x0f.common.v2.HDFSH\x06\x88\x01\x01\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfs\"9\n\x10StatFileResponse\x12%\n\x05peers\x18\x01 \x03(\x0b\x32\x16.scheduler.v2.PeerFile\"R\n\x08PeerFile\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12(\n\x0c\x63\x61\x63hed_files\x18\x03 \x03(\x0b\x32\x12.scheduler.v2.File\"=\n\x04\x46ile\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x18\n\x0bis_finished\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x0e\n\x0c_is_finished2\xc2\x17\n\tScheduler\x12Y\n\x0c\x41nnouncePeer\x12!.scheduler.v2.AnnouncePeerRequest\x1a\".scheduler.v2.AnnouncePeerResponse(\x01\x30\x01\x12:\n\x08StatPeer\x12\x1d.scheduler.v2.StatPeerRequest\x1a\x0f.common.v2.Peer\x12\x45\n\nDeletePeer\x12\x1f.scheduler.v2.DeletePeerRequest\x1a\x16.google.protobuf.Empty\x12:\n\x08StatTask\x12\x1d.scheduler.v2.StatTaskRequest\x1a\x0f.common.v2.Task\x12\x45\n\nDeleteTask\x12\x1f.scheduler.v2.DeleteTaskRequest\x1a\x16.google.protobuf.Empty\x12I\n\x0c\x41nnounceHost\x12!.scheduler.v2.AnnounceHostRequest\x1a\x16.google.protobuf.Empty\x12L\n\tListHosts\x12\x1e.scheduler.v2.ListHostsRequest\x1a\x1f.scheduler.v2.ListHostsResponse\x12\x45\n\nDeleteHost\x12\x1f.scheduler.v2.DeleteHostRequest\x1a\x16.google.protobuf.Empty\x12h\n\x11\x41nnounceCachePeer\x12&.scheduler.v2.AnnounceCachePeerRequest\x1a\'.scheduler.v2.AnnounceCachePeerResponse(\x01\x30\x01\x12I\n\rStatCachePeer\x12\".scheduler.v2.StatCachePeerRequest\x1a\x14.common.v2.CachePeer\x12O\n\x0f\x44\x65leteCachePeer\x12$.scheduler.v2.DeleteCachePeerRequest\x1a\x16.google.protobuf.Empty\x12I\n\rStatCacheTask\x12\".scheduler.v2.StatCacheTaskRequest\x1a\x14.common.v2.CacheTask\x12O\n\x0f\x44\x65leteCacheTask\x12$.scheduler.v2.DeleteCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12w\n\x16\x41nnouncePersistentPeer\x12+.scheduler.v2.AnnouncePersistentPeerRequest\x1a,.scheduler.v2.AnnouncePersistentPeerResponse(\x01\x30\x01\x12X\n\x12StatPersistentPeer\x12\'.scheduler.v2.StatPersistentPeerRequest\x1a\x19.common.v2.PersistentPeer\x12Y\n\x14\x44\x65letePersistentPeer\x12).scheduler.v2.DeletePersistentPeerRequest\x1a\x16.google.protobuf.Empty\x12g\n\x1bUploadPersistentTaskStarted\x12\x30.scheduler.v2.UploadPersistentTaskStartedRequest\x1a\x16.google.protobuf.Empty\x12l\n\x1cUploadPersistentTaskFinished\x12\x31.scheduler.v2.UploadPersistentTaskFinishedRequest\x1a\x19.common.v2.PersistentTask\x12\x65\n\x1aUploadPersistentTaskFailed\x12/.scheduler.v2.UploadPersistentTaskFailedRequest\x1a\x16.google.protobuf.Empty\x12X\n\x12StatPersistentTask\x12\'.scheduler.v2.StatPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12Y\n\x14\x44\x65letePersistentTask\x12).scheduler.v2.DeletePersistentTaskRequest\x1a\x16.google.protobuf.Empty\x12\x86\x01\n\x1b\x41nnouncePersistentCachePeer\x12\x30.scheduler.v2.AnnouncePersistentCachePeerRequest\x1a\x31.scheduler.v2.AnnouncePersistentCachePeerResponse(\x01\x30\x01\x12g\n\x17StatPersistentCachePeer\x12,.scheduler.v2.StatPersistentCachePeerRequest\x1a\x1e.common.v2.PersistentCachePeer\x12\x63\n\x19\x44\x65letePersistentCachePeer\x12..scheduler.v2.DeletePersistentCachePeerRequest\x1a\x16.google.protobuf.Empty\x12q\n UploadPersistentCacheTaskStarted\x12\x35.scheduler.v2.UploadPersistentCacheTaskStartedRequest\x1a\x16.google.protobuf.Empty\x12{\n!UploadPersistentCacheTaskFinished\x12\x36.scheduler.v2.UploadPersistentCacheTaskFinishedRequest\x1a\x1e.common.v2.PersistentCacheTask\x12o\n\x1fUploadPersistentCacheTaskFailed\x12\x34.scheduler.v2.UploadPersistentCacheTaskFailedRequest\x1a\x16.google.protobuf.Empty\x12g\n\x17StatPersistentCacheTask\x12,.scheduler.v2.StatPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x63\n\x19\x44\x65letePersistentCacheTask\x12..scheduler.v2.DeletePersistentCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12I\n\x0cPreheatImage\x12!.scheduler.v2.PreheatImageRequest\x1a\x16.google.protobuf.Empty\x12L\n\tStatImage\x12\x1e.scheduler.v2.StatImageRequest\x1a\x1f.scheduler.v2.StatImageResponse\x12G\n\x0bPreheatFile\x12 .scheduler.v2.PreheatFileRequest\x1a\x16.google.protobuf.Empty\x12I\n\x08StatFile\x12\x1d.scheduler.v2.StatFileRequest\x1a\x1e.scheduler.v2.StatFileResponseb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fscheduler.proto\x12\x0cscheduler.v2\x1a\x0c\x63ommon.proto\x1a\x12\x65rrordetails.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\"<\n\x13RegisterPeerRequest\x12%\n\x08\x64ownload\x18\x01 \x01(\x0b\x32\x13.common.v2.Download\"\x1c\n\x1a\x44ownloadPeerStartedRequest\"R\n&DownloadPeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"m\n\x15ReschedulePeerRequest\x12*\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x0f.common.v2.Peer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"F\n\x1b\x44ownloadPeerFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"R\n\'DownloadPeerBackToSourceFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"E\n\x19\x44ownloadPeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"Q\n%DownloadPeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"?\n\x1c\x44ownloadPieceFinishedRequest\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"K\n(DownloadPieceBackToSourceFinishedRequest\x12\x1f\n\x05piece\x18\x01 \x01(\x0b\x32\x10.common.v2.Piece\"n\n\x1a\x44ownloadPieceFailedRequest\x12\x19\n\x0cpiece_number\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\tparent_id\x18\x02 \x01(\t\x12\x11\n\ttemporary\x18\x03 \x01(\x08\x42\x0f\n\r_piece_number\"\xba\x01\n&DownloadPieceBackToSourceFailedRequest\x12\x19\n\x0cpiece_number\x18\x01 \x01(\rH\x01\x88\x01\x01\x12+\n\x07\x62\x61\x63kend\x18\x02 \x01(\x0b\x32\x18.errordetails.v2.BackendH\x00\x12+\n\x07unknown\x18\x03 \x01(\x0b\x32\x18.errordetails.v2.UnknownH\x00\x42\n\n\x08responseB\x0f\n\r_piece_number\"\xac\t\n\x13\x41nnouncePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x42\n\x15register_peer_request\x18\x04 \x01(\x0b\x32!.scheduler.v2.RegisterPeerRequestH\x00\x12Q\n\x1d\x64ownload_peer_started_request\x18\x05 \x01(\x0b\x32(.scheduler.v2.DownloadPeerStartedRequestH\x00\x12l\n,download_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32\x34.scheduler.v2.DownloadPeerBackToSourceStartedRequestH\x00\x12\x46\n\x17reschedule_peer_request\x18\x07 \x01(\x0b\x32#.scheduler.v2.ReschedulePeerRequestH\x00\x12S\n\x1e\x64ownload_peer_finished_request\x18\x08 \x01(\x0b\x32).scheduler.v2.DownloadPeerFinishedRequestH\x00\x12n\n-download_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32\x35.scheduler.v2.DownloadPeerBackToSourceFinishedRequestH\x00\x12O\n\x1c\x64ownload_peer_failed_request\x18\n \x01(\x0b\x32\'.scheduler.v2.DownloadPeerFailedRequestH\x00\x12j\n+download_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32\x33.scheduler.v2.DownloadPeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x13\n\x11\x45mptyTaskResponse\"@\n\x12NormalTaskResponse\x12*\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x0f.common.v2.Peer\"D\n\x18NeedBackToSourceResponse\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x16\n\x14MetadataOnlyResponse\"\xba\x02\n\x14\x41nnouncePeerResponse\x12>\n\x13\x65mpty_task_response\x18\x01 \x01(\x0b\x32\x1f.scheduler.v2.EmptyTaskResponseH\x00\x12@\n\x14normal_task_response\x18\x02 \x01(\x0b\x32 .scheduler.v2.NormalTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x12\x44\n\x16metadata_only_response\x18\x04 \x01(\x0b\x32\".scheduler.v2.MetadataOnlyResponseH\x00\x42\n\n\x08response\"D\n\x0fStatPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"F\n\x11\x44\x65letePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"3\n\x0fStatTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"5\n\x11\x44\x65leteTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"s\n\x13\x41nnounceHostRequest\x12\x1d\n\x04host\x18\x01 \x01(\x0b\x32\x0f.common.v2.Host\x12\x30\n\x08interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x42\x0b\n\t_interval\".\n\x10ListHostsRequest\x12\x11\n\x04type\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x07\n\x05_type\"3\n\x11ListHostsResponse\x12\x1e\n\x05hosts\x18\x01 \x03(\x0b\x32\x0f.common.v2.Host\"$\n\x11\x44\x65leteHostRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\"\xba\t\n\x18RegisterCachePeerRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x06\x64igest\x18\x02 \x01(\tH\x00\x88\x01\x01\x12$\n\x05range\x18\x03 \x01(\x0b\x32\x10.common.v2.RangeH\x01\x88\x01\x01\x12!\n\x04type\x18\x04 \x01(\x0e\x32\x13.common.v2.TaskType\x12\x10\n\x03tag\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x03\x88\x01\x01\x12%\n\x08priority\x18\x07 \x01(\x0e\x32\x13.common.v2.Priority\x12\x1d\n\x15\x66iltered_query_params\x18\x08 \x03(\t\x12Q\n\x0erequest_header\x18\t \x03(\x0b\x32\x39.scheduler.v2.RegisterCachePeerRequest.RequestHeaderEntry\x12\x19\n\x0cpiece_length\x18\n \x01(\x04H\x04\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x0b \x01(\tH\x05\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x06\x88\x01\x01\x12\x1e\n\x16\x64isable_back_to_source\x18\r \x01(\x08\x12\x1b\n\x13need_back_to_source\x18\x0e \x01(\x08\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x10\n\x08prefetch\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x07\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\x08\x88\x01\x01\x12\x13\n\x0bis_prefetch\x18\x13 \x01(\x08\x12\x1a\n\x12need_piece_content\x18\x14 \x01(\x08\x12,\n\x1f\x63ontent_for_calculating_task_id\x18\x15 \x01(\tH\t\x88\x01\x01\x12\x16\n\tremote_ip\x18\x16 \x01(\tH\n\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x17 \x01(\rH\x0b\x88\x01\x01\x12 \n\x13\x61\x63tual_piece_length\x18\x18 \x01(\x04H\x0c\x88\x01\x01\x12\"\n\x15\x61\x63tual_content_length\x18\x19 \x01(\x04H\r\x88\x01\x01\x12\x1f\n\x12\x61\x63tual_piece_count\x18\x1a \x01(\x04H\x0e\x88\x01\x01\x1a\x34\n\x12RequestHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\t\n\x07_digestB\x08\n\x06_rangeB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0f\n\r_piece_lengthB\x0e\n\x0c_output_pathB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\"\n _content_for_calculating_task_idB\x0c\n\n_remote_ipB\x19\n\x17_concurrent_piece_countB\x16\n\x14_actual_piece_lengthB\x18\n\x16_actual_content_lengthB\x15\n\x13_actual_piece_count\"!\n\x1f\x44ownloadCachePeerStartedRequest\"W\n+DownloadCachePeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"w\n\x1aRescheduleCachePeerRequest\x12/\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x14.common.v2.CachePeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"K\n DownloadCachePeerFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"W\n,DownloadCachePeerBackToSourceFinishedRequestJ\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x0e\x63ontent_lengthR\x0bpiece_count\"J\n\x1e\x44ownloadCachePeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"V\n*DownloadCachePeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x89\n\n\x18\x41nnounceCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12M\n\x1bregister_cache_peer_request\x18\x04 \x01(\x0b\x32&.scheduler.v2.RegisterCachePeerRequestH\x00\x12\\\n#download_cache_peer_started_request\x18\x05 \x01(\x0b\x32-.scheduler.v2.DownloadCachePeerStartedRequestH\x00\x12w\n2download_cache_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32\x39.scheduler.v2.DownloadCachePeerBackToSourceStartedRequestH\x00\x12Q\n\x1dreschedule_cache_peer_request\x18\x07 \x01(\x0b\x32(.scheduler.v2.RescheduleCachePeerRequestH\x00\x12^\n$download_cache_peer_finished_request\x18\x08 \x01(\x0b\x32..scheduler.v2.DownloadCachePeerFinishedRequestH\x00\x12y\n3download_cache_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32:.scheduler.v2.DownloadCachePeerBackToSourceFinishedRequestH\x00\x12Z\n\"download_cache_peer_failed_request\x18\n \x01(\x0b\x32,.scheduler.v2.DownloadCachePeerFailedRequestH\x00\x12u\n1download_cache_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32\x38.scheduler.v2.DownloadCachePeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x18\n\x16\x45mptyCacheTaskResponse\"J\n\x17NormalCacheTaskResponse\x12/\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x14.common.v2.CachePeer\"\x8f\x02\n\x19\x41nnounceCachePeerResponse\x12I\n\x19\x65mpty_cache_task_response\x18\x01 \x01(\x0b\x32$.scheduler.v2.EmptyCacheTaskResponseH\x00\x12K\n\x1anormal_cache_task_response\x18\x02 \x01(\x0b\x32%.scheduler.v2.NormalCacheTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x42\n\n\x08response\"I\n\x14StatCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"K\n\x16\x44\x65leteCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"8\n\x14StatCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\":\n\x16\x44\x65leteCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x8e\x02\n\x1dRegisterPersistentPeerRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x30\n\x0eobject_storage\x18\x02 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12\x12\n\npersistent\x18\x03 \x01(\x08\x12\x18\n\x0boutput_path\x18\x04 \x01(\tH\x00\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x0bpiece_count\x18\x06 \x01(\x04\x12\x1b\n\x13need_back_to_source\x18\x07 \x01(\x08\x42\x0e\n\x0c_output_pathB\x19\n\x17_concurrent_piece_count\"&\n$DownloadPersistentPeerStartedRequest\"\\\n0DownloadPersistentPeerBackToSourceStartedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x81\x01\n\x1fReschedulePersistentPeerRequest\x12\x34\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x19.common.v2.PersistentPeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\'\n%DownloadPersistentPeerFinishedRequest\"3\n1DownloadPersistentPeerBackToSourceFinishedRequest\"O\n#DownloadPersistentPeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"[\n/DownloadPersistentPeerBackToSourceFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xe0\n\n\x1d\x41nnouncePersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12W\n register_persistent_peer_request\x18\x04 \x01(\x0b\x32+.scheduler.v2.RegisterPersistentPeerRequestH\x00\x12\x66\n(download_persistent_peer_started_request\x18\x05 \x01(\x0b\x32\x32.scheduler.v2.DownloadPersistentPeerStartedRequestH\x00\x12\x81\x01\n7download_persistent_peer_back_to_source_started_request\x18\x06 \x01(\x0b\x32>.scheduler.v2.DownloadPersistentPeerBackToSourceStartedRequestH\x00\x12[\n\"reschedule_persistent_peer_request\x18\x07 \x01(\x0b\x32-.scheduler.v2.ReschedulePersistentPeerRequestH\x00\x12h\n)download_persistent_peer_finished_request\x18\x08 \x01(\x0b\x32\x33.scheduler.v2.DownloadPersistentPeerFinishedRequestH\x00\x12\x83\x01\n8download_persistent_peer_back_to_source_finished_request\x18\t \x01(\x0b\x32?.scheduler.v2.DownloadPersistentPeerBackToSourceFinishedRequestH\x00\x12\x64\n\'download_persistent_peer_failed_request\x18\n \x01(\x0b\x32\x31.scheduler.v2.DownloadPersistentPeerFailedRequestH\x00\x12\x7f\n6download_persistent_peer_back_to_source_failed_request\x18\x0b \x01(\x0b\x32=.scheduler.v2.DownloadPersistentPeerBackToSourceFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\x0c \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12p\n.download_piece_back_to_source_finished_request\x18\r \x01(\x0b\x32\x36.scheduler.v2.DownloadPieceBackToSourceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\x0e \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x12l\n,download_piece_back_to_source_failed_request\x18\x0f \x01(\x0b\x32\x34.scheduler.v2.DownloadPieceBackToSourceFailedRequestH\x00\x42\t\n\x07request\"\x1d\n\x1b\x45mptyPersistentTaskResponse\"T\n\x1cNormalPersistentTaskResponse\x12\x34\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x19.common.v2.PersistentPeer\"\xa8\x02\n\x1e\x41nnouncePersistentPeerResponse\x12S\n\x1e\x65mpty_persistent_task_response\x18\x01 \x01(\x0b\x32).scheduler.v2.EmptyPersistentTaskResponseH\x00\x12U\n\x1fnormal_persistent_task_response\x18\x02 \x01(\x0b\x32*.scheduler.v2.NormalPersistentTaskResponseH\x00\x12N\n\x1cneed_back_to_source_response\x18\x03 \x01(\x0b\x32&.scheduler.v2.NeedBackToSourceResponseH\x00\x42\n\n\x08response\"N\n\x19StatPersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"P\n\x1b\x44\x65letePersistentPeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x8d\x02\n\"UploadPersistentTaskStartedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x30\n\x0eobject_storage\x18\x05 \x01(\x0b\x32\x18.common.v2.ObjectStorage\x12 \n\x18persistent_replica_count\x18\x06 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x07 \x01(\x04\x12\x13\n\x0bpiece_count\x18\x08 \x01(\r\x12&\n\x03ttl\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\"X\n#UploadPersistentTaskFinishedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x80\x01\n!UploadPersistentTaskFailedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"=\n\x19StatPersistentTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"?\n\x1b\x44\x65letePersistentTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x91\x02\n\"RegisterPersistentCachePeerRequest\x12\x12\n\npersistent\x18\x01 \x01(\x08\x12\x10\n\x03tag\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x04 \x01(\x04\x12\x18\n\x0boutput_path\x18\x05 \x01(\tH\x02\x88\x01\x01\x12#\n\x16\x63oncurrent_piece_count\x18\x06 \x01(\rH\x03\x88\x01\x01\x12\x13\n\x0bpiece_count\x18\x07 \x01(\x04\x42\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0e\n\x0c_output_pathB\x19\n\x17_concurrent_piece_count\"+\n)DownloadPersistentCachePeerStartedRequest\"\x8b\x01\n$ReschedulePersistentCachePeerRequest\x12\x39\n\x11\x63\x61ndidate_parents\x18\x01 \x03(\x0b\x32\x1e.common.v2.PersistentCachePeer\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"?\n*DownloadPersistentCachePeerFinishedRequestJ\x04\x08\x01\x10\x02R\x0bpiece_count\"T\n(DownloadPersistentCachePeerFailedRequest\x12\x18\n\x0b\x64\x65scription\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\xb1\x06\n\"AnnouncePersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x62\n®ister_persistent_cache_peer_request\x18\x04 \x01(\x0b\x32\x30.scheduler.v2.RegisterPersistentCachePeerRequestH\x00\x12q\n.download_persistent_cache_peer_started_request\x18\x05 \x01(\x0b\x32\x37.scheduler.v2.DownloadPersistentCachePeerStartedRequestH\x00\x12\x66\n(reschedule_persistent_cache_peer_request\x18\x06 \x01(\x0b\x32\x32.scheduler.v2.ReschedulePersistentCachePeerRequestH\x00\x12s\n/download_persistent_cache_peer_finished_request\x18\x07 \x01(\x0b\x32\x38.scheduler.v2.DownloadPersistentCachePeerFinishedRequestH\x00\x12o\n-download_persistent_cache_peer_failed_request\x18\x08 \x01(\x0b\x32\x36.scheduler.v2.DownloadPersistentCachePeerFailedRequestH\x00\x12U\n\x1f\x64ownload_piece_finished_request\x18\t \x01(\x0b\x32*.scheduler.v2.DownloadPieceFinishedRequestH\x00\x12Q\n\x1d\x64ownload_piece_failed_request\x18\n \x01(\x0b\x32(.scheduler.v2.DownloadPieceFailedRequestH\x00\x42\t\n\x07request\"\"\n EmptyPersistentCacheTaskResponse\"d\n!NormalPersistentCacheTaskResponse\x12?\n\x17\x63\x61ndidate_cache_parents\x18\x01 \x03(\x0b\x32\x1e.common.v2.PersistentCachePeer\"\xf3\x01\n#AnnouncePersistentCachePeerResponse\x12^\n$empty_persistent_cache_task_response\x18\x01 \x01(\x0b\x32..scheduler.v2.EmptyPersistentCacheTaskResponseH\x00\x12`\n%normal_persistent_cache_task_response\x18\x02 \x01(\x0b\x32/.scheduler.v2.NormalPersistentCacheTaskResponseH\x00\x42\n\n\x08response\"S\n\x1eStatPersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"U\n DeletePersistentCachePeerRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\xad\x02\n\'UploadPersistentCacheTaskStartedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12 \n\x18persistent_replica_count\x18\x04 \x01(\x04\x12\x10\n\x03tag\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x0cpiece_length\x18\x07 \x01(\x04\x12\x16\n\x0e\x63ontent_length\x18\x08 \x01(\x04\x12\x13\n\x0bpiece_count\x18\t \x01(\r\x12&\n\x03ttl\x18\n \x01(\x0b\x32\x19.google.protobuf.DurationB\x06\n\x04_tagB\x0e\n\x0c_application\"]\n(UploadPersistentCacheTaskFinishedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\"\x85\x01\n&UploadPersistentCacheTaskFailedRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\x12\x0f\n\x07peer_id\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"B\n\x1eStatPersistentCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"D\n DeletePersistentCacheTaskRequest\x12\x0f\n\x07host_id\x18\x01 \x01(\t\x12\x0f\n\x07task_id\x18\x02 \x01(\t\"\x86\x06\n\x13PreheatImageRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12=\n\x06header\x18\x06 \x03(\x0b\x32-.scheduler.v2.PreheatImageRequest.HeaderEntry\x12\x15\n\x08username\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08password\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08platform\x18\t \x01(\tH\x05\x88\x01\x01\x12\r\n\x05scope\x18\n \x01(\t\x12\x0b\n\x03ips\x18\x0b \x03(\t\x12\x17\n\npercentage\x18\x0c \x01(\rH\x06\x88\x01\x01\x12\x12\n\x05\x63ount\x18\r \x01(\rH\x07\x88\x01\x01\x12\"\n\x15\x63oncurrent_task_count\x18\x0e \x01(\x03H\x08\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0f \x01(\x03H\t\x88\x01\x01\x12/\n\x07timeout\x18\x10 \x01(\x0b\x32\x19.google.protobuf.DurationH\n\x88\x01\x01\x12%\n\x08priority\x18\x11 \x01(\x0e\x32\x13.common.v2.Priority\x12\x19\n\x11\x63\x65rtificate_chain\x18\x12 \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x13 \x01(\x08\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0b\n\t_usernameB\x0b\n\t_passwordB\x0b\n\t_platformB\r\n\x0b_percentageB\x08\n\x06_countB\x18\n\x16_concurrent_task_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeout\"\xb2\x05\n\x10StatImageRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12:\n\x06header\x18\x06 \x03(\x0b\x32*.scheduler.v2.StatImageRequest.HeaderEntry\x12\x15\n\x08username\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08password\x18\x08 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08platform\x18\t \x01(\tH\x05\x88\x01\x01\x12#\n\x16\x63oncurrent_layer_count\x18\n \x01(\x03H\x06\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0b \x01(\x03H\x07\x88\x01\x01\x12/\n\x07timeout\x18\x0c \x01(\x0b\x32\x19.google.protobuf.DurationH\x08\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\r \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x0e \x01(\x08\x12\r\n\x05scope\x18\x0f \x01(\t\x12(\n enable_task_id_based_blob_digest\x18\x10 \x01(\x08\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x0b\n\t_usernameB\x0b\n\t_passwordB\x0b\n\t_platformB\x19\n\x17_concurrent_layer_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeout\"_\n\x11StatImageResponse\x12\"\n\x05image\x18\x01 \x01(\x0b\x32\x13.scheduler.v2.Image\x12&\n\x05peers\x18\x02 \x03(\x0b\x32\x17.scheduler.v2.PeerImage\"U\n\tPeerImage\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12*\n\rcached_layers\x18\x03 \x03(\x0b\x32\x13.scheduler.v2.Layer\",\n\x05Image\x12#\n\x06layers\x18\x01 \x03(\x0b\x32\x13.scheduler.v2.Layer\">\n\x05Layer\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x18\n\x0bis_finished\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x0e\n\x0c_is_finished\"\xb9\x06\n\x12PreheatFileRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12<\n\x06header\x18\x06 \x03(\x0b\x32,.scheduler.v2.PreheatFileRequest.HeaderEntry\x12\r\n\x05scope\x18\x07 \x01(\t\x12\x0b\n\x03ips\x18\x08 \x03(\t\x12\x17\n\npercentage\x18\t \x01(\rH\x03\x88\x01\x01\x12\x12\n\x05\x63ount\x18\n \x01(\rH\x04\x88\x01\x01\x12\"\n\x15\x63oncurrent_task_count\x18\x0b \x01(\x03H\x05\x88\x01\x01\x12\"\n\x15\x63oncurrent_peer_count\x18\x0c \x01(\x03H\x06\x88\x01\x01\x12/\n\x07timeout\x18\r \x01(\x0b\x32\x19.google.protobuf.DurationH\x07\x88\x01\x01\x12%\n\x08priority\x18\x0e \x01(\x0e\x32\x13.common.v2.Priority\x12\x19\n\x11\x63\x65rtificate_chain\x18\x0f \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\x10 \x01(\x08\x12\x35\n\x0eobject_storage\x18\x11 \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x08\x88\x01\x01\x12\"\n\x04hdfs\x18\x12 \x01(\x0b\x32\x0f.common.v2.HDFSH\t\x88\x01\x01\x12\x18\n\x0boutput_path\x18\x13 \x01(\tH\n\x88\x01\x01\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\r\n\x0b_percentageB\x08\n\x06_countB\x18\n\x16_concurrent_task_countB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfsB\x0e\n\x0c_output_path\"\xc2\x04\n\x0fStatFileRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x19\n\x0cpiece_length\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x10\n\x03tag\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pplication\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x15\x66iltered_query_params\x18\x05 \x03(\t\x12\x39\n\x06header\x18\x06 \x03(\x0b\x32).scheduler.v2.StatFileRequest.HeaderEntry\x12\"\n\x15\x63oncurrent_peer_count\x18\x07 \x01(\x03H\x03\x88\x01\x01\x12/\n\x07timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationH\x04\x88\x01\x01\x12\x19\n\x11\x63\x65rtificate_chain\x18\t \x03(\x0c\x12\x1c\n\x14insecure_skip_verify\x18\n \x01(\x08\x12\x35\n\x0eobject_storage\x18\x0b \x01(\x0b\x32\x18.common.v2.ObjectStorageH\x05\x88\x01\x01\x12\"\n\x04hdfs\x18\x0c \x01(\x0b\x32\x0f.common.v2.HDFSH\x06\x88\x01\x01\x1a-\n\x0bHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_piece_lengthB\x06\n\x04_tagB\x0e\n\x0c_applicationB\x18\n\x16_concurrent_peer_countB\n\n\x08_timeoutB\x11\n\x0f_object_storageB\x07\n\x05_hdfs\"9\n\x10StatFileResponse\x12%\n\x05peers\x18\x01 \x03(\x0b\x32\x16.scheduler.v2.PeerFile\"R\n\x08PeerFile\x12\n\n\x02ip\x18\x01 \x01(\t\x12\x10\n\x08hostname\x18\x02 \x01(\t\x12(\n\x0c\x63\x61\x63hed_files\x18\x03 \x03(\x0b\x32\x12.scheduler.v2.File\"=\n\x04\x46ile\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x18\n\x0bis_finished\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x0e\n\x0c_is_finished2\xc2\x17\n\tScheduler\x12Y\n\x0c\x41nnouncePeer\x12!.scheduler.v2.AnnouncePeerRequest\x1a\".scheduler.v2.AnnouncePeerResponse(\x01\x30\x01\x12:\n\x08StatPeer\x12\x1d.scheduler.v2.StatPeerRequest\x1a\x0f.common.v2.Peer\x12\x45\n\nDeletePeer\x12\x1f.scheduler.v2.DeletePeerRequest\x1a\x16.google.protobuf.Empty\x12:\n\x08StatTask\x12\x1d.scheduler.v2.StatTaskRequest\x1a\x0f.common.v2.Task\x12\x45\n\nDeleteTask\x12\x1f.scheduler.v2.DeleteTaskRequest\x1a\x16.google.protobuf.Empty\x12I\n\x0c\x41nnounceHost\x12!.scheduler.v2.AnnounceHostRequest\x1a\x16.google.protobuf.Empty\x12L\n\tListHosts\x12\x1e.scheduler.v2.ListHostsRequest\x1a\x1f.scheduler.v2.ListHostsResponse\x12\x45\n\nDeleteHost\x12\x1f.scheduler.v2.DeleteHostRequest\x1a\x16.google.protobuf.Empty\x12h\n\x11\x41nnounceCachePeer\x12&.scheduler.v2.AnnounceCachePeerRequest\x1a\'.scheduler.v2.AnnounceCachePeerResponse(\x01\x30\x01\x12I\n\rStatCachePeer\x12\".scheduler.v2.StatCachePeerRequest\x1a\x14.common.v2.CachePeer\x12O\n\x0f\x44\x65leteCachePeer\x12$.scheduler.v2.DeleteCachePeerRequest\x1a\x16.google.protobuf.Empty\x12I\n\rStatCacheTask\x12\".scheduler.v2.StatCacheTaskRequest\x1a\x14.common.v2.CacheTask\x12O\n\x0f\x44\x65leteCacheTask\x12$.scheduler.v2.DeleteCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12w\n\x16\x41nnouncePersistentPeer\x12+.scheduler.v2.AnnouncePersistentPeerRequest\x1a,.scheduler.v2.AnnouncePersistentPeerResponse(\x01\x30\x01\x12X\n\x12StatPersistentPeer\x12\'.scheduler.v2.StatPersistentPeerRequest\x1a\x19.common.v2.PersistentPeer\x12Y\n\x14\x44\x65letePersistentPeer\x12).scheduler.v2.DeletePersistentPeerRequest\x1a\x16.google.protobuf.Empty\x12g\n\x1bUploadPersistentTaskStarted\x12\x30.scheduler.v2.UploadPersistentTaskStartedRequest\x1a\x16.google.protobuf.Empty\x12l\n\x1cUploadPersistentTaskFinished\x12\x31.scheduler.v2.UploadPersistentTaskFinishedRequest\x1a\x19.common.v2.PersistentTask\x12\x65\n\x1aUploadPersistentTaskFailed\x12/.scheduler.v2.UploadPersistentTaskFailedRequest\x1a\x16.google.protobuf.Empty\x12X\n\x12StatPersistentTask\x12\'.scheduler.v2.StatPersistentTaskRequest\x1a\x19.common.v2.PersistentTask\x12Y\n\x14\x44\x65letePersistentTask\x12).scheduler.v2.DeletePersistentTaskRequest\x1a\x16.google.protobuf.Empty\x12\x86\x01\n\x1b\x41nnouncePersistentCachePeer\x12\x30.scheduler.v2.AnnouncePersistentCachePeerRequest\x1a\x31.scheduler.v2.AnnouncePersistentCachePeerResponse(\x01\x30\x01\x12g\n\x17StatPersistentCachePeer\x12,.scheduler.v2.StatPersistentCachePeerRequest\x1a\x1e.common.v2.PersistentCachePeer\x12\x63\n\x19\x44\x65letePersistentCachePeer\x12..scheduler.v2.DeletePersistentCachePeerRequest\x1a\x16.google.protobuf.Empty\x12q\n UploadPersistentCacheTaskStarted\x12\x35.scheduler.v2.UploadPersistentCacheTaskStartedRequest\x1a\x16.google.protobuf.Empty\x12{\n!UploadPersistentCacheTaskFinished\x12\x36.scheduler.v2.UploadPersistentCacheTaskFinishedRequest\x1a\x1e.common.v2.PersistentCacheTask\x12o\n\x1fUploadPersistentCacheTaskFailed\x12\x34.scheduler.v2.UploadPersistentCacheTaskFailedRequest\x1a\x16.google.protobuf.Empty\x12g\n\x17StatPersistentCacheTask\x12,.scheduler.v2.StatPersistentCacheTaskRequest\x1a\x1e.common.v2.PersistentCacheTask\x12\x63\n\x19\x44\x65letePersistentCacheTask\x12..scheduler.v2.DeletePersistentCacheTaskRequest\x1a\x16.google.protobuf.Empty\x12I\n\x0cPreheatImage\x12!.scheduler.v2.PreheatImageRequest\x1a\x16.google.protobuf.Empty\x12L\n\tStatImage\x12\x1e.scheduler.v2.StatImageRequest\x1a\x1f.scheduler.v2.StatImageResponse\x12G\n\x0bPreheatFile\x12 .scheduler.v2.PreheatFileRequest\x1a\x16.google.protobuf.Empty\x12I\n\x08StatFile\x12\x1d.scheduler.v2.StatFileRequest\x1a\x1e.scheduler.v2.StatFileResponseb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -206,31 +206,31 @@ _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_start=13706 _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_end=13751 _globals['_STATIMAGEREQUEST']._serialized_start=13923 - _globals['_STATIMAGEREQUEST']._serialized_end=14571 + _globals['_STATIMAGEREQUEST']._serialized_end=14613 _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_start=13706 _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_end=13751 - _globals['_STATIMAGERESPONSE']._serialized_start=14573 - _globals['_STATIMAGERESPONSE']._serialized_end=14668 - _globals['_PEERIMAGE']._serialized_start=14670 - _globals['_PEERIMAGE']._serialized_end=14755 - _globals['_IMAGE']._serialized_start=14757 - _globals['_IMAGE']._serialized_end=14801 - _globals['_LAYER']._serialized_start=14803 - _globals['_LAYER']._serialized_end=14865 - _globals['_PREHEATFILEREQUEST']._serialized_start=14868 - _globals['_PREHEATFILEREQUEST']._serialized_end=15693 + _globals['_STATIMAGERESPONSE']._serialized_start=14615 + _globals['_STATIMAGERESPONSE']._serialized_end=14710 + _globals['_PEERIMAGE']._serialized_start=14712 + _globals['_PEERIMAGE']._serialized_end=14797 + _globals['_IMAGE']._serialized_start=14799 + _globals['_IMAGE']._serialized_end=14843 + _globals['_LAYER']._serialized_start=14845 + _globals['_LAYER']._serialized_end=14907 + _globals['_PREHEATFILEREQUEST']._serialized_start=14910 + _globals['_PREHEATFILEREQUEST']._serialized_end=15735 _globals['_PREHEATFILEREQUEST_HEADERENTRY']._serialized_start=13706 _globals['_PREHEATFILEREQUEST_HEADERENTRY']._serialized_end=13751 - _globals['_STATFILEREQUEST']._serialized_start=15696 - _globals['_STATFILEREQUEST']._serialized_end=16274 + _globals['_STATFILEREQUEST']._serialized_start=15738 + _globals['_STATFILEREQUEST']._serialized_end=16316 _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_start=13706 _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_end=13751 - _globals['_STATFILERESPONSE']._serialized_start=16276 - _globals['_STATFILERESPONSE']._serialized_end=16333 - _globals['_PEERFILE']._serialized_start=16335 - _globals['_PEERFILE']._serialized_end=16417 - _globals['_FILE']._serialized_start=16419 - _globals['_FILE']._serialized_end=16480 - _globals['_SCHEDULER']._serialized_start=16483 - _globals['_SCHEDULER']._serialized_end=19493 + _globals['_STATFILERESPONSE']._serialized_start=16318 + _globals['_STATFILERESPONSE']._serialized_end=16375 + _globals['_PEERFILE']._serialized_start=16377 + _globals['_PEERFILE']._serialized_end=16459 + _globals['_FILE']._serialized_start=16461 + _globals['_FILE']._serialized_end=16522 + _globals['_SCHEDULER']._serialized_start=16525 + _globals['_SCHEDULER']._serialized_end=19535 # @@protoc_insertion_point(module_scope) diff --git a/python/dragonfly_api/scheduler_pb2.pyi b/python/dragonfly_api/scheduler_pb2.pyi index 6f8ac74..40138db 100644 --- a/python/dragonfly_api/scheduler_pb2.pyi +++ b/python/dragonfly_api/scheduler_pb2.pyi @@ -811,7 +811,7 @@ class PreheatImageRequest(_message.Message): def __init__(self, url: _Optional[str] = ..., piece_length: _Optional[int] = ..., tag: _Optional[str] = ..., application: _Optional[str] = ..., filtered_query_params: _Optional[_Iterable[str]] = ..., header: _Optional[_Mapping[str, str]] = ..., username: _Optional[str] = ..., password: _Optional[str] = ..., platform: _Optional[str] = ..., scope: _Optional[str] = ..., ips: _Optional[_Iterable[str]] = ..., percentage: _Optional[int] = ..., count: _Optional[int] = ..., concurrent_task_count: _Optional[int] = ..., concurrent_peer_count: _Optional[int] = ..., timeout: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., priority: _Optional[_Union[_common_pb2.Priority, str]] = ..., certificate_chain: _Optional[_Iterable[bytes]] = ..., insecure_skip_verify: bool = ...) -> None: ... class StatImageRequest(_message.Message): - __slots__ = ("url", "piece_length", "tag", "application", "filtered_query_params", "header", "username", "password", "platform", "concurrent_layer_count", "concurrent_peer_count", "timeout", "certificate_chain", "insecure_skip_verify", "scope") + __slots__ = ("url", "piece_length", "tag", "application", "filtered_query_params", "header", "username", "password", "platform", "concurrent_layer_count", "concurrent_peer_count", "timeout", "certificate_chain", "insecure_skip_verify", "scope", "enable_task_id_based_blob_digest") class HeaderEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -834,6 +834,7 @@ class StatImageRequest(_message.Message): CERTIFICATE_CHAIN_FIELD_NUMBER: _ClassVar[int] INSECURE_SKIP_VERIFY_FIELD_NUMBER: _ClassVar[int] SCOPE_FIELD_NUMBER: _ClassVar[int] + ENABLE_TASK_ID_BASED_BLOB_DIGEST_FIELD_NUMBER: _ClassVar[int] url: str piece_length: int tag: str @@ -849,7 +850,8 @@ class StatImageRequest(_message.Message): certificate_chain: _containers.RepeatedScalarFieldContainer[bytes] insecure_skip_verify: bool scope: str - def __init__(self, url: _Optional[str] = ..., piece_length: _Optional[int] = ..., tag: _Optional[str] = ..., application: _Optional[str] = ..., filtered_query_params: _Optional[_Iterable[str]] = ..., header: _Optional[_Mapping[str, str]] = ..., username: _Optional[str] = ..., password: _Optional[str] = ..., platform: _Optional[str] = ..., concurrent_layer_count: _Optional[int] = ..., concurrent_peer_count: _Optional[int] = ..., timeout: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., certificate_chain: _Optional[_Iterable[bytes]] = ..., insecure_skip_verify: bool = ..., scope: _Optional[str] = ...) -> None: ... + enable_task_id_based_blob_digest: bool + def __init__(self, url: _Optional[str] = ..., piece_length: _Optional[int] = ..., tag: _Optional[str] = ..., application: _Optional[str] = ..., filtered_query_params: _Optional[_Iterable[str]] = ..., header: _Optional[_Mapping[str, str]] = ..., username: _Optional[str] = ..., password: _Optional[str] = ..., platform: _Optional[str] = ..., concurrent_layer_count: _Optional[int] = ..., concurrent_peer_count: _Optional[int] = ..., timeout: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., certificate_chain: _Optional[_Iterable[bytes]] = ..., insecure_skip_verify: bool = ..., scope: _Optional[str] = ..., enable_task_id_based_blob_digest: bool = ...) -> None: ... class StatImageResponse(_message.Message): __slots__ = ("image", "peers") diff --git a/src/descriptor.bin b/src/descriptor.bin index 7f7dec2170946be4e6782cf005031c65325ab08e..6236f8223f19573a22965496e2acf859c594ce38 100644 GIT binary patch delta 5391 zcmYM2du$cQ6~=vMmYunK{kV6r!M=X2F$O=l#>NX0}{vr6#=5M10pd+AVDb*3y{l8fgn*Jv>>aclp?F&%-v!CJhS`# z&e^kjzI*H+TjKU_jBDBG`xEI3k{^HQ{yIqZO($Ql?j^Nk3!(OOYuAoTStL2QE4C`j z2$xxbUC+uUh@%V0-0sH3sQw~E9xz0W#gKrhNkBFHOzH#kd4$Km0|uUYpO+zD%%_|V?JhLlAl%v2TYz~jYb2iNQ`Z?Fwy3x zMTISlFr~#QP%Vtd=@6(E77STalm-_+V&b2EIMxxbJ5uYiK1BtH2r|wD$>kx>K zSbBz4iE8HB=4KYNO{}r#`^Jiu3>-AKB_jWbUoZA95u=NVc-XBx|mc5Zh=KzYoy)6|K7ZxrCtlRu%}l5&}Xi z3uWjKgjSX{%o>mC=h|~*#Dg{EM*vZ1F);Oe?Z=1VW%opNvEG`^}h!5iEPb>E5QsxsMzMMTQkl;#WzxJ?Tst!Te!!k0h z=_sYzHal3%ZNcN|w1f`E!&V8n)v}bmVo5wLE!?Y1!686qpG(_I3U8s=nKe~&(gVH-!fi$b)) zSAN7}7+@Un7zP+em>nI*YGQzKgyk1l6IB(s_n64drf-OZ!PG1~#)vL=5Ol}bkTf^< zAn1;1%k1b_R1-fKXIVJS`dgG?*~SG%MujgBG5G}<(mg$yPV`ma zC^}`;!~*Vuo-%~MU0|URZf7juF0i};>(eMMU>ldZPp8n3ul$n72!L_PV+6psV?GG#uX8lN~_ARc!XHIrYkIv?WT%P2wQwWl8!IjDw_?Im4`FN)m4yR~g9_@8;0jDb*w%UnFAPgLu?`)vG@qsH-eA z%*`GT)K!)u_S&^G!Q z8NVxdE;6;61W^G(T|p4f-^T(vWe}u3mR;;t5Co}@jU8v@D^kcdZZL7=U0)6!B?Qn7 z4-^9E1`DLP$`C*|SXi4w2%sA*E8AM6K(=k%61UUoJ2P*21RKq`<$Yf^2)De^wn4Zh z`#K3;S7V#svzXs=U%1$*ZeHFzqhYo9^ZUL`@ob~d$Usz&-`;>ljT%6{XMCs?LEaka zh4;ki3_7~_o}Nh@;+}ij3lSpGz1Ln?BR%Q?BiYCIeOuw1f)J05INCpiDEfge8lk$| z^+beVJ&>N5tJ1?0ABwLWnqT?QBS=qt=n-VThkCqglqWuv<2^|cze8RaGP8 zXWAoc2>;6`cDx`-V(ov)2+@~K z&sO4CKaUCWb3Gr>0Qp?cH$otvv%GxkEk%TRzF?#%TqaJxBx&NsaGG0=1I=Q{_(D&5 z4UsnbLQgtEuwJmj(Q0gK2we1~SeirMEr00|q=~-ts*xu8Qco)+AiQKbBh<9k5P0Y- zIj!@HUg<%_AtbN#pdy6il^)a@0?QoGgNg_*1fee9Liq!FP;nKc0X?V)K^oA5T0`KL zEnE$%h#yJKiWdHw69A`$yK{;=!D->{oFW9Lg=0?T_P4+`H}aTI#JrK%{x))+j8nr{ zAg5@v*gFzit5&r4tjjavoG$ zWv%44iVt$JRkm_>tHdEdt=!!z5dzf8-L0}#4$F3NDHmJic26RQa65OmO56j5Y@MFch5oyLK_c8e;*No(8lrYmZB>QZSyl8^SSsokB&|F zjPqEl0NjPL`rX2pPa~1tx)dA&w41vtA3}h3bL?45lmr*s#gcrwtfF0)vQRlnyDkNx zyotLjA3_k?IaaEM!j~NDd6{LHF|w2nkyk+9oYlciTfPx_h_APU z4_0qPhUh~F4@dM>G@ye|n5aXf>EM&9<+I^t)UZz+DZsPsp(GH;(heaep-;5mgIy4B9!+fw>K~SA^ti!x` zhTNkOqCrQ+A0o80=qNYULM{&>Im&~M+cxP)M|nZH+XFb#aZaX*iof_qm&7Q`Iqp@+ zpgrzYC>`jytZE@R~|xg ziVqp(N~H6g;^Sw#S>QZ9;+xUP(&J?bK+@x7ktWmQWx-x{Mx+-Z%NZ|AEF@>VEU}QB zky$Xqr~!-EIkByX&Yg9Rn`%nsA)0fJr>j*?h9I2d!zsk?-5cY9InPtZ=n%T|ykdbhOBI5h?4sCKOy`tb>gDqqtc6N~wd)!ub>W#R zb)pDfCZ;GWp=FV4+|=K&4a7B`HN{29z3UpEv%+oEU@U~PQ4_}Wc|95oNuSrF!I1QM zJxa8Vo182PSBPWVeMur?EIy8#UbhkTeaNvb$K1Pxt0ftD5ad)-Nc zxZmqe8pQpwJJ$?VV>%X>?$Z-!Eh!xEtT-K_0ndulAsUcYEdM`&$Ih^gP2JPp#Q!G> zH~C+iaRx-2{IAV81ENiSm~m$`Q>Ja~=>EE#=8?i3epCGy1E@@hcKGe#ZaXp|+TkBP t%{m&*T`9C4+J%RuL delta 5203 zcmZvgZERG>6^6Yt*LP;`+TPuZjqSxBYa3&1vo`oMfNji2NDvSVHYPxlwunTfO_R`8 zYSSOB9YP&s2vCQP+)xoLP$(c2H_)xD5}be#Pz#U+ga$<70Hp#^g&;yKCr#g(y~FfJ z|8ZvKea@LP_nbXu&+DmoI#N4c_Z=pG36Vd48vkpE?0%eFu;Z)S$s0tR{{eYEzI7!z zlo7byM;+!Shmzj%$G`jBw~EC3)|2JkzOUk6e?wkNNtx>qYl&-*+DZSh#n%p<9U8TH zwo~a?))JEBT4T0Y5TH}5#%#izR3}-k`s6ZC)h3l@DD2Ep8f<=Rll(}Hc&?Pj#N_~W z8?oScr+v2E52R~T9nXkp6RdCT+&pJC!fJ8tPL}kBC`qBs*`17sooVpUBBR>CNGMVi zUCcbRK% zXGy;oU1_v7xLtCmfV)g`d&J+m0>K2RhXq5>Zd`^7iu^vjBV^BOiZ{mh@{X>4fvS=e>D9&~=H?7B95L}SAdZ+6 zG9Zq~6z)#koV(UQyf%{-`I-g{gM%?(7#xfN=IYQn7y~l&HxmrMYaL_p-Cq&EPwdL3 zcH=Qa@`H5Dko+JWV{W2=T8ST|V=R*6TuzW2*E$jZJe#ia%{gHh4j3nN5w;Qsj1w$8 z$xDg@#tBwh?rcpk01mTf1?4wP8nDLuu}$xMhO$J#p+Q~ zTU28}z&80=LAx07nx0R$q zGQ=|U*O&^)5Q`Q%&niipYn>IlbLsaQ&Kjp_2>YxFI}L=hEL`Y0O#|U9D=twjvXul~ z>%4fcgf6Pazac!&i0z#WLU^9BMBBhFgy&ga)TvRfL#{O}Dksyab6ZIWWiV_42;tVl zETBDxz!_#m(>!bloMBc|=aeZ<*tIS&QSb*+jCu+Kbisha09{~#Y)=^m=mLxACJ_ec z0xKwTo>m~&wJwPr`E*s&B|~s=rAy|UazVIcYTE_jlFa5Tbiy{*{)8oc!$d4f8-t%P zp6SE@Zj-I>s(3X@E2mx6<%UI&uIlCo6Qrw;nqQl2Mk9}!A57c}cH+Z=iKs?&R4~

UIYclDo2JY>-vjCV#K*#g`P*WM9KQl2#kBWIAMZu zkCm1=PbdVs-+i%d5?wIsz9BGx@9W}hBeMJ5*To4Fg!`6>LC14U1c}}!l`VmDr+O?bYqDsn+pT4Ic7isfW~x{VHcn=U1cx< z8k1EfN4({({T)ksO*o~rIrtspSy;8K<+4ON#mZ7Tx3QCZS-~Q>ojfp3RWD3%J9&Dd zm|=q3$#Zg5?X|o1MxL};{G*gMWpCs>q(;Yf$?f9*Z**K-hS3pQiCF{(0q^48=m-<= zF7Azv?Xo&HiQkrCblhYlvg$T*Z*;^NNH%edj!)r6?F3cVEpC_5md0*_g>e7Cj8)C$+$%9Gv_zbL0Q!L6L9IOX83kT=>c2FhuyYP${vivVrs z-iQYipzR!!)M_QcW)COP$YN0*q=jPU6nqC*NPK)NR5R((LBUkVyeYA{D*- zu_kT8O)sC-DsPFyh+(JrVT{INJGre!61fP%P99Y4TbhvUCY+ie%zeJjlkbUBx6?A57pGi|PB>VU{HDVw{*}V4gY4hb64HH>9AfBqE zwXp--R`a-AgyaAZMZMg~UUh(%H+YFauR0{&t3+UjOkfO>LnbiUoDRvr<|!{|PW>Wd zDxKfb&uuj@!HaB4{X9#jn}g8L^XomQxB$#KPihmue!gIhtUGAYqYiWOWTZ&^Bt|pE zM^kBL>@c@gDa&oJ4)gTMo>+FP!@PRFYzEjxw~7mU8l77e=e8PYlb(PZ!1%-DbyQrE{*D@dDUcjB{!$=0D*d6l5e-JI zK~8=aX%-*;jbw^7RkUW|Ah%T|%Wb4?kmstgO`2d0@`&ah_eJO-PRO#^ugJ6%A&vlVW}~T^u{fZS|)$oCYB|$tTo# z5;=XH$DiGrmL$?bGyJh6N2P4FPx`MNKW%5Yh@b&5QEkbCqG6T=@=rp z;zu=fX7v!a)s!Z;As*sI^F6T~u7>#1bzMi>oi1 z#H2%V(Ih4vl8Z7it5l#FZt`VLUh_p3itxuIN35))GZtMoIm*D(Ugm}R)6D?vGA~`| z#hrntz0BL6ane)^%%GC?Y=_TjQ1J1tbwzwyN1Ljya9fS!NZfcJuJF7D4>2C`T;Wfw zb=s9A)3vT~vL^DR=y=~ZUNkQtmRMJh-Qwh>NSg;c`!8aPoauB{>=w6+ zJxv6NTYSbA+^1ORTEEKUI6w#i}+ zCc;Nqj0krIonCR*Brpf!yC#7-5Z{#vykMyt+##?spTO@?C3le0>uwB^8_fw))Qv zpz~|-6$;pRkv%hkl^IpPJ6u;2%Q_Zx>SJvZy^lKS~sK@{4*D?xGkH2*K8vB)> KzWno-tN#n3xeayz diff --git a/src/scheduler.v2.rs b/src/scheduler.v2.rs index 9b51101..9b57b80 100644 --- a/src/scheduler.v2.rs +++ b/src/scheduler.v2.rs @@ -1304,6 +1304,12 @@ pub struct StatImageRequest { /// If not specified, stat image from all available peers. #[prost(string, tag = "15")] pub scope: ::prost::alloc::string::String, + /// enable_task_id_based_blob_digest indicates whether to use the blob digest for task ID calculation + /// when the layer url is an OCI blob url (e.g., /v2//blobs/sha256:). It should be + /// consistent with the value used when the image was preheated, otherwise the tasks can not be + /// found on the peers. + #[prost(bool, tag = "16")] + pub enable_task_id_based_blob_digest: bool, } /// StatImageResponse represents response of StatImage. #[derive(serde::Serialize, serde::Deserialize)]