From 8f0572cf790090dbbd17c8f1286c8057a31422ba Mon Sep 17 00:00:00 2001 From: Gaius Date: Thu, 27 Aug 2026 23:03:11 +0800 Subject: [PATCH] feat(scheduler): add StatImage, PreheatFile, StatFile RPCs and enable_task_id_based_blob_digest field Add new `StatImage`, `PreheatFile`, and `StatFile` RPCs with supporting message types to the scheduler v2 proto. Also add the `enable_task_id_based_blob_digest` boolean field to `PreheatImageRequest`. Regenerate protobuf bindings for Go, Python, and Rust, and bump version to 2.3.6. Signed-off-by: Gaius --- Cargo.lock | 2 +- Cargo.toml | 2 +- pkg/apis/scheduler/v2/scheduler.pb.go | 857 +++++++++--------- .../scheduler/v2/scheduler.pb.validate.go | 2 + pkg/apis/scheduler/v2/scheduler.proto | 6 + proto/scheduler.proto | 6 + python/dragonfly_api/scheduler_pb2.py | 64 +- python/dragonfly_api/scheduler_pb2.pyi | 6 +- src/descriptor.bin | Bin 214422 -> 214979 bytes src/scheduler.v2.rs | 7 + 10 files changed, 496 insertions(+), 456 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 019a27e..c4fe192 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "dragonfly-api" -version = "2.3.5" +version = "2.3.6" dependencies = [ "prost", "prost-types", diff --git a/Cargo.toml b/Cargo.toml index 60aa4bf..df073fd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dragonfly-api" -version = "2.3.5" +version = "2.3.6" 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 5589585..7ccfe28 100644 --- a/pkg/apis/scheduler/v2/scheduler.pb.go +++ b/pkg/apis/scheduler/v2/scheduler.pb.go @@ -5598,6 +5598,12 @@ type PreheatImageRequest struct { CertificateChain [][]byte `protobuf:"bytes,18,rep,name=certificate_chain,json=certificateChain,proto3" json:"certificate_chain,omitempty"` // insecure_skip_verify indicates whether to skip TLS verification. InsecureSkipVerify bool `protobuf:"varint,19,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecure_skip_verify,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:). When enabled, + // the task ID is derived from the blob digest rather than the full URL, so the same blob from + // different registries shares one task ID. This enables deduplication across registries and + // eliminates redundant downloads and storage. + EnableTaskIdBasedBlobDigest bool `protobuf:"varint,20,opt,name=enable_task_id_based_blob_digest,json=enableTaskIdBasedBlobDigest,proto3" json:"enable_task_id_based_blob_digest,omitempty"` } func (x *PreheatImageRequest) Reset() { @@ -5765,6 +5771,13 @@ func (x *PreheatImageRequest) GetInsecureSkipVerify() bool { return false } +func (x *PreheatImageRequest) GetEnableTaskIdBasedBlobDigest() bool { + if x != nil { + return x.EnableTaskIdBasedBlobDigest + } + return false +} + // StatImageRequest represents request of StatImage. type StatImageRequest struct { state protoimpl.MessageState @@ -7907,7 +7920,7 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_rawDesc = []byte{ 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, - 0x86, 0x09, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x68, 0x65, 0x61, 0x74, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0xcd, 0x09, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x68, 0x65, 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, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, @@ -7965,444 +7978,448 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_rawDesc = []byte{ 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, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x79, 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, - 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, 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, - 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, 0x42, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 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, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, - 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, - 0x16, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xfa, - 0x42, 0x08, 0x22, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, 0x01, 0x48, 0x06, 0x52, 0x14, 0x63, 0x6f, - 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 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, 0x0b, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0x22, 0x07, 0x18, 0xe8, 0x07, 0x28, 0x01, - 0x40, 0x01, 0x48, 0x07, 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, 0x0c, 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, 0x08, 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, 0x0d, 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, 0x0e, 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, 0x3c, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x0f, - 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, 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, - 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, + 0x72, 0x69, 0x66, 0x79, 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, 0x14, 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, 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, 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, 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, 0x42, 0x0a, + 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 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, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x22, 0x06, 0x18, 0x64, 0x28, 0x01, 0x40, + 0x01, 0x48, 0x06, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4c, + 0x61, 0x79, 0x65, 0x72, 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, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0c, 0xfa, 0x42, 0x09, + 0x22, 0x07, 0x18, 0xe8, 0x07, 0x28, 0x01, 0x40, 0x01, 0x48, 0x07, 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, 0x0c, + 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, + 0x08, 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, 0x0f, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x6e, 0x18, 0x0d, 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, + 0x66, 0x79, 0x18, 0x0e, 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, 0x3c, 0x0a, 0x05, + 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x0f, 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, 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, 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, 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, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, + 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, 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, + 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, 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, + 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, 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, 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, + 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, 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, + 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, 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, 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, + 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, 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 1814df0..cfa97f7 100644 --- a/pkg/apis/scheduler/v2/scheduler.pb.validate.go +++ b/pkg/apis/scheduler/v2/scheduler.pb.validate.go @@ -12913,6 +12913,8 @@ func (m *PreheatImageRequest) validate(all bool) error { // no validation rules for InsecureSkipVerify + // 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 3b9848e..2bd8a6f 100644 --- a/pkg/apis/scheduler/v2/scheduler.proto +++ b/pkg/apis/scheduler/v2/scheduler.proto @@ -954,6 +954,12 @@ message PreheatImageRequest { repeated bytes certificate_chain = 18; // insecure_skip_verify indicates whether to skip TLS verification. bool insecure_skip_verify = 19; + // 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:). When enabled, + // the task ID is derived from the blob digest rather than the full URL, so the same blob from + // different registries shares one task ID. This enables deduplication across registries and + // eliminates redundant downloads and storage. + bool enable_task_id_based_blob_digest = 20; } // StatImageRequest represents request of StatImage. diff --git a/proto/scheduler.proto b/proto/scheduler.proto index b590c09..d717c16 100644 --- a/proto/scheduler.proto +++ b/proto/scheduler.proto @@ -835,6 +835,12 @@ message PreheatImageRequest { repeated bytes certificate_chain = 18; // insecure_skip_verify indicates whether to skip TLS verification. bool insecure_skip_verify = 19; + // 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:). When enabled, + // the task ID is derived from the blob digest rather than the full URL, so the same blob from + // different registries shares one task ID. This enables deduplication across registries and + // eliminates redundant downloads and storage. + bool enable_task_id_based_blob_digest = 20; } // StatImageRequest represents request of StatImage. diff --git a/python/dragonfly_api/scheduler_pb2.py b/python/dragonfly_api/scheduler_pb2.py index ed94ccc..cd096e2 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\"\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') +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\"\xb0\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\x12(\n enable_task_id_based_blob_digest\x18\x14 \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) @@ -202,35 +202,35 @@ _globals['_DELETEPERSISTENTCACHETASKREQUEST']._serialized_start=13075 _globals['_DELETEPERSISTENTCACHETASKREQUEST']._serialized_end=13143 _globals['_PREHEATIMAGEREQUEST']._serialized_start=13146 - _globals['_PREHEATIMAGEREQUEST']._serialized_end=13920 - _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_start=13706 - _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_end=13751 - _globals['_STATIMAGEREQUEST']._serialized_start=13923 - _globals['_STATIMAGEREQUEST']._serialized_end=14613 - _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_start=13706 - _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_end=13751 - _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=15738 - _globals['_STATFILEREQUEST']._serialized_end=16316 - _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_start=13706 - _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_end=13751 - _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 + _globals['_PREHEATIMAGEREQUEST']._serialized_end=13962 + _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_start=13748 + _globals['_PREHEATIMAGEREQUEST_HEADERENTRY']._serialized_end=13793 + _globals['_STATIMAGEREQUEST']._serialized_start=13965 + _globals['_STATIMAGEREQUEST']._serialized_end=14655 + _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_start=13748 + _globals['_STATIMAGEREQUEST_HEADERENTRY']._serialized_end=13793 + _globals['_STATIMAGERESPONSE']._serialized_start=14657 + _globals['_STATIMAGERESPONSE']._serialized_end=14752 + _globals['_PEERIMAGE']._serialized_start=14754 + _globals['_PEERIMAGE']._serialized_end=14839 + _globals['_IMAGE']._serialized_start=14841 + _globals['_IMAGE']._serialized_end=14885 + _globals['_LAYER']._serialized_start=14887 + _globals['_LAYER']._serialized_end=14949 + _globals['_PREHEATFILEREQUEST']._serialized_start=14952 + _globals['_PREHEATFILEREQUEST']._serialized_end=15777 + _globals['_PREHEATFILEREQUEST_HEADERENTRY']._serialized_start=13748 + _globals['_PREHEATFILEREQUEST_HEADERENTRY']._serialized_end=13793 + _globals['_STATFILEREQUEST']._serialized_start=15780 + _globals['_STATFILEREQUEST']._serialized_end=16358 + _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_start=13748 + _globals['_STATFILEREQUEST_HEADERENTRY']._serialized_end=13793 + _globals['_STATFILERESPONSE']._serialized_start=16360 + _globals['_STATFILERESPONSE']._serialized_end=16417 + _globals['_PEERFILE']._serialized_start=16419 + _globals['_PEERFILE']._serialized_end=16501 + _globals['_FILE']._serialized_start=16503 + _globals['_FILE']._serialized_end=16564 + _globals['_SCHEDULER']._serialized_start=16567 + _globals['_SCHEDULER']._serialized_end=19577 # @@protoc_insertion_point(module_scope) diff --git a/python/dragonfly_api/scheduler_pb2.pyi b/python/dragonfly_api/scheduler_pb2.pyi index 40138db..d36bf33 100644 --- a/python/dragonfly_api/scheduler_pb2.pyi +++ b/python/dragonfly_api/scheduler_pb2.pyi @@ -762,7 +762,7 @@ class DeletePersistentCacheTaskRequest(_message.Message): def __init__(self, host_id: _Optional[str] = ..., task_id: _Optional[str] = ...) -> None: ... class PreheatImageRequest(_message.Message): - __slots__ = ("url", "piece_length", "tag", "application", "filtered_query_params", "header", "username", "password", "platform", "scope", "ips", "percentage", "count", "concurrent_task_count", "concurrent_peer_count", "timeout", "priority", "certificate_chain", "insecure_skip_verify") + __slots__ = ("url", "piece_length", "tag", "application", "filtered_query_params", "header", "username", "password", "platform", "scope", "ips", "percentage", "count", "concurrent_task_count", "concurrent_peer_count", "timeout", "priority", "certificate_chain", "insecure_skip_verify", "enable_task_id_based_blob_digest") class HeaderEntry(_message.Message): __slots__ = ("key", "value") KEY_FIELD_NUMBER: _ClassVar[int] @@ -789,6 +789,7 @@ class PreheatImageRequest(_message.Message): PRIORITY_FIELD_NUMBER: _ClassVar[int] CERTIFICATE_CHAIN_FIELD_NUMBER: _ClassVar[int] INSECURE_SKIP_VERIFY_FIELD_NUMBER: _ClassVar[int] + ENABLE_TASK_ID_BASED_BLOB_DIGEST_FIELD_NUMBER: _ClassVar[int] url: str piece_length: int tag: str @@ -808,7 +809,8 @@ class PreheatImageRequest(_message.Message): priority: _common_pb2.Priority certificate_chain: _containers.RepeatedScalarFieldContainer[bytes] insecure_skip_verify: 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] = ..., 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: ... + 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] = ..., 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 = ..., enable_task_id_based_blob_digest: 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", "enable_task_id_based_blob_digest") diff --git a/src/descriptor.bin b/src/descriptor.bin index de434f39142ce625b9e193ce4d617371abcbe279..7bd9a8fcfcf519550f8d53c83e395b7d5e40cd32 100644 GIT binary patch delta 6466 zcmYkAe^6CNmdAPBkM4dK435_M{) zQd>2|rJU^OI+kW=Gi#VQMa9~qRuEM_QlDP`TIBE>4@mL{{` z?$?*ze=JYm{(jE6=XIZRxa~)${o&`+THAcTB@432>CwcZY;wNJ|2yGi$+Pc}EIIrN z=}LUKn`|T0{gxxYPN#(=FZ)#b_Ck5)HF7L*;1v?fPrLRH)ZuPwX3DPuiFY3QUL}d_ zACY74`g#**ACuo_hAvab@83qUT>lM5qTzE?fqt95=Lb#Ak*4PQhW$;Ar&jiD$y*XR z*b+JPgQm#A`nQ@Q4f|UfB5xdMdCNKVhrR`;e$rR;lgNRlH}@SpbYNf8!AN~`qZ4V` zzwfPm&Gm<1A82a)QFCK`^Pxy%%U?C`Z>ew8dm;x9wH&B_v#Ho|ra7r9ic}p2^Gu&I z`Fzi$%3QR>sd9+F#$`8I%6r@wE{ntu)gSuBL0S>K$wZzL!wc1r6xVYU~Sd)nBA7FBS4qdpRh7f=TEQkO!U_k_+0p{iy5PnOTdHK$_Gziw9+%Z9_Hq{Uc z&YTv{ z18>CoW+03(H*5$Dgb_A#mLYK0|3KD1B`c9uj(2!qIUJk^mczk$U^yI|2a5B$jzqZr zQQ5(0eQeYc1PG&+AV3(k1OdXRBJ?E_8gTt%iAql6zSx*$1i%<$X_+Sc02pH|#--6kd8>6*htbrc)~(+ z3?UtaCv5I~r&bfDx&BEeFBH=1@)|M?%1K6&7a1m$lZ?+W%4twevRM)5xlco?V z$29tN$#Z*IGoX3S0vSe=0nKw3%5ttHa~E{|tvvB8oo@6MxAG}ZL8w}}DH$~+2vsXb z#y6s5Y$_ zlvDDSJp5Rm zcIjWnKK4S{sjKaZ@ZNE%{=;jpZt9;>dz$$QeEYe1*xubiJPth zAwZY7=_+v*cA`Cxt}jk-(@n4jMS`1d0uzb^M>iQ)RU@uWX}4_7qZ7s5Htni^baPWR zum_rM9&(+#NevpvRe3z0{wa3V2C7=eRU4>k9anA6RO`5^a&}e~o;X48=t-Ol(;{E2 z$1+s&=&=mdJbJjBY=qE&(W62?o@AhT+(_^On(2$(ung5aZditD9yhp~ydQC*n#TNoT%n;i<{;F6O3CN&Ew}u2D--=oGb~q%059W z<@T@1Lb+=;Jy(g~OmK#H`3h%| z=7cb4aas6%-(0*y2%upL3IR0C)AEfn1kf-KCyO#R12oJFi=4e0K?sQm9DT2egfT{$cQ zH0o74m;jAVRk}J=fyPv&TkqQf11~k^g#;5Jjd>x#RC~R82NR?*RqqyP=cspIaS{%P z<=Z(lTaL`7p-Log12xGbGVt77AppeoZj2rCxL5@Dm`Kagw;Lw7$3%AWvcm-Tm?)U3@8)iooe(KfR!4C+PY98z z2gcosds3c`VqiQe%oKt}fKCcCFv0}rq%Z^HZgoXIkk6tR7(cKQbqPNZW?;k~NIno4 z7;6yyZZ&kY%h!r&ZLHmk9*c;+U6^SKCJ5~!GuixLg3vB-c$Xt9dtCNQk@73~sF;=q ze~jiOL5t+RZx*qIyd-hff;<2<7X)w%! zf^bd*btzXSBdw`60PzU8xFoQMpQH2)X!7?p;RLL_f0`N`>Sz zk){7)MRcloeI}M}R&z5z||romqlj8q)pYT%VKe*$pLEB6+t%1 z3;*UTDNE7C=!%VyLwm(WsA|&{72ziB4z;OU{;*=wiqz+# zY_q!jc#0x*P5!u?Zd`UvF#Xj;EkbflOkZLosvKPt6)ziqC`Ud2&!2xe{PkFWX%P2V zf2suaSbvzuuFI{<;qSWjmk!Bw>rV|}*Ofoqa72RvtXGhO;q~&peB z&FV2y*DGe~uL{Zpt5>{KWn!O()b)y&cX}q!y(0dO`5iH%-IO<0()se;6*!nT1t8ms71n!bsL9OIFe8^5zO!QPwAz{!<$6gV6Pf87quV&1HR}YPa)> z)?qHYBgh-!>WHi=^JUA(e!}IOYcM>FSI|`XQ7;kl_!^p1p~kX1f)yG}Ca8DBoK2ny z>K(DYQPmyz#FRE5$PdHYBJ%8h%&C8>pliwo1k*E~dJgq~DB5h)YBU=VJN7wyv>Kz? zT|pYd-`46J`T9z_HhNbu@94Ww-xY-$j9QIlcg3~_lRwhSBtj4Q96iiR_ zY7vNsVpgR=Oh-@;#g;~Ax0d9({ztNVHQgJ1B-m`TCl``OBC_5yA$cUKzvnb+Ngn1$ zS+$0~v208*uN>t;GA8EN7)c%^W8#%&=M62%cm0nAc{jXQHdoRavcCfV1S?Un9}A{G z;~~y`5FU#KwT6%n!ejBBA3F`25XN^kxv!EoMkfTDYxaa8nGo|{_Do17#Gd^o8#7%0 zQsM-Qkm3$^tZ2?qr^$`OB&T{=n z6D{lU5u^BMV5*kSg6L>qs+P}!=x6}7{9Mx2Y}YRnBUN-EDV71Ize@o%8zLESUor`r x4Ur6#Y;rCpJw?#16RS7TWxhonfvL_Jfv6)e)j1;&bp#f!YG7|4XgSnU_J5h8*NFfC delta 6239 zcmYM2Yiv}<7010Z*E6$sjd%BY4S2yXhwZ2HjpswOl&4+3fwOaP?vkz zk*qg5o+DrXD$w0|`6~HKB&We8&T5aHW?A1c*+%Hn@M$I{yD8UkR+B8x`9!8h$s$=y zDNBCBh;S#k+3HCEk619rH>oni5%(0)LOea!d1#c>2bQfS0S6W%uGt&NR%R&bn`$rf zihL8KbF6flo75oUIX!aj7%7)OIF!})SPTKC$6^RDJ-Oh&aBAYnX2(ux)$cjtcS}nxh0h#=kER!1bmgMe zWCC=fj4-ot0(7H{Pw`FYMp;pb`&~c_b3NxRhP5WzjtMWG2R8&$+=!B7Tg>Ki*GDJDb9^Fp$KOe|i}D8;twkC=C4#^^F=)Sk`!K zoMrt+?v2o8;c+Gk+zPm~M%9%T`E`U=R<&@#^~qQSsD+COz6nqZk3`*NT7rjLIVq0U z$nTRhA%7XAUJ47DZ@Y#B@J+VzP|Sz}dV78*0q_*8tsIw6RlBtw+s?CIl^;iGeRw+; zQMVE&tW{3EBJ(|3op^uS?kr3Y-sDBaDA&YEdu$)i`a(XOPnXB`aS?Z`!A&by-r*z~FO!8c zaFKsJN}}_y3NV&4*BK_j@A$641o$20nr=*K71;y4^Sx2BG|&hO`FOzh5hhRvxamwV z^=8wVU;=eOeFoK;(&|IDbD0<;vjHLiwOf$tP3;z>PHpF=H(@hC?cDUHw6YFz`NkNj zUk(GHgBGM()IkeUE$SdQEee~p)NfH~<-`$gS`;j8nhb#n)DeqPE$Rq2EecP8I>Jqh zN-O{0mo4RVaSi^)C3>Hm76lW+_ql0NFd=-OqeYFXYLiwsxkJ7cr(?+u`%zRs>folv zU=K7MJnFd@G8#0bE?A3 z4LFOP*xd4LI6mxZa`)Wy9_o5fSWy3{-D%)ro_PVvrrZ;)U>))iBhI%P?!L!GiD z)uB#tFOyPfqB_(m9-r#|BSS)mI@9@LF}*j?c*ZhRBRb=!Wtyl)bcUNo1QU!i9F6F; z39yvOVPEYi3k}17uqPkHJ&(DleFd^yT zCDU{}OcOMtURgh#K9uUUhvvfhUhBN-NWI+jK}bO8<)#m&2^!MpT&_*fCfv<1l%I3c zi(o?eIX9gUCX}CZbix|#Zp3r?xID5YP=Sn%;DYp77b1A?J|4>SUOWY;k58}E)e0s+ zeY|GATdqM-jB{L;{wPqkEKQ;S^;=LBpne`IFv=)E{XCv2<=6~RKQEo`-lIXDngnag z=)I|nmf+!?F4`OBfpF30ya&QX70;!pl+7Ny#Is(MXUk|^_!1YB+yuDIs!|Th$unq0 z#h{;rSOjR$uZ%DO8oX5*n^lb(GL`X8Sa_=;-zS*xX~_2prrvBSBTS%%RAro{Pe*0E z%t<^Rmz85ACL^fpEg`R8<_d z1XUG>{RlPdsyNL3s@SZm;;5;LvaTH0ebkavQ5>}-RTM}4q6j5UAN7l3v+{dP6~+4G zm|qUD2+5dV4q-wvrb@|gRPr{fa(J!tN;%CA)Lyg4s&W0Af8ntSjB9?j!UW?QpIz?W zsS&7-*JZ_AdiT=nmcRkN?&oPUQPuIfpQkWExXzOmI_a8KalFCFOgWfCH#WjVL}2^h zL)FF`))`eBZ}{1V%|PAYWi#~n(o9eqZ|dw@m%Qoc9af>a>E|6xXm0v>*Gy0Z$GJS0 zpz~_S?XfQ2VBF6*Yyx83&p4PsjQbhaOi%+`WPOs(O|^(yj;lGmMVM5>9uQiDNi~=t zv?M))vOJi?%=ePOKe!Eu?FN-7+vW8nZA@+VxmW~uy9nj!6ov`zb`i^D zG)!=}i>ZY=0XKSVhsfG3U#LI=?hqoPXUUC<+bX*&FiW-yGn!x#pjKgKNtgh&3NuS? zRB5nNmfen7a;KH3MB6FMEQvjk>=c+KSHt^_Y6RIOe|tM!o7&}jk41RDOPE0mCJ4Jk zB-83(g0M^Ae$GQwHhJuIk@be0SV?QbuM3gm&H;Cm@_w(}TuBpEdwo~12+&?(Wr0YkU?-WeE-AsQl!D3K+&)Zmmu_7n$_L-rI^ znhvQ`GQmL@4$EydbV=f{4Nf*Bhee+L2N#a1(sWo{7(&?mpCez9?R7t zBu7Q0#6(P0qN8F?t$BS^qGNK+JUDjDI>sS6W*t+d=a_PAxjqG@r$c@)kFIFy5KK== zI7L;Q4l&sevH+n&6fZD`;sszXyURBL>=1WvQJDoT3ebo0j`_%}4+YaHsun@`P{d{# ziK;&zis}_A$?+8R=Y%{kpEf2=2&R8&QHzkA5EJJbiK;gz#DbOP6x5q8nZE$1blFov zkaXEoRDtQTr(mc$DW6|J8>>#*Q*t0VX-`q}(@Av-@)tf}e(DzFxp=*->>`t7U?Ht( z>K07rs(Oqtb&Ep%JA*R8>K3;(7>_3)Oxgp9*u|D-1$SO+8}W6YeIBz|?eJKD(H1PMjCazp5T2=SAr|C zsGsf-n2DbArTld*t*iP{Fg;?cMIgQuMYRSo5&nEB?tIkUs3ns;=PNV7xK^U`fnhL_0iqm;Vzd|8q7SUNy zPdAX{xUIv5P>tI;s>A9h352D{bGCK9y^O91B)0``RpKIuwgqoh;v$H)1yPCH zGe;GB&hF00aypwNcL$mNtqG`Nh;|3P+f0m#A=(|RSneLpoK%7~+xe3fv?@^E7QEH+ bN+4/blobs/sha256:). When enabled, + /// the task ID is derived from the blob digest rather than the full URL, so the same blob from + /// different registries shares one task ID. This enables deduplication across registries and + /// eliminates redundant downloads and storage. + #[prost(bool, tag = "20")] + pub enable_task_id_based_blob_digest: bool, } /// StatImageRequest represents request of StatImage. #[derive(serde::Serialize, serde::Deserialize)]